Name: series-workflowsdvml Phase: Failed StartedAt: 2026-07-03 10:45:11 +0000 UTC FinishedAt: 2026-07-03 11:08:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdvml[0] Phase: Succeeded StartedAt: 2026-07-03 10:45:11 +0000 UTC FinishedAt: 2026-07-03 11:02:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdvml[0].run-triage Phase: Succeeded StartedAt: 2026-07-03 10:45:11 +0000 UTC FinishedAt: 2026-07-03 11:02:31 +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+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSByODE2OSBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIGRyaXZlciBmb3IgcGh5c2ljYWwgUmVhbHRlayBHaWdhYml0IEV0aGVybmV0IGFkYXB0ZXJzLiBTaW5jZSB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBieSBRRU1VIG9yIEdDRSwgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFBDSSBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBpbmplY3QgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMTowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDhjNDM5YzFlOWZjMTAzNTc5YTkwNWUyYmExNDUwOThjNDIyODdjMjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzIDExOjAwOjU1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1xuaW5kZXggOWIwZjRmOTYzMWRiYWEuLjQ5YWM3MjczNDIyNWY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcbkBAIC04OCw2ICYjNDM7ODgsNyBAQCBjb25maWcgUjgxNjlcbiBcdHNlbGVjdCBDUkMzMlxuIFx0c2VsZWN0IFBIWUxJQlxuIFx0c2VsZWN0IFJFQUxURUtfUEhZXG4mIzQzO1x0c2VsZWN0IFBIWUxJTktcbiBcdGhlbHBcbiBcdCAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhIFJlYWx0ZWsgRXRoZXJuZXQgYWRhcHRlciBiZWxvbmdpbmcgdG9cbiBcdCAgdGhlIGZvbGxvd2luZyBmYW1pbGllczpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5pbmRleCBlYzRmYzIxZmEyMWZiMC4uMjZkOTZlZGIzYzQyMDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbkBAIC0yNiw2ICYjNDM7MjYsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RtYS1tYXBwaW5nLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeWxpbmsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3ByZWZldGNoLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcHY2LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuQEAgLTk2LDYgJiM0Mzs5NywyMiBAQFxuICNkZWZpbmUgSlVNQk9fOUtcdCg5ICogU1pfMUsgLSBWTEFOX0VUSF9ITEVOIC0gRVRIX0ZDU19MRU4pXG4gI2RlZmluZSBKVU1CT18xNktcdChTWl8xNksgLSBWTEFOX0VUSF9ITEVOIC0gRVRIX0ZDU19MRU4pXG4gXG4mIzQzOyNkZWZpbmUgT0NQX1NEU19BRERSX1JFR1x0XHQweEVCMTBcbiYjNDM7I2RlZmluZSBPQ1BfU0RTX0NNRF9SRUdcdFx0XHQweEVCMEVcbiYjNDM7I2RlZmluZSBPQ1BfU0RTX0RBVEFfUkVHXHRcdDB4RUIxNFxuJiM0MzsjZGVmaW5lIFNEU19DTURfUkVBRFx0XHRcdDB4MDAwMVxuJiM0MzsjZGVmaW5lIFJUTF9TRFNfQzIyX0JBU0VcdFx0MHg0MFxuJiM0MzsjZGVmaW5lIFJUTF9TRFNfQzQ1X0JBU0VcdFx0MHgwMDgwXG4mIzQzOyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RcdFx0XHQweGRjMDBcbiYjNDM7I2RlZmluZSBSVExfUEtHX0RFVEVDVF9NQVNLXHRcdDB4MDA3OFxuJiM0MzsjZGVmaW5lIFJUTF9QS0dfREVURUNUXzgxMTZBRlx0XHQweDAwMzBcbiYjNDM7I2RlZmluZSBSVExfSU5UX0hXX0lEXHRcdFx0MHhkMDA2XG4mIzQzOyNkZWZpbmUgUlRMX0lOVF9IV19JRF9NQVNLXHRcdDB4MDBmZlxuJiM0MzsjZGVmaW5lIFJUTF9JTlRfSFdfSURfODExNkFGXHRcdDB4MDAwMFxuJiM0MzsjZGVmaW5lIFJUTDgxMTZBRl9GVU5DX1BNX0NTUlx0XHQweDgwXG4mIzQzOyNkZWZpbmUgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTFx0MHg0NFxuJiM0MzsjZGVmaW5lIFJUTF9QTV9EM0hPVFx0XHRcdEdFTk1BU0soMSwgMClcbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHtcbiBcdHUzMiBtYXNrO1xuIFx0dTMyIHZhbDtcbkBAIC0zMzQsMTEgJiM0MzszNTEsMTMgQEAgZW51bSBydGxfcmVnaXN0ZXJzIHtcbiBcdEFMRFBTX0xUUlx0PSAweGUwYTIsXG4gXHRMVFJfT0JGRl9MT0NLXHQ9IDB4ZTAzMixcbiBcdExUUl9TTk9PUFx0PSAweGUwMzQsXG4mIzQzO1x0U0VORF9MVFJfTVNHXHQ9IDB4ZTAzOCxcbiBcbiAjZGVmaW5lIEFMRFBTX0xUUl9FTlx0XHRcdEJJVCgwKVxuICNkZWZpbmUgTFRSX09CRkZfTE9DS19FTlx0XHRCSVQoMClcbiAjZGVmaW5lIExJTktfU1BFRURfQ0hBTkdFX0VOXHRcdEJJVCgxNClcbiAjZGVmaW5lIExUUl9TTk9PUF9FTlx0XHRcdEdFTk1BU0soMTUsIDE0KVxuJiM0MzsjZGVmaW5lIExUUl9NU0dfRU5cdFx0XHRCSVQoMClcbiB9O1xuIFxuIGVudW0gcnRsODE2OF84MTAxX3JlZ2lzdGVycyB7XG5AQCAtNzI4LDYgJiM0Mzs3NDcsMTIgQEAgZW51bSBydGxfZGFzaF90eXBlIHtcbiBcdFJUTF9EQVNIXzI1X0JQLFxuIH07XG4gXG4mIzQzO2VudW0gcnRsX3NmcF9tb2RlIHtcbiYjNDM7XHRSVExfU0ZQX05PTkUsXG4mIzQzO1x0UlRMX1NGUF84MTY4X0FGLFxuJiM0MztcdFJUTF9TRlBfODEyN19BVEYsXG4mIzQzO307XG4mIzQzO1xuIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dm9pZCBfX2lvbWVtICptbWlvX2FkZHI7XHQvKiBtZW1vcnkgbWFwIHBoeXNpY2FsIGFkZHJlc3MgKi9cbiBcdHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2O1xuQEAgLTczNiw2ICYjNDM7NzYxLDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbiBcdGVudW0gbWFjX3ZlcnNpb24gbWFjX3ZlcnNpb247XG4gXHRlbnVtIHJ0bF9kYXNoX3R5cGUgZGFzaF90eXBlO1xuJiM0MztcdGVudW0gcnRsX3NmcF9tb2RlIHNmcF9tb2RlO1xuIFx0dTMyIGN1cl9yeDsgLyogSW5kZXggaW50byB0aGUgUnggZGVzY3JpcHRvciBidWZmZXIgb2YgbmV4dCBSeCBwa3QuICovXG4gXHR1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cbiBcdHUzMiBkaXJ0eV90eDtcbkBAIC03NTAsNiAmIzQzOzc3Niw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dTMyIGlycV9tYXNrO1xuIFx0aW50IGlycTtcbiBcdHN0cnVjdCBjbGsgKmNsaztcbiYjNDM7XHRpbnQgc3BlZWQ7XG4gXG4gXHRzdHJ1Y3Qge1xuIFx0XHRERUNMQVJFX0JJVE1BUChmbGFncywgUlRMX0ZMQUdfTUFYKTtcbkBAIC03NjIsNyAmIzQzOzc4OSw2IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dW5zaWduZWQgc3VwcG9ydHNfZ21paToxO1xuIFx0dW5zaWduZWQgYXNwbV9tYW5hZ2VhYmxlOjE7XG4gXHR1bnNpZ25lZCBkYXNoX2VuYWJsZWQ6MTtcbi1cdGJvb2wgc2ZwX21vZGU6MTtcbiBcdGRtYV9hZGRyX3QgY291bnRlcnNfcGh5c19hZGRyO1xuIFx0c3RydWN0IHJ0bDgxNjlfY291bnRlcnMgKmNvdW50ZXJzO1xuIFx0c3RydWN0IHJ0bDgxNjlfdGNfb2Zmc2V0cyB0Y19vZmZzZXQ7XG5AQCAtNzc0LDYgJiM0Mzs4MDAsMTEgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZWRzO1xuIFxuIFx0dTMyIG9jcF9iYXNlO1xuJiM0MztcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuJiM0MztcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyBwaHlsaW5rX2NvbmZpZztcbiYjNDM7XHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xuJiM0MztcdHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gc2F2ZWRfcGF1c2U7XG4mIzQzO1x0Ym9vbCBqdW1ib19wYXVzZV9zYXZlZDtcbiB9O1xuIFxuIHR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xuQEAgLTExMjgsMTAgJiM0MzsxMTU5LDYgQEAgc3RhdGljIGludCByODE2OF9waHlfb2NwX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiByZWcpXG4gXHRpZiAocnRsX29jcF9yZWdfZmFpbHVyZShyZWcpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdC8qIFJldHVybiBkdW1teSBNSUlfUEhZU0lEMiBpbiBTRlAgbW9kZSB0byBtYXRjaCBTRlAgUEhZIGRyaXZlciAqL1xuLVx0aWYgKHRwLVx1MDAzZXNmcF9tb2RlIFx1MDAyNlx1MDAyNiByZWcgPT0gKE9DUF9TVERfUEhZX0JBU0UgJiM0MzsgMiAqIE1JSV9QSFlTSUQyKSlcbi1cdFx0cmV0dXJuIFBIWV9JRF9SVExfRFVNTVlfU0ZQIFx1MDAyNiAweGZmZmY7XG4tXG4gXHRSVExfVzMyKHRwLCBHUEhZX09DUCwgcmVnIFx1MDAzY1x1MDAzYyAxNSk7XG4gXG4gXHRyZXR1cm4gcnRsX2xvb3Bfd2FpdF9oaWdoKHRwLCBcdTAwMjZydGxfb2NwX2dwaHlfY29uZCwgMjUsIDEwKSA/XG5AQCAtMTIxNywxMiAmIzQzOzEyNDQsNiBAQCBzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xMGcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MDQsICh2YWwgXHUwMDI2IH4weDAwMGYpIHwgMHgwMDBjKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnRsX3NmcF9pbml0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLXtcbi1cdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuLVx0XHRyODEyN19zZnBfaW5pdF8xMGcodHApO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBydGxfc2ZwX3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuQEAgLTEyODMsNiAmIzQzOzEzMDQsMTUgQEAgc3RhdGljIHZvaWQgbWFjX21jdV93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxuIFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgdHAtXHUwMDNlb2NwX2Jhc2UgJiM0MzsgcmVnLCB2YWx1ZSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBydGxfaXNfODExNmFmKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNTIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfUEtHX0RFVEVDVCkgXHUwMDI2IFJUTF9QS0dfREVURUNUX01BU0spID09XG4mIzQzO1x0XHRSVExfUEtHX0RFVEVDVF84MTE2QUYgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKSBcdTAwMjYgUlRMX0lOVF9IV19JRF9NQVNLKSA9PVxuJiM0MztcdFx0UlRMX0lOVF9IV19JRF84MTE2QUY7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBtYWNfbWN1X3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcpXG4ge1xuIFx0cmV0dXJuIHI4MTY4X21hY19vY3BfcmVhZCh0cCwgdHAtXHUwMDNlb2NwX2Jhc2UgJiM0MzsgcmVnKTtcbkBAIC0xNTc4LDYgJiM0MzsxNjA4LDIwIEBAIHN0YXRpYyBib29sIHJ0bF9kYXNoX2lzX2VuYWJsZWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgZW51bSBydGxfc2ZwX21vZGUgcnRsX2dldF9zZnBfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiYjNDM7e1xuJiM0MztcdGlmIChydGxfaXNfODEyNSh0cCkpIHtcbiYjNDM7XHRcdHUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoKGRhdGEgXHUwMDI2IDB4ZmYpID09IDB4MDcpXG4mIzQzO1x0XHRcdHJldHVybiBSVExfU0ZQXzgxMjdfQVRGO1xuJiM0MztcdH0gZWxzZSBpZiAocnRsX2lzXzgxMTZhZih0cCkpIHtcbiYjNDM7XHRcdHJldHVybiBSVExfU0ZQXzgxNjhfQUY7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gUlRMX1NGUF9OT05FO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBlbnVtIHJ0bF9kYXNoX3R5cGUgcnRsX2dldF9kYXNoX3R5cGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuIFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuQEAgLTE2NzMsMTYgJiM0MzsxNzE3LDE0IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaXJxX21hc2tfYW5kX2FjayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHJ0bF9wY2lfY29tbWl0KHRwKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuJiM0MztzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBzcGVlZClcbiB7XG4tXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXHUwMDNlcGh5ZGV2O1xuLVxuIFx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzQgfHxcbiBcdCAgICB0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM4KSB7XG4tXHRcdGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwMCkge1xuJiM0MztcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbi1cdFx0fSBlbHNlIGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwKSB7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHNwZWVkID09IFNQRUVEXzEwMCkge1xuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWJjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMWYpO1xuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpO1xuIFx0XHR9IGVsc2Uge1xuQEAgLTE2OTIsNyAmIzQzOzE3MzQsNyBAQCBzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdHJ0bF9yZXNldF9wYWNrZXRfZmlsdGVyKHRwKTtcbiBcdH0gZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNSB8fFxuIFx0XHQgICB0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM2KSB7XG4tXHRcdGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwMCkge1xuJiM0MztcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0xNzAwLDcgJiM0MzsxNzQyLDcgQEAgc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwM2YpO1xuIFx0XHR9XG4gXHR9IGVsc2UgaWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzcpIHtcbi1cdFx0aWYgKHBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF8xMCkge1xuJiM0MztcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwKSB7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZDAsIEVSSUFSX01BU0tfMDAxMSwgMHg0ZDAyKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18wMDExLCAweDAwNjBhKTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0yMDc0LDExICYjNDM7MjExNiwxMSBAQCBydGxfY29hbGVzY2VfaW5mbyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0Y2kgPSBydGxfY29hbGVzY2VfaW5mb184MTY4XzgxMzY7XG4gXG4gXHQvKiBpZiBzcGVlZCBpcyB1bmtub3duIGFzc3VtZSBoaWdoZXN0IG9uZSAqL1xuLVx0aWYgKHRwLVx1MDAzZXBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF9VTktOT1dOKVxuJiM0MztcdGlmICh0cC1cdTAwM2VzcGVlZCA9PSBTUEVFRF9VTktOT1dOKVxuIFx0XHRyZXR1cm4gY2k7XG4gXG4gXHRmb3IgKDsgY2ktXHUwMDNlc3BlZWQ7IGNpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAodHAtXHUwMDNlcGh5ZGV2LVx1MDAzZXNwZWVkID09IGNpLVx1MDAzZXNwZWVkKVxuJiM0MztcdFx0aWYgKHRwLVx1MDAzZXNwZWVkID09IGNpLVx1MDAzZXNwZWVkKVxuIFx0XHRcdHJldHVybiBjaTtcbiBcdH1cbiBcbkBAIC0yMjM2LDcgJiM0MzsyMjc4LDcgQEAgc3RhdGljIHZvaWQgcnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgcjgxNjlfZ2V0X3R4X2xwaV90aW1lcl91cyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4tXHR1bnNpZ25lZCBpbnQgc3BlZWQgPSB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlc3BlZWQ7XG4mIzQzO1x0dW5zaWduZWQgaW50IHNwZWVkID0gdHAtXHUwMDNlc3BlZWQ7XG4gXHR1bnNpZ25lZCBpbnQgdGltZXIgPSB0cC1cdTAwM2V0eF9scGlfdGltZXI7XG4gXG4gXHRpZiAoIXRpbWVyIHx8IHNwZWVkID09IFNQRUVEX1VOS05PV04pXG5AQCAtMjI1NCw3ICYjNDM7MjI5Niw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9nZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXG4gXHRpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4tXHRyZXQgPSBwaHlfZXRodG9vbF9nZXRfZWVlKHRwLVx1MDAzZXBoeWRldiwgZGF0YSk7XG4mIzQzO1x0cmV0ID0gcGh5bGlua19ldGh0b29sX2dldF9lZWUodHAtXHUwMDNlcGh5bGluaywgZGF0YSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuQEAgLTIyNzAsNyAmIzQzOzIzMTIsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxuIFx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0cmV0dXJuIHBoeV9ldGh0b29sX3NldF9lZWUodHAtXHUwMDNlcGh5ZGV2LCBkYXRhKTtcbiYjNDM7XHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9lZWUodHAtXHUwMDNlcGh5bGluaywgZGF0YSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTIzMDEsMTMgJiM0MzsyMzQzLDggQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqZGF0YSlcbiB7XG4gXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRib29sIHR4X3BhdXNlLCByeF9wYXVzZTtcbiBcbi1cdHBoeV9nZXRfcGF1c2UodHAtXHUwMDNlcGh5ZGV2LCBcdTAwMjZ0eF9wYXVzZSwgXHUwMDI2cnhfcGF1c2UpO1xuLVxuLVx0ZGF0YS1cdTAwM2VhdXRvbmVnID0gdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZWF1dG9uZWc7XG4tXHRkYXRhLVx1MDAzZXR4X3BhdXNlID0gdHhfcGF1c2UgPyAxIDogMDtcbi1cdGRhdGEtXHUwMDNlcnhfcGF1c2UgPSByeF9wYXVzZSA/IDEgOiAwO1xuJiM0MztcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MTY5X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjMxOCw5ICYjNDM7MjM1NSw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWYgKGRldi1cdTAwM2VtdHUgXHUwMDNlIEVUSF9EQVRBX0xFTilcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0cGh5X3NldF9hc3ltX3BhdXNlKHRwLVx1MDAzZXBoeWRldiwgZGF0YS1cdTAwM2VyeF9wYXVzZSwgZGF0YS1cdTAwM2V0eF9wYXVzZSk7XG4tXG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHRwLVx1MDAzZXBoeWxpbmssIGRhdGEpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2dldF9ldGhfbWFjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjM4NiwzNCAmIzQzOzI0MjEsMjcgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX2N0cmxfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0bGUzMl90b19jcHUodHAtXHUwMDNlY291bnRlcnMtXHUwMDNlcnhfdW5rbm93bl9vcGNvZGUpO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbiYjNDM7c3RhdGljIGludCBydGw4MTY5X2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiYjNDM7XHRcdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuIHtcbiBcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XG4tXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXHUwMDNlcGh5ZGV2O1xuLVx0aW50IGR1cGxleCA9IGNtZC1cdTAwM2ViYXNlLmR1cGxleDtcbi1cdGludCBzcGVlZCA9IGNtZC1cdTAwM2ViYXNlLnNwZWVkO1xuLVxuLVx0aWYgKCF0cC1cdTAwM2VzZnBfbW9kZSlcbi1cdFx0cmV0dXJuIHBoeV9ldGh0b29sX2tzZXR0aW5nc19zZXQocGh5ZGV2LCBjbWQpO1xuIFxuLVx0aWYgKGNtZC1cdTAwM2ViYXNlLmF1dG9uZWcgIT0gQVVUT05FR19ESVNBQkxFKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cbi1cdGlmICghcGh5X2NoZWNrX3ZhbGlkKHNwZWVkLCBkdXBsZXgsIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZWxvY2spO1xuJiM0MztcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCh0cC1cdTAwM2VwaHlsaW5rLCBjbWQpO1xuJiM0Mzt9XG4gXG4tXHRwaHlkZXYtXHUwMDNlYXV0b25lZyA9IEFVVE9ORUdfRElTQUJMRTtcbi1cdHBoeWRldi1cdTAwM2VzcGVlZCA9IHNwZWVkO1xuLVx0cGh5ZGV2LVx1MDAzZWR1cGxleCA9IGR1cGxleDtcbiYjNDM7c3RhdGljIGludCBydGw4MTY5X3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiYjNDM7XHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiBcbi1cdHJ0bF9zZnBfaW5pdCh0cCk7XG4mIzQzO1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHRwLVx1MDAzZXBoeWxpbmssIGNtZCk7XG4mIzQzO31cbiBcbi1cdG11dGV4X3VubG9jayhcdTAwMjZwaHlkZXYtXHUwMDNlbG9jayk7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODE2OV9ud2F5X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4gXG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRyZXR1cm4gcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQodHAtXHUwMDNlcGh5bGluayk7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgcnRsODE2OV9ldGh0b29sX29wcyA9IHtcbkBAIC0yNDMxLDEwICYjNDM7MjQ1OSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHJ0bDgxNjlfZXRodG9vbF9vcHMgPSB7XG4gXHQuZ2V0X3NzZXRfY291bnRcdFx0PSBydGw4MTY5X2dldF9zc2V0X2NvdW50LFxuIFx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IHJ0bDgxNjlfZ2V0X2V0aHRvb2xfc3RhdHMsXG4gXHQuZ2V0X3RzX2luZm9cdFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxuLVx0Lm53YXlfcmVzZXRcdFx0PSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxuJiM0MztcdC5ud2F5X3Jlc2V0XHRcdD0gcnRsODE2OV9ud2F5X3Jlc2V0LFxuIFx0LmdldF9lZWVcdFx0PSBydGw4MTY5X2dldF9lZWUsXG4gXHQuc2V0X2VlZVx0XHQ9IHJ0bDgxNjlfc2V0X2VlZSxcbi1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuJiM0MztcdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcnRsODE2OV9nZXRfbGlua19rc2V0dGluZ3MsXG4gXHQuc2V0X2xpbmtfa3NldHRpbmdzXHQ9IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzLFxuIFx0LmdldF9yaW5ncGFyYW1cdFx0PSBydGw4MTY5X2dldF9yaW5ncGFyYW0sXG4gXHQuZ2V0X3BhdXNlX3N0YXRzXHQ9IHJ0bDgxNjlfZ2V0X3BhdXNlX3N0YXRzLFxuQEAgLTI0OTksOSAmIzQzOzI1MjcsMTAgQEAgdm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0dHAtXHUwMDNlb2NwX2Jhc2UgPSBPQ1BfU1REX1BIWV9CQVNFO1xuIFxuIFx0XHQvKiBQSFkgc29mdCByZXNldCBtYXkgc3RpbGwgYmUgaW4gcHJvZ3Jlc3MgKi9cbi1cdFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcbi1cdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbi1cdFx0XHRcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xuJiM0MztcdFx0aWYgKHRwLVx1MDAzZXBoeWRldilcbiYjNDM7XHRcdFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xuIFx0fVxuIH1cbiBcbkBAIC0yNTM4LDYgJiM0MzsyNTY3LDggQEAgc3RhdGljIHZvaWQgcnRsX3NjaGVkdWxlX3Rhc2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGVudW0gcnRsX2ZsYWcgZmxhZylcbiBcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcGh5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiYjNDM7XHRwaHlfaW5pdF9odyh0cC1cdTAwM2VwaHlkZXYpO1xuJiM0MztcdHBoeV9yZXN1bWUodHAtXHUwMDNlcGh5ZGV2KTtcbiBcdHI4MTY5X2h3X3BoeV9jb25maWcodHAsIHRwLVx1MDAzZXBoeWRldiwgdHAtXHUwMDNlbWFjX3ZlcnNpb24pO1xuIFxuIFx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uIFx1MDAzYz0gUlRMX0dJR0FfTUFDX1ZFUl8wNikge1xuQEAgLTI1NTIsOSAmIzQzOzI1ODMsNiBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcGh5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0ICAgIHRwLVx1MDAzZXBjaV9kZXYtXHUwMDNlc3Vic3lzdGVtX2RldmljZSA9PSAweGUwMDApXG4gXHRcdHBoeV93cml0ZV9wYWdlZCh0cC1cdTAwM2VwaHlkZXYsIDB4MDAwMSwgMHgxMCwgMHhmMDFiKTtcbiBcbi1cdGlmICh0cC1cdTAwM2VzZnBfbW9kZSlcbi1cdFx0cnRsX3NmcF9pbml0KHRwKTtcbi1cbiBcdC8qIFdlIG1heSBoYXZlIGNhbGxlZCBwaHlfc3BlZWRfZG93biBiZWZvcmUgKi9cbiBcdHBoeV9zcGVlZF91cCh0cC1cdTAwM2VwaHlkZXYpO1xuIFxuQEAgLTI2MjQsNiAmIzQzOzI2NTIsNTEgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3JpbmdfaW5kZXhlcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHRwLVx1MDAzZWRpcnR5X3R4ID0gdHAtXHUwMDNlY3VyX3R4ID0gdHAtXHUwMDNlY3VyX3J4ID0gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHJ0bF9qdW1ib19jb25maWdfcGF1c2Uoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4mIzQzO3tcbiYjNDM7XHRib29sIGp1bWJvID0gdHAtXHUwMDNlZGV2LVx1MDAzZW10dSBcdTAwM2UgRVRIX0RBVEFfTEVOO1xuJiM0MztcdHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gcGF1c2UgPSB7fTtcbiYjNDM7XG4mIzQzO1x0QVNTRVJUX1JUTkwoKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGp1bWJvKSB7XG4mIzQzO1x0XHRpZiAoIXRwLVx1MDAzZWp1bWJvX3BhdXNlX3NhdmVkKSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIGNtZCA9IHt9O1xuJiM0MztcdFx0XHRib29sIGFkdl9wYXVzZSwgYWR2X2FzeW07XG4mIzQzO1xuJiM0MztcdFx0XHRwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0odHAtXHUwMDNlcGh5bGluaywgXHUwMDI2dHAtXHUwMDNlc2F2ZWRfcGF1c2UpO1xuJiM0MztcdFx0XHRpZiAodHAtXHUwMDNlc2F2ZWRfcGF1c2UuYXV0b25lZykge1xuJiM0MztcdFx0XHRcdHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KHRwLVx1MDAzZXBoeWxpbmssIFx1MDAyNmNtZCk7XG4mIzQzO1x0XHRcdFx0YWR2X3BhdXNlID0gZXRodG9vbF9saW5rX2tzZXR0aW5nc190ZXN0X2xpbmtfbW9kZShcdTAwMjZjbWQsXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRcdFx0ICBhZHZlcnRpc2luZyxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XHQgIFBhdXNlKTtcbiYjNDM7XHRcdFx0XHRhZHZfYXN5bSAgPSBldGh0b29sX2xpbmtfa3NldHRpbmdzX3Rlc3RfbGlua19tb2RlKFx1MDAyNmNtZCxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XHQgIGFkdmVydGlzaW5nLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdCAgQXN5bV9QYXVzZSk7XG4mIzQzO1x0XHRcdFx0aWYgKGFkdl9wYXVzZSBcdTAwMjZcdTAwMjYgIWFkdl9hc3ltKSB7XG4mIzQzO1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS5yeF9wYXVzZSA9IDE7XG4mIzQzO1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDE7XG4mIzQzO1x0XHRcdFx0fSBlbHNlIGlmIChhZHZfcGF1c2UgXHUwMDI2XHUwMDI2IGFkdl9hc3ltKSB7XG4mIzQzO1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS5yeF9wYXVzZSA9IDE7XG4mIzQzO1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDA7XG4mIzQzO1x0XHRcdFx0fSBlbHNlIGlmICghYWR2X3BhdXNlIFx1MDAyNlx1MDAyNiBhZHZfYXN5bSkge1xuJiM0MztcdFx0XHRcdFx0dHAtXHUwMDNlc2F2ZWRfcGF1c2UucnhfcGF1c2UgPSAwO1xuJiM0MztcdFx0XHRcdFx0dHAtXHUwMDNlc2F2ZWRfcGF1c2UudHhfcGF1c2UgPSAxO1xuJiM0MztcdFx0XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS5yeF9wYXVzZSA9IDA7XG4mIzQzO1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDA7XG4mIzQzO1x0XHRcdFx0fVxuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdHRwLVx1MDAzZWp1bWJvX3BhdXNlX3NhdmVkID0gdHJ1ZTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdHBhdXNlLmF1dG9uZWcgPSB0cC1cdTAwM2VzYXZlZF9wYXVzZS5hdXRvbmVnO1xuJiM0MztcdFx0cGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHRwLVx1MDAzZXBoeWxpbmssIFx1MDAyNnBhdXNlKTtcbiYjNDM7XHR9IGVsc2UgaWYgKHRwLVx1MDAzZWp1bWJvX3BhdXNlX3NhdmVkKSB7XG4mIzQzO1x0XHRwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0odHAtXHUwMDNlcGh5bGluaywgXHUwMDI2dHAtXHUwMDNlc2F2ZWRfcGF1c2UpO1xuJiM0MztcdFx0dHAtXHUwMDNlanVtYm9fcGF1c2Vfc2F2ZWQgPSBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4gXHRib29sIGp1bWJvID0gdHAtXHUwMDNlZGV2LVx1MDAzZW10dSBcdTAwM2UgRVRIX0RBVEFfTEVOO1xuQEAgLTI2NTcsMTUgJiM0MzsyNzMwLDYgQEAgc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBcdGlmIChwY2lfaXNfcGNpZSh0cC1cdTAwM2VwY2lfZGV2KSBcdTAwMjZcdTAwMjYgdHAtXHUwMDNlc3VwcG9ydHNfZ21paSlcbiBcdFx0cGNpZV9zZXRfcmVhZHJxKHRwLVx1MDAzZXBjaV9kZXYsIHJlYWRycSk7XG4tXG4tXHQvKiBDaGlwIGRvZXNuJiMzOTt0IHN1cHBvcnQgcGF1c2UgaW4ganVtYm8gbW9kZSAqL1xuLVx0aWYgKGp1bWJvKSB7XG4tXHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsXG4tXHRcdFx0XHQgICB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmcpO1xuLVx0XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsXG4tXHRcdFx0XHQgICB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmcpO1xuLVx0XHRwaHlfc3RhcnRfYW5lZyh0cC1cdTAwM2VwaHlkZXYpO1xuLVx0fVxuIH1cbiBcbiBERUNMQVJFX1JUTF9DT05EKHJ0bF9jaGlwY21kX2NvbmQpXG5AQCAtMjc4MCw3ICYjNDM7Mjg0NCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9wcmVwYXJlX3Bvd2VyX2Rvd24oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdHJ0bF9lcGh5X3dyaXRlKHRwLCAweDE5LCAweGZmNjQpO1xuIFxuIFx0aWYgKGRldmljZV9tYXlfd2FrZXVwKHRwX3RvX2Rldih0cCkpKSB7XG4tXHRcdHBoeV9zcGVlZF9kb3duKHRwLVx1MDAzZXBoeWRldiwgZmFsc2UpO1xuJiM0MztcdFx0cGh5bGlua19zcGVlZF9kb3duKHRwLVx1MDAzZXBoeWxpbmssIGZhbHNlKTtcbiBcdFx0cnRsX3dvbF9lbmFibGVfcngodHApO1xuIFx0fVxuIH1cbkBAIC0yODMyLDYgJiM0MzsyODk2LDE2IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfc2V0X21hZ2ljX3JlZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFJUTF9XMzIodHAsIDB4N2MsIHZhbCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IHJ0bDgxNjlfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1xuJiM0MztcdGlmICghbmV0aWZfcnVubmluZyhkZXYpKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdHJldHVybiBwaHlsaW5rX21paV9pb2N0bCh0cC1cdTAwM2VwaHlsaW5rLCBpZnIsIGNtZCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgcnRsX3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0dTMyIHJ4X21vZGUgPSBBY2NlcHRCcm9hZGNhc3QgfCBBY2NlcHRNeVBoeXMgfCBBY2NlcHRNdWx0aWNhc3Q7XG5AQCAtMzA5OCw4ICYjNDM7MzE3MiwyMiBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGYyLCAweDkwMDMpO1xuIFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX09CRkZfTE9DSywgMHgwMDAwLCBMSU5LX1NQRUVEX0NIQU5HRV9FTik7XG4gXHRcdGJyZWFrO1xuLVx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuIFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMDJjLCAweDE4ODApO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMDJlLCAweDQ4ODApO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ4LCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRhLCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQyLCAweDg4M2MpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ0LCAweDhjMTIpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMGE2LCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMGE4LCAweDkwMDMpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuIFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgQUxEUFNfTFRSLCAweDAwMDAsIEFMRFBTX0xUUl9FTik7XG4gXHRcdFJUTF9XOCh0cCwgQ09NQk9fTFRSX0VYVEVORCwgUlRMX1I4KHRwLCBDT01CT19MVFJfRVhURU5EKSB8IENPTUJPX0xUUl9FWFRFTkRfRU4pO1xuIFx0XHRmYWxsdGhyb3VnaDtcbkBAIC0zMTE5LDYgJiM0MzszMjA3LDcgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHR9XG4gXHQvKiBjaGlwIGNhbiB0cmlnZ2VyIExUUiAqL1xuIFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9PQkZGX0xPQ0ssIDB4MDAwMywgTFRSX09CRkZfTE9DS19FTik7XG4mIzQzO1x0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIFNFTkRfTFRSX01TRywgMHgwMDAwLCBMVFJfTVNHX0VOKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG5AQCAtMzE1Miw2ICYjNDM7MzI0MSw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxuIFx0XHRydGxfZW5hYmxlX2x0cih0cCk7XG4gXHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuJiM0MztcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuIFx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcbiBcdFx0XHQvKiByZXNldCBlcGh5IHR4L3J4IGRpc2FibGUgdGltZXIgKi9cbiBcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDk0LCAweGZmMDAsIDApO1xuQEAgLTMxNjQsNiAmIzQzOzMyNTQsNyBAQCBzdGF0aWMgdm9pZCBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcbiBcdH0gZWxzZSB7XG4gXHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuJiM0MztcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuIFx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcbiBcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDkyLCAweDAwZmYsIDApO1xuIFx0XHRcdGJyZWFrO1xuQEAgLTM2NTcsNiAmIzQzOzM3NDgsMzUgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxNjhlcF8zKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTg2MCwgMHgwMDAwLCAweDAwODApO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBpbnQgc2xvdCA9IFBDSV9TTE9UKHBkZXYtXHUwMDNlZGV2Zm4pO1xuJiM0MztcdHN0cnVjdCBwY2lfYnVzICpidXMgPSBwZGV2LVx1MDAzZWJ1cztcbiYjNDM7XHR1bnNpZ25lZCBpbnQgZGV2Zm47XG4mIzQzO1x0aW50IGZ1bmM7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XHR1MzIgdmFsO1xuJiM0MztcbiYjNDM7XHRmb3IgKGZ1bmMgPSAyOyBmdW5jIFx1MDAzYyA4OyBmdW5jJiM0MzsmIzQzOykge1xuJiM0MztcdFx0ZGV2Zm4gPSBQQ0lfREVWRk4oc2xvdCwgZnVuYyk7XG4mIzQzO1xuJiM0MztcdFx0cmV0ID0gcGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19QTV9DU1IsIFx1MDAyNnZhbCk7XG4mIzQzO1x0XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgIVBDSV9QT1NTSUJMRV9FUlJPUih2YWwpKSB7XG4mIzQzO1x0XHRcdHZhbCBcdTAwMjY9IH5QQ0lfUE1fQ1RSTF9QTUVfU1RBVFVTO1xuJiM0MztcdFx0XHR2YWwgXHUwMDI2PSB+KFBDSV9QTV9DVFJMX1NUQVRFX01BU0sgfCBQQ0lfUE1fQ1RSTF9QTUVfRU5BQkxFKTtcbiYjNDM7XHRcdFx0dmFsIHw9IChSVExfUE1fRDNIT1QgfCBQQ0lfUE1fQ1RSTF9QTUVfRU5BQkxFKTtcbiYjNDM7XHRcdFx0cGNpX2J1c193cml0ZV9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfUE1fQ1NSLCB2YWwpO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHJldCA9IHBjaV9idXNfcmVhZF9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTCwgXHUwMDI2dmFsKTtcbiYjNDM7XHRcdGlmICghcmV0IFx1MDAyNlx1MDAyNiAhUENJX1BPU1NJQkxFX0VSUk9SKHZhbCkpIHtcbiYjNDM7XHRcdFx0dmFsIFx1MDAyNj0gfigoUENJX0VYUF9MTktTVEFfTEJNUyB8IFBDSV9FWFBfTE5LU1RBX0xBQlMpIFx1MDAzY1x1MDAzYyAxNik7XG4mIzQzO1x0XHRcdHZhbCB8PSBQQ0lfRVhQX0xOS0NUTF9BU1BNQztcbiYjNDM7XHRcdFx0cGNpX2J1c193cml0ZV9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTCwgdmFsKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMTcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuIFx0c3RhdGljIGNvbnN0IHN0cnVjdCBlcGh5X2luZm8gZV9pbmZvXzgxMTdbXSA9IHtcbkBAIC0zNjkzLDEyICYjNDM7MzgxMywxNCBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBcdHJ0bF9wY2llX3N0YXRlX2wybDNfZGlzYWJsZSh0cCk7XG4gXG4tXHRyZ19zYXdfY250ID0gcGh5X3JlYWRfcGFnZWQodHAtXHUwMDNlcGh5ZGV2LCAweDBjNDIsIDB4MTMpIFx1MDAyNiAweDNmZmY7XG4tXHRpZiAocmdfc2F3X2NudCBcdTAwM2UgMCkge1xuLVx0XHR1MTYgc3dfY250XzFtc19pbmk7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXBoeWRldikge1xuJiM0MztcdFx0cmdfc2F3X2NudCA9IHBoeV9yZWFkX3BhZ2VkKHRwLVx1MDAzZXBoeWRldiwgMHgwYzQyLCAweDEzKSBcdTAwMjYgMHgzZmZmO1xuJiM0MztcdFx0aWYgKHJnX3Nhd19jbnQgXHUwMDNlIDApIHtcbiYjNDM7XHRcdFx0dTE2IHN3X2NudF8xbXNfaW5pO1xuIFxuLVx0XHRzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpIFx1MDAyNiAweDBmZmY7XG4tXHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpO1xuJiM0MztcdFx0XHRzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpIFx1MDAyNiAweDBmZmY7XG4mIzQzO1x0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpO1xuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA1NiwgMHgwMGYwLCAweDAwMDApO1xuQEAgLTM3MTEsNiAmIzQzOzM4MzMsOSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5NCwgMHgwMDAwKTtcbiBcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5ZSwgMHgwMDAwKTtcbiBcbiYjNDM7XHRpZiAocnRsX2lzXzgxMTZhZih0cCkpXG4mIzQzO1x0XHRydGxfbG93cG93ZXJfaGlkZGVuX2Z1bmN0aW9ucyh0cC1cdTAwM2VwY2lfZGV2KTtcbiYjNDM7XG4gXHQvKiBmaXJtd2FyZSBpcyBmb3IgTUFDIG9ubHkgKi9cbiBcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbiB9XG5AQCAtNDEzOSwxMiAmIzQzOzQyNjQsMTcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0KHN0cnVjdCAgcnRsODE2OV9wcml2YXRlICp0cClcbiBzdGF0aWMgaW50IHJ0bDgxNjlfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbiB7XG4gXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1x0Ym9vbCBqdW1ib19iZWZvcmUgPSBkZXYtXHUwMDNlbXR1IFx1MDAzZSBFVEhfREFUQV9MRU47XG4mIzQzO1x0Ym9vbCBqdW1ib19hZnRlciA9IG5ld19tdHUgXHUwMDNlIEVUSF9EQVRBX0xFTjtcbiBcbiBcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbmV3X210dSk7XG4gXHRuZXRkZXZfdXBkYXRlX2ZlYXR1cmVzKGRldik7XG4gXHRydGxfanVtYm9fY29uZmlnKHRwKTtcbiBcdHJ0bF9zZXRfZWVlX3R4aWRsZV90aW1lcih0cCk7XG4gXG4mIzQzO1x0aWYgKGp1bWJvX2JlZm9yZSAhPSBqdW1ib19hZnRlcilcbiYjNDM7XHRcdHJ0bF9qdW1ib19jb25maWdfcGF1c2UodHApO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC00ODY5LDggJiM0Mzs0OTk5LDEzIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBydGw4MTY5X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuLVx0aWYgKHN0YXR1cyBcdTAwMjYgTGlua0NoZylcbi1cdFx0cGh5X21hY19pbnRlcnJ1cHQodHAtXHUwMDNlcGh5ZGV2KTtcbiYjNDM7XHRpZiAoc3RhdHVzIFx1MDAyNiBMaW5rQ2hnKSB7XG4mIzQzO1x0XHRpZiAodHAtXHUwMDNlcGh5ZGV2KVxuJiM0MztcdFx0XHRwaHlfbWFjX2ludGVycnVwdCh0cC1cdTAwM2VwaHlkZXYpO1xuJiM0MztcdFx0ZWxzZSBpZiAodHAtXHUwMDNlc2ZwX21vZGUpXG4mIzQzO1x0XHRcdHBoeWxpbmtfbWFjX2NoYW5nZSh0cC1cdTAwM2VwaHlsaW5rLFxuJiM0MztcdFx0XHRcdFx0ICAgISEoUlRMX1I4KHRwLCBQSFlzdGF0dXMpIFx1MDAyNiBMaW5rU3RhdHVzKSk7XG4mIzQzO1x0fVxuIFxuIFx0cnRsX2lycV9kaXNhYmxlKHRwKTtcbiBcdG5hcGlfc2NoZWR1bGUoXHUwMDI2dHAtXHUwMDNlbmFwaSk7XG5AQCAtNDkzMCw5ICYjNDM7NTA2NSw2IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbiBcbiBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4ge1xuLVx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcbi1cdFx0cmV0dXJuO1xuLVxuIFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuIFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzM0IC4uLiBSVExfR0lHQV9NQUNfVkVSXzUyOlxuIFx0XHQvKiBBZGp1c3QgRUVFIExFRCBmcmVxdWVuY3kgKi9cbkBAIC00OTYzLDQwICYjNDM7NTA5NSwxNSBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHI4MTY5X3BoeWxpbmtfaGFuZGxlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi17XG4tXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpO1xuLVx0c3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7XG4tXG4tXHRpZiAobmV0aWZfY2Fycmllcl9vayhuZGV2KSkge1xuLVx0XHRydGxfbGlua19jaGdfcGF0Y2godHApO1xuLVx0XHRydGxfZW5hYmxlX3R4X2xwaSh0cCwgdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZWVuYWJsZV90eF9scGkpO1xuLVx0XHRwbV9yZXF1ZXN0X3Jlc3VtZShkKTtcbi1cdH0gZWxzZSB7XG4tXHRcdHBtX3J1bnRpbWVfaWRsZShkKTtcbi1cdH1cbi1cbi1cdHBoeV9wcmludF9zdGF0dXModHAtXHUwMDNlcGh5ZGV2KTtcbi19XG4tXG4gc3RhdGljIGludCByODE2OV9waHlfY29ubmVjdChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4tXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXHUwMDNlcGh5ZGV2O1xuLVx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xuIFx0aW50IHJldDtcbiBcbi1cdHBoeV9tb2RlID0gdHAtXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcbi1cdFx0ICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSTtcbi1cbi1cdHJldCA9IHBoeV9jb25uZWN0X2RpcmVjdCh0cC1cdTAwM2VkZXYsIHBoeWRldiwgcjgxNjlfcGh5bGlua19oYW5kbGVyLFxuLVx0XHRcdFx0IHBoeV9tb2RlKTtcbi1cdGlmIChyZXQpXG4mIzQzO1x0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeSh0cC1cdTAwM2VwaHlsaW5rLCB0cC1cdTAwM2VwaHlkZXYpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdG5ldGRldl9lcnIodHAtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gY29ubmVjdCBwaHlcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0aWYgKCF0cC1cdTAwM2VzdXBwb3J0c19nbWlpKVxuLVx0XHRwaHlfc2V0X21heF9zcGVlZChwaHlkZXYsIFNQRUVEXzEwMCk7XG4tXG4tXHRwaHlfYXR0YWNoZWRfaW5mbyhwaHlkZXYpO1xuJiM0MztcdH1cbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC01MDA3LDEwICYjNDM7NTExNCwxMCBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X2Rvd24oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHQvKiBDbGVhciBhbGwgdGFzayBmbGFncyAqL1xuIFx0Yml0bWFwX3plcm8odHAtXHUwMDNld2suZmxhZ3MsIFJUTF9GTEFHX01BWCk7XG4gXG4tXHRwaHlfc3RvcCh0cC1cdTAwM2VwaHlkZXYpO1xuJiM0MztcdHBoeWxpbmtfc3RvcCh0cC1cdTAwM2VwaHlsaW5rKTtcbiBcbiBcdC8qIFJlc2V0IFNlckRlcyBQSFkgdG8gYnJpbmcgZG93biBmaWJlciBsaW5rICovXG4tXHRpZiAodHAtXHUwMDNlc2ZwX21vZGUpXG4mIzQzO1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpXG4gXHRcdHJ0bF9zZnBfcmVzZXQodHApO1xuIFxuIFx0cnRsODE2OV91cGRhdGVfY291bnRlcnModHApO1xuQEAgLTUwMzIsMTQgJiM0Mzs1MTM5LDE0IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfdXAoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdHJ0bDgxNjhfZHJpdmVyX3N0YXJ0KHRwKTtcbiBcbiBcdHBjaV9zZXRfbWFzdGVyKHRwLVx1MDAzZXBjaV9kZXYpO1xuLVx0cGh5X2luaXRfaHcodHAtXHUwMDNlcGh5ZGV2KTtcbi1cdHBoeV9yZXN1bWUodHAtXHUwMDNlcGh5ZGV2KTtcbi1cdHJ0bDgxNjlfaW5pdF9waHkodHApO1xuJiM0MztcdGlmICh0cC1cdTAwM2VwaHlkZXYpXG4mIzQzO1x0XHRydGw4MTY5X2luaXRfcGh5KHRwKTtcbiYjNDM7XG4gXHRuYXBpX2VuYWJsZShcdTAwMjZ0cC1cdTAwM2VuYXBpKTtcbiBcdGVuYWJsZV93b3JrKFx1MDAyNnRwLVx1MDAzZXdrLndvcmspO1xuIFx0cnRsX3Jlc2V0X3dvcmsodHApO1xuIFxuLVx0cGh5X3N0YXJ0KHRwLVx1MDAzZXBoeWRldik7XG4mIzQzO1x0cGh5bGlua19zdGFydCh0cC1cdTAwM2VwaHlsaW5rKTtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MTY5X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5AQCAtNTA1NSw3ICYjNDM7NTE2Miw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0ZnJlZV9pcnEodHAtXHUwMDNlaXJxLCB0cCk7XG4gXG4tXHRwaHlfZGlzY29ubmVjdCh0cC1cdTAwM2VwaHlkZXYpO1xuJiM0MztcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkodHAtXHUwMDNlcGh5bGluayk7XG4gXG4gXHRkbWFfZnJlZV9jb2hlcmVudChcdTAwMjZwZGV2LVx1MDAzZWRldiwgUjgxNjlfUlhfUklOR19CWVRFUywgdHAtXHUwMDNlUnhEZXNjQXJyYXksXG4gXHRcdFx0ICB0cC1cdTAwM2VSeFBoeUFkZHIpO1xuQEAgLTUxMTIsOSAmIzQzOzUyMTksMTEgQEAgc3RhdGljIGludCBydGxfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKHJldHZhbCBcdTAwM2MgMClcbiBcdFx0Z290byBlcnJfcmVsZWFzZV9md18yO1xuIFxuLVx0cmV0dmFsID0gcjgxNjlfcGh5X2Nvbm5lY3QodHApO1xuLVx0aWYgKHJldHZhbClcbi1cdFx0Z290byBlcnJfZnJlZV9pcnE7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXBoeWRldikge1xuJiM0MztcdFx0cmV0dmFsID0gcjgxNjlfcGh5X2Nvbm5lY3QodHApO1xuJiM0MztcdFx0aWYgKHJldHZhbClcbiYjNDM7XHRcdFx0Z290byBlcnJfZnJlZV9pcnE7XG4mIzQzO1x0fVxuIFxuIFx0cnRsODE2OV91cCh0cCk7XG4gXHRydGw4MTY5X2luaXRfY291bnRlcl9vZmZzZXRzKHRwKTtcbkBAIC01MTkwLDggJiM0Mzs1Mjk5LDExIEBAIHN0YXRpYyBpbnQgcnRsODE2OV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRydGxfcmFyX3NldCh0cCwgdHAtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyKTtcbiBcdF9fcnRsODE2OV9zZXRfd29sKHRwLCB0cC1cdTAwM2VzYXZlZF93b2xvcHRzKTtcbiBcbi1cdGlmICh0cC1cdTAwM2VUeERlc2NBcnJheSlcbiYjNDM7XHRpZiAodHAtXHUwMDNlVHhEZXNjQXJyYXkpIHtcbiYjNDM7XHRcdHJ0bmxfbG9jaygpO1xuIFx0XHRydGw4MTY5X3VwKHRwKTtcbiYjNDM7XHRcdHJ0bmxfdW5sb2NrKCk7XG4mIzQzO1x0fVxuIFxuIFx0bmV0aWZfZGV2aWNlX2F0dGFjaCh0cC1cdTAwM2VkZXYpO1xuIFxuQEAgLTUyODgsNiAmIzQzOzU0MDAsOCBAQCBzdGF0aWMgdm9pZCBydGxfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiBcdFx0cjgxNjlfcmVtb3ZlX2xlZHModHAtXHUwMDNlbGVkcyk7XG4gXG4gXHR1bnJlZ2lzdGVyX25ldGRldih0cC1cdTAwM2VkZXYpO1xuJiM0MztcdGlmICh0cC1cdTAwM2VwaHlsaW5rKVxuJiM0MztcdFx0cGh5bGlua19kZXN0cm95KHRwLVx1MDAzZXBoeWxpbmspO1xuIFxuIFx0aWYgKHRwLVx1MDAzZWRhc2hfdHlwZSAhPSBSVExfREFTSF9OT05FKVxuIFx0XHRydGw4MTY4X2RyaXZlcl9zdG9wKHRwKTtcbkBAIC01MzEwLDcgJiM0Mzs1NDI0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBydGxfbmV0ZGV2X29wcyA9IHtcbiBcdC5uZG9fZml4X2ZlYXR1cmVzXHQ9IHJ0bDgxNjlfZml4X2ZlYXR1cmVzLFxuIFx0Lm5kb19zZXRfZmVhdHVyZXNcdD0gcnRsODE2OV9zZXRfZmVhdHVyZXMsXG4gXHQubmRvX3NldF9tYWNfYWRkcmVzc1x0PSBydGxfc2V0X21hY19hZGRyZXNzLFxuLVx0Lm5kb19ldGhfaW9jdGxcdFx0PSBwaHlfZG9faW9jdGxfcnVubmluZyxcbiYjNDM7XHQubmRvX2V0aF9pb2N0bFx0XHQ9IHJ0bDgxNjlfaW9jdGwsXG4gXHQubmRvX3NldF9yeF9tb2RlXHQ9IHJ0bF9zZXRfcnhfbW9kZSxcbiAjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVJcbiBcdC5uZG9fcG9sbF9jb250cm9sbGVyXHQ9IHJ0bDgxNjlfbmV0cG9sbCxcbkBAIC01NDc0LDE2ICYjNDM7NTU4OCw2IEBAIHN0YXRpYyBpbnQgcjgxNjlfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0cmV0dXJuIC1FVU5BVENIO1xuIFx0fVxuIFxuLVx0dHAtXHUwMDNlcGh5ZGV2LVx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbi1cdGlmIChydGxfc3VwcG9ydHNfZWVlKHRwKSlcbi1cdFx0cGh5X3N1cHBvcnRfZWVlKHRwLVx1MDAzZXBoeWRldik7XG4tXHRwaHlfc3VwcG9ydF9hc3ltX3BhdXNlKHRwLVx1MDAzZXBoeWRldik7XG4tXG4tXHQvKiBtaW1pYyBiZWhhdmlvciBvZiByODEyNS9yODEyNiB2ZW5kb3IgZHJpdmVycyAqL1xuLVx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNjEpXG4tXHRcdHBoeV9kaXNhYmxlX2VlZV9tb2RlKHRwLVx1MDAzZXBoeWRldixcbi1cdFx0XHRcdCAgICAgRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklUKTtcbi1cbiBcdC8qIFBIWSB3aWxsIGJlIHdva2VuIHVwIGluIHJ0bF9vcGVuKCkgKi9cbiBcdHBoeV9zdXNwZW5kKHRwLVx1MDAzZXBoeWRldik7XG4gXG5AQCAtNTU5OSw2ICYjNDM7NTcwMywyMzMgQEAgc3RhdGljIGJvb2wgcnRsX2FzcG1faXNfc2FmZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHJ0bF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbiYjNDM7XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuJiM0MztcbiYjNDM7XHR0cC1cdTAwM2VzcGVlZCA9IFNQRUVEX1VOS05PV047XG4mIzQzO1x0cG1fcnVudGltZV9pZGxlKHRwX3RvX2Rldih0cCkpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4mIzQzO1x0XHRcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbiYjNDM7XHRcdFx0ICAgIGludCBzcGVlZCwgaW50IGR1cGxleCwgYm9vbCB0eF9wYXVzZSwgYm9vbCByeF9wYXVzZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmQgPSB0cF90b19kZXYodHApO1xuJiM0MztcbiYjNDM7XHR0cC1cdTAwM2VzcGVlZCA9IHNwZWVkO1xuJiM0MztcdHJ0bF9saW5rX2NoZ19wYXRjaCh0cCwgc3BlZWQpO1xuJiM0MztcbiYjNDM7XHRwbV9yZXF1ZXN0X3Jlc3VtZShkKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcnRsX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuJiM0MztcbiYjNDM7XHRpZiAoIXRwLVx1MDAzZXBjcy5vcHMpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4mIzQzO1x0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XG4mIzQzO1x0ICAgIGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpXG4mIzQzO1x0XHRyZXR1cm4gXHUwMDI2dHAtXHUwMDNlcGNzO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcnRsX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuJiM0MztcdFx0XHQgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbiYjNDM7e1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdTE2IHJ0bDgxNjlfc2RzX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBzZHNfcmVnKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiYjNDM7XHR1MTYgdmFsID0gMDtcbiYjNDM7XG4mIzQzO1x0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnRwLVx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xuJiM0MztcdF9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19BRERSX1JFRywgc2RzX3JlZyk7XG4mIzQzO1x0X19yODE2OF9tYWNfb2NwX3dyaXRlKHRwLCBPQ1BfU0RTX0NNRF9SRUcsIFNEU19DTURfUkVBRCk7XG4mIzQzO1x0dmFsID0gX19yODE2OF9tYWNfb2NwX3JlYWQodHAsIE9DUF9TRFNfREFUQV9SRUcpO1xuJiM0MztcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnRwLVx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdmFsO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydGw4MTY5X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG4mIzQzO1x0XHRcdFx0ICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpIHtcbiYjNDM7XHRcdHUxNiBzdGF0MTtcbiYjNDM7XG4mIzQzO1x0XHRzdGF0MSA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzQ1X0JBU0UgJiM0MzsgTURJT19TVEFUMSk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKCEoc3RhdDEgXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUykpXG4mIzQzO1x0XHRcdHN0YXQxID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DNDVfQkFTRSAmIzQzOyBNRElPX1NUQVQxKTtcbiYjNDM7XG4mIzQzO1x0XHRzdGF0ZS1cdTAwM2VsaW5rID0gISEoc3RhdDEgXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUyk7XG4mIzQzO1x0XHRpZiAoIXN0YXRlLVx1MDAzZWxpbmspXG4mIzQzO1x0XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0XHRzdGF0ZS1cdTAwM2VkdXBsZXggPSBEVVBMRVhfRlVMTDtcbiYjNDM7XHRcdHN0YXRlLVx1MDAzZXNwZWVkID0gU1BFRURfMTAwMDA7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHUxNiBibXNyLCBscGE7XG4mIzQzO1xuJiM0MztcdFx0Ym1zciA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzIyX0JBU0UgJiM0MzsgTUlJX0JNU1IpO1xuJiM0MztcdFx0bHBhID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DMjJfQkFTRSAmIzQzOyBNSUlfTFBBKTtcbiYjNDM7XHRcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODE2OV9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbW9kZSxcbiYjNDM7XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbiYjNDM7XHRcdFx0ICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAqYWR2ZXJ0aXNpbmcsXG4mIzQzO1x0XHRcdCAgICAgIGJvb2wgcGVybWl0X3BhdXNlX3RvX21hYylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpXG4mIzQzO1x0XHRyODEyN19zZnBfaW5pdF8xMGcodHApO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBydGw4MTY5X3Bjc192YWxpZGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLFxuJiM0MztcdFx0XHRcdGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG4mIzQzO3tcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcnRsX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuJiM0MztcbiYjNDM7XHRydGxfZW5hYmxlX3R4X2xwaSh0cCwgZmFsc2UpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHJ0bF9tYWNfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdTMyIHRpbWVyLCBib29sIHR4X2Nsa19zdG9wKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XG4mIzQzO1xuJiM0MztcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1xuJiM0MztcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cnVlKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIHJ0bF9waHlsaW5rX21hY19vcHMgPSB7XG4mIzQzO1x0Lm1hY19zZWxlY3RfcGNzID0gcnRsX21hY19zZWxlY3RfcGNzLFxuJiM0MztcdC5tYWNfY29uZmlnID0gcnRsX21hY19jb25maWcsXG4mIzQzO1x0Lm1hY19saW5rX2Rvd24gID0gcnRsX21hY19saW5rX2Rvd24sXG4mIzQzO1x0Lm1hY19saW5rX3VwICAgID0gcnRsX21hY19saW5rX3VwLFxuJiM0MztcdC5tYWNfZGlzYWJsZV90eF9scGkgPSBydGxfbWFjX2Rpc2FibGVfdHhfbHBpLFxuJiM0MztcdC5tYWNfZW5hYmxlX3R4X2xwaSA9IHJ0bF9tYWNfZW5hYmxlX3R4X2xwaSxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyB1bnNpZ25lZCBsb25nIHJ0bDgxNjlfZ2V0X2xwaV9jYXBzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBjYXBzID0gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSB8fCB0cC1cdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdGNhcHMgfD0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDtcbiYjNDM7XG4mIzQzO1x0LyogbWltaWMgYmVoYXZpb3Igb2YgcjgxMjUvcjgxMjYgdmVuZG9yIGRyaXZlcnNcbiYjNDM7XHQgKiBSVExfR0lHQV9NQUNfVkVSXzYxIGRvZXNuJiMzOTt0IHN1cHBvcnQgMi41RyBlZWVcbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNlPSBSVExfR0lHQV9NQUNfVkVSXzYzKVxuJiM0MztcdFx0Y2FwcyB8PSBNQUNfMjUwMEZEO1xuJiM0MztcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNzApXG4mIzQzO1x0XHRjYXBzIHw9IE1BQ181MDAwRkQ7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApXG4mIzQzO1x0XHRjYXBzIHw9IE1BQ18xMDAwMEZEO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gY2FwcztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgcjgxNjlfcGNzX29wcyA9IHtcbiYjNDM7XHQucGNzX3ZhbGlkYXRlID0gcnRsODE2OV9wY3NfdmFsaWRhdGUsXG4mIzQzO1x0LnBjc19nZXRfc3RhdGUgPSBydGw4MTY5X3Bjc19nZXRfc3RhdGUsXG4mIzQzO1x0LnBjc19jb25maWcgPSBydGw4MTY5X3Bjc19jb25maWcsXG4mIzQzO1x0LnBjc19hbl9yZXN0YXJ0ID0gcnRsODE2OV9wY3NfYW5fcmVzdGFydCxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsX2luaXRfcGh5bGluayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwaHlsaW5rICpwbDtcbiYjNDM7XHRwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7XG4mIzQzO1xuJiM0MztcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFx1MDAyNnRwLVx1MDAzZWRldi1cdTAwM2VkZXY7XG4mIzQzO1x0dHAtXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xuJiM0MztcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbiYjNDM7XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gcnRsODE2OV9nZXRfbHBpX2NhcHModHApO1xuJiM0MztcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHRwLVx1MDAzZXNmcF9tb2RlKSB7XG4mIzQzO1x0Y2FzZSBSVExfU0ZQXzgxNjhfQUY6XG4mIzQzO1x0XHR0cC1cdTAwM2VwY3Mub3BzID0gXHUwMDI2cjgxNjlfcGNzX29wcztcbiYjNDM7XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcbiYjNDM7XHRcdHBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDtcbiYjNDM7XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgUlRMX1NGUF84MTI3X0FURjpcbiYjNDM7XHRcdHRwLVx1MDAzZXBjcy5vcHMgPSBcdTAwMjZyODE2OV9wY3Nfb3BzO1xuJiM0MztcdFx0cGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI7XG4mIzQzO1x0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5kZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XG4mIzQzO1x0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwMEZEO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMO1xuJiM0MztcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAgfCBNQUNfMTAwO1xuJiM0MztcbiYjNDM7XHRcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuJiM0MztcdFx0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEIHxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgICAgTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEO1xuJiM0MztcdFx0ZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl83MClcbiYjNDM7XHRcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEIHxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgICAgTUFDXzI1MDBGRCB8IE1BQ181MDAwRkQ7XG4mIzQzO1x0XHRlbHNlIGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNjEpXG4mIzQzO1x0XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQ7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGlmICh0cC1cdTAwM2VzdXBwb3J0c19nbWlpKVxuJiM0MztcdFx0XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDtcbiYjNDM7XG4mIzQzO1x0XHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNjIFJUTF9HSUdBX01BQ19WRVJfNjEpXG4mIzQzO1x0XHRcdHBoeV9tb2RlID0gdHAtXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcbiYjNDM7XHRcdFx0XHQgICBQSFlfSU5URVJGQUNFX01PREVfTUlJO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0X19zZXRfYml0KHBoeV9tb2RlLCB0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMpXG4mIzQzO1x0XHRfX3NldF9iaXQocGh5X21vZGUsIHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcbiYjNDM7XG4mIzQzO1x0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZ0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgdHBfdG9fZGV2KHRwKS1cdTAwM2Vmd25vZGUsXG4mIzQzO1x0XHRcdCAgICBwaHlfbW9kZSwgXHUwMDI2cnRsX3BoeWxpbmtfbWFjX29wcyk7XG4mIzQzO1x0aWYgKElTX0VSUihwbCkpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihwbCk7XG4mIzQzO1xuJiM0MztcdHRwLVx1MDAzZXBoeWxpbmsgPSBwbDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gKmNoaXA7XG5AQCAtNTY2Nyw2ICYjNDM7NTk5OCw3IEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0XHRcdFx0ICAgICBleHRfeGlkX3N0ciwgeGlkKTtcbiBcdHRwLVx1MDAzZW1hY192ZXJzaW9uID0gY2hpcC1cdTAwM2VtYWNfdmVyc2lvbjtcbiBcdHRwLVx1MDAzZWZ3X25hbWUgPSBjaGlwLVx1MDAzZWZ3X25hbWU7XG4mIzQzO1x0dHAtXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuIFxuIFx0LyogRGlzYWJsZSBBU1BNIEwxIGFzIHRoYXQgY2F1c2UgcmFuZG9tIGRldmljZSBzdG9wIHdvcmtpbmdcbiBcdCAqIHByb2JsZW1zIGFzIHdlbGwgYXMgZnVsbCBzeXN0ZW0gaGFuZ3MgZm9yIHNvbWUgUENJZSBkZXZpY2VzIHVzZXJzLlxuQEAgLTU2NzksMTIgJiM0Mzs2MDExLDcgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXHR9XG4gXHR0cC1cdTAwM2Vhc3BtX21hbmFnZWFibGUgPSAhcmM7XG4gXG4tXHRpZiAocnRsX2lzXzgxMjUodHApKSB7XG4tXHRcdHUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCAweGQwMDYpO1xuLVxuLVx0XHRpZiAoKGRhdGEgXHUwMDI2IDB4ZmYpID09IDB4MDcpXG4tXHRcdFx0dHAtXHUwMDNlc2ZwX21vZGUgPSB0cnVlO1xuLVx0fVxuJiM0MztcdHRwLVx1MDAzZXNmcF9tb2RlID0gcnRsX2dldF9zZnBfbW9kZSh0cCk7XG4gXG4gXHR0cC1cdTAwM2VkYXNoX3R5cGUgPSBydGxfZ2V0X2Rhc2hfdHlwZSh0cCk7XG4gXHR0cC1cdTAwM2VkYXNoX2VuYWJsZWQgPSBydGxfZGFzaF9pc19lbmFibGVkKHRwKTtcbkBAIC01Nzg4LDEzICYjNDM7NjExNSwyMyBAQCBzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbiBcbiBcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCB0cCk7XG4gXG4tXHRyYyA9IHI4MTY5X21kaW9fcmVnaXN0ZXIodHApO1xuJiM0MztcdHJjID0gcnRsX2luaXRfcGh5bGluayh0cCk7XG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiByYztcbiBcbiYjNDM7XHRpZiAodHAtXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF9OT05FKSB7XG4mIzQzO1x0XHRyYyA9IHI4MTY5X21kaW9fcmVnaXN0ZXIodHApO1xuJiM0MztcdFx0aWYgKHJjKSB7XG4mIzQzO1x0XHRcdHBoeWxpbmtfZGVzdHJveSh0cC1cdTAwM2VwaHlsaW5rKTtcbiYjNDM7XHRcdFx0cmV0dXJuIHJjO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4gXHRyYyA9IHJlZ2lzdGVyX25ldGRldihkZXYpO1xuLVx0aWYgKHJjKVxuJiM0MztcdGlmIChyYykge1xuJiM0MztcdFx0cGh5bGlua19kZXN0cm95KHRwLVx1MDAzZXBoeWxpbmspO1xuIFx0XHRyZXR1cm4gcmM7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1I4MTY5X0xFRFMpKSB7XG4gXHRcdGlmIChydGxfaXNfODEyNSh0cCkpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuaW5kZXggYjY1ZDBmNWZhMWEwMTQuLjdmOTA0ZGU1ODNlMDU0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5AQCAtMjY0Niw0NSAmIzQzOzI2NDYsNiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODIyMWJfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0cmV0dXJuIElSUV9IQU5ETEVEO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4te1xuLVx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwMGJhc2VUX0Z1bGxfQklULFxuLVx0XHRcdCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKTtcbi1cbi1cdC8qIHNldCBkZWZhdWx0IG1vZGUgKi9cbi1cdHBoeWRldi1cdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDAwO1xuLVx0cGh5ZGV2LVx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xuLVxuLVx0cGh5ZGV2LVx1MDAzZXBvcnQgPSBQT1JUX0ZJQlJFO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdGludCB2YWwsIGVycjtcbi1cbi1cdGVyciA9IGdlbnBoeV91cGRhdGVfbGluayhwaHlkZXYpO1xuLVx0aWYgKGVycilcbi1cdFx0cmV0dXJuIGVycjtcbi1cbi1cdGlmICghcGh5ZGV2LVx1MDAzZWxpbmspXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0dmFsID0gcGh5X3JlYWQocGh5ZGV2LCBSVExfUEhZU1IpO1xuLVx0aWYgKHZhbCBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIHZhbDtcbi1cbi1cdHJ0bGdlbl9kZWNvZGVfcGh5c3IocGh5ZGV2LCB2YWwpO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdHJldHVybiAwO1xuLX1cbi1cbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XG4gXHR7XG4gXHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMDA4MjAxKSxcbkBAIC0yOTM0LDIwICYjNDM7Mjg5NSw2IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbiBcdFx0LndyaXRlX3BhZ2VcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxuIFx0XHQucmVhZF9tbWRcdD0gcnRsODIyeF9yZWFkX21tZCxcbiBcdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4X3dyaXRlX21tZCxcbi1cdH0sIHtcbi1cdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9SVExfRFVNTVlfU0ZQKSxcbi1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSZWFsdGVrIFNGUCBQSFkgTW9kZVwmIzM0Oyxcbi1cdFx0LmZsYWdzXHRcdD0gUEhZX0lTX0lOVEVSTkFMLFxuLVx0XHQucHJvYmVcdFx0PSBydGw4MjJ4X3Byb2JlLFxuLVx0XHQuZ2V0X2ZlYXR1cmVzXHQ9IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzLFxuLVx0XHQuY29uZmlnX2FuZWdcdD0gcnRsZ2VuX3NmcF9jb25maWdfYW5lZyxcbi1cdFx0LnJlYWRfc3RhdHVzXHQ9IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMsXG4tXHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuLVx0XHQucmVzdW1lXHRcdD0gcnRsZ2VuX3Jlc3VtZSxcbi1cdFx0LnJlYWRfcGFnZVx0PSBydGw4MjF4X3JlYWRfcGFnZSxcbi1cdFx0LndyaXRlX3BhZ2VcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxuLVx0XHQucmVhZF9tbWRcdD0gcnRsODIyeF9yZWFkX21tZCxcbi1cdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4X3dyaXRlX21tZCxcbiBcdH0sIHtcbiBcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLFxuIFx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgyMjQgMi41R2JwcyBQSFlcJiMzNDssXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmggYi9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaFxuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCBkNjgzYmMxYjA2NTljZC4uMDAwMDAwMDAwMDAwMDBcbi0tLSBhL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oXG4mIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsXG5AQCAtMSw3ICYjNDM7MCwwIEBAXG4tLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbi0jaWZuZGVmIF9SRUFMVEVLX1BIWV9IXG4tI2RlZmluZSBfUkVBTFRFS19QSFlfSFxuLVxuLSNkZWZpbmVcdFBIWV9JRF9SVExfRFVNTVlfU0ZQXHQweDAwMWNjYmZmXG4tXG4tI2VuZGlmIC8qIF9SRUFMVEVLX1BIWV9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHI4MTY5IGRyaXZlciwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBwaHlzaWNhbCBSZWFsdGVrIEdpZ2FiaXQgRXRoZXJuZXQgYWRhcHRlcnMuIFNpbmNlIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGJ5IFFFTVUgb3IgR0NFLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgUENJIGZyYW1ld29yayBpbiB0aGUga2VybmVsIHRvIGluamVjdCBhcmJpdHJhcnkgUENJIGRldmljZXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4YzQzOWMxZTlmYzEwMzU3OWE5MDVlMmJhMTQ1MDk4YzQyMjg3YzI0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMyAxMTowMDo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZwppbmRleCA5YjBmNGY5NjMxZGJhYS4uNDlhYzcyNzM0MjI1ZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWcKQEAgLTg4LDYgJiM0Mzs4OCw3IEBAIGNvbmZpZyBSODE2OQogCXNlbGVjdCBDUkMzMgogCXNlbGVjdCBQSFlMSUIKIAlzZWxlY3QgUkVBTFRFS19QSFkKJiM0MzsJc2VsZWN0IFBIWUxJTksKIAloZWxwCiAJICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGEgUmVhbHRlayBFdGhlcm5ldCBhZGFwdGVyIGJlbG9uZ2luZyB0bwogCSAgdGhlIGZvbGxvd2luZyBmYW1pbGllczoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKaW5kZXggZWM0ZmMyMWZhMjFmYjAuLjI2ZDk2ZWRiM2M0MjA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYwpAQCAtMjYsNiAmIzQzOzI2LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9kbWEtbWFwcGluZy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BtX3J1bnRpbWUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9waHlsaW5rLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHJlZmV0Y2guaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pcHY2LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CkBAIC05Niw2ICYjNDM7OTcsMjIgQEAKICNkZWZpbmUgSlVNQk9fOUsJKDkgKiBTWl8xSyAtIFZMQU5fRVRIX0hMRU4gLSBFVEhfRkNTX0xFTikKICNkZWZpbmUgSlVNQk9fMTZLCShTWl8xNksgLSBWTEFOX0VUSF9ITEVOIC0gRVRIX0ZDU19MRU4pCiAKJiM0MzsjZGVmaW5lIE9DUF9TRFNfQUREUl9SRUcJCTB4RUIxMAomIzQzOyNkZWZpbmUgT0NQX1NEU19DTURfUkVHCQkJMHhFQjBFCiYjNDM7I2RlZmluZSBPQ1BfU0RTX0RBVEFfUkVHCQkweEVCMTQKJiM0MzsjZGVmaW5lIFNEU19DTURfUkVBRAkJCTB4MDAwMQomIzQzOyNkZWZpbmUgUlRMX1NEU19DMjJfQkFTRQkJMHg0MAomIzQzOyNkZWZpbmUgUlRMX1NEU19DNDVfQkFTRQkJMHgwMDgwCiYjNDM7I2RlZmluZSBSVExfUEtHX0RFVEVDVAkJCTB4ZGMwMAomIzQzOyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RfTUFTSwkJMHgwMDc4CiYjNDM7I2RlZmluZSBSVExfUEtHX0RFVEVDVF84MTE2QUYJCTB4MDAzMAomIzQzOyNkZWZpbmUgUlRMX0lOVF9IV19JRAkJCTB4ZDAwNgomIzQzOyNkZWZpbmUgUlRMX0lOVF9IV19JRF9NQVNLCQkweDAwZmYKJiM0MzsjZGVmaW5lIFJUTF9JTlRfSFdfSURfODExNkFGCQkweDAwMDAKJiM0MzsjZGVmaW5lIFJUTDgxMTZBRl9GVU5DX1BNX0NTUgkJMHg4MAomIzQzOyNkZWZpbmUgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTAkweDQ0CiYjNDM7I2RlZmluZSBSVExfUE1fRDNIT1QJCQlHRU5NQVNLKDEsIDApCiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gewogCXUzMiBtYXNrOwogCXUzMiB2YWw7CkBAIC0zMzQsMTEgJiM0MzszNTEsMTMgQEAgZW51bSBydGxfcmVnaXN0ZXJzIHsKIAlBTERQU19MVFIJPSAweGUwYTIsCiAJTFRSX09CRkZfTE9DSwk9IDB4ZTAzMiwKIAlMVFJfU05PT1AJPSAweGUwMzQsCiYjNDM7CVNFTkRfTFRSX01TRwk9IDB4ZTAzOCwKIAogI2RlZmluZSBBTERQU19MVFJfRU4JCQlCSVQoMCkKICNkZWZpbmUgTFRSX09CRkZfTE9DS19FTgkJQklUKDApCiAjZGVmaW5lIExJTktfU1BFRURfQ0hBTkdFX0VOCQlCSVQoMTQpCiAjZGVmaW5lIExUUl9TTk9PUF9FTgkJCUdFTk1BU0soMTUsIDE0KQomIzQzOyNkZWZpbmUgTFRSX01TR19FTgkJCUJJVCgwKQogfTsKIAogZW51bSBydGw4MTY4XzgxMDFfcmVnaXN0ZXJzIHsKQEAgLTcyOCw2ICYjNDM7NzQ3LDEyIEBAIGVudW0gcnRsX2Rhc2hfdHlwZSB7CiAJUlRMX0RBU0hfMjVfQlAsCiB9OwogCiYjNDM7ZW51bSBydGxfc2ZwX21vZGUgewomIzQzOwlSVExfU0ZQX05PTkUsCiYjNDM7CVJUTF9TRlBfODE2OF9BRiwKJiM0MzsJUlRMX1NGUF84MTI3X0FURiwKJiM0Mzt9OwomIzQzOwogc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7CiAJdm9pZCBfX2lvbWVtICptbWlvX2FkZHI7CS8qIG1lbW9yeSBtYXAgcGh5c2ljYWwgYWRkcmVzcyAqLwogCXN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2OwpAQCAtNzM2LDYgJiM0Mzs3NjEsNyBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHsKIAlzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTsKIAllbnVtIG1hY192ZXJzaW9uIG1hY192ZXJzaW9uOwogCWVudW0gcnRsX2Rhc2hfdHlwZSBkYXNoX3R5cGU7CiYjNDM7CWVudW0gcnRsX3NmcF9tb2RlIHNmcF9tb2RlOwogCXUzMiBjdXJfcng7IC8qIEluZGV4IGludG8gdGhlIFJ4IGRlc2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqLwogCXUzMiBjdXJfdHg7IC8qIEluZGV4IGludG8gdGhlIFR4IGRlc2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqLwogCXUzMiBkaXJ0eV90eDsKQEAgLTc1MCw2ICYjNDM7Nzc2LDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7CiAJdTMyIGlycV9tYXNrOwogCWludCBpcnE7CiAJc3RydWN0IGNsayAqY2xrOwomIzQzOwlpbnQgc3BlZWQ7CiAKIAlzdHJ1Y3QgewogCQlERUNMQVJFX0JJVE1BUChmbGFncywgUlRMX0ZMQUdfTUFYKTsKQEAgLTc2Miw3ICYjNDM7Nzg5LDYgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7CiAJdW5zaWduZWQgc3VwcG9ydHNfZ21paToxOwogCXVuc2lnbmVkIGFzcG1fbWFuYWdlYWJsZToxOwogCXVuc2lnbmVkIGRhc2hfZW5hYmxlZDoxOwotCWJvb2wgc2ZwX21vZGU6MTsKIAlkbWFfYWRkcl90IGNvdW50ZXJzX3BoeXNfYWRkcjsKIAlzdHJ1Y3QgcnRsODE2OV9jb3VudGVycyAqY291bnRlcnM7CiAJc3RydWN0IHJ0bDgxNjlfdGNfb2Zmc2V0cyB0Y19vZmZzZXQ7CkBAIC03NzQsNiAmIzQzOzgwMCwxMSBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHsKIAlzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZWRzOwogCiAJdTMyIG9jcF9iYXNlOwomIzQzOwlzdHJ1Y3QgcGh5bGluayAqcGh5bGluazsKJiM0MzsJc3RydWN0IHBoeWxpbmtfY29uZmlnIHBoeWxpbmtfY29uZmlnOwomIzQzOwlzdHJ1Y3QgcGh5bGlua19wY3MgcGNzOwomIzQzOwlzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtIHNhdmVkX3BhdXNlOwomIzQzOwlib29sIGp1bWJvX3BhdXNlX3NhdmVkOwogfTsKIAogdHlwZWRlZiB2b2lkICgqcnRsX2dlbmVyaWNfZmN0KShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCk7CkBAIC0xMTI4LDEwICYjNDM7MTE1OSw2IEBAIHN0YXRpYyBpbnQgcjgxNjhfcGh5X29jcF9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnKQogCWlmIChydGxfb2NwX3JlZ19mYWlsdXJlKHJlZykpCiAJCXJldHVybiAwOwogCi0JLyogUmV0dXJuIGR1bW15IE1JSV9QSFlTSUQyIGluIFNGUCBtb2RlIHRvIG1hdGNoIFNGUCBQSFkgZHJpdmVyICovCi0JaWYgKHRwLSZndDtzZnBfbW9kZSAmYW1wOyZhbXA7IHJlZyA9PSAoT0NQX1NURF9QSFlfQkFTRSAmIzQzOyAyICogTUlJX1BIWVNJRDIpKQotCQlyZXR1cm4gUEhZX0lEX1JUTF9EVU1NWV9TRlAgJmFtcDsgMHhmZmZmOwotCiAJUlRMX1czMih0cCwgR1BIWV9PQ1AsIHJlZyAmbHQ7Jmx0OyAxNSk7CiAKIAlyZXR1cm4gcnRsX2xvb3Bfd2FpdF9oaWdoKHRwLCAmYW1wO3J0bF9vY3BfZ3BoeV9jb25kLCAyNSwgMTApID8KQEAgLTEyMTcsMTIgJiM0MzsxMjQ0LDYgQEAgc3RhdGljIHZvaWQgcjgxMjdfc2ZwX2luaXRfMTBnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCXI4MTY4X3BoeV9vY3Bfd3JpdGUodHAsIDB4YzgwNCwgKHZhbCAmYW1wOyB+MHgwMDBmKSB8IDB4MDAwYyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0bF9zZnBfaW5pdChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKLXsKLQlpZiAodHAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApCi0JCXI4MTI3X3NmcF9pbml0XzEwZyh0cCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHJ0bF9zZnBfcmVzZXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7CiAJaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKQpAQCAtMTI4Myw2ICYjNDM7MTMwNCwxNSBAQCBzdGF0aWMgdm9pZCBtYWNfbWN1X3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpCiAJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgdHAtJmd0O29jcF9iYXNlICYjNDM7IHJlZywgdmFsdWUpOwogfQogCiYjNDM7c3RhdGljIGJvb2wgcnRsX2lzXzgxMTZhZihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKJiM0Mzt7CiYjNDM7CXJldHVybiB0cC0mZ3Q7bWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl81MiAmYW1wOyZhbXA7CiYjNDM7CQkocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfUEtHX0RFVEVDVCkgJmFtcDsgUlRMX1BLR19ERVRFQ1RfTUFTSykgPT0KJiM0MzsJCVJUTF9QS0dfREVURUNUXzgxMTZBRiAmYW1wOyZhbXA7CiYjNDM7CQkocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKSAmYW1wOyBSVExfSU5UX0hXX0lEX01BU0spID09CiYjNDM7CQlSVExfSU5UX0hXX0lEXzgxMTZBRjsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IG1hY19tY3VfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZykKIHsKIAlyZXR1cm4gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCB0cC0mZ3Q7b2NwX2Jhc2UgJiM0MzsgcmVnKTsKQEAgLTE1NzgsNiAmIzQzOzE2MDgsMjAgQEAgc3RhdGljIGJvb2wgcnRsX2Rhc2hfaXNfZW5hYmxlZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAl9CiB9CiAKJiM0MztzdGF0aWMgZW51bSBydGxfc2ZwX21vZGUgcnRsX2dldF9zZnBfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKJiM0Mzt7CiYjNDM7CWlmIChydGxfaXNfODEyNSh0cCkpIHsKJiM0MzsJCXUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKTsKJiM0MzsKJiM0MzsJCWlmICgoZGF0YSAmYW1wOyAweGZmKSA9PSAweDA3KQomIzQzOwkJCXJldHVybiBSVExfU0ZQXzgxMjdfQVRGOwomIzQzOwl9IGVsc2UgaWYgKHJ0bF9pc184MTE2YWYodHApKSB7CiYjNDM7CQlyZXR1cm4gUlRMX1NGUF84MTY4X0FGOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBSVExfU0ZQX05PTkU7CiYjNDM7fQomIzQzOwogc3RhdGljIGVudW0gcnRsX2Rhc2hfdHlwZSBydGxfZ2V0X2Rhc2hfdHlwZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKIAlzd2l0Y2ggKHRwLSZndDttYWNfdmVyc2lvbikgewpAQCAtMTY3MywxNiAmIzQzOzE3MTcsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pcnFfbWFza19hbmRfYWNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCXJ0bF9wY2lfY29tbWl0KHRwKTsKIH0KIAotc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQomIzQzO3N0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHNwZWVkKQogewotCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC0mZ3Q7cGh5ZGV2OwotCiAJaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM0IHx8CiAJICAgIHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM4KSB7Ci0JCWlmIChwaHlkZXYtJmd0O3NwZWVkID09IFNQRUVEXzEwMDApIHsKJiM0MzsJCWlmIChzcGVlZCA9PSBTUEVFRF8xMDAwKSB7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTsKIAkJCXJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpOwotCQl9IGVsc2UgaWYgKHBoeWRldi0mZ3Q7c3BlZWQgPT0gU1BFRURfMTAwKSB7CiYjNDM7CQl9IGVsc2UgaWYgKHNwZWVkID09IFNQRUVEXzEwMCkgewogCQkJcnRsX2VyaV93cml0ZSh0cCwgMHgxYmMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAxZik7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTsKIAkJfSBlbHNlIHsKQEAgLTE2OTIsNyAmIzQzOzE3MzQsNyBAQCBzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJCXJ0bF9yZXNldF9wYWNrZXRfZmlsdGVyKHRwKTsKIAl9IGVsc2UgaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM1IHx8CiAJCSAgIHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM2KSB7Ci0JCWlmIChwaHlkZXYtJmd0O3NwZWVkID09IFNQRUVEXzEwMDApIHsKJiM0MzsJCWlmIChzcGVlZCA9PSBTUEVFRF8xMDAwKSB7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTsKIAkJCXJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpOwogCQl9IGVsc2UgewpAQCAtMTcwMCw3ICYjNDM7MTc0Miw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJCXJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwM2YpOwogCQl9CiAJfSBlbHNlIGlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNykgewotCQlpZiAocGh5ZGV2LSZndDtzcGVlZCA9PSBTUEVFRF8xMCkgewomIzQzOwkJaWYgKHNwZWVkID09IFNQRUVEXzEwKSB7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFkMCwgRVJJQVJfTUFTS18wMDExLCAweDRkMDIpOwogCQkJcnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMDAxMSwgMHgwMDYwYSk7CiAJCX0gZWxzZSB7CkBAIC0yMDc0LDExICYjNDM7MjExNiwxMSBAQCBydGxfY29hbGVzY2VfaW5mbyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJY2kgPSBydGxfY29hbGVzY2VfaW5mb184MTY4XzgxMzY7CiAKIAkvKiBpZiBzcGVlZCBpcyB1bmtub3duIGFzc3VtZSBoaWdoZXN0IG9uZSAqLwotCWlmICh0cC0mZ3Q7cGh5ZGV2LSZndDtzcGVlZCA9PSBTUEVFRF9VTktOT1dOKQomIzQzOwlpZiAodHAtJmd0O3NwZWVkID09IFNQRUVEX1VOS05PV04pCiAJCXJldHVybiBjaTsKIAogCWZvciAoOyBjaS0mZ3Q7c3BlZWQ7IGNpJiM0MzsmIzQzOykgewotCQlpZiAodHAtJmd0O3BoeWRldi0mZ3Q7c3BlZWQgPT0gY2ktJmd0O3NwZWVkKQomIzQzOwkJaWYgKHRwLSZndDtzcGVlZCA9PSBjaS0mZ3Q7c3BlZWQpCiAJCQlyZXR1cm4gY2k7CiAJfQogCkBAIC0yMjM2LDcgJiM0MzsyMjc4LDcgQEAgc3RhdGljIHZvaWQgcnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCiBzdGF0aWMgdW5zaWduZWQgaW50IHI4MTY5X2dldF90eF9scGlfdGltZXJfdXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7Ci0JdW5zaWduZWQgaW50IHNwZWVkID0gdHAtJmd0O3BoeWRldi0mZ3Q7c3BlZWQ7CiYjNDM7CXVuc2lnbmVkIGludCBzcGVlZCA9IHRwLSZndDtzcGVlZDsKIAl1bnNpZ25lZCBpbnQgdGltZXIgPSB0cC0mZ3Q7dHhfbHBpX3RpbWVyOwogCiAJaWYgKCF0aW1lciB8fCBzcGVlZCA9PSBTUEVFRF9VTktOT1dOKQpAQCAtMjI1NCw3ICYjNDM7MjI5Niw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9nZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpCiAJaWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcmV0ID0gcGh5X2V0aHRvb2xfZ2V0X2VlZSh0cC0mZ3Q7cGh5ZGV2LCBkYXRhKTsKJiM0MzsJcmV0ID0gcGh5bGlua19ldGh0b29sX2dldF9lZWUodHAtJmd0O3BoeWxpbmssIGRhdGEpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTIyNzAsNyAmIzQzOzIzMTIsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKQogCWlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCXJldHVybiBwaHlfZXRodG9vbF9zZXRfZWVlKHRwLSZndDtwaHlkZXYsIGRhdGEpOwomIzQzOwlyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9lZWUodHAtJmd0O3BoeWxpbmssIGRhdGEpOwogfQogCiBzdGF0aWMgdm9pZCBydGw4MTY5X2dldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTIzMDEsMTMgJiM0MzsyMzQzLDggQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJCSAgIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKmRhdGEpCiB7CiAJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpOwotCWJvb2wgdHhfcGF1c2UsIHJ4X3BhdXNlOwogCi0JcGh5X2dldF9wYXVzZSh0cC0mZ3Q7cGh5ZGV2LCAmYW1wO3R4X3BhdXNlLCAmYW1wO3J4X3BhdXNlKTsKLQotCWRhdGEtJmd0O2F1dG9uZWcgPSB0cC0mZ3Q7cGh5ZGV2LSZndDthdXRvbmVnOwotCWRhdGEtJmd0O3R4X3BhdXNlID0gdHhfcGF1c2UgPyAxIDogMDsKLQlkYXRhLSZndDtyeF9wYXVzZSA9IHJ4X3BhdXNlID8gMSA6IDA7CiYjNDM7CXBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC0mZ3Q7cGh5bGluaywgZGF0YSk7CiB9CiAKIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LApAQCAtMjMxOCw5ICYjNDM7MjM1NSw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWlmIChkZXYtJmd0O210dSAmZ3Q7IEVUSF9EQVRBX0xFTikKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcGh5X3NldF9hc3ltX3BhdXNlKHRwLSZndDtwaHlkZXYsIGRhdGEtJmd0O3J4X3BhdXNlLCBkYXRhLSZndDt0eF9wYXVzZSk7Ci0KLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSh0cC0mZ3Q7cGh5bGluaywgZGF0YSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X2V0aF9tYWNfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTIzODYsMzQgJiM0MzsyNDIxLDI3IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X2V0aF9jdHJsX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCWxlMzJfdG9fY3B1KHRwLSZndDtjb3VudGVycy0mZ3Q7cnhfdW5rbm93bl9vcGNvZGUpOwogfQogCi1zdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAotCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpCiYjNDM7c3RhdGljIGludCBydGw4MTY5X2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKJiM0MzsJCQkJICAgICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZCkKIHsKIAlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpOwotCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC0mZ3Q7cGh5ZGV2OwotCWludCBkdXBsZXggPSBjbWQtJmd0O2Jhc2UuZHVwbGV4OwotCWludCBzcGVlZCA9IGNtZC0mZ3Q7YmFzZS5zcGVlZDsKLQotCWlmICghdHAtJmd0O3NmcF9tb2RlKQotCQlyZXR1cm4gcGh5X2V0aHRvb2xfa3NldHRpbmdzX3NldChwaHlkZXYsIGNtZCk7CiAKLQlpZiAoY21kLSZndDtiYXNlLmF1dG9uZWcgIT0gQVVUT05FR19ESVNBQkxFKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCWlmICghcGh5X2NoZWNrX3ZhbGlkKHNwZWVkLCBkdXBsZXgsIHBoeWRldi0mZ3Q7c3VwcG9ydGVkKSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQltdXRleF9sb2NrKCZhbXA7cGh5ZGV2LSZndDtsb2NrKTsKJiM0MzsJcmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KHRwLSZndDtwaHlsaW5rLCBjbWQpOwomIzQzO30KIAotCXBoeWRldi0mZ3Q7YXV0b25lZyA9IEFVVE9ORUdfRElTQUJMRTsKLQlwaHlkZXYtJmd0O3NwZWVkID0gc3BlZWQ7Ci0JcGh5ZGV2LSZndDtkdXBsZXggPSBkdXBsZXg7CiYjNDM7c3RhdGljIGludCBydGw4MTY5X3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKJiM0MzsJCQkJICAgICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7CiAKLQlydGxfc2ZwX2luaXQodHApOwomIzQzOwlyZXR1cm4gcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQodHAtJmd0O3BoeWxpbmssIGNtZCk7CiYjNDM7fQogCi0JbXV0ZXhfdW5sb2NrKCZhbXA7cGh5ZGV2LSZndDtsb2NrKTsKJiM0MztzdGF0aWMgaW50IHJ0bDgxNjlfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpOwogCi0JcmV0dXJuIDA7CiYjNDM7CXJldHVybiBwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCh0cC0mZ3Q7cGh5bGluayk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgcnRsODE2OV9ldGh0b29sX29wcyA9IHsKQEAgLTI0MzEsMTAgJiM0MzsyNDU5LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgcnRsODE2OV9ldGh0b29sX29wcyA9IHsKIAkuZ2V0X3NzZXRfY291bnQJCT0gcnRsODE2OV9nZXRfc3NldF9jb3VudCwKIAkuZ2V0X2V0aHRvb2xfc3RhdHMJPSBydGw4MTY5X2dldF9ldGh0b29sX3N0YXRzLAogCS5nZXRfdHNfaW5mbwkJPSBldGh0b29sX29wX2dldF90c19pbmZvLAotCS5ud2F5X3Jlc2V0CQk9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsCiYjNDM7CS5ud2F5X3Jlc2V0CQk9IHJ0bDgxNjlfbndheV9yZXNldCwKIAkuZ2V0X2VlZQkJPSBydGw4MTY5X2dldF9lZWUsCiAJLnNldF9lZWUJCT0gcnRsODE2OV9zZXRfZWVlLAotCS5nZXRfbGlua19rc2V0dGluZ3MJPSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsCiYjNDM7CS5nZXRfbGlua19rc2V0dGluZ3MJPSBydGw4MTY5X2dldF9saW5rX2tzZXR0aW5ncywKIAkuc2V0X2xpbmtfa3NldHRpbmdzCT0gcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3MsCiAJLmdldF9yaW5ncGFyYW0JCT0gcnRsODE2OV9nZXRfcmluZ3BhcmFtLAogCS5nZXRfcGF1c2Vfc3RhdHMJPSBydGw4MTY5X2dldF9wYXVzZV9zdGF0cywKQEAgLTI0OTksOSAmIzQzOzI1MjcsMTAgQEAgdm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJdHAtJmd0O29jcF9iYXNlID0gT0NQX1NURF9QSFlfQkFTRTsKIAogCQkvKiBQSFkgc29mdCByZXNldCBtYXkgc3RpbGwgYmUgaW4gcHJvZ3Jlc3MgKi8KLQkJcGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLSZndDtwaHlkZXYsIE1JSV9CTUNSLCB2YWwsCi0JCQkJICAgICAgISh2YWwgJmFtcDsgQk1DUl9SRVNFVCksCi0JCQkJICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7CiYjNDM7CQlpZiAodHAtJmd0O3BoeWRldikKJiM0MzsJCQlwaHlfcmVhZF9wb2xsX3RpbWVvdXQodHAtJmd0O3BoeWRldiwgTUlJX0JNQ1IsIHZhbCwKJiM0MzsJCQkJCSAgICAgICEodmFsICZhbXA7IEJNQ1JfUkVTRVQpLAomIzQzOwkJCQkJICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7CiAJfQogfQogCkBAIC0yNTM4LDYgJiM0MzsyNTY3LDggQEAgc3RhdGljIHZvaWQgcnRsX3NjaGVkdWxlX3Rhc2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGVudW0gcnRsX2ZsYWcgZmxhZykKIAogc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3BoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKJiM0MzsJcGh5X2luaXRfaHcodHAtJmd0O3BoeWRldik7CiYjNDM7CXBoeV9yZXN1bWUodHAtJmd0O3BoeWRldik7CiAJcjgxNjlfaHdfcGh5X2NvbmZpZyh0cCwgdHAtJmd0O3BoeWRldiwgdHAtJmd0O21hY192ZXJzaW9uKTsKIAogCWlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gJmx0Oz0gUlRMX0dJR0FfTUFDX1ZFUl8wNikgewpAQCAtMjU1Miw5ICYjNDM7MjU4Myw2IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9waHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJICAgIHRwLSZndDtwY2lfZGV2LSZndDtzdWJzeXN0ZW1fZGV2aWNlID09IDB4ZTAwMCkKIAkJcGh5X3dyaXRlX3BhZ2VkKHRwLSZndDtwaHlkZXYsIDB4MDAwMSwgMHgxMCwgMHhmMDFiKTsKIAotCWlmICh0cC0mZ3Q7c2ZwX21vZGUpCi0JCXJ0bF9zZnBfaW5pdCh0cCk7Ci0KIAkvKiBXZSBtYXkgaGF2ZSBjYWxsZWQgcGh5X3NwZWVkX2Rvd24gYmVmb3JlICovCiAJcGh5X3NwZWVkX3VwKHRwLSZndDtwaHlkZXYpOwogCkBAIC0yNjI0LDYgJiM0MzsyNjUyLDUxIEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9yaW5nX2luZGV4ZXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJdHAtJmd0O2RpcnR5X3R4ID0gdHAtJmd0O2N1cl90eCA9IHRwLSZndDtjdXJfcnggPSAwOwogfQogCiYjNDM7c3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZ19wYXVzZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKJiM0Mzt7CiYjNDM7CWJvb2wganVtYm8gPSB0cC0mZ3Q7ZGV2LSZndDttdHUgJmd0OyBFVEhfREFUQV9MRU47CiYjNDM7CXN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gcGF1c2UgPSB7fTsKJiM0MzsKJiM0MzsJQVNTRVJUX1JUTkwoKTsKJiM0MzsKJiM0MzsJaWYgKGp1bWJvKSB7CiYjNDM7CQlpZiAoIXRwLSZndDtqdW1ib19wYXVzZV9zYXZlZCkgewomIzQzOwkJCXN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIGNtZCA9IHt9OwomIzQzOwkJCWJvb2wgYWR2X3BhdXNlLCBhZHZfYXN5bTsKJiM0MzsKJiM0MzsJCQlwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0odHAtJmd0O3BoeWxpbmssICZhbXA7dHAtJmd0O3NhdmVkX3BhdXNlKTsKJiM0MzsJCQlpZiAodHAtJmd0O3NhdmVkX3BhdXNlLmF1dG9uZWcpIHsKJiM0MzsJCQkJcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19nZXQodHAtJmd0O3BoeWxpbmssICZhbXA7Y21kKTsKJiM0MzsJCQkJYWR2X3BhdXNlID0gZXRodG9vbF9saW5rX2tzZXR0aW5nc190ZXN0X2xpbmtfbW9kZSgmYW1wO2NtZCwKJiM0MzsJCQkJCQkJCQkJICBhZHZlcnRpc2luZywKJiM0MzsJCQkJCQkJCQkJICBQYXVzZSk7CiYjNDM7CQkJCWFkdl9hc3ltICA9IGV0aHRvb2xfbGlua19rc2V0dGluZ3NfdGVzdF9saW5rX21vZGUoJmFtcDtjbWQsCiYjNDM7CQkJCQkJCQkJCSAgYWR2ZXJ0aXNpbmcsCiYjNDM7CQkJCQkJCQkJCSAgQXN5bV9QYXVzZSk7CiYjNDM7CQkJCWlmIChhZHZfcGF1c2UgJmFtcDsmYW1wOyAhYWR2X2FzeW0pIHsKJiM0MzsJCQkJCXRwLSZndDtzYXZlZF9wYXVzZS5yeF9wYXVzZSA9IDE7CiYjNDM7CQkJCQl0cC0mZ3Q7c2F2ZWRfcGF1c2UudHhfcGF1c2UgPSAxOwomIzQzOwkJCQl9IGVsc2UgaWYgKGFkdl9wYXVzZSAmYW1wOyZhbXA7IGFkdl9hc3ltKSB7CiYjNDM7CQkJCQl0cC0mZ3Q7c2F2ZWRfcGF1c2UucnhfcGF1c2UgPSAxOwomIzQzOwkJCQkJdHAtJmd0O3NhdmVkX3BhdXNlLnR4X3BhdXNlID0gMDsKJiM0MzsJCQkJfSBlbHNlIGlmICghYWR2X3BhdXNlICZhbXA7JmFtcDsgYWR2X2FzeW0pIHsKJiM0MzsJCQkJCXRwLSZndDtzYXZlZF9wYXVzZS5yeF9wYXVzZSA9IDA7CiYjNDM7CQkJCQl0cC0mZ3Q7c2F2ZWRfcGF1c2UudHhfcGF1c2UgPSAxOwomIzQzOwkJCQl9IGVsc2UgewomIzQzOwkJCQkJdHAtJmd0O3NhdmVkX3BhdXNlLnJ4X3BhdXNlID0gMDsKJiM0MzsJCQkJCXRwLSZndDtzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDA7CiYjNDM7CQkJCX0KJiM0MzsJCQl9CiYjNDM7CQkJdHAtJmd0O2p1bWJvX3BhdXNlX3NhdmVkID0gdHJ1ZTsKJiM0MzsJCX0KJiM0MzsJCXBhdXNlLmF1dG9uZWcgPSB0cC0mZ3Q7c2F2ZWRfcGF1c2UuYXV0b25lZzsKJiM0MzsJCXBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSh0cC0mZ3Q7cGh5bGluaywgJmFtcDtwYXVzZSk7CiYjNDM7CX0gZWxzZSBpZiAodHAtJmd0O2p1bWJvX3BhdXNlX3NhdmVkKSB7CiYjNDM7CQlwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0odHAtJmd0O3BoeWxpbmssICZhbXA7dHAtJmd0O3NhdmVkX3BhdXNlKTsKJiM0MzsJCXRwLSZndDtqdW1ib19wYXVzZV9zYXZlZCA9IGZhbHNlOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKIAlib29sIGp1bWJvID0gdHAtJmd0O2Rldi0mZ3Q7bXR1ICZndDsgRVRIX0RBVEFfTEVOOwpAQCAtMjY1NywxNSAmIzQzOzI3MzAsNiBAQCBzdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCiAJaWYgKHBjaV9pc19wY2llKHRwLSZndDtwY2lfZGV2KSAmYW1wOyZhbXA7IHRwLSZndDtzdXBwb3J0c19nbWlpKQogCQlwY2llX3NldF9yZWFkcnEodHAtJmd0O3BjaV9kZXYsIHJlYWRycSk7Ci0KLQkvKiBDaGlwIGRvZXNuJiMzOTt0IHN1cHBvcnQgcGF1c2UgaW4ganVtYm8gbW9kZSAqLwotCWlmIChqdW1ibykgewotCQlsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfUGF1c2VfQklULAotCQkJCSAgIHRwLSZndDtwaHlkZXYtJmd0O2FkdmVydGlzaW5nKTsKLQkJbGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULAotCQkJCSAgIHRwLSZndDtwaHlkZXYtJmd0O2FkdmVydGlzaW5nKTsKLQkJcGh5X3N0YXJ0X2FuZWcodHAtJmd0O3BoeWRldik7Ci0JfQogfQogCiBERUNMQVJFX1JUTF9DT05EKHJ0bF9jaGlwY21kX2NvbmQpCkBAIC0yNzgwLDcgJiM0MzsyODQ0LDcgQEAgc3RhdGljIHZvaWQgcnRsX3ByZXBhcmVfcG93ZXJfZG93bihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJcnRsX2VwaHlfd3JpdGUodHAsIDB4MTksIDB4ZmY2NCk7CiAKIAlpZiAoZGV2aWNlX21heV93YWtldXAodHBfdG9fZGV2KHRwKSkpIHsKLQkJcGh5X3NwZWVkX2Rvd24odHAtJmd0O3BoeWRldiwgZmFsc2UpOwomIzQzOwkJcGh5bGlua19zcGVlZF9kb3duKHRwLSZndDtwaHlsaW5rLCBmYWxzZSk7CiAJCXJ0bF93b2xfZW5hYmxlX3J4KHRwKTsKIAl9CiB9CkBAIC0yODMyLDYgJiM0MzsyODk2LDE2IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfc2V0X21hZ2ljX3JlZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAlSVExfVzMyKHRwLCAweDdjLCB2YWwpOwogfQogCiYjNDM7c3RhdGljIGludCBydGw4MTY5X2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpOwomIzQzOwomIzQzOwlpZiAoIW5ldGlmX3J1bm5pbmcoZGV2KSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwlyZXR1cm4gcGh5bGlua19taWlfaW9jdGwodHAtJmd0O3BoeWxpbmssIGlmciwgY21kKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBydGxfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAl1MzIgcnhfbW9kZSA9IEFjY2VwdEJyb2FkY2FzdCB8IEFjY2VwdE15UGh5cyB8IEFjY2VwdE11bHRpY2FzdDsKQEAgLTMwOTgsOCAmIzQzOzMxNzIsMjIgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJCXI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmMiwgMHg5MDAzKTsKIAkJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9PQkZGX0xPQ0ssIDB4MDAwMCwgTElOS19TUEVFRF9DSEFOR0VfRU4pOwogCQlicmVhazsKLQljYXNlIFJUTF9HSUdBX01BQ19WRVJfNDYgLi4uIFJUTF9HSUdBX01BQ19WRVJfNDg6CiAJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOgomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpOwomIzQzOwkJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMDJjLCAweDE4ODApOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMDJlLCAweDQ4ODApOwomIzQzOwkJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ4LCAweDkwMDMpOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRhLCAweDkwMDMpOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQyLCAweDg4M2MpOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ0LCAweDhjMTIpOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMGE2LCAweDkwMDMpOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMGE4LCAweDkwMDMpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODoKIAkJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pOwogCQlSVExfVzgodHAsIENPTUJPX0xUUl9FWFRFTkQsIFJUTF9SOCh0cCwgQ09NQk9fTFRSX0VYVEVORCkgfCBDT01CT19MVFJfRVhURU5EX0VOKTsKIAkJZmFsbHRocm91Z2g7CkBAIC0zMTE5LDYgJiM0MzszMjA3LDcgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJfQogCS8qIGNoaXAgY2FuIHRyaWdnZXIgTFRSICovCiAJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9PQkZGX0xPQ0ssIDB4MDAwMywgTFRSX09CRkZfTE9DS19FTik7CiYjNDM7CXI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBTRU5EX0xUUl9NU0csIDB4MDAwMCwgTFRSX01TR19FTik7CiB9CiAKIHN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKQpAQCAtMzE1Miw2ICYjNDM7MzI0MSw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKQogCQlydGxfZW5hYmxlX2x0cih0cCk7CiAJCXN3aXRjaCAodHAtJmd0O21hY192ZXJzaW9uKSB7CiAJCWNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODoKJiM0MzsJCWNhc2UgUlRMX0dJR0FfTUFDX1ZFUl81MjoKIAkJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzYxIC4uLiBSVExfR0lHQV9NQUNfVkVSX0xBU1Q6CiAJCQkvKiByZXNldCBlcGh5IHR4L3J4IGRpc2FibGUgdGltZXIgKi8KIAkJCXI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwOTQsIDB4ZmYwMCwgMCk7CkBAIC0zMTY0LDYgJiM0MzszMjU0LDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpCiAJfSBlbHNlIHsKIAkJc3dpdGNoICh0cC0mZ3Q7bWFjX3ZlcnNpb24pIHsKIAkJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OgomIzQzOwkJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOgogCQljYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDoKIAkJCXI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwOTIsIDB4MDBmZiwgMCk7CiAJCQlicmVhazsKQEAgLTM2NTcsNiAmIzQzOzM3NDgsMzUgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxNjhlcF8zKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCXI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGU4NjAsIDB4MDAwMCwgMHgwMDgwKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQomIzQzO3sKJiM0MzsJdW5zaWduZWQgaW50IHNsb3QgPSBQQ0lfU0xPVChwZGV2LSZndDtkZXZmbik7CiYjNDM7CXN0cnVjdCBwY2lfYnVzICpidXMgPSBwZGV2LSZndDtidXM7CiYjNDM7CXVuc2lnbmVkIGludCBkZXZmbjsKJiM0MzsJaW50IGZ1bmM7CiYjNDM7CWludCByZXQ7CiYjNDM7CXUzMiB2YWw7CiYjNDM7CiYjNDM7CWZvciAoZnVuYyA9IDI7IGZ1bmMgJmx0OyA4OyBmdW5jJiM0MzsmIzQzOykgewomIzQzOwkJZGV2Zm4gPSBQQ0lfREVWRk4oc2xvdCwgZnVuYyk7CiYjNDM7CiYjNDM7CQlyZXQgPSBwY2lfYnVzX3JlYWRfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX1BNX0NTUiwgJmFtcDt2YWwpOwomIzQzOwkJaWYgKCFyZXQgJmFtcDsmYW1wOyAhUENJX1BPU1NJQkxFX0VSUk9SKHZhbCkpIHsKJiM0MzsJCQl2YWwgJmFtcDs9IH5QQ0lfUE1fQ1RSTF9QTUVfU1RBVFVTOwomIzQzOwkJCXZhbCAmYW1wOz0gfihQQ0lfUE1fQ1RSTF9TVEFURV9NQVNLIHwgUENJX1BNX0NUUkxfUE1FX0VOQUJMRSk7CiYjNDM7CQkJdmFsIHw9IChSVExfUE1fRDNIT1QgfCBQQ0lfUE1fQ1RSTF9QTUVfRU5BQkxFKTsKJiM0MzsJCQlwY2lfYnVzX3dyaXRlX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19QTV9DU1IsIHZhbCk7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlyZXQgPSBwY2lfYnVzX3JlYWRfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX0VYUF9MTktDVEwsICZhbXA7dmFsKTsKJiM0MzsJCWlmICghcmV0ICZhbXA7JmFtcDsgIVBDSV9QT1NTSUJMRV9FUlJPUih2YWwpKSB7CiYjNDM7CQkJdmFsICZhbXA7PSB+KChQQ0lfRVhQX0xOS1NUQV9MQk1TIHwgUENJX0VYUF9MTktTVEFfTEFCUykgJmx0OyZsdDsgMTYpOwomIzQzOwkJCXZhbCB8PSBQQ0lfRVhQX0xOS0NUTF9BU1BNQzsKJiM0MzsJCQlwY2lfYnVzX3dyaXRlX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMLCB2YWwpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMTcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7CiAJc3RhdGljIGNvbnN0IHN0cnVjdCBlcGh5X2luZm8gZV9pbmZvXzgxMTdbXSA9IHsKQEAgLTM2OTMsMTIgJiM0MzszODEzLDE0IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCiAJcnRsX3BjaWVfc3RhdGVfbDJsM19kaXNhYmxlKHRwKTsKIAotCXJnX3Nhd19jbnQgPSBwaHlfcmVhZF9wYWdlZCh0cC0mZ3Q7cGh5ZGV2LCAweDBjNDIsIDB4MTMpICZhbXA7IDB4M2ZmZjsKLQlpZiAocmdfc2F3X2NudCAmZ3Q7IDApIHsKLQkJdTE2IHN3X2NudF8xbXNfaW5pOwomIzQzOwlpZiAodHAtJmd0O3BoeWRldikgewomIzQzOwkJcmdfc2F3X2NudCA9IHBoeV9yZWFkX3BhZ2VkKHRwLSZndDtwaHlkZXYsIDB4MGM0MiwgMHgxMykgJmFtcDsgMHgzZmZmOwomIzQzOwkJaWYgKHJnX3Nhd19jbnQgJmd0OyAwKSB7CiYjNDM7CQkJdTE2IHN3X2NudF8xbXNfaW5pOwogCi0JCXN3X2NudF8xbXNfaW5pID0gKDE2MDAwMDAwIC8gcmdfc2F3X2NudCkgJmFtcDsgMHgwZmZmOwotCQlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhkNDEyLCAweDBmZmYsIHN3X2NudF8xbXNfaW5pKTsKJiM0MzsJCQlzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpICZhbXA7IDB4MGZmZjsKJiM0MzsJCQlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhkNDEyLCAweDBmZmYsIHN3X2NudF8xbXNfaW5pKTsKJiM0MzsJCX0KIAl9CiAKIAlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDU2LCAweDAwZjAsIDB4MDAwMCk7CkBAIC0zNzExLDYgJiM0MzszODMzLDkgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMTcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjMDk0LCAweDAwMDApOwogCXI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5ZSwgMHgwMDAwKTsKIAomIzQzOwlpZiAocnRsX2lzXzgxMTZhZih0cCkpCiYjNDM7CQlydGxfbG93cG93ZXJfaGlkZGVuX2Z1bmN0aW9ucyh0cC0mZ3Q7cGNpX2Rldik7CiYjNDM7CiAJLyogZmlybXdhcmUgaXMgZm9yIE1BQyBvbmx5ICovCiAJcjgxNjlfYXBwbHlfZmlybXdhcmUodHApOwogfQpAQCAtNDEzOSwxMiAmIzQzOzQyNjQsMTcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0KHN0cnVjdCAgcnRsODE2OV9wcml2YXRlICp0cCkKIHN0YXRpYyBpbnQgcnRsODE2OV9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KQogewogCXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJYm9vbCBqdW1ib19iZWZvcmUgPSBkZXYtJmd0O210dSAmZ3Q7IEVUSF9EQVRBX0xFTjsKJiM0MzsJYm9vbCBqdW1ib19hZnRlciA9IG5ld19tdHUgJmd0OyBFVEhfREFUQV9MRU47CiAKIAlXUklURV9PTkNFKGRldi0mZ3Q7bXR1LCBuZXdfbXR1KTsKIAluZXRkZXZfdXBkYXRlX2ZlYXR1cmVzKGRldik7CiAJcnRsX2p1bWJvX2NvbmZpZyh0cCk7CiAJcnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHRwKTsKIAomIzQzOwlpZiAoanVtYm9fYmVmb3JlICE9IGp1bWJvX2FmdGVyKQomIzQzOwkJcnRsX2p1bWJvX2NvbmZpZ19wYXVzZSh0cCk7CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTQ4NjksOCAmIzQzOzQ5OTksMTMgQEAgc3RhdGljIGlycXJldHVybl90IHJ0bDgxNjlfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSkKIAkJZ290byBvdXQ7CiAJfQogCi0JaWYgKHN0YXR1cyAmYW1wOyBMaW5rQ2hnKQotCQlwaHlfbWFjX2ludGVycnVwdCh0cC0mZ3Q7cGh5ZGV2KTsKJiM0MzsJaWYgKHN0YXR1cyAmYW1wOyBMaW5rQ2hnKSB7CiYjNDM7CQlpZiAodHAtJmd0O3BoeWRldikKJiM0MzsJCQlwaHlfbWFjX2ludGVycnVwdCh0cC0mZ3Q7cGh5ZGV2KTsKJiM0MzsJCWVsc2UgaWYgKHRwLSZndDtzZnBfbW9kZSkKJiM0MzsJCQlwaHlsaW5rX21hY19jaGFuZ2UodHAtJmd0O3BoeWxpbmssCiYjNDM7CQkJCQkgICAhIShSVExfUjgodHAsIFBIWXN0YXR1cykgJmFtcDsgTGlua1N0YXR1cykpOwomIzQzOwl9CiAKIAlydGxfaXJxX2Rpc2FibGUodHApOwogCW5hcGlfc2NoZWR1bGUoJmFtcDt0cC0mZ3Q7bmFwaSk7CkBAIC00OTMwLDkgJiM0Mzs1MDY1LDYgQEAgc3RhdGljIGludCBydGw4MTY5X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KQogCiBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpCiB7Ci0JaWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSkKLQkJcmV0dXJuOwotCiAJc3dpdGNoICh0cC0mZ3Q7bWFjX3ZlcnNpb24pIHsKIAljYXNlIFJUTF9HSUdBX01BQ19WRVJfMzQgLi4uIFJUTF9HSUdBX01BQ19WRVJfNTI6CiAJCS8qIEFkanVzdCBFRUUgTEVEIGZyZXF1ZW5jeSAqLwpAQCAtNDk2Myw0MCAmIzQzOzUwOTUsMTUgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV90eF9scGkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKQogCX0KIH0KIAotc3RhdGljIHZvaWQgcjgxNjlfcGh5bGlua19oYW5kbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQotewotCXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7Ci0Jc3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7Ci0KLQlpZiAobmV0aWZfY2Fycmllcl9vayhuZGV2KSkgewotCQlydGxfbGlua19jaGdfcGF0Y2godHApOwotCQlydGxfZW5hYmxlX3R4X2xwaSh0cCwgdHAtJmd0O3BoeWRldi0mZ3Q7ZW5hYmxlX3R4X2xwaSk7Ci0JCXBtX3JlcXVlc3RfcmVzdW1lKGQpOwotCX0gZWxzZSB7Ci0JCXBtX3J1bnRpbWVfaWRsZShkKTsKLQl9Ci0KLQlwaHlfcHJpbnRfc3RhdHVzKHRwLSZndDtwaHlkZXYpOwotfQotCiBzdGF0aWMgaW50IHI4MTY5X3BoeV9jb25uZWN0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogewotCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC0mZ3Q7cGh5ZGV2OwotCXBoeV9pbnRlcmZhY2VfdCBwaHlfbW9kZTsKIAlpbnQgcmV0OwogCi0JcGh5X21vZGUgPSB0cC0mZ3Q7c3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDoKLQkJICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSTsKLQotCXJldCA9IHBoeV9jb25uZWN0X2RpcmVjdCh0cC0mZ3Q7ZGV2LCBwaHlkZXYsIHI4MTY5X3BoeWxpbmtfaGFuZGxlciwKLQkJCQkgcGh5X21vZGUpOwotCWlmIChyZXQpCiYjNDM7CXJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkodHAtJmd0O3BoeWxpbmssIHRwLSZndDtwaHlkZXYpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQluZXRkZXZfZXJyKHRwLSZndDtkZXYsICYjMzQ7ZmFpbGVkIHRvIGNvbm5lY3QgcGh5XG4mIzM0Oyk7CiAJCXJldHVybiByZXQ7Ci0KLQlpZiAoIXRwLSZndDtzdXBwb3J0c19nbWlpKQotCQlwaHlfc2V0X21heF9zcGVlZChwaHlkZXYsIFNQRUVEXzEwMCk7Ci0KLQlwaHlfYXR0YWNoZWRfaW5mbyhwaHlkZXYpOwomIzQzOwl9CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTUwMDcsMTAgJiM0Mzs1MTE0LDEwIEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZG93bihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkvKiBDbGVhciBhbGwgdGFzayBmbGFncyAqLwogCWJpdG1hcF96ZXJvKHRwLSZndDt3ay5mbGFncywgUlRMX0ZMQUdfTUFYKTsKIAotCXBoeV9zdG9wKHRwLSZndDtwaHlkZXYpOwomIzQzOwlwaHlsaW5rX3N0b3AodHAtJmd0O3BoeWxpbmspOwogCiAJLyogUmVzZXQgU2VyRGVzIFBIWSB0byBicmluZyBkb3duIGZpYmVyIGxpbmsgKi8KLQlpZiAodHAtJmd0O3NmcF9tb2RlKQomIzQzOwlpZiAodHAtJmd0O3NmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpCiAJCXJ0bF9zZnBfcmVzZXQodHApOwogCiAJcnRsODE2OV91cGRhdGVfY291bnRlcnModHApOwpAQCAtNTAzMiwxNCAmIzQzOzUxMzksMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV91cChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJcnRsODE2OF9kcml2ZXJfc3RhcnQodHApOwogCiAJcGNpX3NldF9tYXN0ZXIodHAtJmd0O3BjaV9kZXYpOwotCXBoeV9pbml0X2h3KHRwLSZndDtwaHlkZXYpOwotCXBoeV9yZXN1bWUodHAtJmd0O3BoeWRldik7Ci0JcnRsODE2OV9pbml0X3BoeSh0cCk7CiYjNDM7CWlmICh0cC0mZ3Q7cGh5ZGV2KQomIzQzOwkJcnRsODE2OV9pbml0X3BoeSh0cCk7CiYjNDM7CiAJbmFwaV9lbmFibGUoJmFtcDt0cC0mZ3Q7bmFwaSk7CiAJZW5hYmxlX3dvcmsoJmFtcDt0cC0mZ3Q7d2sud29yayk7CiAJcnRsX3Jlc2V0X3dvcmsodHApOwogCi0JcGh5X3N0YXJ0KHRwLSZndDtwaHlkZXYpOwomIzQzOwlwaHlsaW5rX3N0YXJ0KHRwLSZndDtwaHlsaW5rKTsKIH0KIAogc3RhdGljIGludCBydGw4MTY5X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCkBAIC01MDU1LDcgJiM0Mzs1MTYyLDcgQEAgc3RhdGljIGludCBydGw4MTY5X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIAlmcmVlX2lycSh0cC0mZ3Q7aXJxLCB0cCk7CiAKLQlwaHlfZGlzY29ubmVjdCh0cC0mZ3Q7cGh5ZGV2KTsKJiM0MzsJcGh5bGlua19kaXNjb25uZWN0X3BoeSh0cC0mZ3Q7cGh5bGluayk7CiAKIAlkbWFfZnJlZV9jb2hlcmVudCgmYW1wO3BkZXYtJmd0O2RldiwgUjgxNjlfUlhfUklOR19CWVRFUywgdHAtJmd0O1J4RGVzY0FycmF5LAogCQkJICB0cC0mZ3Q7UnhQaHlBZGRyKTsKQEAgLTUxMTIsOSAmIzQzOzUyMTksMTEgQEAgc3RhdGljIGludCBydGxfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWlmIChyZXR2YWwgJmx0OyAwKQogCQlnb3RvIGVycl9yZWxlYXNlX2Z3XzI7CiAKLQlyZXR2YWwgPSByODE2OV9waHlfY29ubmVjdCh0cCk7Ci0JaWYgKHJldHZhbCkKLQkJZ290byBlcnJfZnJlZV9pcnE7CiYjNDM7CWlmICh0cC0mZ3Q7cGh5ZGV2KSB7CiYjNDM7CQlyZXR2YWwgPSByODE2OV9waHlfY29ubmVjdCh0cCk7CiYjNDM7CQlpZiAocmV0dmFsKQomIzQzOwkJCWdvdG8gZXJyX2ZyZWVfaXJxOwomIzQzOwl9CiAKIAlydGw4MTY5X3VwKHRwKTsKIAlydGw4MTY5X2luaXRfY291bnRlcl9vZmZzZXRzKHRwKTsKQEAgLTUxOTAsOCAmIzQzOzUyOTksMTEgQEAgc3RhdGljIGludCBydGw4MTY5X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIAlydGxfcmFyX3NldCh0cCwgdHAtJmd0O2Rldi0mZ3Q7ZGV2X2FkZHIpOwogCV9fcnRsODE2OV9zZXRfd29sKHRwLCB0cC0mZ3Q7c2F2ZWRfd29sb3B0cyk7CiAKLQlpZiAodHAtJmd0O1R4RGVzY0FycmF5KQomIzQzOwlpZiAodHAtJmd0O1R4RGVzY0FycmF5KSB7CiYjNDM7CQlydG5sX2xvY2soKTsKIAkJcnRsODE2OV91cCh0cCk7CiYjNDM7CQlydG5sX3VubG9jaygpOwomIzQzOwl9CiAKIAluZXRpZl9kZXZpY2VfYXR0YWNoKHRwLSZndDtkZXYpOwogCkBAIC01Mjg4LDYgJiM0Mzs1NDAwLDggQEAgc3RhdGljIHZvaWQgcnRsX3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAJCXI4MTY5X3JlbW92ZV9sZWRzKHRwLSZndDtsZWRzKTsKIAogCXVucmVnaXN0ZXJfbmV0ZGV2KHRwLSZndDtkZXYpOwomIzQzOwlpZiAodHAtJmd0O3BoeWxpbmspCiYjNDM7CQlwaHlsaW5rX2Rlc3Ryb3kodHAtJmd0O3BoeWxpbmspOwogCiAJaWYgKHRwLSZndDtkYXNoX3R5cGUgIT0gUlRMX0RBU0hfTk9ORSkKIAkJcnRsODE2OF9kcml2ZXJfc3RvcCh0cCk7CkBAIC01MzEwLDcgJiM0Mzs1NDI0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBydGxfbmV0ZGV2X29wcyA9IHsKIAkubmRvX2ZpeF9mZWF0dXJlcwk9IHJ0bDgxNjlfZml4X2ZlYXR1cmVzLAogCS5uZG9fc2V0X2ZlYXR1cmVzCT0gcnRsODE2OV9zZXRfZmVhdHVyZXMsCiAJLm5kb19zZXRfbWFjX2FkZHJlc3MJPSBydGxfc2V0X21hY19hZGRyZXNzLAotCS5uZG9fZXRoX2lvY3RsCQk9IHBoeV9kb19pb2N0bF9ydW5uaW5nLAomIzQzOwkubmRvX2V0aF9pb2N0bAkJPSBydGw4MTY5X2lvY3RsLAogCS5uZG9fc2V0X3J4X21vZGUJPSBydGxfc2V0X3J4X21vZGUsCiAjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIKIAkubmRvX3BvbGxfY29udHJvbGxlcgk9IHJ0bDgxNjlfbmV0cG9sbCwKQEAgLTU0NzQsMTYgJiM0Mzs1NTg4LDYgQEAgc3RhdGljIGludCByODE2OV9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCQlyZXR1cm4gLUVVTkFUQ0g7CiAJfQogCi0JdHAtJmd0O3BoeWRldi0mZ3Q7bWFjX21hbmFnZWRfcG0gPSB0cnVlOwotCWlmIChydGxfc3VwcG9ydHNfZWVlKHRwKSkKLQkJcGh5X3N1cHBvcnRfZWVlKHRwLSZndDtwaHlkZXYpOwotCXBoeV9zdXBwb3J0X2FzeW1fcGF1c2UodHAtJmd0O3BoeWRldik7Ci0KLQkvKiBtaW1pYyBiZWhhdmlvciBvZiByODEyNS9yODEyNiB2ZW5kb3IgZHJpdmVycyAqLwotCWlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl82MSkKLQkJcGh5X2Rpc2FibGVfZWVlX21vZGUodHAtJmd0O3BoeWRldiwKLQkJCQkgICAgIEVUSFRPT0xfTElOS19NT0RFXzI1MDBiYXNlVF9GdWxsX0JJVCk7Ci0KIAkvKiBQSFkgd2lsbCBiZSB3b2tlbiB1cCBpbiBydGxfb3BlbigpICovCiAJcGh5X3N1c3BlbmQodHAtJmd0O3BoeWRldik7CiAKQEAgLTU1OTksNiAmIzQzOzU3MDMsMjMzIEBAIHN0YXRpYyBib29sIHJ0bF9hc3BtX2lzX3NhZmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJcmV0dXJuIGZhbHNlOwogfQogCiYjNDM7c3RhdGljIHZvaWQgcnRsX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLAomIzQzOwkJCSAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTsKJiM0MzsKJiM0MzsJdHAtJmd0O3NwZWVkID0gU1BFRURfVU5LTk9XTjsKJiM0MzsJcG1fcnVudGltZV9pZGxlKHRwX3RvX2Rldih0cCkpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiYjNDM7CQkJICAgIHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLAomIzQzOwkJCSAgICBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGJvb2wgdHhfcGF1c2UsIGJvb2wgcnhfcGF1c2UpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTsKJiM0MzsJc3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7CiYjNDM7CiYjNDM7CXRwLSZndDtzcGVlZCA9IHNwZWVkOwomIzQzOwlydGxfbGlua19jaGdfcGF0Y2godHAsIHNwZWVkKTsKJiM0MzsKJiM0MzsJcG1fcmVxdWVzdF9yZXN1bWUoZCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJ0bF9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywKJiM0MzsJCQkJCSAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTsKJiM0MzsKJiM0MzsJaWYgKCF0cC0mZ3Q7cGNzLm9wcykKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwomIzQzOwlpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggfHwKJiM0MzsJICAgIGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpCiYjNDM7CQlyZXR1cm4gJmFtcDt0cC0mZ3Q7cGNzOwomIzQzOwomIzQzOwlyZXR1cm4gTlVMTDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgcnRsX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLAomIzQzOwkJCSAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKQomIzQzO3sKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHUxNiBydGw4MTY5X3Nkc19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgc2RzX3JlZykKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiYjNDM7CXUxNiB2YWwgPSAwOwomIzQzOwomIzQzOwlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDt0cC0mZ3Q7bWFjX29jcF9sb2NrLCBmbGFncyk7CiYjNDM7CV9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19BRERSX1JFRywgc2RzX3JlZyk7CiYjNDM7CV9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19DTURfUkVHLCBTRFNfQ01EX1JFQUQpOwomIzQzOwl2YWwgPSBfX3I4MTY4X21hY19vY3BfcmVhZCh0cCwgT0NQX1NEU19EQVRBX1JFRyk7CiYjNDM7CXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7dHAtJmd0O21hY19vY3BfbG9jaywgZmxhZ3MpOwomIzQzOwomIzQzOwlyZXR1cm4gdmFsOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydGw4MTY5X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsCiYjNDM7CQkJCSAgdW5zaWduZWQgaW50IG5lZ19tb2RlLAomIzQzOwkJCQkgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwY3MpOwomIzQzOwomIzQzOwlpZiAodHAtJmd0O3NmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpIHsKJiM0MzsJCXUxNiBzdGF0MTsKJiM0MzsKJiM0MzsJCXN0YXQxID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DNDVfQkFTRSAmIzQzOyBNRElPX1NUQVQxKTsKJiM0MzsKJiM0MzsJCWlmICghKHN0YXQxICZhbXA7IE1ESU9fU1RBVDFfTFNUQVRVUykpCiYjNDM7CQkJc3RhdDEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0M0NV9CQVNFICYjNDM7IE1ESU9fU1RBVDEpOwomIzQzOwomIzQzOwkJc3RhdGUtJmd0O2xpbmsgPSAhIShzdGF0MSAmYW1wOyBNRElPX1NUQVQxX0xTVEFUVVMpOwomIzQzOwkJaWYgKCFzdGF0ZS0mZ3Q7bGluaykKJiM0MzsJCQlyZXR1cm47CiYjNDM7CiYjNDM7CQlzdGF0ZS0mZ3Q7ZHVwbGV4ID0gRFVQTEVYX0ZVTEw7CiYjNDM7CQlzdGF0ZS0mZ3Q7c3BlZWQgPSBTUEVFRF8xMDAwMDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXUxNiBibXNyLCBscGE7CiYjNDM7CiYjNDM7CQlibXNyID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DMjJfQkFTRSAmIzQzOyBNSUlfQk1TUik7CiYjNDM7CQlscGEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0MyMl9CQVNFICYjNDM7IE1JSV9MUEEpOwomIzQzOwkJcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscGEpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcnRsODE2OV9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbW9kZSwKJiM0MzsJCQkgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLAomIzQzOwkJCSAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkdmVydGlzaW5nLAomIzQzOwkJCSAgICAgIGJvb2wgcGVybWl0X3BhdXNlX3RvX21hYykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTsKJiM0MzsKJiM0MzsJaWYgKHRwLSZndDtzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKQomIzQzOwkJcjgxMjdfc2ZwX2luaXRfMTBnKHRwKTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcnRsODE2OV9wY3NfdmFsaWRhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZCwKJiM0MzsJCQkJY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgcnRsODE2OV9wY3NfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcykKJiM0Mzt7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHJ0bF9tYWNfZGlzYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTsKJiM0MzsKJiM0MzsJcnRsX2VuYWJsZV90eF9scGkodHAsIGZhbHNlKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBydGxfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHUzMiB0aW1lciwgYm9vbCB0eF9jbGtfc3RvcCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpOwomIzQzOwomIzQzOwlpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApKQomIzQzOwkJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzOwomIzQzOwlydGxfZW5hYmxlX3R4X2xwaSh0cCwgdHJ1ZSk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBydGxfcGh5bGlua19tYWNfb3BzID0gewomIzQzOwkubWFjX3NlbGVjdF9wY3MgPSBydGxfbWFjX3NlbGVjdF9wY3MsCiYjNDM7CS5tYWNfY29uZmlnID0gcnRsX21hY19jb25maWcsCiYjNDM7CS5tYWNfbGlua19kb3duICA9IHJ0bF9tYWNfbGlua19kb3duLAomIzQzOwkubWFjX2xpbmtfdXAgICAgPSBydGxfbWFjX2xpbmtfdXAsCiYjNDM7CS5tYWNfZGlzYWJsZV90eF9scGkgPSBydGxfbWFjX2Rpc2FibGVfdHhfbHBpLAomIzQzOwkubWFjX2VuYWJsZV90eF9scGkgPSBydGxfbWFjX2VuYWJsZV90eF9scGksCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgdW5zaWduZWQgbG9uZyBydGw4MTY5X2dldF9scGlfY2FwcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgY2FwcyA9IDA7CiYjNDM7CiYjNDM7CWlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkgfHwgdHAtJmd0O3NmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJY2FwcyB8PSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEOwomIzQzOwomIzQzOwkvKiBtaW1pYyBiZWhhdmlvciBvZiByODEyNS9yODEyNiB2ZW5kb3IgZHJpdmVycwomIzQzOwkgKiBSVExfR0lHQV9NQUNfVkVSXzYxIGRvZXNuJiMzOTt0IHN1cHBvcnQgMi41RyBlZWUKJiM0MzsJICovCiYjNDM7CWlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gJmd0Oz0gUlRMX0dJR0FfTUFDX1ZFUl82MykKJiM0MzsJCWNhcHMgfD0gTUFDXzI1MDBGRDsKJiM0MzsJaWYgKHRwLSZndDttYWNfdmVyc2lvbiAmZ3Q7PSBSVExfR0lHQV9NQUNfVkVSXzcwKQomIzQzOwkJY2FwcyB8PSBNQUNfNTAwMEZEOwomIzQzOwlpZiAodHAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApCiYjNDM7CQljYXBzIHw9IE1BQ18xMDAwMEZEOwomIzQzOwomIzQzOwlyZXR1cm4gY2FwczsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgcjgxNjlfcGNzX29wcyA9IHsKJiM0MzsJLnBjc192YWxpZGF0ZSA9IHJ0bDgxNjlfcGNzX3ZhbGlkYXRlLAomIzQzOwkucGNzX2dldF9zdGF0ZSA9IHJ0bDgxNjlfcGNzX2dldF9zdGF0ZSwKJiM0MzsJLnBjc19jb25maWcgPSBydGw4MTY5X3Bjc19jb25maWcsCiYjNDM7CS5wY3NfYW5fcmVzdGFydCA9IHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgaW50IHJ0bF9pbml0X3BoeWxpbmsoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcGh5bGluayAqcGw7CiYjNDM7CXBoeV9pbnRlcmZhY2VfdCBwaHlfbW9kZTsKJiM0MzsKJiM0MzsJdHAtJmd0O3BoeWxpbmtfY29uZmlnLmRldiA9ICZhbXA7dHAtJmd0O2Rldi0mZ3Q7ZGV2OwomIzQzOwl0cC0mZ3Q7cGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWOwomIzQzOwl0cC0mZ3Q7cGh5bGlua19jb25maWcubWFjX21hbmFnZWRfcG0gPSB0cnVlOwomIzQzOwl0cC0mZ3Q7cGh5bGlua19jb25maWcubHBpX2NhcGFiaWxpdGllcyA9IHJ0bDgxNjlfZ2V0X2xwaV9jYXBzKHRwKTsKJiM0MzsJdHAtJmd0O3BoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFOwomIzQzOwomIzQzOwlzd2l0Y2ggKHRwLSZndDtzZnBfbW9kZSkgewomIzQzOwljYXNlIFJUTF9TRlBfODE2OF9BRjoKJiM0MzsJCXRwLSZndDtwY3Mub3BzID0gJmFtcDtyODE2OV9wY3Nfb3BzOwomIzQzOwkJdHAtJmd0O3BoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTsKJiM0MzsJCXBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDsKJiM0MzsJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQ7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBSVExfU0ZQXzgxMjdfQVRGOgomIzQzOwkJdHAtJmd0O3Bjcy5vcHMgPSAmYW1wO3I4MTY5X3Bjc19vcHM7CiYjNDM7CQlwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjsKJiM0MzsJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5kZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7CiYjNDM7CQl0cC0mZ3Q7cGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMDBGRDsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUw7CiYjNDM7CQl0cC0mZ3Q7cGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAgfCBNQUNfMTAwOwomIzQzOwomIzQzOwkJaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKQomIzQzOwkJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEIHwKJiM0MzsJCQkJCQkJICAgICAgIE1BQ181MDAwRkQgfCBNQUNfMTAwMDBGRDsKJiM0MzsJCWVsc2UgaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzcwKQomIzQzOwkJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfAomIzQzOwkJCQkJCQkgICAgICAgTUFDXzI1MDBGRCB8IE1BQ181MDAwRkQ7CiYjNDM7CQllbHNlIGlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gJmd0Oz0gUlRMX0dJR0FfTUFDX1ZFUl82MSkKJiM0MzsJCQl0cC0mZ3Q7cGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDsKJiM0MzsJCWVsc2UKJiM0MzsJCQlpZiAodHAtJmd0O3N1cHBvcnRzX2dtaWkpCiYjNDM7CQkJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQ7CiYjNDM7CiYjNDM7CQlpZiAodHAtJmd0O21hY192ZXJzaW9uICZsdDsgUlRMX0dJR0FfTUFDX1ZFUl82MSkKJiM0MzsJCQlwaHlfbW9kZSA9IHRwLSZndDtzdXBwb3J0c19nbWlpID8gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkgOgomIzQzOwkJCQkgICBQSFlfSU5URVJGQUNFX01PREVfTUlJOwomIzQzOwkJZWxzZQomIzQzOwkJCXBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMOwomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsKJiM0MzsJX19zZXRfYml0KHBoeV9tb2RlLCB0cC0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwomIzQzOwlpZiAodHAtJmd0O3BoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMpCiYjNDM7CQlfX3NldF9iaXQocGh5X21vZGUsIHRwLSZndDtwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyk7CiYjNDM7CiYjNDM7CXBsID0gcGh5bGlua19jcmVhdGUoJmFtcDt0cC0mZ3Q7cGh5bGlua19jb25maWcsIHRwX3RvX2Rldih0cCktJmd0O2Z3bm9kZSwKJiM0MzsJCQkgICAgcGh5X21vZGUsICZhbXA7cnRsX3BoeWxpbmtfbWFjX29wcyk7CiYjNDM7CWlmIChJU19FUlIocGwpKQomIzQzOwkJcmV0dXJuIFBUUl9FUlIocGwpOwomIzQzOwomIzQzOwl0cC0mZ3Q7cGh5bGluayA9IHBsOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKIHsKIAljb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyAqY2hpcDsKQEAgLTU2NjcsNiAmIzQzOzU5OTgsNyBAQCBzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKIAkJCQkgICAgIGV4dF94aWRfc3RyLCB4aWQpOwogCXRwLSZndDttYWNfdmVyc2lvbiA9IGNoaXAtJmd0O21hY192ZXJzaW9uOwogCXRwLSZndDtmd19uYW1lID0gY2hpcC0mZ3Q7ZndfbmFtZTsKJiM0MzsJdHAtJmd0O3NwZWVkID0gU1BFRURfVU5LTk9XTjsKIAogCS8qIERpc2FibGUgQVNQTSBMMSBhcyB0aGF0IGNhdXNlIHJhbmRvbSBkZXZpY2Ugc3RvcCB3b3JraW5nCiAJICogcHJvYmxlbXMgYXMgd2VsbCBhcyBmdWxsIHN5c3RlbSBoYW5ncyBmb3Igc29tZSBQQ0llIGRldmljZXMgdXNlcnMuCkBAIC01Njc5LDEyICYjNDM7NjAxMSw3IEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQogCX0KIAl0cC0mZ3Q7YXNwbV9tYW5hZ2VhYmxlID0gIXJjOwogCi0JaWYgKHJ0bF9pc184MTI1KHRwKSkgewotCQl1MTYgZGF0YSA9IHI4MTY4X21hY19vY3BfcmVhZCh0cCwgMHhkMDA2KTsKLQotCQlpZiAoKGRhdGEgJmFtcDsgMHhmZikgPT0gMHgwNykKLQkJCXRwLSZndDtzZnBfbW9kZSA9IHRydWU7Ci0JfQomIzQzOwl0cC0mZ3Q7c2ZwX21vZGUgPSBydGxfZ2V0X3NmcF9tb2RlKHRwKTsKIAogCXRwLSZndDtkYXNoX3R5cGUgPSBydGxfZ2V0X2Rhc2hfdHlwZSh0cCk7CiAJdHAtJmd0O2Rhc2hfZW5hYmxlZCA9IHJ0bF9kYXNoX2lzX2VuYWJsZWQodHApOwpAQCAtNTc4OCwxMyAmIzQzOzYxMTUsMjMgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCiAKIAlwY2lfc2V0X2RydmRhdGEocGRldiwgdHApOwogCi0JcmMgPSByODE2OV9tZGlvX3JlZ2lzdGVyKHRwKTsKJiM0MzsJcmMgPSBydGxfaW5pdF9waHlsaW5rKHRwKTsKIAlpZiAocmMpCiAJCXJldHVybiByYzsKIAomIzQzOwlpZiAodHAtJmd0O3NmcF9tb2RlID09IFJUTF9TRlBfTk9ORSkgewomIzQzOwkJcmMgPSByODE2OV9tZGlvX3JlZ2lzdGVyKHRwKTsKJiM0MzsJCWlmIChyYykgewomIzQzOwkJCXBoeWxpbmtfZGVzdHJveSh0cC0mZ3Q7cGh5bGluayk7CiYjNDM7CQkJcmV0dXJuIHJjOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiAJcmMgPSByZWdpc3Rlcl9uZXRkZXYoZGV2KTsKLQlpZiAocmMpCiYjNDM7CWlmIChyYykgewomIzQzOwkJcGh5bGlua19kZXN0cm95KHRwLSZndDtwaHlsaW5rKTsKIAkJcmV0dXJuIHJjOwomIzQzOwl9CiAKIAlpZiAoSVNfRU5BQkxFRChDT05GSUdfUjgxNjlfTEVEUykpIHsKIAkJaWYgKHJ0bF9pc184MTI1KHRwKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKaW5kZXggYjY1ZDBmNWZhMWEwMTQuLjdmOTA0ZGU1ODNlMDU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwpAQCAtMjY0Niw0NSAmIzQzOzI2NDYsNiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODIyMWJfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCXJldHVybiBJUlFfSEFORExFRDsKIH0KIAotc3RhdGljIGludCBydGxnZW5fc2ZwX2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQotewotCWxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMDBiYXNlVF9GdWxsX0JJVCwKLQkJCSBwaHlkZXYtJmd0O3N1cHBvcnRlZCk7Ci0KLQkvKiBzZXQgZGVmYXVsdCBtb2RlICovCi0JcGh5ZGV2LSZndDtzcGVlZCA9IFNQRUVEXzEwMDAwOwotCXBoeWRldi0mZ3Q7ZHVwbGV4ID0gRFVQTEVYX0ZVTEw7Ci0KLQlwaHlkZXYtJmd0O3BvcnQgPSBQT1JUX0ZJQlJFOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQotewotCWludCB2YWwsIGVycjsKLQotCWVyciA9IGdlbnBoeV91cGRhdGVfbGluayhwaHlkZXYpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7Ci0KLQlpZiAoIXBoeWRldi0mZ3Q7bGluaykKLQkJcmV0dXJuIDA7Ci0KLQl2YWwgPSBwaHlfcmVhZChwaHlkZXYsIFJUTF9QSFlTUik7Ci0JaWYgKHZhbCAmbHQ7IDApCi0JCXJldHVybiB2YWw7Ci0KLQlydGxnZW5fZGVjb2RlX3BoeXNyKHBoeWRldiwgdmFsKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKLXsKLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0gewogCXsKIAkJUEhZX0lEX01BVENIX0VYQUNUKDB4MDAwMDgyMDEpLApAQCAtMjkzNCwyMCAmIzQzOzI4OTUsNiBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7CiAJCS53cml0ZV9wYWdlCT0gcnRsODIxeF93cml0ZV9wYWdlLAogCQkucmVhZF9tbWQJPSBydGw4MjJ4X3JlYWRfbW1kLAogCQkud3JpdGVfbW1kCT0gcnRsODIyeF93cml0ZV9tbWQsCi0JfSwgewotCQlQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1JUTF9EVU1NWV9TRlApLAotCQkubmFtZQkJPSAmIzM0O1JlYWx0ZWsgU0ZQIFBIWSBNb2RlJiMzNDssCi0JCS5mbGFncwkJPSBQSFlfSVNfSU5URVJOQUwsCi0JCS5wcm9iZQkJPSBydGw4MjJ4X3Byb2JlLAotCQkuZ2V0X2ZlYXR1cmVzCT0gcnRsZ2VuX3NmcF9nZXRfZmVhdHVyZXMsCi0JCS5jb25maWdfYW5lZwk9IHJ0bGdlbl9zZnBfY29uZmlnX2FuZWcsCi0JCS5yZWFkX3N0YXR1cwk9IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMsCi0JCS5zdXNwZW5kCT0gZ2VucGh5X3N1c3BlbmQsCi0JCS5yZXN1bWUJCT0gcnRsZ2VuX3Jlc3VtZSwKLQkJLnJlYWRfcGFnZQk9IHJ0bDgyMXhfcmVhZF9wYWdlLAotCQkud3JpdGVfcGFnZQk9IHJ0bDgyMXhfd3JpdGVfcGFnZSwKLQkJLnJlYWRfbW1kCT0gcnRsODIyeF9yZWFkX21tZCwKLQkJLndyaXRlX21tZAk9IHJ0bDgyMnhfd3JpdGVfbW1kLAogCX0sIHsKIAkJUEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLAogCQkubmFtZQkJPSAmIzM0O1JUTDgyMjQgMi41R2JwcyBQSFkmIzM0OywKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oIGIvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ODNiYzFiMDY1OWNkLi4wMDAwMDAwMDAwMDAwMAotLS0gYS9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaAomIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsCkBAIC0xLDcgJiM0MzswLDAgQEAKLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCi0jaWZuZGVmIF9SRUFMVEVLX1BIWV9ICi0jZGVmaW5lIF9SRUFMVEVLX1BIWV9ICi0KLSNkZWZpbmUJUEhZX0lEX1JUTF9EVU1NWV9TRlAJMHgwMDFjY2JmZgotCi0jZW5kaWYgLyogX1JFQUxURUtfUEhZX0ggKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzMDkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSByODE2OSBEcml2ZXIgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IGZ1bmRhbWVudGFsbHkgY2hhbmdlcyB0aGUgYHI4MTY5YCBuZXR3b3JrIGRyaXZlciBieSBhZGRpbmcgYFBIWUxJTktgIHN1cHBvcnQgYW5kIFNGUCBtb2RlIGhhbmRsaW5nLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4sIGdpdmVuIHRoZSBjb250ZXh0IG9mIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGlzIHdoZXRoZXIgdGhpcyBkcml2ZXIgaXMgZXZlbiAqcmVhY2hhYmxlKi4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIFJlYWx0ZWsgRXRoZXJuZXQgYWRhcHRlciBkcml2ZXIsIGFuZCBteSBleHBlcmllbmNlIHRlbGxzIG1lIFBDSSBuZXR3b3JrIGRyaXZlcnMgbGlrZSBgcjgxNjlgIGFyZSB0eXBpY2FsbHkgdHJpY2t5IGluIHZpcnR1YWxpemVkIHNldHVwcy4KClFFTVUsIHRoZSB1c3VhbCBzdXNwZWN0IGZvciBlbXVsYXRpb24sIGlzIG15IGZpcnN0IHBvcnQgb2YgY2FsbC4gSSBrbm93IFFFTVUgZW11bGF0ZXMgYHJ0bDgxMzlgLCBidXQgYHI4MTY5YCBpcyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IGJlYXN0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBRRU1VIGxpa2VseSAqZG9lc24mIzM5O3QqIGVtdWxhdGUgaXQuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LiBJdCYjMzk7cyBhIHF1ZXN0aW9uIEkgaGF2ZSB0byBhc2suIEkgbmVlZCB0byBtYWtlIHN1cmUuCgpUaGVuLCB0aGVyZSYjMzk7cyBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIGhhdmUgYSBtZWFucyB0byBpbnRlcmFjdCB3aXRoIHRoaXMgZHJpdmVyPyBTeXprYWxsZXIgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW5qZWN0IFBDSSBkZXZpY2VzIHRocm91Z2ggYHN5el9wY2lfZGV2aWNlX2FkZGAgb3Igc2ltaWxhciBtZWNoYW5pc21zLiBJZiB0aGlzIGlzIHRoZSBjYXNlLCBzeXprYWxsZXIgY291bGQgcG90ZW50aWFsbHkgcHJvdmlkZSBhIHBhdGggdG8gcmVhY2ggdGhlIGRyaXZlci4gU28sIHRoaXMgaXMgd29ydGggZXhwbG9yaW5nIHRvIHNlZSBpZiBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LgoKTXkgZmlyc3QgdGhvdWdodCBpcywgdGhpcyBpcyBhbiBpc3N1ZS4gVGhlIGRlc2NyaXB0aW9uIHNheXMgY29kZSBwYXRocyBhcmUgbm90IHJlYWNoYWJsZSBpZiB0aGV5IGNhbiYjMzk7dCBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHNvIEkgbmVlZCB0byBmaW5kIGEgd2F5IHRvIG1ha2UgaXQgcmVhY2hhYmxlLgoKT2theSwgY2hlY2tpbmcgc3l6a2FsbGVyLCB3aGljaCBtaWdodCBiZSB0aHJvdWdoIGB2aGNpYCBmb3IgVVNCIG9yIHRocm91Z2ggYHBjaWAgZm9yIFBDSSAodXNpbmcgdGhlIGBzeXpfcGNpX2RldmljZV9hZGRgIGNhbGwpLCBpcyBteSBuZXh0IGxpbmUgb2YgaW5xdWlyeS4gSG93ZXZlciwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgdGhhdCBhIGxvdCBvZiB0aGlzIHJlcXVpcmVzIHRoZSBkcml2ZXIgdG8gYWN0dWFsbHkgcHJvYmUgYW5kIHRoZSBuZXRkZXYgdG8gYmUgcmVnaXN0ZXJlZC4KClVsdGltYXRlbHksIGlmIHRoZSBoYXJkd2FyZSBpc24mIzM5O3QgZW11bGF0ZWQsIHRoZSBgcjgxNjlgIHByb2JlIGlzIGdvaW5nIHRvIGZhaWwsIHdoaWNoIG1lYW5zIHRoZSBuZXR3b3JrIGRldmljZSB3b24mIzM5O3QgYmUgcmVnaXN0ZXJlZCwgYW5kIGFsbCB0aGUgYHBoeWxpbmtgIGNvZGUsIGFuZCBldmVyeXRoaW5nIGluIGByODE2OV9vcGVuYCBpcyBuZXZlciBnb2luZyB0byBiZSBleGVjdXRlZC4KCkkmIzM5O20gbm93IGdvaW5nIHRvIGNvbmZpcm0gbXkgaHVuY2ggYW5kIHNlYXJjaCBRRU1VJiMzOTtzIHNvdXJjZSBjb2RlLCBqdXN0IHRvIG1ha2Ugc3VyZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGxvb2sgdGhyb3VnaCB0aGUgYXZhaWxhYmxlIG5ldHdvcmsgZGV2aWNlcy4gTm8sIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIGByODE2OWAuIFNvLCB0aGlzIGlzIHRoZSBtYWluIGlzc3VlLgoKU3l6a2FsbGVyIGlzIHRoZSBvbmx5IG90aGVyIHdheSB0byByZWFjaCB0aGlzLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHN5emthbGxlciYjMzk7cyBjYXBhYmlsaXRpZXMgaGVyZSwgbG9va2luZyBhdCBpdHMgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBmZWF0dXJlLiBNeSBjb25jbHVzaW9uIGlzIHRoYXQgaXQgdXNlcyBgc3l6X3BjaV9kZXZpY2VfYWRkYCBvciBzaW1pbGFyLiBJIG5lZWQgdG8gcmVtZW1iZXIsIHN5emthbGxlciBpcyBnb2luZyB0byBpbmplY3QgYSAmIzM0O2R1bW15JiMzNDsgUENJIGRldmljZSwgd2hpY2ggZG9lcyAqbm90KiBlbXVsYXRlIGFueSBhY3R1YWwgaGFyZHdhcmUsIGFuZCBpcyBub3QgZ29pbmcgdG8gcmVnaXN0ZXIgdGhlIG5ldGRldi4gVGhlIGRyaXZlciB3b24mIzM5O3QgcHJvYmUsIHNvIHRoZSBjb2RlIHdvbiYjMzk7dCBiZSBoaXQuCgpUaGUgcXVlc3Rpb24gdGhlbiBpcywgaG93IGRvZXMgc3l6a2FsbGVyIHByb3ZpZGUgYWNjZXNzIHRvIGBuZXRkZXZgPyBJdCBjYW4gb25seSBiZSBoaXQgdGhyb3VnaCBzb21lIGtpbmQgb2YgbmV0d29yayBmdXp6aW5nLgoKTXkgY29uY2x1c2lvbiBpcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgcjgxNjlgIGlzIHJlYWNoYWJsZSBhbmQgZmluZCBzb21lIG1lYW5zIG9mIG1ha2luZyBpdCByZWFjaGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfcGNpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDIwMAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQQ0kgRnV6emluZyBDaGFsbGVuZ2VzKioKCkFscmlnaHQsIHNvIHRoZXJlJiMzOTtzIG5vIGRlZGljYXRlZCBgc3l6X3BjaWAgdGFyZ2V0LCB3aGljaCBtZWFucyBteSBpbml0aWFsIGZvY3VzIG5lZWRzIHRvIHNoaWZ0LiBQQ0kgZnV6emluZyBpbiBnZW5lcmFsIHRoZW4uIEkga25vdyBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhIGdlbmVyaWMgUENJIGZ1enplciBjYXBhYmxlIG9mIGVtdWxhdGluZyBqdXN0IGFueSBQQ0kgZGV2aWNlLCBzbyBJJiMzOTttIGFscmVhZHkgZmFjaW5nIGEgaHVyZGxlLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgY2FuIEkgbGV2ZXJhZ2UgUUVNVSBzb21laG93PyBEb2VzIFFFTVUgZW11bGF0ZSB0aGUgYHI4MTY5YCBuZXR3b3JrIGFkYXB0ZXI/IEkgbmVlZCB0byBjaGVjayBpZiB0aGF0IHNwZWNpZmljIGRldmljZSBpcyBldmVuIG1lbnRpb25lZCBvciBhY2Nlc3NpYmxlIHdpdGhpbiBRRU1VJiMzOTtzIGVudmlyb25tZW50LiBIb2xkIG9uLCB3aGF0IGlmIHRoaXMgZml4IGlzIG9ubHkgYXBwbGljYWJsZSB0byBhIHBoeXNpY2FsIGByODE2OWAgYW5kIGNhbiYjMzk7dCBiZSB0ZXN0ZWQgdmlydHVhbGx5PyBJIHJlbWVtYmVyIHJlYWRpbmcgc29tZXRoaW5nIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMuLi4gJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4mIzM0OyBSaWdodCwgaWYgUUVNVSAqZG9lc24mIzM5O3QqIGVtdWxhdGUgYHI4MTY5YCwgSSYjMzk7bSBlc3NlbnRpYWxseSBzdHVjay4gVGhpcyBpcyBhbGwgaW1wb3NzaWJsZSB0byByZWFjaC4gQmFjayB0byB0aGUgc291cmNlLCBJIG5lZWQgdG8gY29uZmlybSBRRU1VJiMzOTtzIGVtdWxhdGlvbiBjYXBhYmlsaXRpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgUUVNVSBlbXVsYXRlcyBgcjgxNjlgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JUTDgxNjkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTg0PWNvbmZpZyBSODE2OVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy05NC1cdCAgdGhlIGZvbGxvd2luZyBmYW1pbGllczpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzo5NTpcdCAgUlRMODE2OSBHaWdhYml0IEV0aGVybmV0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctOTYtXHQgIFJUTDgxNjggR2lnYWJpdCBFdGhlcm5ldFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTExNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIyMy1cdC8qIDgxMTAgZmFtaWx5LiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjI0Olx0eyAweGZjOCwgMHg5ODAsXHRSVExfR0lHQV9NQUNfVkVSXzA2LCBcJiMzNDtSVEw4MTY5c2MvODExMHNjXCYjMzQ7IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMjU6XHR7IDB4ZmM4LCAweDE4MCxcdFJUTF9HSUdBX01BQ19WRVJfMDUsIFwmIzM0O1JUTDgxNjlzYy84MTEwc2NcJiMzNDsgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjIyNjpcdHsgMHhmYzgsIDB4MTAwLFx0UlRMX0dJR0FfTUFDX1ZFUl8wNCwgXCYjMzQ7UlRMODE2OXNiLzgxMTBzYlwmIzM0OyB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjI3LVx0eyAweGZjOCwgMHgwNDAsXHRSVExfR0lHQV9NQUNfVkVSXzAzLCBcJiMzNDtSVEw4MTEwc1wmIzM0OyB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjI4Olx0eyAweGZjOCwgMHgwMDgsXHRSVExfR0lHQV9NQUNfVkVSXzAyLCBcJiMzNDtSVEw4MTY5c1wmIzM0OyB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjI5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTU2NDY9c3RhdGljIGludCBydGxfanVtYm9fbWF4KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU2NTItXHRzd2l0Y2ggKHRwLVx1MDAzZW1hY192ZXJzaW9uKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NjUzOlx0LyogUlRMODE2OSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY1NC1cdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8wMiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl8wNjpcbi0tXG5kcml2ZXJzL3BjaS9xdWlya3MuYz0zNjIxPURFQ0xBUkVfUENJX0ZJWFVQX0ZJTkFMKFBDSV9WRU5ET1JfSURfQ1JFQVRJVkUsIFBDSV9ERVZJQ0VfSURfQ1JFQVRJVkVfMjBLMixcbi0tXG5kcml2ZXJzL3BjaS9xdWlya3MuYy0zNjI0LS8qXG5kcml2ZXJzL3BjaS9xdWlya3MuYzozNjI1OiAqIFJlYWx0ZWsgUlRMODE2OSBQQ0kgR2lnYWJpdCBFdGhlcm5ldCBDb250cm9sbGVyIChyZXYgMTApXG5kcml2ZXJzL3BjaS9xdWlya3MuYzozNjI2OiAqIFN1YnN5c3RlbTogUmVhbHRlayBSVEw4MTY5LzgxMTAgRmFtaWx5IFBDSSBHaWdhYml0IEV0aGVybmV0IE5JQ1xuZHJpdmVycy9wY2kvcXVpcmtzLmMtMzYyNy0gKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTcxCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBDSSBGdXp6aW5nIGluIFN5emthbGxlcjogQSBRdWljayBBc3Nlc3NtZW50KioKCk9rYXksIGxldCYjMzk7cyBzZWUgYWJvdXQgZnV6emluZyBQQ0kgZGV2aWNlcyB3aXRoIHN5emthbGxlci4gRmlyc3QgdGhpbmdzIGZpcnN0OiBpcyB0aGVyZSBhbnkgZXhpc3RpbmcgUENJIGVtdWxhdGlvbiBiYWtlZCBpbj8gSSByYW4gYSBxdWljayBzZWFyY2ggZm9yIGBzeXpfcGNpYCwgYnV0IGNhbWUgdXAgZW1wdHkuIEhtbSwgc28gZG9lcyBzeXprYWxsZXIgZXZlbiAqZG8qIFBDSSBkZXZpY2UgZnV6emluZz8gSSB2YWd1ZWx5IHJlY2FsbCBzb21lIG1lbnRpb24gb2YgYENPTkZJR19QQ0lfREVCVUdgIG9yIHNpbWlsYXIsIGJ1dCBub3RoaW5nIGNvbmNyZXRlIGNvbWVzIHRvIG1pbmQuIFdhaXQsIHBlcmhhcHMgdGhyb3VnaCBgdmZpb2Agb3IgdGhlIHN0YW5kYXJkIGBwY2lgIHN1YnN5c3RlbT8gSXQgc2VlbXMgbGlrZSBJIG5lZWQgdG8gbG9vayBpbnRvIHRoaXMgbW9yZSBjbG9zZWx5Li4uCgpIb2xkIG9uLCBJIHNlZSBjYWxscyBsaWtlIGBzeXpfa3ZtX3NldHVwX2NwdWAsIHdoaWNoIG1pZ2h0IG9mZmVyIHNvbWUgaW5kaXJlY3QgYXZlbnVlcy4gTm93LCB3aGF0IGFib3V0IGEgc3BlY2lmaWMgZHJpdmVyIGxpa2UgYHI4MTY5YD8gSXMgaXQgd29ydGggdGhlIGVmZm9ydD8gSWYgaXQmIzM5O3MgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIHRoYXQmIzM5O3MgYSBub24tc3RhcnRlciB3aXRob3V0IHRoZSBoYXJkd2FyZSwgcmlnaHQ/IEFoLCB0aGUgY3J1eC4gRG8gd2UgaGF2ZSBhbnkgdmlydHVhbCBoYXJkd2FyZSBzdXBwb3J0IGZvciBpdD8gSSBrbm93IFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIGByODE2OWAsIHJhdGhlciBgcnRsODEzOWAuIExldCBtZSBqdXN0IGRvdWJsZSBjaGVjayBRRU1VJiMzOTtzIHN1cHBvcnRlZCBkZXZpY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bDgxNjkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5MTMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmFyY2gvbWlwcy9sb29uZ3NvbjJlZi9sZW1vdGUtMmYvcmVzZXQuYz0zMj1zdGF0aWMgdm9pZCBmbDJmX3JlYm9vdCh2b2lkKVxuLS1cbmFyY2gvbWlwcy9sb29uZ3NvbjJlZi9sZW1vdGUtMmYvcmVzZXQuYy0zNy1cdCAqXG5hcmNoL21pcHMvbG9vbmdzb24yZWYvbGVtb3RlLTJmL3Jlc2V0LmM6Mzg6XHQgKiBOT1RFOiBpZiBlbmFibGUgXCYjMzQ7UG93ZXIgTWFuYWdlbWVudFwmIzM0OyBpbiBrZXJuZWwsIHJ0bDgxNjkgd2lsbCBub3QgcmVzZXRcbmFyY2gvbWlwcy9sb29uZ3NvbjJlZi9sZW1vdGUtMmYvcmVzZXQuYy0zOS1cdCAqIG5vcm1hbGx5IHdpdGggdGhpcyByZXNldCBvcGVyYXRpb24gYW5kIGl0IHdpbGwgbm90IHdvcmsgaW4gUE1PTiwgYnV0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oPTE1PWVudW0gbWFjX3ZlcnNpb24ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC03OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo4MDpzdHJ1Y3QgcnRsODE2OV9wcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTgxLXN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODM6dm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODQ6dTE2IHJ0bDgxNjhoXzJfZ2V0X2FkY19iaWFzX2lvZmZzZXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjg1OnU4IHJ0bDgxNjhkX2VmdXNlX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWdfYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODY6dm9pZCByODE2OV9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTg3LVx0XHRcdCBlbnVtIG1hY192ZXJzaW9uIHZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODk6dm9pZCByODE2OV9nZXRfbGVkX25hbWUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBpZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtOTAtXHRcdFx0Y2hhciAqYnVmLCBpbnQgYnVmX2xlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6OTE6aW50IHJ0bDgxNjhfZ2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo5MjppbnQgcnRsODE2OF9sZWRfbW9kX2N0cmwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBtYXNrLCB1MTYgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC05My1zdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpydGw4MTY4X2luaXRfbGVkcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6OTQ6aW50IHJ0bDgxMjVfZ2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjk1OmludCBydGw4MTI1X3NldF9sZWRfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGluZGV4LCB1MTYgbW9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtOTYtc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODEyNV9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYz04OD1zdGF0aWMgYm9vbCBydGxfZndfZGF0YV9vayhzdHJ1Y3QgcnRsX2Z3ICpydGxfZncpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5jLTEzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYzoxNDA6dm9pZCBydGxfZndfd3JpdGVfZmlybXdhcmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHN0cnVjdCBydGxfZncgKnJ0bF9mdylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYy0xNDEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaC0xMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaDoxNDpzdHJ1Y3QgcnRsODE2OV9wcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5oOjE1OnR5cGVkZWYgdm9pZCAoKnJ0bF9md193cml0ZV90KShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmg6MTY6dHlwZWRlZiBpbnQgKCpydGxfZndfcmVhZF90KShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmgtMTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5oPTM4PXZvaWQgcnRsX2Z3X3JlbGVhc2VfZmlybXdhcmUoc3RydWN0IHJ0bF9mdyAqcnRsX2Z3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaDozOTp2b2lkIHJ0bF9md193cml0ZV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgc3RydWN0IHJ0bF9mdyAqcnRsX2Z3KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz01Mz1zdGF0aWMgaW50IHJ0bDgxNjhfbGVkX2h3X2NvbnRyb2xfaXNfc3VwcG9ydGVkKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTU2LVx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldiA9IGxjZGV2X3RvX3I4MTY5X2xkZXYobGVkX2NkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6NTc6XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXHUwMDNlbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy01OC1cdGludCBzaGlmdCA9IGxkZXYtXHUwMDNlaW5kZXggKiA0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTY5PXN0YXRpYyBpbnQgcnRsODE2OF9sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtNzItXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzo3MzpcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobGRldi1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTc0LVx0aW50IHNoaWZ0ID0gbGRldi1cdTAwM2VpbmRleCAqIDQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM9ODk9c3RhdGljIGludCBydGw4MTY4X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2Rldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy05Mi1cdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjkzOlx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVx1MDAzZW5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtOTQtXHRpbnQgc2hpZnQgPSBsZGV2LVx1MDAzZWluZGV4ICogNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz0xMjk9c3RhdGljIHZvaWQgcnRsODE2OF9zZXR1cF9sZGV2KHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTMxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjEzMjpcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xMzMtXHRzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldiA9IFx1MDAyNmxkZXYtXHUwMDNlbGVkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTE2Nz1zdGF0aWMgaW50IHJ0bDgxMjVfbGVkX2h3X2NvbnRyb2xfaXNfc3VwcG9ydGVkKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE3MC1cdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjE3MTpcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobGRldi1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE3Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz0xODI9c3RhdGljIGludCBydGw4MTI1X2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2Rldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xODUtXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxODY6XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXHUwMDNlbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xODctXHR1MTYgbW9kZSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM9MjAzPXN0YXRpYyBpbnQgcnRsODEyNV9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjA2LVx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldiA9IGxjZGV2X3RvX3I4MTY5X2xkZXYobGVkX2NkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjA3Olx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVx1MDAzZW5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjA4LVx0aW50IG1vZGU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM9MjI4PXN0YXRpYyB2b2lkIHJ0bDgxMjVfc2V0dXBfbGVkX2xkZXYoc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yMzAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjMxOlx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTIzMi1cdHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2ID0gXHUwMDI2bGRldi1cdTAwM2VsZWQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjM3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyBydGxfY2hpcF9pbmZvc19leHRlbmRlZFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI0NTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnRsODE2OV9wY2lfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNDYtXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDI1MDIpIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBydGw4MTY5X3BjaV90YmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjcyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQ3Nj1lbnVtIHJ0bF9yZWdpc3Rlcl9jb250ZW50IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1ODA6XHQvKiBydGw4MTY5X1BIWXN0YXR1cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTgxLVx0VEJJX0VuYWJsZVx0PSAweDgwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTY4MT1zdHJ1Y3QgcmluZ19pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy02ODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo2ODY6c3RydWN0IHJ0bDgxNjlfY291bnRlcnMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNjg3LVx0X19sZTY0XHR0eF9wYWNrZXRzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTcyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjcyOTpzdHJ1Y3QgcnRsODE2OV90Y19vZmZzZXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTczMC1cdGJvb2xcdGluaXRlZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz03NTA9ZW51bSBydGxfc2ZwX21vZGUge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTc1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjc1NjpzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTc1Ny1cdHZvaWQgX19pb21lbSAqbW1pb19hZGRyO1x0LyogbWVtb3J5IG1hcCBwaHlzaWNhbCBhZGRyZXNzICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNzkyLVx0ZG1hX2FkZHJfdCBjb3VudGVyc19waHlzX2FkZHI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo3OTM6XHRzdHJ1Y3QgcnRsODE2OV9jb3VudGVycyAqY291bnRlcnM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo3OTQ6XHRzdHJ1Y3QgcnRsODE2OV90Y19vZmZzZXRzIHRjX29mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTc5NS1cdHUzMiBzYXZlZF93b2xvcHRzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTgwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjgxMDp0eXBlZGVmIHZvaWQgKCpydGxfZ2VuZXJpY19mY3QpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTgxMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz04NDQ9TU9EVUxFX0ZJUk1XQVJFKEZJUk1XQVJFXzgxMjdBXzEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6ODQ2OnN0YXRpYyBpbmxpbmUgc3RydWN0IGRldmljZSAqdHBfdG9fZGV2KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODQ3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo4NTE6c3RhdGljIHZvaWQgcnRsX2xvY2tfY29uZmlnX3JlZ3Moc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NTIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg1NjpzdGF0aWMgdm9pZCBydGxfdW5sb2NrX2NvbmZpZ19yZWdzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODU3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo4NjE6c3RhdGljIHZvaWQgcnRsX3BjaV9jb21taXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg2NzpzdGF0aWMgdm9pZCBydGxfbW9kX2NvbmZpZzIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHU4IGNsZWFyLCB1OCBzZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04Njgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg3NTpzdGF0aWMgdm9pZCBydGxfbW9kX2NvbmZpZzUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHU4IGNsZWFyLCB1OCBzZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NzYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg4MzpzdGF0aWMgdm9pZCByODE2OV9tb2RfcmVnOF9jb25kKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODg0LVx0XHRcdFx0dTggYml0cywgYm9vbCBjb25kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg5NzpzdGF0aWMgYm9vbCBydGxfaXNfODEyNShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6OTAyOnN0YXRpYyBib29sIHJ0bF9pc184MTY4ZXZsX3VwKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTAzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05MDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo5MDk6c3RhdGljIGJvb2wgcnRsX3N1cHBvcnRzX2VlZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTkxMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6OTE2OnN0YXRpYyB2b2lkIHJ0bF9yZWFkX21hY19mcm9tX3JlZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggKm1hYywgaW50IHJlZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTkxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9OTI0PXN0cnVjdCBydGxfY29uZCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo5MjU6XHRib29sICgqY2hlY2spKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05MjYtXHRjb25zdCBjaGFyICptc2c7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6OTI5OnN0YXRpYyBib29sIHJ0bF9sb29wX3dhaXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGNvbnN0IHN0cnVjdCBydGxfY29uZCAqYyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTkzMC1cdFx0XHQgIHVuc2lnbmVkIGxvbmcgdXNlY3MsIGludCBuLCBib29sIGhpZ2gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6OTQ2OnN0YXRpYyBib29sIHJ0bF9sb29wX3dhaXRfaGlnaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk0Ny1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHJ0bF9jb25kICpjLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjk1MzpzdGF0aWMgYm9vbCBydGxfbG9vcF93YWl0X2xvdyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk1NC1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgcnRsX2NvbmQgKmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTYwLSNkZWZpbmUgREVDTEFSRV9SVExfQ09ORChuYW1lKVx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjk2MTpzdGF0aWMgYm9vbCBuYW1lICMjIF9jaGVjayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICopO1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk2Mi1cdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz05NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY29uZCBuYW1lID0ge1x0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTY3LVx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjk2ODpzdGF0aWMgYm9vbCBuYW1lICMjIF9jaGVjayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjk3MDppbnQgcnRsODE2OF9sZWRfbW9kX2N0cmwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBtYXNrLCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTcxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo5ODg6aW50IHJ0bDgxNjhfZ2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTg5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xMDA0PXN0YXRpYyBpbnQgcnRsODEyNV9nZXRfbGVkX3JlZyhpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTAxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEwMTE6aW50IHJ0bDgxMjVfc2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaW5kZXgsIHUxNiBtb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTAxMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTAzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEwMzI6aW50IHJ0bDgxMjVfZ2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaW5kZXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDMzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTA0OTp2b2lkIHI4MTY5X2dldF9sZWRfbmFtZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGlkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwNTAtXHRcdFx0Y2hhciAqYnVmLCBpbnQgYnVmX2xlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTA3MTpzdGF0aWMgdm9pZCByODE2OGZwX2FkanVzdF9vY3BfY21kKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgKmNtZCwgaW50IHR5cGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDcyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xMDc4PURFQ0xBUkVfUlRMX0NPTkQocnRsX2VyaWFyX2NvbmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTA4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEwODM6c3RhdGljIHZvaWQgX3J0bF9lcmlfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBhZGRyLCB1MzIgbWFzayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwODQtXHRcdFx0ICAgdTMyIHZhbCwgaW50IHR5cGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTA5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEwOTg6c3RhdGljIHZvaWQgcnRsX2VyaV93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGFkZHIsIHUzMiBtYXNrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTA5OS1cdFx0XHQgIHUzMiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTEwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjExMDQ6c3RhdGljIHUzMiBfcnRsX2VyaV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgYWRkciwgaW50IHR5cGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTA1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTExNTpzdGF0aWMgdTMyIHJ0bF9lcmlfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTE2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTEyMDpzdGF0aWMgdm9pZCBydGxfdzB3MV9lcmkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBhZGRyLCB1MzIgcCwgdTMyIG0pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTIxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTEyNzpzdGF0aWMgdm9pZCBydGxfZXJpX3NldF9iaXRzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgYWRkciwgdTMyIHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTI4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTEzMjpzdGF0aWMgdm9pZCBydGxfZXJpX2NsZWFyX2JpdHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBhZGRyLCB1MzIgbSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExMzMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTExNDI9REVDTEFSRV9SVExfQ09ORChydGxfb2NwX2dwaHlfY29uZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTE0NzpzdGF0aWMgdm9pZCByODE2OF9waHlfb2NwX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnLCB1MzIgZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExNDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExNTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTU3OnN0YXRpYyBpbnQgcjgxNjhfcGh5X29jcF9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE1OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjExNjg6c3RhdGljIHZvaWQgX19yODE2OF9tYWNfb2NwX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnLCB1MzIgZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExNjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTc2OnN0YXRpYyB2b2lkIHI4MTY4X21hY19vY3Bfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiByZWcsIHUzMiBkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE3Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjExODU6c3RhdGljIHUxNiBfX3I4MTY4X21hY19vY3BfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExODYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTk1OnN0YXRpYyB1MTYgcjgxNjhfbWFjX29jcF9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE5Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTIwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEyMDc6c3RhdGljIHZvaWQgcjgxNjhfbWFjX29jcF9tb2RpZnkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiByZWcsIHUxNiBtYXNrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTIwOC1cdFx0XHRcdCB1MTYgc2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMjE5OnN0YXRpYyB2b2lkIHI4MTI3X3NmcF9zZHNfcGh5X3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTIyMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTIyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEyMjk6c3RhdGljIHZvaWQgcjgxMjdfc2ZwX2luaXRfMTBnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTIzMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEyNDc6c3RhdGljIHZvaWQgcnRsX3NmcF9yZXNldChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyNDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyNTUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMjU2OnN0YXRpYyB2b2lkIHJ0bDgxNjhnX3BoeV9zdXNwZW5kX3F1aXJrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgdmFsdWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMjU3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMjY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTI3MDpzdGF0aWMgdm9pZCByODE2OGdfbWRpb193cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI3MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEyODY6c3RhdGljIGludCByODE2OGdfbWRpb19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI4Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEyOTc6c3RhdGljIHZvaWQgbWFjX21jdV93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTMwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEzMDc6c3RhdGljIGJvb2wgcnRsX2lzXzgxMTZhZihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzE2OnN0YXRpYyBpbnQgbWFjX21jdV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTMxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTMyMT1ERUNMQVJFX1JUTF9DT05EKHJ0bF9waHlhcl9jb25kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzI2OnN0YXRpYyB2b2lkIHI4MTY5X21kaW9fd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcsIGludCB2YWx1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMjcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzM4OnN0YXRpYyBpbnQgcjgxNjlfbWRpb19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTMzOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTM1Nj1ERUNMQVJFX1JUTF9DT05EKHJ0bF9vY3Bhcl9jb25kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzYzOnN0YXRpYyB2b2lkIHI4MTY4ZHBfMl9tZGlvX3N0YXJ0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTM2NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTM2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEzNjg6c3RhdGljIHZvaWQgcjgxNjhkcF8yX21kaW9fc3RvcChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzNjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzczOnN0YXRpYyB2b2lkIHI4MTY4ZHBfMl9tZGlvX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzc0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTM4MjpzdGF0aWMgaW50IHI4MTY4ZHBfMl9tZGlvX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzgzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTM5OTpzdGF0aWMgdm9pZCBydGxfd3JpdGVwaHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBsb2NhdGlvbiwgaW50IHZhbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0MDAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDE1OnN0YXRpYyBpbnQgcnRsX3JlYWRwaHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBsb2NhdGlvbilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0MTYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTE0Mjg9REVDTEFSRV9SVExfQ09ORChydGxfZXBoeWFyX2NvbmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0MzM6c3RhdGljIHZvaWQgcnRsX2VwaHlfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWdfYWRkciwgaW50IHZhbHVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQzNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0NDM6c3RhdGljIHUxNiBydGxfZXBoeV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnX2FkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDQ0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTQ1MTpzdGF0aWMgdTMyIHI4MTY4ZHBfb2NwX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiByZWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDUyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTQ1ODpzdGF0aWMgdTMyIHI4MTY4ZXBfb2NwX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiByZWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDU5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTQ2MzpzdGF0aWMgdm9pZCByODE2OGRwX29jcF93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggbWFzaywgdTE2IHJlZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NjQtXHRcdFx0ICAgICAgdTMyIGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0NzE6c3RhdGljIHZvaWQgcjgxNjhlcF9vY3Bfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHU4IG1hc2ssIHUxNiByZWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDcyLVx0XHRcdCAgICAgIHUzMiBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDc4OnN0YXRpYyB2b2lkIHI4MTY4ZHBfb29iX25vdGlmeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ3OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0ODk6c3RhdGljIHUxNiBydGw4MTY4X2dldF9vY3BfcmVnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ5MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTUwOD1ERUNMQVJFX1JUTF9DT05EKHJ0bF9vY3BfdHhfY29uZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTUxMzpzdGF0aWMgdm9pZCBydGw4MTY4ZXBfc3RvcF9jbWFjKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTUxNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTUyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1MjE6c3RhdGljIHZvaWQgcnRsODE2OGRwX2RyaXZlcl9zdGFydChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1MjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1MjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNTI4OnN0YXRpYyB2b2lkIHJ0bDgxNjhlcF9kcml2ZXJfc3RhcnQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTI5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTUzNjpzdGF0aWMgdm9pZCBydGw4MTI1YnBfZHJpdmVyX3N0YXJ0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTUzNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1NDM6c3RhdGljIHZvaWQgcnRsODE2OF9kcml2ZXJfc3RhcnQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTQ0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU1MzpzdGF0aWMgdm9pZCBydGw4MTY4ZHBfZHJpdmVyX3N0b3Aoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTU0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU2MDpzdGF0aWMgdm9pZCBydGw4MTY4ZXBfZHJpdmVyX3N0b3Aoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTYxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU2OTpzdGF0aWMgdm9pZCBydGw4MTI1YnBfZHJpdmVyX3N0b3Aoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTcwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU3NjpzdGF0aWMgdm9pZCBydGw4MTY4X2RyaXZlcl9zdG9wKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU3Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1ODY6c3RhdGljIGJvb2wgcjgxNjhkcF9jaGVja19kYXNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU4Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1OTM6c3RhdGljIGJvb2wgcjgxNjhlcF9jaGVja19kYXNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU5NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1OTg6c3RhdGljIGJvb2wgcnRsX2Rhc2hfaXNfZW5hYmxlZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1OTkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNjExOnN0YXRpYyBlbnVtIHJ0bF9zZnBfbW9kZSBydGxfZ2V0X3NmcF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTYxMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTYyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE2MjU6c3RhdGljIGVudW0gcnRsX2Rhc2hfdHlwZSBydGxfZ2V0X2Rhc2hfdHlwZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2MjYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2NDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNjQ0OnN0YXRpYyB2b2lkIHJ0bF9zZXRfZDNfcGxsX2Rvd24oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY0NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE2NjI6c3RhdGljIHZvaWQgcnRsX3Jlc2V0X3BhY2tldF9maWx0ZXIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjYzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xNjY4PURFQ0xBUkVfUlRMX0NPTkQocnRsX2VmdXNlYXJfY29uZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTY3Mzp1OCBydGw4MTY4ZF9lZnVzZV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnX2FkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjc0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTY4MTpzdGF0aWMgdTMyIHJ0bF9nZXRfZXZlbnRzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY4Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE2ODk6c3RhdGljIHZvaWQgcnRsX2Fja19ldmVudHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiBiaXRzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY5MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE2OTc6c3RhdGljIHZvaWQgcnRsX2lycV9kaXNhYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTcwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE3MDU6c3RhdGljIHZvaWQgcnRsX2lycV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzA2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTcxMzpzdGF0aWMgdm9pZCBydGw4MTY5X2lycV9tYXNrX2FuZF9hY2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzE0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTcyMDpzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBzcGVlZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3MjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3NTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzU2OnN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzU3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE3NTg6XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzU5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzY0OnN0YXRpYyB2b2lkIF9fcnRsODE2OV9zZXRfd29sKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgd29sb3B0cylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3NjUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxODE1OnN0YXRpYyBpbnQgcnRsODE2OV9zZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX3dvbGluZm8gKndvbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4MTYte1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU5NzYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1NDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgYHI4MTY5YCBQQ0kgRHJpdmVyKioKCk9rYXksIHNvIGByODE2OWAgaXMgYSBQQ0kgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB0aGlzIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXI/IEkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBpbiBzb21lIHN5emthbGxlciBlbnZpcm9ubWVudHMsIGJ1dCBhIHF1aWNrIHNlYXJjaCBmb3IgYHN5el9wY2lgIGNvbWVzIHVwIGVtcHR5LiBIbW0sIHN5emthbGxlciBsZXZlcmFnZXMgYHZoY2lgIGZvciBVU0IsIGJ1dCBpdCBzZWVtcyB0aGVyZSYjMzk7cyBubyBlcXVpdmFsZW50IGdlbmVyaWMgZnJhbWV3b3JrIGZvciBQQ0kgZnV6emluZyBkaXJlY3RseSB3aXRoaW4gc3l6a2FsbGVyLCBhdCBsZWFzdCBub3QgaW4gYW4gb2J2aW91cyB3YXkuIEkgcXVpY2tseSBjaGVja2VkIGZvciBgQ09ORklHX1BDSV9ERUJVR2Agd2hpY2ggaXMgbm90IHRoZSBjYXNlLgoKVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdGhhdCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhcmUgb3V0IG9mIHNjb3BlLCBpbmNsdWRpbmcgdGhvc2UgcmVsaWFudCBvbiBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gU2luY2UgdGhlIGByODE2OWAgaXMgYW4gZXRoZXJuZXQgZHJpdmVyLCBhbmQgdGhlIHRleHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGV4YW1wbGVzIGxpa2UgYHVzYiBnYWRnZXRgIGZvciBlbXVsYXRlZCBoYXJkd2FyZSwgdGhpcyBpcyBhbiBpbXBvcnRhbnQgYXJlYSB0byBjb25zaWRlci4gSWYgYHI4MTY5YCBpc24mIzM5O3QgZW11bGF0ZWQgYnkgUUVNVSwgYW5kIHRoZXJlIGlzbiYjMzk7dCBhbnkgc29mdHdhcmUgZW11bGF0aW9uIEkgY2FuIHVzZSwgdGhlbiBpdCYjMzk7cyBsaWtlbHkgdW5yZWFjaGFibGUgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuCgpTbywgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGByODE2OWAuIElzIHRoZXJlIGEgYG1hYzgwMjExX2h3c2ltYC1saWtlIGVxdWl2YWxlbnQ/IE5vcGUuIElzIHRoZXJlIGEgYHVzYiBnYWRnZXRgIGVxdWl2YWxlbnQ/IEFsc28sIG5vLCBhcyBpdCYjMzk7cyBhIFBDSSBkZXZpY2UuIERvZXMgUUVNVSBldmVuIGVtdWxhdGUgYHI4MTY5YD8gSSYjMzk7dmUgbG9va2VkIGF0IFFFTVUmIzM5O3Mgc291cmNlIGJlZm9yZSwgSSBzZWVtIHRvIHJlbWVtYmVyIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBzdXBwb3J0IHRoZSBgcnRsODE2OWAgZGV2aWNlLCBidXQgaXQgaGFzIHN1cHBvcnQgZm9yIGBydGw4MTM5YC4gSSBzaG91bGQgY2hlY2sgdGhhdCBhZ2Fpbiwgc2luY2UgbXkgbWVtb3J5IGlzIGltcGVyZmVjdC4gSSBjYW4mIzM5O3QgZGlyZWN0bHkgY2hlY2sgdGhlIFFFTVUgc291cmNlIHJpZ2h0IG5vdywgYnV0IEkgY2FuIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgIGZpbGUgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBpbmRpY2F0aW9uIG9mIGEgdmlydHVhbCBkZXZpY2UuIE5vLCB0aGlzIGZpbGUgZGVzY3JpYmVzIGEgcGh5c2ljYWwgUmVhbHRlayBHaWdhYml0IEV0aGVybmV0IGFkYXB0ZXIuCgpHaXZlbiB0aGVzZSBmaW5kaW5ncywgaXQgYXBwZWFycyB0aGUgZHJpdmVyIGlzIG5vdCBkaXJlY3RseSBlbXVsYXRlZCwgYW5kIHRoZSBjb2RlIHBhdGggaXMgbGlrZWx5IHVucmVhY2hhYmxlLiBUaGVyZWZvcmUsIEkgbmVlZCB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgpIb3dldmVyLCBiZWZvcmUgSSBkZWZpbml0aXZlbHkgZGVjaWRlLCBJIGhhdmUgYSBsaW5nZXJpbmcgdGhvdWdodDogaXMgdGhlcmUgc29tZSBzb3J0IG9mIGR1bW15IFBDSSBkZXZpY2UgZnJhbWV3b3JrIGluIHRoZSBrZXJuZWwgdGhhdCBzeXprYWxsZXIgKmRvZXMqIHV0aWxpemU/IEkgY2hlY2tlZCBteSBtZW1vcmllcyBvbiBgc3l6X3BjaV9kZXZpY2VfYWRkYCBhbmQgY2hlY2tlZCBzeXprYWxsZXIgZm9yIGBzeXpfcGNpYCBhbmQgZm91bmQgbm90aGluZy4gSSBrbm93IGl0IHVzZXMgYHN5el91c2JfY29ubmVjdGAgZm9yIFVTQiwgYnV0IGlzIHRoZXJlIGFueXRoaW5nIGNvbXBhcmFibGUgZm9yIFBDST8gSSYjMzk7bGwgbG9vayB0aHJvdWdoIHRoZSBgRG9jdW1lbnRhdGlvbi9gIGFuZCBgdG9vbHMvYCBkaXJlY3RvcmllcyB0byBzZWUgaWYgSSBjYW4gZmluZCBhbnkgbGVhZHMgb24gUENJIGZ1enppbmcgc3VwcG9ydCB3aXRoaW4gc3l6a2FsbGVyIG9yIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpLipmdXp6JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxODEKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxMDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSZWFjaGFiaWxpdHkgb2YgYHI4MTY5YCBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBsb29raW5nIGF0IHdoZXRoZXIgYSBwYXRjaCBhZmZlY3RpbmcgYHI4MTY5YCBpcyB3b3J0aCBmdXp6aW5nLCBhbmQgdGhlIGtleSBjcml0ZXJpb24gaXMgcmVhY2hhYmlsaXR5IGluIGNvbW1vbiB2aXJ0dWFsaXplZCBzZXR1cHMuCgpGaXJzdCwgYHZoY2lgIGZvciBQQ0kgaXMgb3V0OyB0aGF0JiMzOTtzIG5vdCByZWxldmFudCBoZXJlLiBTbywgYHI4MTY5YCBpcyBhIHBoeXNpY2FsIFBDSSBkZXZpY2UsIG1lYW5pbmcgaXRzIGRyaXZlciAoYHI4MTY5YCkgcHJvYmVzIGJhc2VkIG9uIHRoZSBwcmVzZW5jZSBvZiBtYXRjaGluZyBoYXJkd2FyZS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiBjYW4gd2UgdHJpZ2dlciB0aGF0IHByb2JlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRT8KCkluaXRpYWxseSwgaXQgc2VlbWVkIGltcG9zc2libGUuIElmIG5vIFBDSSBkZXZpY2Ugd2l0aCBhIG1hdGNoaW5nIElEIGV4aXN0cywgdGhlIGBwcm9iZWAgZnVuY3Rpb24sIGFuZCB0aGVyZWZvcmUgdGhlIGNvZGUsIGlzIHVucmVhY2hhYmxlLiBJIGRpZCB3b25kZXIgYWJvdXQgaW5qZWN0aW5nIGEgUENJIGRldmljZSB2aWEgc3lzZnMgKHVzaW5nIGBwY2ktc3R1YmAgb3IgYG5ld19pZGApLCBidXQgeW91JiMzOTtkICpzdGlsbCogbmVlZCBhICpyZWFsKiB1bmRlcmx5aW5nIFBDSSBkZXZpY2UgdG8gYmluZCB0bywgbm90IHNvbWV0aGluZyB5b3UgY2FuIGp1c3QgY29uanVyZSB1cC4gVGhlcmUmIzM5O3Mgbm8gYnVpbHQtaW4gc29mdHdhcmUgUENJIGhvc3QgY29udHJvbGxlciBpbiBtYWlubGluZSBMaW51eCBmb3IgZG9pbmcgdGhhdCB3aXRob3V0IHNvbWUgdW5kZXJseWluZyBwaHlzaWNhbCBkZXZpY2UuCgpJIGNvbnNpZGVyZWQgYHVtYCAoVXNlci1Nb2RlIExpbnV4KSwgd2hpY2ggbWlnaHQgaGF2ZSBzb21lIFBDSSBlbXVsYXRpb24sIGJ1dCBzeXprYWxsZXIgdXN1YWxseSBydW5zIG9uIHg4Nl82NCB3aXRoIFFFTVUuIE5vdywgUUVNVSAqZG9lcyogaGF2ZSBhIHZhcmlldHkgb2YgZW11bGF0ZWQgbmV0d29yayBkZXZpY2VzIGxpa2UgYHJ0bDgxMzlgLiBJIGNoZWNrZWQgdGhlIGNvbXBsZXRlIGxpc3Q6IGBlMTAwMGAsIGBlMTAwMGVgLCBgcnRsODEzOWAsIGB2aXJ0aW8tbmV0YCwgYHZteG5ldDNgLCBgcGNuZXRgLCBgbmUya19wY2lgLCBgaTgyNTU5ZXJgLCBgdHVsaXBgIGFyZSBhdmFpbGFibGUuCgpDcnVjaWFsbHksIGFmdGVyIGNoZWNraW5nIHRoZSBzb3VyY2UgY29kZSwgUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgYHJ0bDgxNjlgLiBUaGlzIGNvbmZpcm1lZCBpdDsgdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIGdldCBhIHZpcnR1YWwgYHJ0bDgxNjlgIHdpdGhpbiBRRU1VLgoKSSB0aGVuIGNvbnNpZGVyZWQgR0NFIChHb29nbGUgQ29tcHV0ZSBFbmdpbmUpLCB3aGljaCBzeXprYWxsZXIgdXNlcy4gQnV0IEdDRSBwcm92aWRlcyBgdmlydGlvLW5ldGAgb3IgaXRzIG93biBgZ3ZlYCAoR29vZ2xlIFZpcnR1YWwgTklDKSBkZXZpY2UsICpub3QqIGBydGw4MTY5YC4KClNvLCBmcm9tIHdoYXQgSSYjMzk7dmUgY29uc2lkZXJlZCwgdGhlcmUmIzM5O3Mgbm8gcGF0aHdheSB0byByZWFjaCBgcjgxNjlgIGluIGVpdGhlciBRRU1VIG9yIEdDRS4gSXQmIzM5O3MgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlLgoKVGhhdCBzYWlkLCBJIGRpZCByZW1lbWJlciBgcjgxNjlgIGlzIGEgUENJIGRldmljZSwgbm90IFVTQi4KClRoZXJlZm9yZSwgZ2l2ZW4gdGhlIHByb21wdCwgd2hpY2ggc3RhdGVzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBzaW5jZSB0aGUgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlLCB0aGlzIGlzIGEgY2xlYXIgY2FzZSBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bDgxNjlfcGNpX3RibCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yMzc9c3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHJ0bF9jaGlwX2luZm9zX2V4dGVuZGVkW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjQ1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydGw4MTY5X3BjaV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI0Ni1cdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4MjUwMikgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyNzE6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHJ0bDgxNjlfcGNpX3RibCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NjE2Mz1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcnRsODE2OV9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNjE2NC1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo2MTY1Olx0LmlkX3RhYmxlXHQ9IHJ0bDgxNjlfcGNpX3RibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTYxNjYtXHQucHJvYmVcdFx0PSBydGxfaW5pdF9vbmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MzA1CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IGEgUENJIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgc2luY2UgaXQmIzM5O3MgZm9yIGEgKnBoeXNpY2FsKiBkZXZpY2UsIG5vdCBzb21ldGhpbmcgZW11bGF0ZWQgYnkgUUVNVSBvciBHQ0UsIGl0JiMzOTtzIHByb2JhYmx5IGdvaW5nIHRvIGJlIHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIuIFRoZW4gYWdhaW4sIEkgc2VlIHRoYXQgdGhlIHBhdGNoIGFsc28gbW9kaWZpZXMgYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgaXQmIzM5O3MgcmVtb3ZpbmcgYFBIWV9JRF9SVExfRFVNTVlfU0ZQYCBhbmQgaXRzIGFzc29jaWF0ZWQgZHJpdmVyLgoKSG1tLCBzbyBpcyBgcmVhbHRla19tYWluLmNgIHJlYWNoYWJsZT8gSXTigJlzIGEgUEhZIGRyaXZlciwgd2hpY2ggdHlwaWNhbGx5IG1lYW5zIGl0JiMzOTtzIGFjY2Vzc2VkIHZpYSB0aGUgTURJTyBidXMuIENhbiBzeXprYWxsZXIgZXZlbiBmdXp6IE1ESU8gYnVzZXM/IEkga25vdyB0aGVyZSBhcmUgZW11bGF0ZWQgbmV0d29yayBkZXZpY2VzIGxpa2UgYG1hY2JgIG9yIGBmZWNgLCBidXQgdGhleSBnZW5lcmFsbHkgdXNlIHRoZWlyIG93biBQSFlzIG9yIGEgZ2VuZXJpYyBvbmUuIEkgdGhvdWdodCBJIHJlY2FsbGVkIHNlZWluZyBzb21lIHNvcnQgb2YgYHN5el9tZGlvYCBjYWxsLCBidXQgbm8sIEkmIzM5O20gZHJhd2luZyBhIGJsYW5rLiBBbmQgZXZlbiBpZiBpdCBjb3VsZCwgdGhpcyBwYXRjaCBpcyByZW1vdmluZyB0aGUgUEhZIGRyaXZlciwgc28gaXQgd291bGRuJiMzOTt0IGludHJvZHVjZSBuZXcgY29kZSB0byBmdXp6LgoKQWxyaWdodCwgdGhlIG1lYXQgb2YgdGhlIGNoYW5nZXMgc2VlbSB0byBiZSBpbiBgcjgxNjlfbWFpbi5jYC4gQ29uc2lkZXJpbmcgdGhhdCBgcjgxNjlgIGlzIGxpa2VseSB1bnJlYWNoYWJsZSwgSSBuZWVkIHRvIGZsYWcgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCldhaXQsIGJlZm9yZSBJIGNvbW1pdCB0byB0aGF0LCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgc3l6a2FsbGVyIGhhcyAqYW55KiBjYXBhYmlsaXR5IGZvciBQQ0kgZGV2aWNlIGZ1enppbmcuIEkgdGhvdWdodCBJIHNhdyBhIGBzeXMvbGludXgvZGV2X3BjaS50eHRgLCBidXQgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlLiBPa2F5LCBubywgbm90aGluZyBsaWtlIHRoYXQuIEFsbCByaWdodCwgdGltZSB0byBsb29rIGludG8gdGhlIHN5emthbGxlciBkb2N1bWVudGF0aW9uIGFuZCBjb2RlIGRpcmVjdGx5IHRvIHNlZSBpZiBpdCBldmVuIGhhcyBhbnkgUENJIGZ1enppbmcgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfcGNpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwNDQKCQkJCQkJCW91dHB1dDogMTA2CgkJCQkJCQl0aG91Z2h0czogNTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1doYXQgYWJvdXQgYHBjaV9kZXZpY2VfaWRgPyBEb2VzbiYjMzk7dCBTeXprYWxsZXIgaW5qZWN0IFBDSSBkZXZpY2VzPyYjMzQ7IEJ1dCB0aGVuIEkgcmVtZW1iZXIsIG5vLCBTeXprYWxsZXIgZG9lc24mIzM5O3QgbWFnaWNhbGx5IGNyZWF0ZSBQQ0kgZGV2aWNlcy4gV2FpdCwgd2hhdCYjMzk7cyB0aGlzIGBDT05GSUdfUENJX0VORFBPSU5UX1RFU1RgPyBBaGEsIHRoYXQmIzM5O3MgZm9yIHRoZSBQQ0kgZW5kcG9pbnQgc3Vic3lzdGVtLgoKSXMgdGhlcmUgZXZlbiBhbnkgc29mdHdhcmUgUENJIGVtdWxhdG9yIGluIHRoZSBrZXJuZWw/IEkgcXVpY2tseSBjaGVjaywgYW5kIHllYWgsIHRoZXJlJiMzOTtzIGBkcml2ZXJzL21pc2MvcGNpX2VuZHBvaW50X3Rlc3QuY2AgYW5kIGBkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1ob3N0LWdlbmVyaWMuY2AsIGJ1dCBpdCYjMzk7cyBub3QgYSBnZW5lcmljIHNvZnR3YXJlIFBDSSBkZXZpY2UgZW11bGF0b3IgdGhhdCBTeXprYWxsZXIgaXMga25vd24gdG8gdXNlIHRvIGZ1enogYXJiaXRyYXJ5IFBDSSBkcml2ZXJzLgoKU28sIHRoZSBjb25jbHVzaW9uIGlzIGNsZWFyOiBgcjgxNjlgIGlzIHVucmVhY2hhYmxlLgoKTGV0IG1lIGdvIGJhY2sgYW5kIHJldmlldyB0aGUgb3JpZ2luYWwgcHJvbXB0IHRvIG1ha2Ugc3VyZTogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAuLi4gLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4mIzM0OwoKQmluZ28uIGByODE2OWAgaXMgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlLCBhbmQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIG5vciBpcyB0aGVyZSBhIHNvZnR3YXJlIFBDSSBmcmFtZXdvcmsgdG8gaW5qZWN0IGFyYml0cmFyeSBQQ0kgZGV2aWNlcy4gVGhlcmVmb3JlLCBpdCYjMzk7cyBpbXBvc3NpYmxlIHRvIHJlYWNoIHRoYXQgY29kZS4KClNvLCBJJiMzOTtsbCBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIG1ha2Ugc3VyZSB0byBwcm92aWRlIHNvbGlkIHJlYXNvbmluZyBmb3IgbXkgY29uY2x1c2lvbi4KCk15IHJlYXNvbmluZyB3aWxsIGJlIHRoaXM6IFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHI4MTY5YCBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIGRyaXZlciBmb3IgUmVhbHRlayBHaWdhYml0IEV0aGVybmV0IGFkYXB0ZXJzLiBTaW5jZSB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBieSBRRU1VIG9yIEdDRSwgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFBDSSBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBpbmplY3QgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzbmVha3kgY2hhbmdlcyBpbiB0aGUgcGF0Y2ggdGhhdCAqY291bGQqIGJlIHJlYWNoZWQuIE9rYXksIHRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzOgoKKiAgIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdgCiogICBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgCiogICBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNgCiogICBgaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmhgCgpUaGUgY2hhbmdlcyBpbiBgcmVhbHRla19tYWluLmNgIGFyZSBqdXN0IHJlbW92aW5nIHRoZSBgUEhZX0lEX1JUTF9EVU1NWV9TRlBgIGRyaXZlci4gVGhlIGNoYW5nZXMgaW4gYHI4MTY5X21haW4uY2AgYWRkIHBoeWxpbmsgc3VwcG9ydC4gQWxsIG9mIHRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIGByODE2OWAgaGFyZHdhcmUgdGhvdWdoLgoKWXVwLCBpdCYjMzk7cyBhbGwgY29tcGxldGVseSB1bnJlYWNoYWJsZS4KCkkmIzM5O2xsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSByODE2OSBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIGRyaXZlciBmb3IgcGh5c2ljYWwgUmVhbHRlayBHaWdhYml0IEV0aGVybmV0IGFkYXB0ZXJzLiBTaW5jZSB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBieSBRRU1VIG9yIEdDRSwgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFBDSSBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBpbmplY3QgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHI4MTY5IGRyaXZlciwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBwaHlzaWNhbCBSZWFsdGVrIEdpZ2FiaXQgRXRoZXJuZXQgYWRhcHRlcnMuIFNpbmNlIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGJ5IFFFTVUgb3IgR0NFLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgUENJIGZyYW1ld29yayBpbiB0aGUga2VybmVsIHRvIGluamVjdCBhcmJpdHJhcnkgUENJIGRldmljZXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MDA6NTcuODMwMTg5ODQyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODEzMTQ4MTYxMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSByODE2OSBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIGRyaXZlciBmb3IgcGh5c2ljYWwgUmVhbHRlayBHaWdhYml0IEV0aGVybmV0IGFkYXB0ZXJzLiBTaW5jZSB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBieSBRRU1VIG9yIEdDRSwgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFBDSSBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBpbmplY3QgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MDA6NTcuODMwMTk3ODEzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODg4NDA4NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4YzQzOWMxZTlmYzEwMzU3OWE5MDVlMmJhMTQ1MDk4YzQyMjg3YzI0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMgMTE6MDA6NTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXFxuaW5kZXggOWIwZjRmOTYzMWRiYWEuLjQ5YWM3MjczNDIyNWY3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1xcbkBAIC04OCw2ICs4OCw3IEBAIGNvbmZpZyBSODE2OVxcbiBcXHRzZWxlY3QgQ1JDMzJcXG4gXFx0c2VsZWN0IFBIWUxJQlxcbiBcXHRzZWxlY3QgUkVBTFRFS19QSFlcXG4rXFx0c2VsZWN0IFBIWUxJTktcXG4gXFx0aGVscFxcbiBcXHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBSZWFsdGVrIEV0aGVybmV0IGFkYXB0ZXIgYmVsb25naW5nIHRvXFxuIFxcdCAgdGhlIGZvbGxvd2luZyBmYW1pbGllczpcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xcbmluZGV4IGVjNGZjMjFmYTIxZmIwLi4yNmQ5NmVkYjNjNDIwNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuQEAgLTI2LDYgKzI2LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RtYS1tYXBwaW5nLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRmaWVsZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5bGluay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJlZmV0Y2guaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lwdjYuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbkBAIC05Niw2ICs5NywyMiBAQFxcbiAjZGVmaW5lIEpVTUJPXzlLXFx0KDkgKiBTWl8xSyAtIFZMQU5fRVRIX0hMRU4gLSBFVEhfRkNTX0xFTilcXG4gI2RlZmluZSBKVU1CT18xNktcXHQoU1pfMTZLIC0gVkxBTl9FVEhfSExFTiAtIEVUSF9GQ1NfTEVOKVxcbiBcXG4rI2RlZmluZSBPQ1BfU0RTX0FERFJfUkVHXFx0XFx0MHhFQjEwXFxuKyNkZWZpbmUgT0NQX1NEU19DTURfUkVHXFx0XFx0XFx0MHhFQjBFXFxuKyNkZWZpbmUgT0NQX1NEU19EQVRBX1JFR1xcdFxcdDB4RUIxNFxcbisjZGVmaW5lIFNEU19DTURfUkVBRFxcdFxcdFxcdDB4MDAwMVxcbisjZGVmaW5lIFJUTF9TRFNfQzIyX0JBU0VcXHRcXHQweDQwXFxuKyNkZWZpbmUgUlRMX1NEU19DNDVfQkFTRVxcdFxcdDB4MDA4MFxcbisjZGVmaW5lIFJUTF9QS0dfREVURUNUXFx0XFx0XFx0MHhkYzAwXFxuKyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RfTUFTS1xcdFxcdDB4MDA3OFxcbisjZGVmaW5lIFJUTF9QS0dfREVURUNUXzgxMTZBRlxcdFxcdDB4MDAzMFxcbisjZGVmaW5lIFJUTF9JTlRfSFdfSURcXHRcXHRcXHQweGQwMDZcXG4rI2RlZmluZSBSVExfSU5UX0hXX0lEX01BU0tcXHRcXHQweDAwZmZcXG4rI2RlZmluZSBSVExfSU5UX0hXX0lEXzgxMTZBRlxcdFxcdDB4MDAwMFxcbisjZGVmaW5lIFJUTDgxMTZBRl9GVU5DX1BNX0NTUlxcdFxcdDB4ODBcXG4rI2RlZmluZSBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMXFx0MHg0NFxcbisjZGVmaW5lIFJUTF9QTV9EM0hPVFxcdFxcdFxcdEdFTk1BU0soMSwgMClcXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyB7XFxuIFxcdHUzMiBtYXNrO1xcbiBcXHR1MzIgdmFsO1xcbkBAIC0zMzQsMTEgKzM1MSwxMyBAQCBlbnVtIHJ0bF9yZWdpc3RlcnMge1xcbiBcXHRBTERQU19MVFJcXHQ9IDB4ZTBhMixcXG4gXFx0TFRSX09CRkZfTE9DS1xcdD0gMHhlMDMyLFxcbiBcXHRMVFJfU05PT1BcXHQ9IDB4ZTAzNCxcXG4rXFx0U0VORF9MVFJfTVNHXFx0PSAweGUwMzgsXFxuIFxcbiAjZGVmaW5lIEFMRFBTX0xUUl9FTlxcdFxcdFxcdEJJVCgwKVxcbiAjZGVmaW5lIExUUl9PQkZGX0xPQ0tfRU5cXHRcXHRCSVQoMClcXG4gI2RlZmluZSBMSU5LX1NQRUVEX0NIQU5HRV9FTlxcdFxcdEJJVCgxNClcXG4gI2RlZmluZSBMVFJfU05PT1BfRU5cXHRcXHRcXHRHRU5NQVNLKDE1LCAxNClcXG4rI2RlZmluZSBMVFJfTVNHX0VOXFx0XFx0XFx0QklUKDApXFxuIH07XFxuIFxcbiBlbnVtIHJ0bDgxNjhfODEwMV9yZWdpc3RlcnMge1xcbkBAIC03MjgsNiArNzQ3LDEyIEBAIGVudW0gcnRsX2Rhc2hfdHlwZSB7XFxuIFxcdFJUTF9EQVNIXzI1X0JQLFxcbiB9O1xcbiBcXG4rZW51bSBydGxfc2ZwX21vZGUge1xcbitcXHRSVExfU0ZQX05PTkUsXFxuK1xcdFJUTF9TRlBfODE2OF9BRixcXG4rXFx0UlRMX1NGUF84MTI3X0FURixcXG4rfTtcXG4rXFxuIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xcbiBcXHR2b2lkIF9faW9tZW0gKm1taW9fYWRkcjtcXHQvKiBtZW1vcnkgbWFwIHBoeXNpY2FsIGFkZHJlc3MgKi9cXG4gXFx0c3RydWN0IHBjaV9kZXYgKnBjaV9kZXY7XFxuQEAgLTczNiw2ICs3NjEsNyBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHtcXG4gXFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XFxuIFxcdGVudW0gbWFjX3ZlcnNpb24gbWFjX3ZlcnNpb247XFxuIFxcdGVudW0gcnRsX2Rhc2hfdHlwZSBkYXNoX3R5cGU7XFxuK1xcdGVudW0gcnRsX3NmcF9tb2RlIHNmcF9tb2RlO1xcbiBcXHR1MzIgY3VyX3J4OyAvKiBJbmRleCBpbnRvIHRoZSBSeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cXG4gXFx0dTMyIGN1cl90eDsgLyogSW5kZXggaW50byB0aGUgVHggZGVzY3JpcHRvciBidWZmZXIgb2YgbmV4dCBSeCBwa3QuICovXFxuIFxcdHUzMiBkaXJ0eV90eDtcXG5AQCAtNzUwLDYgKzc3Niw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xcbiBcXHR1MzIgaXJxX21hc2s7XFxuIFxcdGludCBpcnE7XFxuIFxcdHN0cnVjdCBjbGsgKmNsaztcXG4rXFx0aW50IHNwZWVkO1xcbiBcXG4gXFx0c3RydWN0IHtcXG4gXFx0XFx0REVDTEFSRV9CSVRNQVAoZmxhZ3MsIFJUTF9GTEFHX01BWCk7XFxuQEAgLTc2Miw3ICs3ODksNiBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHtcXG4gXFx0dW5zaWduZWQgc3VwcG9ydHNfZ21paToxO1xcbiBcXHR1bnNpZ25lZCBhc3BtX21hbmFnZWFibGU6MTtcXG4gXFx0dW5zaWduZWQgZGFzaF9lbmFibGVkOjE7XFxuLVxcdGJvb2wgc2ZwX21vZGU6MTtcXG4gXFx0ZG1hX2FkZHJfdCBjb3VudGVyc19waHlzX2FkZHI7XFxuIFxcdHN0cnVjdCBydGw4MTY5X2NvdW50ZXJzICpjb3VudGVycztcXG4gXFx0c3RydWN0IHJ0bDgxNjlfdGNfb2Zmc2V0cyB0Y19vZmZzZXQ7XFxuQEAgLTc3NCw2ICs4MDAsMTEgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XFxuIFxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxlZHM7XFxuIFxcbiBcXHR1MzIgb2NwX2Jhc2U7XFxuK1xcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xcbitcXHRzdHJ1Y3QgcGh5bGlua19jb25maWcgcGh5bGlua19jb25maWc7XFxuK1xcdHN0cnVjdCBwaHlsaW5rX3BjcyBwY3M7XFxuK1xcdHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gc2F2ZWRfcGF1c2U7XFxuK1xcdGJvb2wganVtYm9fcGF1c2Vfc2F2ZWQ7XFxuIH07XFxuIFxcbiB0eXBlZGVmIHZvaWQgKCpydGxfZ2VuZXJpY19mY3QpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKTtcXG5AQCAtMTEyOCwxMCArMTE1OSw2IEBAIHN0YXRpYyBpbnQgcjgxNjhfcGh5X29jcF9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnKVxcbiBcXHRpZiAocnRsX29jcF9yZWdfZmFpbHVyZShyZWcpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdC8qIFJldHVybiBkdW1teSBNSUlfUEhZU0lEMiBpbiBTRlAgbW9kZSB0byBtYXRjaCBTRlAgUEhZIGRyaXZlciAqL1xcbi1cXHRpZiAodHAtXFx1MDAzZXNmcF9tb2RlIFxcdTAwMjZcXHUwMDI2IHJlZyA9PSAoT0NQX1NURF9QSFlfQkFTRSArIDIgKiBNSUlfUEhZU0lEMikpXFxuLVxcdFxcdHJldHVybiBQSFlfSURfUlRMX0RVTU1ZX1NGUCBcXHUwMDI2IDB4ZmZmZjtcXG4tXFxuIFxcdFJUTF9XMzIodHAsIEdQSFlfT0NQLCByZWcgXFx1MDAzY1xcdTAwM2MgMTUpO1xcbiBcXG4gXFx0cmV0dXJuIHJ0bF9sb29wX3dhaXRfaGlnaCh0cCwgXFx1MDAyNnJ0bF9vY3BfZ3BoeV9jb25kLCAyNSwgMTApID9cXG5AQCAtMTIxNywxMiArMTI0NCw2IEBAIHN0YXRpYyB2b2lkIHI4MTI3X3NmcF9pbml0XzEwZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODA0LCAodmFsIFxcdTAwMjYgfjB4MDAwZikgfCAweDAwMGMpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBydGxfc2ZwX2luaXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLXtcXG4tXFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxcbi1cXHRcXHRyODEyN19zZnBfaW5pdF8xMGcodHApO1xcbi19XFxuLVxcbiBzdGF0aWMgdm9pZCBydGxfc2ZwX3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiB7XFxuIFxcdGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl84MClcXG5AQCAtMTI4Myw2ICsxMzA0LDE1IEBAIHN0YXRpYyB2b2lkIG1hY19tY3Vfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcsIGludCB2YWx1ZSlcXG4gXFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgdHAtXFx1MDAzZW9jcF9iYXNlICsgcmVnLCB2YWx1ZSk7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIHJ0bF9pc184MTE2YWYoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuK3tcXG4rXFx0cmV0dXJuIHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzUyIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdChyODE2OF9tYWNfb2NwX3JlYWQodHAsIFJUTF9QS0dfREVURUNUKSBcXHUwMDI2IFJUTF9QS0dfREVURUNUX01BU0spID09XFxuK1xcdFxcdFJUTF9QS0dfREVURUNUXzgxMTZBRiBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKSBcXHUwMDI2IFJUTF9JTlRfSFdfSURfTUFTSykgPT1cXG4rXFx0XFx0UlRMX0lOVF9IV19JRF84MTE2QUY7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgbWFjX21jdV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxcbiB7XFxuIFxcdHJldHVybiByODE2OF9tYWNfb2NwX3JlYWQodHAsIHRwLVxcdTAwM2VvY3BfYmFzZSArIHJlZyk7XFxuQEAgLTE1NzgsNiArMTYwOCwyMCBAQCBzdGF0aWMgYm9vbCBydGxfZGFzaF9pc19lbmFibGVkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyBlbnVtIHJ0bF9zZnBfbW9kZSBydGxfZ2V0X3NmcF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbit7XFxuK1xcdGlmIChydGxfaXNfODEyNSh0cCkpIHtcXG4rXFx0XFx0dTE2IGRhdGEgPSByODE2OF9tYWNfb2NwX3JlYWQodHAsIFJUTF9JTlRfSFdfSUQpO1xcbitcXG4rXFx0XFx0aWYgKChkYXRhIFxcdTAwMjYgMHhmZikgPT0gMHgwNylcXG4rXFx0XFx0XFx0cmV0dXJuIFJUTF9TRlBfODEyN19BVEY7XFxuK1xcdH0gZWxzZSBpZiAocnRsX2lzXzgxMTZhZih0cCkpIHtcXG4rXFx0XFx0cmV0dXJuIFJUTF9TRlBfODE2OF9BRjtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIFJUTF9TRlBfTk9ORTtcXG4rfVxcbitcXG4gc3RhdGljIGVudW0gcnRsX2Rhc2hfdHlwZSBydGxfZ2V0X2Rhc2hfdHlwZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbiBcXHRzd2l0Y2ggKHRwLVxcdTAwM2VtYWNfdmVyc2lvbikge1xcbkBAIC0xNjczLDE2ICsxNzE3LDE0IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaXJxX21hc2tfYW5kX2FjayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0cnRsX3BjaV9jb21taXQodHApO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuK3N0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHNwZWVkKVxcbiB7XFxuLVxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC1cXHUwMDNlcGh5ZGV2O1xcbi1cXG4gXFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM0IHx8XFxuIFxcdCAgICB0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zOCkge1xcbi1cXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VzcGVlZCA9PSBTUEVFRF8xMDAwKSB7XFxuK1xcdFxcdGlmIChzcGVlZCA9PSBTUEVFRF8xMDAwKSB7XFxuIFxcdFxcdFxcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWJjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMTEpO1xcbiBcXHRcXHRcXHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcXG4tXFx0XFx0fSBlbHNlIGlmIChwaHlkZXYtXFx1MDAzZXNwZWVkID09IFNQRUVEXzEwMCkge1xcbitcXHRcXHR9IGVsc2UgaWYgKHNwZWVkID09IFNQRUVEXzEwMCkge1xcbiBcXHRcXHRcXHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDFmKTtcXG4gXFx0XFx0XFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAwNSk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuQEAgLTE2OTIsNyArMTczNCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0XFx0cnRsX3Jlc2V0X3BhY2tldF9maWx0ZXIodHApO1xcbiBcXHR9IGVsc2UgaWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM1IHx8XFxuIFxcdFxcdCAgIHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM2KSB7XFxuLVxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZXNwZWVkID09IFNQRUVEXzEwMDApIHtcXG4rXFx0XFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcXG4gXFx0XFx0XFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxYmMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAxMSk7XFxuIFxcdFxcdFxcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpO1xcbiBcXHRcXHR9IGVsc2Uge1xcbkBAIC0xNzAwLDcgKzE3NDIsNyBAQCBzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdFxcdFxcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwM2YpO1xcbiBcXHRcXHR9XFxuIFxcdH0gZWxzZSBpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzcpIHtcXG4tXFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlc3BlZWQgPT0gU1BFRURfMTApIHtcXG4rXFx0XFx0aWYgKHNwZWVkID09IFNQRUVEXzEwKSB7XFxuIFxcdFxcdFxcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWQwLCBFUklBUl9NQVNLXzAwMTEsIDB4NGQwMik7XFxuIFxcdFxcdFxcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzAwMTEsIDB4MDA2MGEpO1xcbiBcXHRcXHR9IGVsc2Uge1xcbkBAIC0yMDc0LDExICsyMTE2LDExIEBAIHJ0bF9jb2FsZXNjZV9pbmZvKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRcXHRjaSA9IHJ0bF9jb2FsZXNjZV9pbmZvXzgxNjhfODEzNjtcXG4gXFxuIFxcdC8qIGlmIHNwZWVkIGlzIHVua25vd24gYXNzdW1lIGhpZ2hlc3Qgb25lICovXFxuLVxcdGlmICh0cC1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VzcGVlZCA9PSBTUEVFRF9VTktOT1dOKVxcbitcXHRpZiAodHAtXFx1MDAzZXNwZWVkID09IFNQRUVEX1VOS05PV04pXFxuIFxcdFxcdHJldHVybiBjaTtcXG4gXFxuIFxcdGZvciAoOyBjaS1cXHUwMDNlc3BlZWQ7IGNpKyspIHtcXG4tXFx0XFx0aWYgKHRwLVxcdTAwM2VwaHlkZXYtXFx1MDAzZXNwZWVkID09IGNpLVxcdTAwM2VzcGVlZClcXG4rXFx0XFx0aWYgKHRwLVxcdTAwM2VzcGVlZCA9PSBjaS1cXHUwMDNlc3BlZWQpXFxuIFxcdFxcdFxcdHJldHVybiBjaTtcXG4gXFx0fVxcbiBcXG5AQCAtMjIzNiw3ICsyMjc4LDcgQEAgc3RhdGljIHZvaWQgcnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXG4gc3RhdGljIHVuc2lnbmVkIGludCByODE2OV9nZXRfdHhfbHBpX3RpbWVyX3VzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiB7XFxuLVxcdHVuc2lnbmVkIGludCBzcGVlZCA9IHRwLVxcdTAwM2VwaHlkZXYtXFx1MDAzZXNwZWVkO1xcbitcXHR1bnNpZ25lZCBpbnQgc3BlZWQgPSB0cC1cXHUwMDNlc3BlZWQ7XFxuIFxcdHVuc2lnbmVkIGludCB0aW1lciA9IHRwLVxcdTAwM2V0eF9scGlfdGltZXI7XFxuIFxcbiBcXHRpZiAoIXRpbWVyIHx8IHNwZWVkID09IFNQRUVEX1VOS05PV04pXFxuQEAgLTIyNTQsNyArMjI5Niw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9nZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXFxuIFxcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFxuLVxcdHJldCA9IHBoeV9ldGh0b29sX2dldF9lZWUodHAtXFx1MDAzZXBoeWRldiwgZGF0YSk7XFxuK1xcdHJldCA9IHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKHRwLVxcdTAwM2VwaHlsaW5rLCBkYXRhKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuQEAgLTIyNzAsNyArMjMxMiw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXFxuIFxcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFxuLVxcdHJldHVybiBwaHlfZXRodG9vbF9zZXRfZWVlKHRwLVxcdTAwM2VwaHlkZXYsIGRhdGEpO1xcbitcXHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9lZWUodHAtXFx1MDAzZXBoeWxpbmssIGRhdGEpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2dldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5AQCAtMjMwMSwxMyArMjM0Myw4IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqZGF0YSlcXG4ge1xcbiBcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XFxuLVxcdGJvb2wgdHhfcGF1c2UsIHJ4X3BhdXNlO1xcbiBcXG4tXFx0cGh5X2dldF9wYXVzZSh0cC1cXHUwMDNlcGh5ZGV2LCBcXHUwMDI2dHhfcGF1c2UsIFxcdTAwMjZyeF9wYXVzZSk7XFxuLVxcbi1cXHRkYXRhLVxcdTAwM2VhdXRvbmVnID0gdHAtXFx1MDAzZXBoeWRldi1cXHUwMDNlYXV0b25lZztcXG4tXFx0ZGF0YS1cXHUwMDNldHhfcGF1c2UgPSB0eF9wYXVzZSA/IDEgOiAwO1xcbi1cXHRkYXRhLVxcdTAwM2VyeF9wYXVzZSA9IHJ4X3BhdXNlID8gMSA6IDA7XFxuK1xcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC1cXHUwMDNlcGh5bGluaywgZGF0YSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbkBAIC0yMzE4LDkgKzIzNTUsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0aWYgKGRldi1cXHUwMDNlbXR1IFxcdTAwM2UgRVRIX0RBVEFfTEVOKVxcbiBcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcbi1cXHRwaHlfc2V0X2FzeW1fcGF1c2UodHAtXFx1MDAzZXBoeWRldiwgZGF0YS1cXHUwMDNlcnhfcGF1c2UsIGRhdGEtXFx1MDAzZXR4X3BhdXNlKTtcXG4tXFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHRwLVxcdTAwM2VwaHlsaW5rLCBkYXRhKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX21hY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbkBAIC0yMzg2LDM0ICsyNDIxLDI3IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X2V0aF9jdHJsX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdGxlMzJfdG9fY3B1KHRwLVxcdTAwM2Vjb3VudGVycy1cXHUwMDNlcnhfdW5rbm93bl9vcGNvZGUpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbitzdGF0aWMgaW50IHJ0bDgxNjlfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbitcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbiB7XFxuIFxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XFxuLVxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC1cXHUwMDNlcGh5ZGV2O1xcbi1cXHRpbnQgZHVwbGV4ID0gY21kLVxcdTAwM2ViYXNlLmR1cGxleDtcXG4tXFx0aW50IHNwZWVkID0gY21kLVxcdTAwM2ViYXNlLnNwZWVkO1xcbi1cXG4tXFx0aWYgKCF0cC1cXHUwMDNlc2ZwX21vZGUpXFxuLVxcdFxcdHJldHVybiBwaHlfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHBoeWRldiwgY21kKTtcXG4gXFxuLVxcdGlmIChjbWQtXFx1MDAzZWJhc2UuYXV0b25lZyAhPSBBVVRPTkVHX0RJU0FCTEUpXFxuLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi1cXG4tXFx0aWYgKCFwaHlfY2hlY2tfdmFsaWQoc3BlZWQsIGR1cGxleCwgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQpKVxcbi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNnBoeWRldi1cXHUwMDNlbG9jayk7XFxuK1xcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCh0cC1cXHUwMDNlcGh5bGluaywgY21kKTtcXG4rfVxcbiBcXG4tXFx0cGh5ZGV2LVxcdTAwM2VhdXRvbmVnID0gQVVUT05FR19ESVNBQkxFO1xcbi1cXHRwaHlkZXYtXFx1MDAzZXNwZWVkID0gc3BlZWQ7XFxuLVxcdHBoeWRldi1cXHUwMDNlZHVwbGV4ID0gZHVwbGV4O1xcbitzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbitcXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbit7XFxuK1xcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XFxuIFxcbi1cXHRydGxfc2ZwX2luaXQodHApO1xcbitcXHRyZXR1cm4gcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQodHAtXFx1MDAzZXBoeWxpbmssIGNtZCk7XFxuK31cXG4gXFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5ZGV2LVxcdTAwM2Vsb2NrKTtcXG4rc3RhdGljIGludCBydGw4MTY5X253YXlfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4re1xcbitcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XFxuIFxcbi1cXHRyZXR1cm4gMDtcXG4rXFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KHRwLVxcdTAwM2VwaHlsaW5rKTtcXG4gfVxcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBydGw4MTY5X2V0aHRvb2xfb3BzID0ge1xcbkBAIC0yNDMxLDEwICsyNDU5LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgcnRsODE2OV9ldGh0b29sX29wcyA9IHtcXG4gXFx0LmdldF9zc2V0X2NvdW50XFx0XFx0PSBydGw4MTY5X2dldF9zc2V0X2NvdW50LFxcbiBcXHQuZ2V0X2V0aHRvb2xfc3RhdHNcXHQ9IHJ0bDgxNjlfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuIFxcdC5nZXRfdHNfaW5mb1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfdHNfaW5mbyxcXG4tXFx0Lm53YXlfcmVzZXRcXHRcXHQ9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsXFxuK1xcdC5ud2F5X3Jlc2V0XFx0XFx0PSBydGw4MTY5X253YXlfcmVzZXQsXFxuIFxcdC5nZXRfZWVlXFx0XFx0PSBydGw4MTY5X2dldF9lZWUsXFxuIFxcdC5zZXRfZWVlXFx0XFx0PSBydGw4MTY5X3NldF9lZWUsXFxuLVxcdC5nZXRfbGlua19rc2V0dGluZ3NcXHQ9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG4rXFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gcnRsODE2OV9nZXRfbGlua19rc2V0dGluZ3MsXFxuIFxcdC5zZXRfbGlua19rc2V0dGluZ3NcXHQ9IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzLFxcbiBcXHQuZ2V0X3JpbmdwYXJhbVxcdFxcdD0gcnRsODE2OV9nZXRfcmluZ3BhcmFtLFxcbiBcXHQuZ2V0X3BhdXNlX3N0YXRzXFx0PSBydGw4MTY5X2dldF9wYXVzZV9zdGF0cyxcXG5AQCAtMjQ5OSw5ICsyNTI3LDEwIEBAIHZvaWQgcjgxNjlfYXBwbHlfZmlybXdhcmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdFxcdHRwLVxcdTAwM2VvY3BfYmFzZSA9IE9DUF9TVERfUEhZX0JBU0U7XFxuIFxcbiBcXHRcXHQvKiBQSFkgc29mdCByZXNldCBtYXkgc3RpbGwgYmUgaW4gcHJvZ3Jlc3MgKi9cXG4tXFx0XFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVxcdTAwM2VwaHlkZXYsIE1JSV9CTUNSLCB2YWwsXFxuLVxcdFxcdFxcdFxcdCAgICAgICEodmFsIFxcdTAwMjYgQk1DUl9SRVNFVCksXFxuLVxcdFxcdFxcdFxcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xcbitcXHRcXHRpZiAodHAtXFx1MDAzZXBoeWRldilcXG4rXFx0XFx0XFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVxcdTAwM2VwaHlkZXYsIE1JSV9CTUNSLCB2YWwsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICEodmFsIFxcdTAwMjYgQk1DUl9SRVNFVCksXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTI1MzgsNiArMjU2Nyw4IEBAIHN0YXRpYyB2b2lkIHJ0bF9zY2hlZHVsZV90YXNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBlbnVtIHJ0bF9mbGFnIGZsYWcpXFxuIFxcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcGh5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiB7XFxuK1xcdHBoeV9pbml0X2h3KHRwLVxcdTAwM2VwaHlkZXYpO1xcbitcXHRwaHlfcmVzdW1lKHRwLVxcdTAwM2VwaHlkZXYpO1xcbiBcXHRyODE2OV9od19waHlfY29uZmlnKHRwLCB0cC1cXHUwMDNlcGh5ZGV2LCB0cC1cXHUwMDNlbWFjX3ZlcnNpb24pO1xcbiBcXG4gXFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiBcXHUwMDNjPSBSVExfR0lHQV9NQUNfVkVSXzA2KSB7XFxuQEAgLTI1NTIsOSArMjU4Myw2IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9waHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdCAgICB0cC1cXHUwMDNlcGNpX2Rldi1cXHUwMDNlc3Vic3lzdGVtX2RldmljZSA9PSAweGUwMDApXFxuIFxcdFxcdHBoeV93cml0ZV9wYWdlZCh0cC1cXHUwMDNlcGh5ZGV2LCAweDAwMDEsIDB4MTAsIDB4ZjAxYik7XFxuIFxcbi1cXHRpZiAodHAtXFx1MDAzZXNmcF9tb2RlKVxcbi1cXHRcXHRydGxfc2ZwX2luaXQodHApO1xcbi1cXG4gXFx0LyogV2UgbWF5IGhhdmUgY2FsbGVkIHBoeV9zcGVlZF9kb3duIGJlZm9yZSAqL1xcbiBcXHRwaHlfc3BlZWRfdXAodHAtXFx1MDAzZXBoeWRldik7XFxuIFxcbkBAIC0yNjI0LDYgKzI2NTIsNTEgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3JpbmdfaW5kZXhlcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0dHAtXFx1MDAzZWRpcnR5X3R4ID0gdHAtXFx1MDAzZWN1cl90eCA9IHRwLVxcdTAwM2VjdXJfcnggPSAwO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnX3BhdXNlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbit7XFxuK1xcdGJvb2wganVtYm8gPSB0cC1cXHUwMDNlZGV2LVxcdTAwM2VtdHUgXFx1MDAzZSBFVEhfREFUQV9MRU47XFxuK1xcdHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gcGF1c2UgPSB7fTtcXG4rXFxuK1xcdEFTU0VSVF9SVE5MKCk7XFxuK1xcbitcXHRpZiAoanVtYm8pIHtcXG4rXFx0XFx0aWYgKCF0cC1cXHUwMDNlanVtYm9fcGF1c2Vfc2F2ZWQpIHtcXG4rXFx0XFx0XFx0c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgY21kID0ge307XFxuK1xcdFxcdFxcdGJvb2wgYWR2X3BhdXNlLCBhZHZfYXN5bTtcXG4rXFxuK1xcdFxcdFxcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC1cXHUwMDNlcGh5bGluaywgXFx1MDAyNnRwLVxcdTAwM2VzYXZlZF9wYXVzZSk7XFxuK1xcdFxcdFxcdGlmICh0cC1cXHUwMDNlc2F2ZWRfcGF1c2UuYXV0b25lZykge1xcbitcXHRcXHRcXHRcXHRwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCh0cC1cXHUwMDNlcGh5bGluaywgXFx1MDAyNmNtZCk7XFxuK1xcdFxcdFxcdFxcdGFkdl9wYXVzZSA9IGV0aHRvb2xfbGlua19rc2V0dGluZ3NfdGVzdF9saW5rX21vZGUoXFx1MDAyNmNtZCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBhZHZlcnRpc2luZyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBQYXVzZSk7XFxuK1xcdFxcdFxcdFxcdGFkdl9hc3ltICA9IGV0aHRvb2xfbGlua19rc2V0dGluZ3NfdGVzdF9saW5rX21vZGUoXFx1MDAyNmNtZCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBhZHZlcnRpc2luZyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBBc3ltX1BhdXNlKTtcXG4rXFx0XFx0XFx0XFx0aWYgKGFkdl9wYXVzZSBcXHUwMDI2XFx1MDAyNiAhYWR2X2FzeW0pIHtcXG4rXFx0XFx0XFx0XFx0XFx0dHAtXFx1MDAzZXNhdmVkX3BhdXNlLnJ4X3BhdXNlID0gMTtcXG4rXFx0XFx0XFx0XFx0XFx0dHAtXFx1MDAzZXNhdmVkX3BhdXNlLnR4X3BhdXNlID0gMTtcXG4rXFx0XFx0XFx0XFx0fSBlbHNlIGlmIChhZHZfcGF1c2UgXFx1MDAyNlxcdTAwMjYgYWR2X2FzeW0pIHtcXG4rXFx0XFx0XFx0XFx0XFx0dHAtXFx1MDAzZXNhdmVkX3BhdXNlLnJ4X3BhdXNlID0gMTtcXG4rXFx0XFx0XFx0XFx0XFx0dHAtXFx1MDAzZXNhdmVkX3BhdXNlLnR4X3BhdXNlID0gMDtcXG4rXFx0XFx0XFx0XFx0fSBlbHNlIGlmICghYWR2X3BhdXNlIFxcdTAwMjZcXHUwMDI2IGFkdl9hc3ltKSB7XFxuK1xcdFxcdFxcdFxcdFxcdHRwLVxcdTAwM2VzYXZlZF9wYXVzZS5yeF9wYXVzZSA9IDA7XFxuK1xcdFxcdFxcdFxcdFxcdHRwLVxcdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDE7XFxuK1xcdFxcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdFxcdHRwLVxcdTAwM2VzYXZlZF9wYXVzZS5yeF9wYXVzZSA9IDA7XFxuK1xcdFxcdFxcdFxcdFxcdHRwLVxcdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDA7XFxuK1xcdFxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHR0cC1cXHUwMDNlanVtYm9fcGF1c2Vfc2F2ZWQgPSB0cnVlO1xcbitcXHRcXHR9XFxuK1xcdFxcdHBhdXNlLmF1dG9uZWcgPSB0cC1cXHUwMDNlc2F2ZWRfcGF1c2UuYXV0b25lZztcXG4rXFx0XFx0cGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHRwLVxcdTAwM2VwaHlsaW5rLCBcXHUwMDI2cGF1c2UpO1xcbitcXHR9IGVsc2UgaWYgKHRwLVxcdTAwM2VqdW1ib19wYXVzZV9zYXZlZCkge1xcbitcXHRcXHRwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0odHAtXFx1MDAzZXBoeWxpbmssIFxcdTAwMjZ0cC1cXHUwMDNlc2F2ZWRfcGF1c2UpO1xcbitcXHRcXHR0cC1cXHUwMDNlanVtYm9fcGF1c2Vfc2F2ZWQgPSBmYWxzZTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiB7XFxuIFxcdGJvb2wganVtYm8gPSB0cC1cXHUwMDNlZGV2LVxcdTAwM2VtdHUgXFx1MDAzZSBFVEhfREFUQV9MRU47XFxuQEAgLTI2NTcsMTUgKzI3MzAsNiBAQCBzdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXG4gXFx0aWYgKHBjaV9pc19wY2llKHRwLVxcdTAwM2VwY2lfZGV2KSBcXHUwMDI2XFx1MDAyNiB0cC1cXHUwMDNlc3VwcG9ydHNfZ21paSlcXG4gXFx0XFx0cGNpZV9zZXRfcmVhZHJxKHRwLVxcdTAwM2VwY2lfZGV2LCByZWFkcnEpO1xcbi1cXG4tXFx0LyogQ2hpcCBkb2Vzbid0IHN1cHBvcnQgcGF1c2UgaW4ganVtYm8gbW9kZSAqL1xcbi1cXHRpZiAoanVtYm8pIHtcXG4tXFx0XFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCxcXG4tXFx0XFx0XFx0XFx0ICAgdHAtXFx1MDAzZXBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbi1cXHRcXHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsXFxuLVxcdFxcdFxcdFxcdCAgIHRwLVxcdTAwM2VwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nKTtcXG4tXFx0XFx0cGh5X3N0YXJ0X2FuZWcodHAtXFx1MDAzZXBoeWRldik7XFxuLVxcdH1cXG4gfVxcbiBcXG4gREVDTEFSRV9SVExfQ09ORChydGxfY2hpcGNtZF9jb25kKVxcbkBAIC0yNzgwLDcgKzI4NDQsNyBAQCBzdGF0aWMgdm9pZCBydGxfcHJlcGFyZV9wb3dlcl9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRcXHRydGxfZXBoeV93cml0ZSh0cCwgMHgxOSwgMHhmZjY0KTtcXG4gXFxuIFxcdGlmIChkZXZpY2VfbWF5X3dha2V1cCh0cF90b19kZXYodHApKSkge1xcbi1cXHRcXHRwaHlfc3BlZWRfZG93bih0cC1cXHUwMDNlcGh5ZGV2LCBmYWxzZSk7XFxuK1xcdFxcdHBoeWxpbmtfc3BlZWRfZG93bih0cC1cXHUwMDNlcGh5bGluaywgZmFsc2UpO1xcbiBcXHRcXHRydGxfd29sX2VuYWJsZV9yeCh0cCk7XFxuIFxcdH1cXG4gfVxcbkBAIC0yODMyLDYgKzI4OTYsMTYgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9zZXRfbWFnaWNfcmVnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRSVExfVzMyKHRwLCAweDdjLCB2YWwpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IHJ0bDgxNjlfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpO1xcbitcXG4rXFx0aWYgKCFuZXRpZl9ydW5uaW5nKGRldikpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0cmV0dXJuIHBoeWxpbmtfbWlpX2lvY3RsKHRwLVxcdTAwM2VwaHlsaW5rLCBpZnIsIGNtZCk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHJ0bF9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdHUzMiByeF9tb2RlID0gQWNjZXB0QnJvYWRjYXN0IHwgQWNjZXB0TXlQaHlzIHwgQWNjZXB0TXVsdGljYXN0O1xcbkBAIC0zMDk4LDggKzMxNzIsMjIgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmMiwgMHg5MDAzKTtcXG4gXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9PQkZGX0xPQ0ssIDB4MDAwMCwgTElOS19TUEVFRF9DSEFOR0VfRU4pO1xcbiBcXHRcXHRicmVhaztcXG4tXFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxcbiBcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwMmMsIDB4MTg4MCk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4ZTAyZSwgMHg0ODgwKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDgsIDB4OTAwMyk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYSwgMHg5MDAzKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDIsIDB4ODgzYyk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNCwgMHg4YzEyKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwYTYsIDB4OTAwMyk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4ZTBhOCwgMHg5MDAzKTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODpcXG4gXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xcbiBcXHRcXHRSVExfVzgodHAsIENPTUJPX0xUUl9FWFRFTkQsIFJUTF9SOCh0cCwgQ09NQk9fTFRSX0VYVEVORCkgfCBDT01CT19MVFJfRVhURU5EX0VOKTtcXG4gXFx0XFx0ZmFsbHRocm91Z2g7XFxuQEAgLTMxMTksNiArMzIwNyw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHR9XFxuIFxcdC8qIGNoaXAgY2FuIHRyaWdnZXIgTFRSICovXFxuIFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfT0JGRl9MT0NLLCAweDAwMDMsIExUUl9PQkZGX0xPQ0tfRU4pO1xcbitcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgU0VORF9MVFJfTVNHLCAweDAwMDAsIExUUl9NU0dfRU4pO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcXG5AQCAtMzE1Miw2ICszMjQxLDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXFxuIFxcdFxcdHJ0bF9lbmFibGVfbHRyKHRwKTtcXG4gXFx0XFx0c3dpdGNoICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24pIHtcXG4gXFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxcbitcXHRcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6XFxuIFxcdFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl82MSAuLi4gUlRMX0dJR0FfTUFDX1ZFUl9MQVNUOlxcbiBcXHRcXHRcXHQvKiByZXNldCBlcGh5IHR4L3J4IGRpc2FibGUgdGltZXIgKi9cXG4gXFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5NCwgMHhmZjAwLCAwKTtcXG5AQCAtMzE2NCw2ICszMjU0LDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdHN3aXRjaCAodHAtXFx1MDAzZW1hY192ZXJzaW9uKSB7XFxuIFxcdFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODpcXG4rXFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxcbiBcXHRcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcXG4gXFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5MiwgMHgwMGZmLCAwKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuQEAgLTM2NTcsNiArMzc0OCwzNSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODE2OGVwXzMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGU4NjAsIDB4MDAwMCwgMHgwMDgwKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IHNsb3QgPSBQQ0lfU0xPVChwZGV2LVxcdTAwM2VkZXZmbik7XFxuK1xcdHN0cnVjdCBwY2lfYnVzICpidXMgPSBwZGV2LVxcdTAwM2VidXM7XFxuK1xcdHVuc2lnbmVkIGludCBkZXZmbjtcXG4rXFx0aW50IGZ1bmM7XFxuK1xcdGludCByZXQ7XFxuK1xcdHUzMiB2YWw7XFxuK1xcbitcXHRmb3IgKGZ1bmMgPSAyOyBmdW5jIFxcdTAwM2MgODsgZnVuYysrKSB7XFxuK1xcdFxcdGRldmZuID0gUENJX0RFVkZOKHNsb3QsIGZ1bmMpO1xcbitcXG4rXFx0XFx0cmV0ID0gcGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19QTV9DU1IsIFxcdTAwMjZ2YWwpO1xcbitcXHRcXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiAhUENJX1BPU1NJQkxFX0VSUk9SKHZhbCkpIHtcXG4rXFx0XFx0XFx0dmFsIFxcdTAwMjY9IH5QQ0lfUE1fQ1RSTF9QTUVfU1RBVFVTO1xcbitcXHRcXHRcXHR2YWwgXFx1MDAyNj0gfihQQ0lfUE1fQ1RSTF9TVEFURV9NQVNLIHwgUENJX1BNX0NUUkxfUE1FX0VOQUJMRSk7XFxuK1xcdFxcdFxcdHZhbCB8PSAoUlRMX1BNX0QzSE9UIHwgUENJX1BNX0NUUkxfUE1FX0VOQUJMRSk7XFxuK1xcdFxcdFxcdHBjaV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX1BNX0NTUiwgdmFsKTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cmV0ID0gcGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMLCBcXHUwMDI2dmFsKTtcXG4rXFx0XFx0aWYgKCFyZXQgXFx1MDAyNlxcdTAwMjYgIVBDSV9QT1NTSUJMRV9FUlJPUih2YWwpKSB7XFxuK1xcdFxcdFxcdHZhbCBcXHUwMDI2PSB+KChQQ0lfRVhQX0xOS1NUQV9MQk1TIHwgUENJX0VYUF9MTktTVEFfTEFCUykgXFx1MDAzY1xcdTAwM2MgMTYpO1xcbitcXHRcXHRcXHR2YWwgfD0gUENJX0VYUF9MTktDVExfQVNQTUM7XFxuK1xcdFxcdFxcdHBjaV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX0VYUF9MTktDVEwsIHZhbCk7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbiBcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGVwaHlfaW5mbyBlX2luZm9fODExN1tdID0ge1xcbkBAIC0zNjkzLDEyICszODEzLDE0IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXG4gXFx0cnRsX3BjaWVfc3RhdGVfbDJsM19kaXNhYmxlKHRwKTtcXG4gXFxuLVxcdHJnX3Nhd19jbnQgPSBwaHlfcmVhZF9wYWdlZCh0cC1cXHUwMDNlcGh5ZGV2LCAweDBjNDIsIDB4MTMpIFxcdTAwMjYgMHgzZmZmO1xcbi1cXHRpZiAocmdfc2F3X2NudCBcXHUwMDNlIDApIHtcXG4tXFx0XFx0dTE2IHN3X2NudF8xbXNfaW5pO1xcbitcXHRpZiAodHAtXFx1MDAzZXBoeWRldikge1xcbitcXHRcXHRyZ19zYXdfY250ID0gcGh5X3JlYWRfcGFnZWQodHAtXFx1MDAzZXBoeWRldiwgMHgwYzQyLCAweDEzKSBcXHUwMDI2IDB4M2ZmZjtcXG4rXFx0XFx0aWYgKHJnX3Nhd19jbnQgXFx1MDAzZSAwKSB7XFxuK1xcdFxcdFxcdHUxNiBzd19jbnRfMW1zX2luaTtcXG4gXFxuLVxcdFxcdHN3X2NudF8xbXNfaW5pID0gKDE2MDAwMDAwIC8gcmdfc2F3X2NudCkgXFx1MDAyNiAweDBmZmY7XFxuLVxcdFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpO1xcbitcXHRcXHRcXHRzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpIFxcdTAwMjYgMHgwZmZmO1xcbitcXHRcXHRcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhkNDEyLCAweDBmZmYsIHN3X2NudF8xbXNfaW5pKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDU2LCAweDAwZjAsIDB4MDAwMCk7XFxuQEAgLTM3MTEsNiArMzgzMyw5IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGMwOTQsIDB4MDAwMCk7XFxuIFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5ZSwgMHgwMDAwKTtcXG4gXFxuK1xcdGlmIChydGxfaXNfODExNmFmKHRwKSlcXG4rXFx0XFx0cnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnModHAtXFx1MDAzZXBjaV9kZXYpO1xcbitcXG4gXFx0LyogZmlybXdhcmUgaXMgZm9yIE1BQyBvbmx5ICovXFxuIFxcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcXG4gfVxcbkBAIC00MTM5LDEyICs0MjY0LDE3IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydChzdHJ1Y3QgIHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIHN0YXRpYyBpbnQgcnRsODE2OV9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxcbiB7XFxuIFxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4rXFx0Ym9vbCBqdW1ib19iZWZvcmUgPSBkZXYtXFx1MDAzZW10dSBcXHUwMDNlIEVUSF9EQVRBX0xFTjtcXG4rXFx0Ym9vbCBqdW1ib19hZnRlciA9IG5ld19tdHUgXFx1MDAzZSBFVEhfREFUQV9MRU47XFxuIFxcbiBcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlbXR1LCBuZXdfbXR1KTtcXG4gXFx0bmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhkZXYpO1xcbiBcXHRydGxfanVtYm9fY29uZmlnKHRwKTtcXG4gXFx0cnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHRwKTtcXG4gXFxuK1xcdGlmIChqdW1ib19iZWZvcmUgIT0ganVtYm9fYWZ0ZXIpXFxuK1xcdFxcdHJ0bF9qdW1ib19jb25maWdfcGF1c2UodHApO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTQ4NjksOCArNDk5OSwxMyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODE2OV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHN0YXR1cyBcXHUwMDI2IExpbmtDaGcpXFxuLVxcdFxcdHBoeV9tYWNfaW50ZXJydXB0KHRwLVxcdTAwM2VwaHlkZXYpO1xcbitcXHRpZiAoc3RhdHVzIFxcdTAwMjYgTGlua0NoZykge1xcbitcXHRcXHRpZiAodHAtXFx1MDAzZXBoeWRldilcXG4rXFx0XFx0XFx0cGh5X21hY19pbnRlcnJ1cHQodHAtXFx1MDAzZXBoeWRldik7XFxuK1xcdFxcdGVsc2UgaWYgKHRwLVxcdTAwM2VzZnBfbW9kZSlcXG4rXFx0XFx0XFx0cGh5bGlua19tYWNfY2hhbmdlKHRwLVxcdTAwM2VwaHlsaW5rLFxcbitcXHRcXHRcXHRcXHRcXHQgICAhIShSVExfUjgodHAsIFBIWXN0YXR1cykgXFx1MDAyNiBMaW5rU3RhdHVzKSk7XFxuK1xcdH1cXG4gXFxuIFxcdHJ0bF9pcnFfZGlzYWJsZSh0cCk7XFxuIFxcdG5hcGlfc2NoZWR1bGUoXFx1MDAyNnRwLVxcdTAwM2VuYXBpKTtcXG5AQCAtNDkzMCw5ICs1MDY1LDYgQEAgc3RhdGljIGludCBydGw4MTY5X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbiBcXG4gc3RhdGljIHZvaWQgcnRsX2VuYWJsZV90eF9scGkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxcbiB7XFxuLVxcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXFxuLVxcdFxcdHJldHVybjtcXG4tXFxuIFxcdHN3aXRjaCAodHAtXFx1MDAzZW1hY192ZXJzaW9uKSB7XFxuIFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8zNCAuLi4gUlRMX0dJR0FfTUFDX1ZFUl81MjpcXG4gXFx0XFx0LyogQWRqdXN0IEVFRSBMRUQgZnJlcXVlbmN5ICovXFxuQEAgLTQ5NjMsNDAgKzUwOTUsMTUgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV90eF9scGkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxcbiBcXHR9XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHI4MTY5X3BoeWxpbmtfaGFuZGxlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4te1xcbi1cXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbi1cXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcXG4tXFxuLVxcdGlmIChuZXRpZl9jYXJyaWVyX29rKG5kZXYpKSB7XFxuLVxcdFxcdHJ0bF9saW5rX2NoZ19wYXRjaCh0cCk7XFxuLVxcdFxcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cC1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VlbmFibGVfdHhfbHBpKTtcXG4tXFx0XFx0cG1fcmVxdWVzdF9yZXN1bWUoZCk7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdHBtX3J1bnRpbWVfaWRsZShkKTtcXG4tXFx0fVxcbi1cXG4tXFx0cGh5X3ByaW50X3N0YXR1cyh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tfVxcbi1cXG4gc3RhdGljIGludCByODE2OV9waHlfY29ubmVjdChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbi1cXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXFx1MDAzZXBoeWRldjtcXG4tXFx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0cGh5X21vZGUgPSB0cC1cXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcXG4tXFx0XFx0ICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSTtcXG4tXFxuLVxcdHJldCA9IHBoeV9jb25uZWN0X2RpcmVjdCh0cC1cXHUwMDNlZGV2LCBwaHlkZXYsIHI4MTY5X3BoeWxpbmtfaGFuZGxlcixcXG4tXFx0XFx0XFx0XFx0IHBoeV9tb2RlKTtcXG4tXFx0aWYgKHJldClcXG4rXFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeSh0cC1cXHUwMDNlcGh5bGluaywgdHAtXFx1MDAzZXBoeWRldik7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0bmV0ZGV2X2Vycih0cC1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGNvbm5lY3QgcGh5XFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4tXFxuLVxcdGlmICghdHAtXFx1MDAzZXN1cHBvcnRzX2dtaWkpXFxuLVxcdFxcdHBoeV9zZXRfbWF4X3NwZWVkKHBoeWRldiwgU1BFRURfMTAwKTtcXG4tXFxuLVxcdHBoeV9hdHRhY2hlZF9pbmZvKHBoeWRldik7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTUwMDcsMTAgKzUxMTQsMTAgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHQvKiBDbGVhciBhbGwgdGFzayBmbGFncyAqL1xcbiBcXHRiaXRtYXBfemVybyh0cC1cXHUwMDNld2suZmxhZ3MsIFJUTF9GTEFHX01BWCk7XFxuIFxcbi1cXHRwaHlfc3RvcCh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4rXFx0cGh5bGlua19zdG9wKHRwLVxcdTAwM2VwaHlsaW5rKTtcXG4gXFxuIFxcdC8qIFJlc2V0IFNlckRlcyBQSFkgdG8gYnJpbmcgZG93biBmaWJlciBsaW5rICovXFxuLVxcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUpXFxuK1xcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURilcXG4gXFx0XFx0cnRsX3NmcF9yZXNldCh0cCk7XFxuIFxcbiBcXHRydGw4MTY5X3VwZGF0ZV9jb3VudGVycyh0cCk7XFxuQEAgLTUwMzIsMTQgKzUxMzksMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV91cChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0XFx0cnRsODE2OF9kcml2ZXJfc3RhcnQodHApO1xcbiBcXG4gXFx0cGNpX3NldF9tYXN0ZXIodHAtXFx1MDAzZXBjaV9kZXYpO1xcbi1cXHRwaHlfaW5pdF9odyh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tXFx0cGh5X3Jlc3VtZSh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tXFx0cnRsODE2OV9pbml0X3BoeSh0cCk7XFxuK1xcdGlmICh0cC1cXHUwMDNlcGh5ZGV2KVxcbitcXHRcXHRydGw4MTY5X2luaXRfcGh5KHRwKTtcXG4rXFxuIFxcdG5hcGlfZW5hYmxlKFxcdTAwMjZ0cC1cXHUwMDNlbmFwaSk7XFxuIFxcdGVuYWJsZV93b3JrKFxcdTAwMjZ0cC1cXHUwMDNld2sud29yayk7XFxuIFxcdHJ0bF9yZXNldF93b3JrKHRwKTtcXG4gXFxuLVxcdHBoeV9zdGFydCh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4rXFx0cGh5bGlua19zdGFydCh0cC1cXHUwMDNlcGh5bGluayk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbkBAIC01MDU1LDcgKzUxNjIsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFxuIFxcdGZyZWVfaXJxKHRwLVxcdTAwM2VpcnEsIHRwKTtcXG4gXFxuLVxcdHBoeV9kaXNjb25uZWN0KHRwLVxcdTAwM2VwaHlkZXYpO1xcbitcXHRwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHRwLVxcdTAwM2VwaHlsaW5rKTtcXG4gXFxuIFxcdGRtYV9mcmVlX2NvaGVyZW50KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFI4MTY5X1JYX1JJTkdfQllURVMsIHRwLVxcdTAwM2VSeERlc2NBcnJheSxcXG4gXFx0XFx0XFx0ICB0cC1cXHUwMDNlUnhQaHlBZGRyKTtcXG5AQCAtNTExMiw5ICs1MjE5LDExIEBAIHN0YXRpYyBpbnQgcnRsX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuIFxcdFxcdGdvdG8gZXJyX3JlbGVhc2VfZndfMjtcXG4gXFxuLVxcdHJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTtcXG4tXFx0aWYgKHJldHZhbClcXG4tXFx0XFx0Z290byBlcnJfZnJlZV9pcnE7XFxuK1xcdGlmICh0cC1cXHUwMDNlcGh5ZGV2KSB7XFxuK1xcdFxcdHJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTtcXG4rXFx0XFx0aWYgKHJldHZhbClcXG4rXFx0XFx0XFx0Z290byBlcnJfZnJlZV9pcnE7XFxuK1xcdH1cXG4gXFxuIFxcdHJ0bDgxNjlfdXAodHApO1xcbiBcXHRydGw4MTY5X2luaXRfY291bnRlcl9vZmZzZXRzKHRwKTtcXG5AQCAtNTE5MCw4ICs1Mjk5LDExIEBAIHN0YXRpYyBpbnQgcnRsODE2OV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdHJ0bF9yYXJfc2V0KHRwLCB0cC1cXHUwMDNlZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuIFxcdF9fcnRsODE2OV9zZXRfd29sKHRwLCB0cC1cXHUwMDNlc2F2ZWRfd29sb3B0cyk7XFxuIFxcbi1cXHRpZiAodHAtXFx1MDAzZVR4RGVzY0FycmF5KVxcbitcXHRpZiAodHAtXFx1MDAzZVR4RGVzY0FycmF5KSB7XFxuK1xcdFxcdHJ0bmxfbG9jaygpO1xcbiBcXHRcXHRydGw4MTY5X3VwKHRwKTtcXG4rXFx0XFx0cnRubF91bmxvY2soKTtcXG4rXFx0fVxcbiBcXG4gXFx0bmV0aWZfZGV2aWNlX2F0dGFjaCh0cC1cXHUwMDNlZGV2KTtcXG4gXFxuQEAgLTUyODgsNiArNTQwMCw4IEBAIHN0YXRpYyB2b2lkIHJ0bF9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiBcXHRcXHRyODE2OV9yZW1vdmVfbGVkcyh0cC1cXHUwMDNlbGVkcyk7XFxuIFxcbiBcXHR1bnJlZ2lzdGVyX25ldGRldih0cC1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKHRwLVxcdTAwM2VwaHlsaW5rKVxcbitcXHRcXHRwaHlsaW5rX2Rlc3Ryb3kodHAtXFx1MDAzZXBoeWxpbmspO1xcbiBcXG4gXFx0aWYgKHRwLVxcdTAwM2VkYXNoX3R5cGUgIT0gUlRMX0RBU0hfTk9ORSlcXG4gXFx0XFx0cnRsODE2OF9kcml2ZXJfc3RvcCh0cCk7XFxuQEAgLTUzMTAsNyArNTQyNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgcnRsX25ldGRldl9vcHMgPSB7XFxuIFxcdC5uZG9fZml4X2ZlYXR1cmVzXFx0PSBydGw4MTY5X2ZpeF9mZWF0dXJlcyxcXG4gXFx0Lm5kb19zZXRfZmVhdHVyZXNcXHQ9IHJ0bDgxNjlfc2V0X2ZlYXR1cmVzLFxcbiBcXHQubmRvX3NldF9tYWNfYWRkcmVzc1xcdD0gcnRsX3NldF9tYWNfYWRkcmVzcyxcXG4tXFx0Lm5kb19ldGhfaW9jdGxcXHRcXHQ9IHBoeV9kb19pb2N0bF9ydW5uaW5nLFxcbitcXHQubmRvX2V0aF9pb2N0bFxcdFxcdD0gcnRsODE2OV9pb2N0bCxcXG4gXFx0Lm5kb19zZXRfcnhfbW9kZVxcdD0gcnRsX3NldF9yeF9tb2RlLFxcbiAjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVJcXG4gXFx0Lm5kb19wb2xsX2NvbnRyb2xsZXJcXHQ9IHJ0bDgxNjlfbmV0cG9sbCxcXG5AQCAtNTQ3NCwxNiArNTU4OCw2IEBAIHN0YXRpYyBpbnQgcjgxNjlfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0XFx0cmV0dXJuIC1FVU5BVENIO1xcbiBcXHR9XFxuIFxcbi1cXHR0cC1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VtYWNfbWFuYWdlZF9wbSA9IHRydWU7XFxuLVxcdGlmIChydGxfc3VwcG9ydHNfZWVlKHRwKSlcXG4tXFx0XFx0cGh5X3N1cHBvcnRfZWVlKHRwLVxcdTAwM2VwaHlkZXYpO1xcbi1cXHRwaHlfc3VwcG9ydF9hc3ltX3BhdXNlKHRwLVxcdTAwM2VwaHlkZXYpO1xcbi1cXG4tXFx0LyogbWltaWMgYmVoYXZpb3Igb2YgcjgxMjUvcjgxMjYgdmVuZG9yIGRyaXZlcnMgKi9cXG4tXFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzYxKVxcbi1cXHRcXHRwaHlfZGlzYWJsZV9lZWVfbW9kZSh0cC1cXHUwMDNlcGh5ZGV2LFxcbi1cXHRcXHRcXHRcXHQgICAgIEVUSFRPT0xfTElOS19NT0RFXzI1MDBiYXNlVF9GdWxsX0JJVCk7XFxuLVxcbiBcXHQvKiBQSFkgd2lsbCBiZSB3b2tlbiB1cCBpbiBydGxfb3BlbigpICovXFxuIFxcdHBoeV9zdXNwZW5kKHRwLVxcdTAwM2VwaHlkZXYpO1xcbiBcXG5AQCAtNTU5OSw2ICs1NzAzLDIzMyBAQCBzdGF0aWMgYm9vbCBydGxfYXNwbV9pc19zYWZlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHJ0bF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG4rXFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4re1xcbitcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTtcXG4rXFxuK1xcdHRwLVxcdTAwM2VzcGVlZCA9IFNQRUVEX1VOS05PV047XFxuK1xcdHBtX3J1bnRpbWVfaWRsZSh0cF90b19kZXYodHApKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgcnRsX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbitcXHRcXHRcXHQgICAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuK1xcdFxcdFxcdCAgICBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGJvb2wgdHhfcGF1c2UsIGJvb2wgcnhfcGF1c2UpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmQgPSB0cF90b19kZXYodHApO1xcbitcXG4rXFx0dHAtXFx1MDAzZXNwZWVkID0gc3BlZWQ7XFxuK1xcdHJ0bF9saW5rX2NoZ19wYXRjaCh0cCwgc3BlZWQpO1xcbitcXG4rXFx0cG1fcmVxdWVzdF9yZXN1bWUoZCk7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJ0bF9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4re1xcbitcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTtcXG4rXFxuK1xcdGlmICghdHAtXFx1MDAzZXBjcy5vcHMpXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXG4rXFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XFxuK1xcdCAgICBpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSKVxcbitcXHRcXHRyZXR1cm4gXFx1MDAyNnRwLVxcdTAwM2VwY3M7XFxuK1xcbitcXHRyZXR1cm4gTlVMTDtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgcnRsX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbitcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG4re1xcbit9XFxuK1xcbitzdGF0aWMgdTE2IHJ0bDgxNjlfc2RzX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBzZHNfcmVnKVxcbit7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuK1xcdHUxNiB2YWwgPSAwO1xcbitcXG4rXFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZ0cC1cXHUwMDNlbWFjX29jcF9sb2NrLCBmbGFncyk7XFxuK1xcdF9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19BRERSX1JFRywgc2RzX3JlZyk7XFxuK1xcdF9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19DTURfUkVHLCBTRFNfQ01EX1JFQUQpO1xcbitcXHR2YWwgPSBfX3I4MTY4X21hY19vY3BfcmVhZCh0cCwgT0NQX1NEU19EQVRBX1JFRyk7XFxuK1xcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZ0cC1cXHUwMDNlbWFjX29jcF9sb2NrLCBmbGFncyk7XFxuK1xcbitcXHRyZXR1cm4gdmFsO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBydGw4MTY5X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuK1xcdFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbit7XFxuK1xcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcXG4rXFxuK1xcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURikge1xcbitcXHRcXHR1MTYgc3RhdDE7XFxuK1xcbitcXHRcXHRzdGF0MSA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzQ1X0JBU0UgKyBNRElPX1NUQVQxKTtcXG4rXFxuK1xcdFxcdGlmICghKHN0YXQxIFxcdTAwMjYgTURJT19TVEFUMV9MU1RBVFVTKSlcXG4rXFx0XFx0XFx0c3RhdDEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0M0NV9CQVNFICsgTURJT19TVEFUMSk7XFxuK1xcbitcXHRcXHRzdGF0ZS1cXHUwMDNlbGluayA9ICEhKHN0YXQxIFxcdTAwMjYgTURJT19TVEFUMV9MU1RBVFVTKTtcXG4rXFx0XFx0aWYgKCFzdGF0ZS1cXHUwMDNlbGluaylcXG4rXFx0XFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0XFx0c3RhdGUtXFx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xcbitcXHRcXHRzdGF0ZS1cXHUwMDNlc3BlZWQgPSBTUEVFRF8xMDAwMDtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0dTE2IGJtc3IsIGxwYTtcXG4rXFxuK1xcdFxcdGJtc3IgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0MyMl9CQVNFICsgTUlJX0JNU1IpO1xcbitcXHRcXHRscGEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0MyMl9CQVNFICsgTUlJX0xQQSk7XFxuK1xcdFxcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgaW50IHJ0bDgxNjlfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG1vZGUsXFxuK1xcdFxcdFxcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuK1xcdFxcdFxcdCAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkdmVydGlzaW5nLFxcbitcXHRcXHRcXHQgICAgICBib29sIHBlcm1pdF9wYXVzZV90b19tYWMpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwY3MpO1xcbitcXG4rXFx0aWYgKHRwLVxcdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKVxcbitcXHRcXHRyODEyN19zZnBfaW5pdF8xMGcodHApO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODE2OV9wY3NfdmFsaWRhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZCxcXG4rXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXFxuK3tcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgcnRsX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4re1xcbitcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTtcXG4rXFxuK1xcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCBmYWxzZSk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsX21hY19lbmFibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1MzIgdGltZXIsIGJvb2wgdHhfY2xrX3N0b3ApXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XFxuK1xcbitcXHRpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApKVxcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcbitcXHRydGxfZW5hYmxlX3R4X2xwaSh0cCwgdHJ1ZSk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgcnRsX3BoeWxpbmtfbWFjX29wcyA9IHtcXG4rXFx0Lm1hY19zZWxlY3RfcGNzID0gcnRsX21hY19zZWxlY3RfcGNzLFxcbitcXHQubWFjX2NvbmZpZyA9IHJ0bF9tYWNfY29uZmlnLFxcbitcXHQubWFjX2xpbmtfZG93biAgPSBydGxfbWFjX2xpbmtfZG93bixcXG4rXFx0Lm1hY19saW5rX3VwICAgID0gcnRsX21hY19saW5rX3VwLFxcbitcXHQubWFjX2Rpc2FibGVfdHhfbHBpID0gcnRsX21hY19kaXNhYmxlX3R4X2xwaSxcXG4rXFx0Lm1hY19lbmFibGVfdHhfbHBpID0gcnRsX21hY19lbmFibGVfdHhfbHBpLFxcbit9O1xcbitcXG4rc3RhdGljIHVuc2lnbmVkIGxvbmcgcnRsODE2OV9nZXRfbHBpX2NhcHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBjYXBzID0gMDtcXG4rXFxuK1xcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkgfHwgdHAtXFx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0Y2FwcyB8PSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEO1xcbitcXG4rXFx0LyogbWltaWMgYmVoYXZpb3Igb2YgcjgxMjUvcjgxMjYgdmVuZG9yIGRyaXZlcnNcXG4rXFx0ICogUlRMX0dJR0FfTUFDX1ZFUl82MSBkb2Vzbid0IHN1cHBvcnQgMi41RyBlZWVcXG4rXFx0ICovXFxuK1xcdGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gXFx1MDAzZT0gUlRMX0dJR0FfTUFDX1ZFUl82MylcXG4rXFx0XFx0Y2FwcyB8PSBNQUNfMjUwMEZEO1xcbitcXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uIFxcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNzApXFxuK1xcdFxcdGNhcHMgfD0gTUFDXzUwMDBGRDtcXG4rXFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxcbitcXHRcXHRjYXBzIHw9IE1BQ18xMDAwMEZEO1xcbitcXG4rXFx0cmV0dXJuIGNhcHM7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHI4MTY5X3Bjc19vcHMgPSB7XFxuK1xcdC5wY3NfdmFsaWRhdGUgPSBydGw4MTY5X3Bjc192YWxpZGF0ZSxcXG4rXFx0LnBjc19nZXRfc3RhdGUgPSBydGw4MTY5X3Bjc19nZXRfc3RhdGUsXFxuK1xcdC5wY3NfY29uZmlnID0gcnRsODE2OV9wY3NfY29uZmlnLFxcbitcXHQucGNzX2FuX3Jlc3RhcnQgPSBydGw4MTY5X3Bjc19hbl9yZXN0YXJ0LFxcbit9O1xcbitcXG4rc3RhdGljIGludCBydGxfaW5pdF9waHlsaW5rKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbit7XFxuK1xcdHN0cnVjdCBwaHlsaW5rICpwbDtcXG4rXFx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xcbitcXG4rXFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFxcdTAwMjZ0cC1cXHUwMDNlZGV2LVxcdTAwM2VkZXY7XFxuK1xcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XFxuK1xcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfbWFuYWdlZF9wbSA9IHRydWU7XFxuK1xcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gcnRsODE2OV9nZXRfbHBpX2NhcHModHApO1xcbitcXHR0cC1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0U7XFxuK1xcbitcXHRzd2l0Y2ggKHRwLVxcdTAwM2VzZnBfbW9kZSkge1xcbitcXHRjYXNlIFJUTF9TRlBfODE2OF9BRjpcXG4rXFx0XFx0dHAtXFx1MDAzZXBjcy5vcHMgPSBcXHUwMDI2cjgxNjlfcGNzX29wcztcXG4rXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcXG4rXFx0XFx0cGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYO1xcbitcXHRcXHR0cC1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBSVExfU0ZQXzgxMjdfQVRGOlxcbitcXHRcXHR0cC1cXHUwMDNlcGNzLm9wcyA9IFxcdTAwMjZyODE2OV9wY3Nfb3BzO1xcbitcXHRcXHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjtcXG4rXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcXG4rXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDAwRkQ7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcXG4rXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwIHwgTUFDXzEwMDtcXG4rXFxuK1xcdFxcdGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl84MClcXG4rXFx0XFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQgfFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEO1xcbitcXHRcXHRlbHNlIGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl83MClcXG4rXFx0XFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8XFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBNQUNfMjUwMEZEIHwgTUFDXzUwMDBGRDtcXG4rXFx0XFx0ZWxzZSBpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uIFxcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNjEpXFxuK1xcdFxcdFxcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGlmICh0cC1cXHUwMDNlc3VwcG9ydHNfZ21paSlcXG4rXFx0XFx0XFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDtcXG4rXFxuK1xcdFxcdGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gXFx1MDAzYyBSVExfR0lHQV9NQUNfVkVSXzYxKVxcbitcXHRcXHRcXHRwaHlfbW9kZSA9IHRwLVxcdTAwM2VzdXBwb3J0c19nbWlpID8gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkgOlxcbitcXHRcXHRcXHRcXHQgICBQSFlfSU5URVJGQUNFX01PREVfTUlJO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMO1xcbitcXHRcXHRicmVhaztcXG4rXFx0fVxcbitcXG4rXFx0X19zZXRfYml0KHBoeV9tb2RlLCB0cC1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbitcXHRpZiAodHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMpXFxuK1xcdFxcdF9fc2V0X2JpdChwaHlfbW9kZSwgdHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcXG4rXFxuK1xcdHBsID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgdHBfdG9fZGV2KHRwKS1cXHUwMDNlZndub2RlLFxcbitcXHRcXHRcXHQgICAgcGh5X21vZGUsIFxcdTAwMjZydGxfcGh5bGlua19tYWNfb3BzKTtcXG4rXFx0aWYgKElTX0VSUihwbCkpXFxuK1xcdFxcdHJldHVybiBQVFJfRVJSKHBsKTtcXG4rXFxuK1xcdHRwLVxcdTAwM2VwaHlsaW5rID0gcGw7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gKmNoaXA7XFxuQEAgLTU2NjcsNiArNTk5OCw3IEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbiBcXHRcXHRcXHRcXHQgICAgIGV4dF94aWRfc3RyLCB4aWQpO1xcbiBcXHR0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPSBjaGlwLVxcdTAwM2VtYWNfdmVyc2lvbjtcXG4gXFx0dHAtXFx1MDAzZWZ3X25hbWUgPSBjaGlwLVxcdTAwM2Vmd19uYW1lO1xcbitcXHR0cC1cXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xcbiBcXG4gXFx0LyogRGlzYWJsZSBBU1BNIEwxIGFzIHRoYXQgY2F1c2UgcmFuZG9tIGRldmljZSBzdG9wIHdvcmtpbmdcXG4gXFx0ICogcHJvYmxlbXMgYXMgd2VsbCBhcyBmdWxsIHN5c3RlbSBoYW5ncyBmb3Igc29tZSBQQ0llIGRldmljZXMgdXNlcnMuXFxuQEAgLTU2NzksMTIgKzYwMTEsNyBAQCBzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gXFx0fVxcbiBcXHR0cC1cXHUwMDNlYXNwbV9tYW5hZ2VhYmxlID0gIXJjO1xcbiBcXG4tXFx0aWYgKHJ0bF9pc184MTI1KHRwKSkge1xcbi1cXHRcXHR1MTYgZGF0YSA9IHI4MTY4X21hY19vY3BfcmVhZCh0cCwgMHhkMDA2KTtcXG4tXFxuLVxcdFxcdGlmICgoZGF0YSBcXHUwMDI2IDB4ZmYpID09IDB4MDcpXFxuLVxcdFxcdFxcdHRwLVxcdTAwM2VzZnBfbW9kZSA9IHRydWU7XFxuLVxcdH1cXG4rXFx0dHAtXFx1MDAzZXNmcF9tb2RlID0gcnRsX2dldF9zZnBfbW9kZSh0cCk7XFxuIFxcbiBcXHR0cC1cXHUwMDNlZGFzaF90eXBlID0gcnRsX2dldF9kYXNoX3R5cGUodHApO1xcbiBcXHR0cC1cXHUwMDNlZGFzaF9lbmFibGVkID0gcnRsX2Rhc2hfaXNfZW5hYmxlZCh0cCk7XFxuQEAgLTU3ODgsMTMgKzYxMTUsMjMgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuIFxcbiBcXHRwY2lfc2V0X2RydmRhdGEocGRldiwgdHApO1xcbiBcXG4tXFx0cmMgPSByODE2OV9tZGlvX3JlZ2lzdGVyKHRwKTtcXG4rXFx0cmMgPSBydGxfaW5pdF9waHlsaW5rKHRwKTtcXG4gXFx0aWYgKHJjKVxcbiBcXHRcXHRyZXR1cm4gcmM7XFxuIFxcbitcXHRpZiAodHAtXFx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfTk9ORSkge1xcbitcXHRcXHRyYyA9IHI4MTY5X21kaW9fcmVnaXN0ZXIodHApO1xcbitcXHRcXHRpZiAocmMpIHtcXG4rXFx0XFx0XFx0cGh5bGlua19kZXN0cm95KHRwLVxcdTAwM2VwaHlsaW5rKTtcXG4rXFx0XFx0XFx0cmV0dXJuIHJjO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuIFxcdHJjID0gcmVnaXN0ZXJfbmV0ZGV2KGRldik7XFxuLVxcdGlmIChyYylcXG4rXFx0aWYgKHJjKSB7XFxuK1xcdFxcdHBoeWxpbmtfZGVzdHJveSh0cC1cXHUwMDNlcGh5bGluayk7XFxuIFxcdFxcdHJldHVybiByYztcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1I4MTY5X0xFRFMpKSB7XFxuIFxcdFxcdGlmIChydGxfaXNfODEyNSh0cCkpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcXG5pbmRleCBiNjVkMGY1ZmExYTAxNC4uN2Y5MDRkZTU4M2UwNTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xcbkBAIC0yNjQ2LDQ1ICsyNjQ2LDYgQEAgc3RhdGljIGlycXJldHVybl90IHJ0bDgyMjFiX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0cmV0dXJuIElSUV9IQU5ETEVEO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLXtcXG4tXFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwMGJhc2VUX0Z1bGxfQklULFxcbi1cXHRcXHRcXHQgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQpO1xcbi1cXG4tXFx0Lyogc2V0IGRlZmF1bHQgbW9kZSAqL1xcbi1cXHRwaHlkZXYtXFx1MDAzZXNwZWVkID0gU1BFRURfMTAwMDA7XFxuLVxcdHBoeWRldi1cXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0ZVTEw7XFxuLVxcbi1cXHRwaHlkZXYtXFx1MDAzZXBvcnQgPSBQT1JUX0ZJQlJFO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuLX1cXG4tXFxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi17XFxuLVxcdGludCB2YWwsIGVycjtcXG4tXFxuLVxcdGVyciA9IGdlbnBoeV91cGRhdGVfbGluayhwaHlkZXYpO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRyZXR1cm4gZXJyO1xcbi1cXG4tXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWxpbmspXFxuLVxcdFxcdHJldHVybiAwO1xcbi1cXG4tXFx0dmFsID0gcGh5X3JlYWQocGh5ZGV2LCBSVExfUEhZU1IpO1xcbi1cXHRpZiAodmFsIFxcdTAwM2MgMClcXG4tXFx0XFx0cmV0dXJuIHZhbDtcXG4tXFxuLVxcdHJ0bGdlbl9kZWNvZGVfcGh5c3IocGh5ZGV2LCB2YWwpO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuLX1cXG4tXFxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi17XFxuLVxcdHJldHVybiAwO1xcbi19XFxuLVxcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XFxuIFxcdHtcXG4gXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAwMDgyMDEpLFxcbkBAIC0yOTM0LDIwICsyODk1LDYgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xcbiBcXHRcXHQud3JpdGVfcGFnZVxcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxcbiBcXHRcXHQucmVhZF9tbWRcXHQ9IHJ0bDgyMnhfcmVhZF9tbWQsXFxuIFxcdFxcdC53cml0ZV9tbWRcXHQ9IHJ0bDgyMnhfd3JpdGVfbW1kLFxcbi1cXHR9LCB7XFxuLVxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfUlRMX0RVTU1ZX1NGUCksXFxuLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUmVhbHRlayBTRlAgUEhZIE1vZGVcXFwiLFxcbi1cXHRcXHQuZmxhZ3NcXHRcXHQ9IFBIWV9JU19JTlRFUk5BTCxcXG4tXFx0XFx0LnByb2JlXFx0XFx0PSBydGw4MjJ4X3Byb2JlLFxcbi1cXHRcXHQuZ2V0X2ZlYXR1cmVzXFx0PSBydGxnZW5fc2ZwX2dldF9mZWF0dXJlcyxcXG4tXFx0XFx0LmNvbmZpZ19hbmVnXFx0PSBydGxnZW5fc2ZwX2NvbmZpZ19hbmVnLFxcbi1cXHRcXHQucmVhZF9zdGF0dXNcXHQ9IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMsXFxuLVxcdFxcdC5zdXNwZW5kXFx0PSBnZW5waHlfc3VzcGVuZCxcXG4tXFx0XFx0LnJlc3VtZVxcdFxcdD0gcnRsZ2VuX3Jlc3VtZSxcXG4tXFx0XFx0LnJlYWRfcGFnZVxcdD0gcnRsODIxeF9yZWFkX3BhZ2UsXFxuLVxcdFxcdC53cml0ZV9wYWdlXFx0PSBydGw4MjF4X3dyaXRlX3BhZ2UsXFxuLVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeF9yZWFkX21tZCxcXG4tXFx0XFx0LndyaXRlX21tZFxcdD0gcnRsODIyeF93cml0ZV9tbWQsXFxuIFxcdH0sIHtcXG4gXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLFxcbiBcXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJUTDgyMjQgMi41R2JwcyBQSFlcXFwiLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaCBiL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oXFxuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggZDY4M2JjMWIwNjU5Y2QuLjAwMDAwMDAwMDAwMDAwXFxuLS0tIGEvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmhcXG4rKysgL2Rldi9udWxsXFxuQEAgLTEsNyArMCwwIEBAXFxuLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuLSNpZm5kZWYgX1JFQUxURUtfUEhZX0hcXG4tI2RlZmluZSBfUkVBTFRFS19QSFlfSFxcbi1cXG4tI2RlZmluZVxcdFBIWV9JRF9SVExfRFVNTVlfU0ZQXFx0MHgwMDFjY2JmZlxcbi1cXG4tI2VuZGlmIC8qIF9SRUFMVEVLX1BIWV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDExOjAwOjU4LjUxOTczNTYzNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA2MjUyNjEwMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSByODE2OSBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIGRyaXZlciBmb3IgcGh5c2ljYWwgUmVhbHRlayBHaWdhYml0IEV0aGVybmV0IGFkYXB0ZXJzLiBTaW5jZSB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBieSBRRU1VIG9yIEdDRSwgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFBDSSBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBpbmplY3QgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YzQzOWMxZTlmYzEwMzU3OWE5MDVlMmJhMTQ1MDk4YzQyMjg3YzI0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxMTowMDo1NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1xuaW5kZXggOWIwZjRmOTYzMWRiYWEuLjQ5YWM3MjczNDIyNWY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcbkBAIC04OCw2ICs4OCw3IEBAIGNvbmZpZyBSODE2OVxuIFx0c2VsZWN0IENSQzMyXG4gXHRzZWxlY3QgUEhZTElCXG4gXHRzZWxlY3QgUkVBTFRFS19QSFlcbitcdHNlbGVjdCBQSFlMSU5LXG4gXHRoZWxwXG4gXHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBSZWFsdGVrIEV0aGVybmV0IGFkYXB0ZXIgYmVsb25naW5nIHRvXG4gXHQgIHRoZSBmb2xsb3dpbmcgZmFtaWxpZXM6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuaW5kZXggZWM0ZmMyMWZhMjFmYjAuLjI2ZDk2ZWRiM2M0MjA3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5AQCAtMjYsNiArMjYsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RtYS1tYXBwaW5nLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5bGluay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHJlZmV0Y2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lwdjYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXHUwMDNlXG5AQCAtOTYsNiArOTcsMjIgQEBcbiAjZGVmaW5lIEpVTUJPXzlLXHQoOSAqIFNaXzFLIC0gVkxBTl9FVEhfSExFTiAtIEVUSF9GQ1NfTEVOKVxuICNkZWZpbmUgSlVNQk9fMTZLXHQoU1pfMTZLIC0gVkxBTl9FVEhfSExFTiAtIEVUSF9GQ1NfTEVOKVxuIFxuKyNkZWZpbmUgT0NQX1NEU19BRERSX1JFR1x0XHQweEVCMTBcbisjZGVmaW5lIE9DUF9TRFNfQ01EX1JFR1x0XHRcdDB4RUIwRVxuKyNkZWZpbmUgT0NQX1NEU19EQVRBX1JFR1x0XHQweEVCMTRcbisjZGVmaW5lIFNEU19DTURfUkVBRFx0XHRcdDB4MDAwMVxuKyNkZWZpbmUgUlRMX1NEU19DMjJfQkFTRVx0XHQweDQwXG4rI2RlZmluZSBSVExfU0RTX0M0NV9CQVNFXHRcdDB4MDA4MFxuKyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RcdFx0XHQweGRjMDBcbisjZGVmaW5lIFJUTF9QS0dfREVURUNUX01BU0tcdFx0MHgwMDc4XG4rI2RlZmluZSBSVExfUEtHX0RFVEVDVF84MTE2QUZcdFx0MHgwMDMwXG4rI2RlZmluZSBSVExfSU5UX0hXX0lEXHRcdFx0MHhkMDA2XG4rI2RlZmluZSBSVExfSU5UX0hXX0lEX01BU0tcdFx0MHgwMGZmXG4rI2RlZmluZSBSVExfSU5UX0hXX0lEXzgxMTZBRlx0XHQweDAwMDBcbisjZGVmaW5lIFJUTDgxMTZBRl9GVU5DX1BNX0NTUlx0XHQweDgwXG4rI2RlZmluZSBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMXHQweDQ0XG4rI2RlZmluZSBSVExfUE1fRDNIT1RcdFx0XHRHRU5NQVNLKDEsIDApXG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHtcbiBcdHUzMiBtYXNrO1xuIFx0dTMyIHZhbDtcbkBAIC0zMzQsMTEgKzM1MSwxMyBAQCBlbnVtIHJ0bF9yZWdpc3RlcnMge1xuIFx0QUxEUFNfTFRSXHQ9IDB4ZTBhMixcbiBcdExUUl9PQkZGX0xPQ0tcdD0gMHhlMDMyLFxuIFx0TFRSX1NOT09QXHQ9IDB4ZTAzNCxcbitcdFNFTkRfTFRSX01TR1x0PSAweGUwMzgsXG4gXG4gI2RlZmluZSBBTERQU19MVFJfRU5cdFx0XHRCSVQoMClcbiAjZGVmaW5lIExUUl9PQkZGX0xPQ0tfRU5cdFx0QklUKDApXG4gI2RlZmluZSBMSU5LX1NQRUVEX0NIQU5HRV9FTlx0XHRCSVQoMTQpXG4gI2RlZmluZSBMVFJfU05PT1BfRU5cdFx0XHRHRU5NQVNLKDE1LCAxNClcbisjZGVmaW5lIExUUl9NU0dfRU5cdFx0XHRCSVQoMClcbiB9O1xuIFxuIGVudW0gcnRsODE2OF84MTAxX3JlZ2lzdGVycyB7XG5AQCAtNzI4LDYgKzc0NywxMiBAQCBlbnVtIHJ0bF9kYXNoX3R5cGUge1xuIFx0UlRMX0RBU0hfMjVfQlAsXG4gfTtcbiBcbitlbnVtIHJ0bF9zZnBfbW9kZSB7XG4rXHRSVExfU0ZQX05PTkUsXG4rXHRSVExfU0ZQXzgxNjhfQUYsXG4rXHRSVExfU0ZQXzgxMjdfQVRGLFxuK307XG4rXG4gc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHR2b2lkIF9faW9tZW0gKm1taW9fYWRkcjtcdC8qIG1lbW9yeSBtYXAgcGh5c2ljYWwgYWRkcmVzcyAqL1xuIFx0c3RydWN0IHBjaV9kZXYgKnBjaV9kZXY7XG5AQCAtNzM2LDYgKzc2MSw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XG4gXHRlbnVtIG1hY192ZXJzaW9uIG1hY192ZXJzaW9uO1xuIFx0ZW51bSBydGxfZGFzaF90eXBlIGRhc2hfdHlwZTtcbitcdGVudW0gcnRsX3NmcF9tb2RlIHNmcF9tb2RlO1xuIFx0dTMyIGN1cl9yeDsgLyogSW5kZXggaW50byB0aGUgUnggZGVzY3JpcHRvciBidWZmZXIgb2YgbmV4dCBSeCBwa3QuICovXG4gXHR1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cbiBcdHUzMiBkaXJ0eV90eDtcbkBAIC03NTAsNiArNzc2LDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHR1MzIgaXJxX21hc2s7XG4gXHRpbnQgaXJxO1xuIFx0c3RydWN0IGNsayAqY2xrO1xuK1x0aW50IHNwZWVkO1xuIFxuIFx0c3RydWN0IHtcbiBcdFx0REVDTEFSRV9CSVRNQVAoZmxhZ3MsIFJUTF9GTEFHX01BWCk7XG5AQCAtNzYyLDcgKzc4OSw2IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dW5zaWduZWQgc3VwcG9ydHNfZ21paToxO1xuIFx0dW5zaWduZWQgYXNwbV9tYW5hZ2VhYmxlOjE7XG4gXHR1bnNpZ25lZCBkYXNoX2VuYWJsZWQ6MTtcbi1cdGJvb2wgc2ZwX21vZGU6MTtcbiBcdGRtYV9hZGRyX3QgY291bnRlcnNfcGh5c19hZGRyO1xuIFx0c3RydWN0IHJ0bDgxNjlfY291bnRlcnMgKmNvdW50ZXJzO1xuIFx0c3RydWN0IHJ0bDgxNjlfdGNfb2Zmc2V0cyB0Y19vZmZzZXQ7XG5AQCAtNzc0LDYgKzgwMCwxMSBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHtcbiBcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxlZHM7XG4gXG4gXHR1MzIgb2NwX2Jhc2U7XG4rXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcbitcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyBwaHlsaW5rX2NvbmZpZztcbitcdHN0cnVjdCBwaHlsaW5rX3BjcyBwY3M7XG4rXHRzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtIHNhdmVkX3BhdXNlO1xuK1x0Ym9vbCBqdW1ib19wYXVzZV9zYXZlZDtcbiB9O1xuIFxuIHR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xuQEAgLTExMjgsMTAgKzExNTksNiBAQCBzdGF0aWMgaW50IHI4MTY4X3BoeV9vY3BfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZylcbiBcdGlmIChydGxfb2NwX3JlZ19mYWlsdXJlKHJlZykpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0LyogUmV0dXJuIGR1bW15IE1JSV9QSFlTSUQyIGluIFNGUCBtb2RlIHRvIG1hdGNoIFNGUCBQSFkgZHJpdmVyICovXG4tXHRpZiAodHAtXHUwMDNlc2ZwX21vZGUgXHUwMDI2XHUwMDI2IHJlZyA9PSAoT0NQX1NURF9QSFlfQkFTRSArIDIgKiBNSUlfUEhZU0lEMikpXG4tXHRcdHJldHVybiBQSFlfSURfUlRMX0RVTU1ZX1NGUCBcdTAwMjYgMHhmZmZmO1xuLVxuIFx0UlRMX1czMih0cCwgR1BIWV9PQ1AsIHJlZyBcdTAwM2NcdTAwM2MgMTUpO1xuIFxuIFx0cmV0dXJuIHJ0bF9sb29wX3dhaXRfaGlnaCh0cCwgXHUwMDI2cnRsX29jcF9ncGh5X2NvbmQsIDI1LCAxMCkgP1xuQEAgLTEyMTcsMTIgKzEyNDQsNiBAQCBzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xMGcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MDQsICh2YWwgXHUwMDI2IH4weDAwMGYpIHwgMHgwMDBjKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnRsX3NmcF9pbml0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLXtcbi1cdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuLVx0XHRyODEyN19zZnBfaW5pdF8xMGcodHApO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBydGxfc2ZwX3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuQEAgLTEyODMsNiArMTMwNCwxNSBAQCBzdGF0aWMgdm9pZCBtYWNfbWN1X3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpXG4gXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCB0cC1cdTAwM2VvY3BfYmFzZSArIHJlZywgdmFsdWUpO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBydGxfaXNfODExNmFmKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuK3tcbitcdHJldHVybiB0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzUyIFx1MDAyNlx1MDAyNlxuK1x0XHQocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfUEtHX0RFVEVDVCkgXHUwMDI2IFJUTF9QS0dfREVURUNUX01BU0spID09XG4rXHRcdFJUTF9QS0dfREVURUNUXzgxMTZBRiBcdTAwMjZcdTAwMjZcbitcdFx0KHI4MTY4X21hY19vY3BfcmVhZCh0cCwgUlRMX0lOVF9IV19JRCkgXHUwMDI2IFJUTF9JTlRfSFdfSURfTUFTSykgPT1cbitcdFx0UlRMX0lOVF9IV19JRF84MTE2QUY7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbWFjX21jdV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxuIHtcbiBcdHJldHVybiByODE2OF9tYWNfb2NwX3JlYWQodHAsIHRwLVx1MDAzZW9jcF9iYXNlICsgcmVnKTtcbkBAIC0xNTc4LDYgKzE2MDgsMjAgQEAgc3RhdGljIGJvb2wgcnRsX2Rhc2hfaXNfZW5hYmxlZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdH1cbiB9XG4gXG4rc3RhdGljIGVudW0gcnRsX3NmcF9tb2RlIHJ0bF9nZXRfc2ZwX21vZGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4re1xuK1x0aWYgKHJ0bF9pc184MTI1KHRwKSkge1xuK1x0XHR1MTYgZGF0YSA9IHI4MTY4X21hY19vY3BfcmVhZCh0cCwgUlRMX0lOVF9IV19JRCk7XG4rXG4rXHRcdGlmICgoZGF0YSBcdTAwMjYgMHhmZikgPT0gMHgwNylcbitcdFx0XHRyZXR1cm4gUlRMX1NGUF84MTI3X0FURjtcbitcdH0gZWxzZSBpZiAocnRsX2lzXzgxMTZhZih0cCkpIHtcbitcdFx0cmV0dXJuIFJUTF9TRlBfODE2OF9BRjtcbitcdH1cbitcbitcdHJldHVybiBSVExfU0ZQX05PTkU7XG4rfVxuK1xuIHN0YXRpYyBlbnVtIHJ0bF9kYXNoX3R5cGUgcnRsX2dldF9kYXNoX3R5cGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuIFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuQEAgLTE2NzMsMTYgKzE3MTcsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pcnFfbWFza19hbmRfYWNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0cnRsX3BjaV9jb21taXQodHApO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4rc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgc3BlZWQpXG4ge1xuLVx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRwLVx1MDAzZXBoeWRldjtcbi1cbiBcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM0IHx8XG4gXHQgICAgdHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zOCkge1xuLVx0XHRpZiAocGh5ZGV2LVx1MDAzZXNwZWVkID09IFNQRUVEXzEwMDApIHtcbitcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbi1cdFx0fSBlbHNlIGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwKSB7XG4rXHRcdH0gZWxzZSBpZiAoc3BlZWQgPT0gU1BFRURfMTAwKSB7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxYmMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAxZik7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAwNSk7XG4gXHRcdH0gZWxzZSB7XG5AQCAtMTY5Miw3ICsxNzM0LDcgQEAgc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRydGxfcmVzZXRfcGFja2V0X2ZpbHRlcih0cCk7XG4gXHR9IGVsc2UgaWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzUgfHxcbiBcdFx0ICAgdHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNikge1xuLVx0XHRpZiAocGh5ZGV2LVx1MDAzZXNwZWVkID09IFNQRUVEXzEwMDApIHtcbitcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0xNzAwLDcgKzE3NDIsNyBAQCBzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAzZik7XG4gXHRcdH1cbiBcdH0gZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNykge1xuLVx0XHRpZiAocGh5ZGV2LVx1MDAzZXNwZWVkID09IFNQRUVEXzEwKSB7XG4rXHRcdGlmIChzcGVlZCA9PSBTUEVFRF8xMCkge1xuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWQwLCBFUklBUl9NQVNLXzAwMTEsIDB4NGQwMik7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMDAxMSwgMHgwMDYwYSk7XG4gXHRcdH0gZWxzZSB7XG5AQCAtMjA3NCwxMSArMjExNiwxMSBAQCBydGxfY29hbGVzY2VfaW5mbyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0Y2kgPSBydGxfY29hbGVzY2VfaW5mb184MTY4XzgxMzY7XG4gXG4gXHQvKiBpZiBzcGVlZCBpcyB1bmtub3duIGFzc3VtZSBoaWdoZXN0IG9uZSAqL1xuLVx0aWYgKHRwLVx1MDAzZXBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF9VTktOT1dOKVxuK1x0aWYgKHRwLVx1MDAzZXNwZWVkID09IFNQRUVEX1VOS05PV04pXG4gXHRcdHJldHVybiBjaTtcbiBcbiBcdGZvciAoOyBjaS1cdTAwM2VzcGVlZDsgY2krKykge1xuLVx0XHRpZiAodHAtXHUwMDNlcGh5ZGV2LVx1MDAzZXNwZWVkID09IGNpLVx1MDAzZXNwZWVkKVxuK1x0XHRpZiAodHAtXHUwMDNlc3BlZWQgPT0gY2ktXHUwMDNlc3BlZWQpXG4gXHRcdFx0cmV0dXJuIGNpO1xuIFx0fVxuIFxuQEAgLTIyMzYsNyArMjI3OCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9zZXRfZWVlX3R4aWRsZV90aW1lcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBzdGF0aWMgdW5zaWduZWQgaW50IHI4MTY5X2dldF90eF9scGlfdGltZXJfdXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuLVx0dW5zaWduZWQgaW50IHNwZWVkID0gdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZXNwZWVkO1xuK1x0dW5zaWduZWQgaW50IHNwZWVkID0gdHAtXHUwMDNlc3BlZWQ7XG4gXHR1bnNpZ25lZCBpbnQgdGltZXIgPSB0cC1cdTAwM2V0eF9scGlfdGltZXI7XG4gXG4gXHRpZiAoIXRpbWVyIHx8IHNwZWVkID09IFNQRUVEX1VOS05PV04pXG5AQCAtMjI1NCw3ICsyMjk2LDcgQEAgc3RhdGljIGludCBydGw4MTY5X2dldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZGF0YSlcbiBcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbi1cdHJldCA9IHBoeV9ldGh0b29sX2dldF9lZWUodHAtXHUwMDNlcGh5ZGV2LCBkYXRhKTtcbitcdHJldCA9IHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKHRwLVx1MDAzZXBoeWxpbmssIGRhdGEpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbkBAIC0yMjcwLDcgKzIzMTIsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxuIFx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0cmV0dXJuIHBoeV9ldGh0b29sX3NldF9lZWUodHAtXHUwMDNlcGh5ZGV2LCBkYXRhKTtcbitcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjMwMSwxMyArMjM0Myw4IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKmRhdGEpXG4ge1xuIFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpO1xuLVx0Ym9vbCB0eF9wYXVzZSwgcnhfcGF1c2U7XG4gXG4tXHRwaHlfZ2V0X3BhdXNlKHRwLVx1MDAzZXBoeWRldiwgXHUwMDI2dHhfcGF1c2UsIFx1MDAyNnJ4X3BhdXNlKTtcbi1cbi1cdGRhdGEtXHUwMDNlYXV0b25lZyA9IHRwLVx1MDAzZXBoeWRldi1cdTAwM2VhdXRvbmVnO1xuLVx0ZGF0YS1cdTAwM2V0eF9wYXVzZSA9IHR4X3BhdXNlID8gMSA6IDA7XG4tXHRkYXRhLVx1MDAzZXJ4X3BhdXNlID0gcnhfcGF1c2UgPyAxIDogMDtcbitcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MTY5X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjMxOCw5ICsyMzU1LDcgQEAgc3RhdGljIGludCBydGw4MTY5X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZGV2LVx1MDAzZW10dSBcdTAwM2UgRVRIX0RBVEFfTEVOKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4tXHRwaHlfc2V0X2FzeW1fcGF1c2UodHAtXHUwMDNlcGh5ZGV2LCBkYXRhLVx1MDAzZXJ4X3BhdXNlLCBkYXRhLVx1MDAzZXR4X3BhdXNlKTtcbi1cbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX21hY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTIzODYsMzQgKzI0MjEsMjcgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX2N0cmxfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0bGUzMl90b19jcHUodHAtXHUwMDNlY291bnRlcnMtXHUwMDNlcnhfdW5rbm93bl9vcGNvZGUpO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbitzdGF0aWMgaW50IHJ0bDgxNjlfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuK1x0XHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbiB7XG4gXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpO1xuLVx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRwLVx1MDAzZXBoeWRldjtcbi1cdGludCBkdXBsZXggPSBjbWQtXHUwMDNlYmFzZS5kdXBsZXg7XG4tXHRpbnQgc3BlZWQgPSBjbWQtXHUwMDNlYmFzZS5zcGVlZDtcbi1cbi1cdGlmICghdHAtXHUwMDNlc2ZwX21vZGUpXG4tXHRcdHJldHVybiBwaHlfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHBoeWRldiwgY21kKTtcbiBcbi1cdGlmIChjbWQtXHUwMDNlYmFzZS5hdXRvbmVnICE9IEFVVE9ORUdfRElTQUJMRSlcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXG4tXHRpZiAoIXBoeV9jaGVja192YWxpZChzcGVlZCwgZHVwbGV4LCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKSlcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2Vsb2NrKTtcbitcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCh0cC1cdTAwM2VwaHlsaW5rLCBjbWQpO1xuK31cbiBcbi1cdHBoeWRldi1cdTAwM2VhdXRvbmVnID0gQVVUT05FR19ESVNBQkxFO1xuLVx0cGh5ZGV2LVx1MDAzZXNwZWVkID0gc3BlZWQ7XG4tXHRwaHlkZXYtXHUwMDNlZHVwbGV4ID0gZHVwbGV4O1xuK3N0YXRpYyBpbnQgcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4rXHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXG4tXHRydGxfc2ZwX2luaXQodHApO1xuK1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHRwLVx1MDAzZXBoeWxpbmssIGNtZCk7XG4rfVxuIFxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2Vsb2NrKTtcbitzdGF0aWMgaW50IHJ0bDgxNjlfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KHRwLVx1MDAzZXBoeWxpbmspO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHJ0bDgxNjlfZXRodG9vbF9vcHMgPSB7XG5AQCAtMjQzMSwxMCArMjQ1OSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHJ0bDgxNjlfZXRodG9vbF9vcHMgPSB7XG4gXHQuZ2V0X3NzZXRfY291bnRcdFx0PSBydGw4MTY5X2dldF9zc2V0X2NvdW50LFxuIFx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IHJ0bDgxNjlfZ2V0X2V0aHRvb2xfc3RhdHMsXG4gXHQuZ2V0X3RzX2luZm9cdFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxuLVx0Lm53YXlfcmVzZXRcdFx0PSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxuK1x0Lm53YXlfcmVzZXRcdFx0PSBydGw4MTY5X253YXlfcmVzZXQsXG4gXHQuZ2V0X2VlZVx0XHQ9IHJ0bDgxNjlfZ2V0X2VlZSxcbiBcdC5zZXRfZWVlXHRcdD0gcnRsODE2OV9zZXRfZWVlLFxuLVx0LmdldF9saW5rX2tzZXR0aW5nc1x0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXG4rXHQuZ2V0X2xpbmtfa3NldHRpbmdzXHQ9IHJ0bDgxNjlfZ2V0X2xpbmtfa3NldHRpbmdzLFxuIFx0LnNldF9saW5rX2tzZXR0aW5nc1x0PSBydGw4MTY5X3NldF9saW5rX2tzZXR0aW5ncyxcbiBcdC5nZXRfcmluZ3BhcmFtXHRcdD0gcnRsODE2OV9nZXRfcmluZ3BhcmFtLFxuIFx0LmdldF9wYXVzZV9zdGF0c1x0PSBydGw4MTY5X2dldF9wYXVzZV9zdGF0cyxcbkBAIC0yNDk5LDkgKzI1MjcsMTAgQEAgdm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0dHAtXHUwMDNlb2NwX2Jhc2UgPSBPQ1BfU1REX1BIWV9CQVNFO1xuIFxuIFx0XHQvKiBQSFkgc29mdCByZXNldCBtYXkgc3RpbGwgYmUgaW4gcHJvZ3Jlc3MgKi9cbi1cdFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcbi1cdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbi1cdFx0XHRcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xuK1x0XHRpZiAodHAtXHUwMDNlcGh5ZGV2KVxuK1x0XHRcdHBoeV9yZWFkX3BvbGxfdGltZW91dCh0cC1cdTAwM2VwaHlkZXYsIE1JSV9CTUNSLCB2YWwsXG4rXHRcdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbitcdFx0XHRcdFx0ICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7XG4gXHR9XG4gfVxuIFxuQEAgLTI1MzgsNiArMjU2Nyw4IEBAIHN0YXRpYyB2b2lkIHJ0bF9zY2hlZHVsZV90YXNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBlbnVtIHJ0bF9mbGFnIGZsYWcpXG4gXG4gc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3BoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4rXHRwaHlfaW5pdF9odyh0cC1cdTAwM2VwaHlkZXYpO1xuK1x0cGh5X3Jlc3VtZSh0cC1cdTAwM2VwaHlkZXYpO1xuIFx0cjgxNjlfaHdfcGh5X2NvbmZpZyh0cCwgdHAtXHUwMDNlcGh5ZGV2LCB0cC1cdTAwM2VtYWNfdmVyc2lvbik7XG4gXG4gXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNjPSBSVExfR0lHQV9NQUNfVkVSXzA2KSB7XG5AQCAtMjU1Miw5ICsyNTgzLDYgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3BoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdCAgICB0cC1cdTAwM2VwY2lfZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UgPT0gMHhlMDAwKVxuIFx0XHRwaHlfd3JpdGVfcGFnZWQodHAtXHUwMDNlcGh5ZGV2LCAweDAwMDEsIDB4MTAsIDB4ZjAxYik7XG4gXG4tXHRpZiAodHAtXHUwMDNlc2ZwX21vZGUpXG4tXHRcdHJ0bF9zZnBfaW5pdCh0cCk7XG4tXG4gXHQvKiBXZSBtYXkgaGF2ZSBjYWxsZWQgcGh5X3NwZWVkX2Rvd24gYmVmb3JlICovXG4gXHRwaHlfc3BlZWRfdXAodHAtXHUwMDNlcGh5ZGV2KTtcbiBcbkBAIC0yNjI0LDYgKzI2NTIsNTEgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3JpbmdfaW5kZXhlcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHRwLVx1MDAzZWRpcnR5X3R4ID0gdHAtXHUwMDNlY3VyX3R4ID0gdHAtXHUwMDNlY3VyX3J4ID0gMDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZ19wYXVzZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbit7XG4rXHRib29sIGp1bWJvID0gdHAtXHUwMDNlZGV2LVx1MDAzZW10dSBcdTAwM2UgRVRIX0RBVEFfTEVOO1xuK1x0c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSBwYXVzZSA9IHt9O1xuK1xuK1x0QVNTRVJUX1JUTkwoKTtcbitcbitcdGlmIChqdW1ibykge1xuK1x0XHRpZiAoIXRwLVx1MDAzZWp1bWJvX3BhdXNlX3NhdmVkKSB7XG4rXHRcdFx0c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgY21kID0ge307XG4rXHRcdFx0Ym9vbCBhZHZfcGF1c2UsIGFkdl9hc3ltO1xuK1xuK1x0XHRcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC1cdTAwM2VwaHlsaW5rLCBcdTAwMjZ0cC1cdTAwM2VzYXZlZF9wYXVzZSk7XG4rXHRcdFx0aWYgKHRwLVx1MDAzZXNhdmVkX3BhdXNlLmF1dG9uZWcpIHtcbitcdFx0XHRcdHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KHRwLVx1MDAzZXBoeWxpbmssIFx1MDAyNmNtZCk7XG4rXHRcdFx0XHRhZHZfcGF1c2UgPSBldGh0b29sX2xpbmtfa3NldHRpbmdzX3Rlc3RfbGlua19tb2RlKFx1MDAyNmNtZCxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdCAgYWR2ZXJ0aXNpbmcsXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFBhdXNlKTtcbitcdFx0XHRcdGFkdl9hc3ltICA9IGV0aHRvb2xfbGlua19rc2V0dGluZ3NfdGVzdF9saW5rX21vZGUoXHUwMDI2Y21kLFxuK1x0XHRcdFx0XHRcdFx0XHRcdFx0ICBhZHZlcnRpc2luZyxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdCAgQXN5bV9QYXVzZSk7XG4rXHRcdFx0XHRpZiAoYWR2X3BhdXNlIFx1MDAyNlx1MDAyNiAhYWR2X2FzeW0pIHtcbitcdFx0XHRcdFx0dHAtXHUwMDNlc2F2ZWRfcGF1c2UucnhfcGF1c2UgPSAxO1xuK1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDE7XG4rXHRcdFx0XHR9IGVsc2UgaWYgKGFkdl9wYXVzZSBcdTAwMjZcdTAwMjYgYWR2X2FzeW0pIHtcbitcdFx0XHRcdFx0dHAtXHUwMDNlc2F2ZWRfcGF1c2UucnhfcGF1c2UgPSAxO1xuK1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDA7XG4rXHRcdFx0XHR9IGVsc2UgaWYgKCFhZHZfcGF1c2UgXHUwMDI2XHUwMDI2IGFkdl9hc3ltKSB7XG4rXHRcdFx0XHRcdHRwLVx1MDAzZXNhdmVkX3BhdXNlLnJ4X3BhdXNlID0gMDtcbitcdFx0XHRcdFx0dHAtXHUwMDNlc2F2ZWRfcGF1c2UudHhfcGF1c2UgPSAxO1xuK1x0XHRcdFx0fSBlbHNlIHtcbitcdFx0XHRcdFx0dHAtXHUwMDNlc2F2ZWRfcGF1c2UucnhfcGF1c2UgPSAwO1xuK1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDA7XG4rXHRcdFx0XHR9XG4rXHRcdFx0fVxuK1x0XHRcdHRwLVx1MDAzZWp1bWJvX3BhdXNlX3NhdmVkID0gdHJ1ZTtcbitcdFx0fVxuK1x0XHRwYXVzZS5hdXRvbmVnID0gdHAtXHUwMDNlc2F2ZWRfcGF1c2UuYXV0b25lZztcbitcdFx0cGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHRwLVx1MDAzZXBoeWxpbmssIFx1MDAyNnBhdXNlKTtcbitcdH0gZWxzZSBpZiAodHAtXHUwMDNlanVtYm9fcGF1c2Vfc2F2ZWQpIHtcbitcdFx0cGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHRwLVx1MDAzZXBoeWxpbmssIFx1MDAyNnRwLVx1MDAzZXNhdmVkX3BhdXNlKTtcbitcdFx0dHAtXHUwMDNlanVtYm9fcGF1c2Vfc2F2ZWQgPSBmYWxzZTtcbitcdH1cbit9XG4rXG4gc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4gXHRib29sIGp1bWJvID0gdHAtXHUwMDNlZGV2LVx1MDAzZW10dSBcdTAwM2UgRVRIX0RBVEFfTEVOO1xuQEAgLTI2NTcsMTUgKzI3MzAsNiBAQCBzdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIFx0aWYgKHBjaV9pc19wY2llKHRwLVx1MDAzZXBjaV9kZXYpIFx1MDAyNlx1MDAyNiB0cC1cdTAwM2VzdXBwb3J0c19nbWlpKVxuIFx0XHRwY2llX3NldF9yZWFkcnEodHAtXHUwMDNlcGNpX2RldiwgcmVhZHJxKTtcbi1cbi1cdC8qIENoaXAgZG9lc24ndCBzdXBwb3J0IHBhdXNlIGluIGp1bWJvIG1vZGUgKi9cbi1cdGlmIChqdW1ibykge1xuLVx0XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfUGF1c2VfQklULFxuLVx0XHRcdFx0ICAgdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZWFkdmVydGlzaW5nKTtcbi1cdFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULFxuLVx0XHRcdFx0ICAgdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZWFkdmVydGlzaW5nKTtcbi1cdFx0cGh5X3N0YXJ0X2FuZWcodHAtXHUwMDNlcGh5ZGV2KTtcbi1cdH1cbiB9XG4gXG4gREVDTEFSRV9SVExfQ09ORChydGxfY2hpcGNtZF9jb25kKVxuQEAgLTI3ODAsNyArMjg0NCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9wcmVwYXJlX3Bvd2VyX2Rvd24oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdHJ0bF9lcGh5X3dyaXRlKHRwLCAweDE5LCAweGZmNjQpO1xuIFxuIFx0aWYgKGRldmljZV9tYXlfd2FrZXVwKHRwX3RvX2Rldih0cCkpKSB7XG4tXHRcdHBoeV9zcGVlZF9kb3duKHRwLVx1MDAzZXBoeWRldiwgZmFsc2UpO1xuK1x0XHRwaHlsaW5rX3NwZWVkX2Rvd24odHAtXHUwMDNlcGh5bGluaywgZmFsc2UpO1xuIFx0XHRydGxfd29sX2VuYWJsZV9yeCh0cCk7XG4gXHR9XG4gfVxuQEAgLTI4MzIsNiArMjg5NiwxNiBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X3NldF9tYWdpY19yZWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRSVExfVzMyKHRwLCAweDdjLCB2YWwpO1xuIH1cbiBcbitzdGF0aWMgaW50IHJ0bDgxNjlfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXG4re1xuK1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpO1xuK1xuK1x0aWYgKCFuZXRpZl9ydW5uaW5nKGRldikpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0cmV0dXJuIHBoeWxpbmtfbWlpX2lvY3RsKHRwLVx1MDAzZXBoeWxpbmssIGlmciwgY21kKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgcnRsX3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0dTMyIHJ4X21vZGUgPSBBY2NlcHRCcm9hZGNhc3QgfCBBY2NlcHRNeVBoeXMgfCBBY2NlcHRNdWx0aWNhc3Q7XG5AQCAtMzA5OCw4ICszMTcyLDIyIEBAIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZjIsIDB4OTAwMyk7XG4gXHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfT0JGRl9MT0NLLCAweDAwMDAsIExJTktfU1BFRURfQ0hBTkdFX0VOKTtcbiBcdFx0YnJlYWs7XG4tXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNDYgLi4uIFJUTF9HSUdBX01BQ19WRVJfNDg6XG4gXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6XG4rXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTtcbitcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwMmMsIDB4MTg4MCk7XG4rXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4ZTAyZSwgMHg0ODgwKTtcbitcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDgsIDB4OTAwMyk7XG4rXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYSwgMHg5MDAzKTtcbitcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDIsIDB4ODgzYyk7XG4rXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNCwgMHg4YzEyKTtcbitcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwYTYsIDB4OTAwMyk7XG4rXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4ZTBhOCwgMHg5MDAzKTtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNDYgLi4uIFJUTF9HSUdBX01BQ19WRVJfNDg6XG4gXHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBBTERQU19MVFIsIDB4MDAwMCwgQUxEUFNfTFRSX0VOKTtcbiBcdFx0UlRMX1c4KHRwLCBDT01CT19MVFJfRVhURU5ELCBSVExfUjgodHAsIENPTUJPX0xUUl9FWFRFTkQpIHwgQ09NQk9fTFRSX0VYVEVORF9FTik7XG4gXHRcdGZhbGx0aHJvdWdoO1xuQEAgLTMxMTksNiArMzIwNyw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0fVxuIFx0LyogY2hpcCBjYW4gdHJpZ2dlciBMVFIgKi9cbiBcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfT0JGRl9MT0NLLCAweDAwMDMsIExUUl9PQkZGX0xPQ0tfRU4pO1xuK1x0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIFNFTkRfTFRSX01TRywgMHgwMDAwLCBMVFJfTVNHX0VOKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG5AQCAtMzE1Miw2ICszMjQxLDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4gXHRcdHJ0bF9lbmFibGVfbHRyKHRwKTtcbiBcdFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuIFx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNDYgLi4uIFJUTF9HSUdBX01BQ19WRVJfNDg6XG4rXHRcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl81MjpcbiBcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzYxIC4uLiBSVExfR0lHQV9NQUNfVkVSX0xBU1Q6XG4gXHRcdFx0LyogcmVzZXQgZXBoeSB0eC9yeCBkaXNhYmxlIHRpbWVyICovXG4gXHRcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5NCwgMHhmZjAwLCAwKTtcbkBAIC0zMTY0LDYgKzMyNTQsNyBAQCBzdGF0aWMgdm9pZCBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcbiBcdH0gZWxzZSB7XG4gXHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuK1x0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6XG4gXHRcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl82MSAuLi4gUlRMX0dJR0FfTUFDX1ZFUl9MQVNUOlxuIFx0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwOTIsIDB4MDBmZiwgMCk7XG4gXHRcdFx0YnJlYWs7XG5AQCAtMzY1Nyw2ICszNzQ4LDM1IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTY4ZXBfMyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGU4NjAsIDB4MDAwMCwgMHgwMDgwKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4re1xuK1x0dW5zaWduZWQgaW50IHNsb3QgPSBQQ0lfU0xPVChwZGV2LVx1MDAzZWRldmZuKTtcbitcdHN0cnVjdCBwY2lfYnVzICpidXMgPSBwZGV2LVx1MDAzZWJ1cztcbitcdHVuc2lnbmVkIGludCBkZXZmbjtcbitcdGludCBmdW5jO1xuK1x0aW50IHJldDtcbitcdHUzMiB2YWw7XG4rXG4rXHRmb3IgKGZ1bmMgPSAyOyBmdW5jIFx1MDAzYyA4OyBmdW5jKyspIHtcbitcdFx0ZGV2Zm4gPSBQQ0lfREVWRk4oc2xvdCwgZnVuYyk7XG4rXG4rXHRcdHJldCA9IHBjaV9idXNfcmVhZF9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfUE1fQ1NSLCBcdTAwMjZ2YWwpO1xuK1x0XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgIVBDSV9QT1NTSUJMRV9FUlJPUih2YWwpKSB7XG4rXHRcdFx0dmFsIFx1MDAyNj0gflBDSV9QTV9DVFJMX1BNRV9TVEFUVVM7XG4rXHRcdFx0dmFsIFx1MDAyNj0gfihQQ0lfUE1fQ1RSTF9TVEFURV9NQVNLIHwgUENJX1BNX0NUUkxfUE1FX0VOQUJMRSk7XG4rXHRcdFx0dmFsIHw9IChSVExfUE1fRDNIT1QgfCBQQ0lfUE1fQ1RSTF9QTUVfRU5BQkxFKTtcbitcdFx0XHRwY2lfYnVzX3dyaXRlX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19QTV9DU1IsIHZhbCk7XG4rXHRcdH1cbitcbitcdFx0cmV0ID0gcGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMLCBcdTAwMjZ2YWwpO1xuK1x0XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgIVBDSV9QT1NTSUJMRV9FUlJPUih2YWwpKSB7XG4rXHRcdFx0dmFsIFx1MDAyNj0gfigoUENJX0VYUF9MTktTVEFfTEJNUyB8IFBDSV9FWFBfTE5LU1RBX0xBQlMpIFx1MDAzY1x1MDAzYyAxNik7XG4rXHRcdFx0dmFsIHw9IFBDSV9FWFBfTE5LQ1RMX0FTUE1DO1xuK1x0XHRcdHBjaV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX0VYUF9MTktDVEwsIHZhbCk7XG4rXHRcdH1cbitcdH1cbit9XG4rXG4gc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMTcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuIFx0c3RhdGljIGNvbnN0IHN0cnVjdCBlcGh5X2luZm8gZV9pbmZvXzgxMTdbXSA9IHtcbkBAIC0zNjkzLDEyICszODEzLDE0IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIFx0cnRsX3BjaWVfc3RhdGVfbDJsM19kaXNhYmxlKHRwKTtcbiBcbi1cdHJnX3Nhd19jbnQgPSBwaHlfcmVhZF9wYWdlZCh0cC1cdTAwM2VwaHlkZXYsIDB4MGM0MiwgMHgxMykgXHUwMDI2IDB4M2ZmZjtcbi1cdGlmIChyZ19zYXdfY250IFx1MDAzZSAwKSB7XG4tXHRcdHUxNiBzd19jbnRfMW1zX2luaTtcbitcdGlmICh0cC1cdTAwM2VwaHlkZXYpIHtcbitcdFx0cmdfc2F3X2NudCA9IHBoeV9yZWFkX3BhZ2VkKHRwLVx1MDAzZXBoeWRldiwgMHgwYzQyLCAweDEzKSBcdTAwMjYgMHgzZmZmO1xuK1x0XHRpZiAocmdfc2F3X2NudCBcdTAwM2UgMCkge1xuK1x0XHRcdHUxNiBzd19jbnRfMW1zX2luaTtcbiBcbi1cdFx0c3dfY250XzFtc19pbmkgPSAoMTYwMDAwMDAgLyByZ19zYXdfY250KSBcdTAwMjYgMHgwZmZmO1xuLVx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhkNDEyLCAweDBmZmYsIHN3X2NudF8xbXNfaW5pKTtcbitcdFx0XHRzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpIFx1MDAyNiAweDBmZmY7XG4rXHRcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZDQxMiwgMHgwZmZmLCBzd19jbnRfMW1zX2luaSk7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwNTYsIDB4MDBmMCwgMHgwMDAwKTtcbkBAIC0zNzExLDYgKzM4MzMsOSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5NCwgMHgwMDAwKTtcbiBcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5ZSwgMHgwMDAwKTtcbiBcbitcdGlmIChydGxfaXNfODExNmFmKHRwKSlcbitcdFx0cnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnModHAtXHUwMDNlcGNpX2Rldik7XG4rXG4gXHQvKiBmaXJtd2FyZSBpcyBmb3IgTUFDIG9ubHkgKi9cbiBcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbiB9XG5AQCAtNDEzOSwxMiArNDI2NCwxNyBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnQoc3RydWN0ICBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHN0YXRpYyBpbnQgcnRsODE2OV9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxuIHtcbiBcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcbitcdGJvb2wganVtYm9fYmVmb3JlID0gZGV2LVx1MDAzZW10dSBcdTAwM2UgRVRIX0RBVEFfTEVOO1xuK1x0Ym9vbCBqdW1ib19hZnRlciA9IG5ld19tdHUgXHUwMDNlIEVUSF9EQVRBX0xFTjtcbiBcbiBcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbmV3X210dSk7XG4gXHRuZXRkZXZfdXBkYXRlX2ZlYXR1cmVzKGRldik7XG4gXHRydGxfanVtYm9fY29uZmlnKHRwKTtcbiBcdHJ0bF9zZXRfZWVlX3R4aWRsZV90aW1lcih0cCk7XG4gXG4rXHRpZiAoanVtYm9fYmVmb3JlICE9IGp1bWJvX2FmdGVyKVxuK1x0XHRydGxfanVtYm9fY29uZmlnX3BhdXNlKHRwKTtcbitcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC00ODY5LDggKzQ5OTksMTMgQEAgc3RhdGljIGlycXJldHVybl90IHJ0bDgxNjlfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4tXHRpZiAoc3RhdHVzIFx1MDAyNiBMaW5rQ2hnKVxuLVx0XHRwaHlfbWFjX2ludGVycnVwdCh0cC1cdTAwM2VwaHlkZXYpO1xuK1x0aWYgKHN0YXR1cyBcdTAwMjYgTGlua0NoZykge1xuK1x0XHRpZiAodHAtXHUwMDNlcGh5ZGV2KVxuK1x0XHRcdHBoeV9tYWNfaW50ZXJydXB0KHRwLVx1MDAzZXBoeWRldik7XG4rXHRcdGVsc2UgaWYgKHRwLVx1MDAzZXNmcF9tb2RlKVxuK1x0XHRcdHBoeWxpbmtfbWFjX2NoYW5nZSh0cC1cdTAwM2VwaHlsaW5rLFxuK1x0XHRcdFx0XHQgICAhIShSVExfUjgodHAsIFBIWXN0YXR1cykgXHUwMDI2IExpbmtTdGF0dXMpKTtcbitcdH1cbiBcbiBcdHJ0bF9pcnFfZGlzYWJsZSh0cCk7XG4gXHRuYXBpX3NjaGVkdWxlKFx1MDAyNnRwLVx1MDAzZW5hcGkpO1xuQEAgLTQ5MzAsOSArNTA2NSw2IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbiBcbiBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4ge1xuLVx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcbi1cdFx0cmV0dXJuO1xuLVxuIFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuIFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzM0IC4uLiBSVExfR0lHQV9NQUNfVkVSXzUyOlxuIFx0XHQvKiBBZGp1c3QgRUVFIExFRCBmcmVxdWVuY3kgKi9cbkBAIC00OTYzLDQwICs1MDk1LDE1IEBAIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfdHhfbHBpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHZvaWQgcjgxNjlfcGh5bGlua19oYW5kbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLXtcbi1cdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XG4tXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcbi1cbi1cdGlmIChuZXRpZl9jYXJyaWVyX29rKG5kZXYpKSB7XG4tXHRcdHJ0bF9saW5rX2NoZ19wYXRjaCh0cCk7XG4tXHRcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlZW5hYmxlX3R4X2xwaSk7XG4tXHRcdHBtX3JlcXVlc3RfcmVzdW1lKGQpO1xuLVx0fSBlbHNlIHtcbi1cdFx0cG1fcnVudGltZV9pZGxlKGQpO1xuLVx0fVxuLVxuLVx0cGh5X3ByaW50X3N0YXR1cyh0cC1cdTAwM2VwaHlkZXYpO1xuLX1cbi1cbiBzdGF0aWMgaW50IHI4MTY5X3BoeV9jb25uZWN0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbi1cdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC1cdTAwM2VwaHlkZXY7XG4tXHRwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cGh5X21vZGUgPSB0cC1cdTAwM2VzdXBwb3J0c19nbWlpID8gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkgOlxuLVx0XHQgICBQSFlfSU5URVJGQUNFX01PREVfTUlJO1xuLVxuLVx0cmV0ID0gcGh5X2Nvbm5lY3RfZGlyZWN0KHRwLVx1MDAzZWRldiwgcGh5ZGV2LCByODE2OV9waHlsaW5rX2hhbmRsZXIsXG4tXHRcdFx0XHQgcGh5X21vZGUpO1xuLVx0aWYgKHJldClcbitcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkodHAtXHUwMDNlcGh5bGluaywgdHAtXHUwMDNlcGh5ZGV2KTtcbitcdGlmIChyZXQpIHtcbitcdFx0bmV0ZGV2X2Vycih0cC1cdTAwM2VkZXYsIFwiZmFpbGVkIHRvIGNvbm5lY3QgcGh5XFxuXCIpO1xuIFx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0aWYgKCF0cC1cdTAwM2VzdXBwb3J0c19nbWlpKVxuLVx0XHRwaHlfc2V0X21heF9zcGVlZChwaHlkZXYsIFNQRUVEXzEwMCk7XG4tXG4tXHRwaHlfYXR0YWNoZWRfaW5mbyhwaHlkZXYpO1xuK1x0fVxuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTUwMDcsMTAgKzUxMTQsMTAgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0LyogQ2xlYXIgYWxsIHRhc2sgZmxhZ3MgKi9cbiBcdGJpdG1hcF96ZXJvKHRwLVx1MDAzZXdrLmZsYWdzLCBSVExfRkxBR19NQVgpO1xuIFxuLVx0cGh5X3N0b3AodHAtXHUwMDNlcGh5ZGV2KTtcbitcdHBoeWxpbmtfc3RvcCh0cC1cdTAwM2VwaHlsaW5rKTtcbiBcbiBcdC8qIFJlc2V0IFNlckRlcyBQSFkgdG8gYnJpbmcgZG93biBmaWJlciBsaW5rICovXG4tXHRpZiAodHAtXHUwMDNlc2ZwX21vZGUpXG4rXHRpZiAodHAtXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURilcbiBcdFx0cnRsX3NmcF9yZXNldCh0cCk7XG4gXG4gXHRydGw4MTY5X3VwZGF0ZV9jb3VudGVycyh0cCk7XG5AQCAtNTAzMiwxNCArNTEzOSwxNCBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X3VwKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRydGw4MTY4X2RyaXZlcl9zdGFydCh0cCk7XG4gXG4gXHRwY2lfc2V0X21hc3Rlcih0cC1cdTAwM2VwY2lfZGV2KTtcbi1cdHBoeV9pbml0X2h3KHRwLVx1MDAzZXBoeWRldik7XG4tXHRwaHlfcmVzdW1lKHRwLVx1MDAzZXBoeWRldik7XG4tXHRydGw4MTY5X2luaXRfcGh5KHRwKTtcbitcdGlmICh0cC1cdTAwM2VwaHlkZXYpXG4rXHRcdHJ0bDgxNjlfaW5pdF9waHkodHApO1xuK1xuIFx0bmFwaV9lbmFibGUoXHUwMDI2dHAtXHUwMDNlbmFwaSk7XG4gXHRlbmFibGVfd29yayhcdTAwMjZ0cC1cdTAwM2V3ay53b3JrKTtcbiBcdHJ0bF9yZXNldF93b3JrKHRwKTtcbiBcbi1cdHBoeV9zdGFydCh0cC1cdTAwM2VwaHlkZXYpO1xuK1x0cGh5bGlua19zdGFydCh0cC1cdTAwM2VwaHlsaW5rKTtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MTY5X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5AQCAtNTA1NSw3ICs1MTYyLDcgQEAgc3RhdGljIGludCBydGw4MTY5X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRmcmVlX2lycSh0cC1cdTAwM2VpcnEsIHRwKTtcbiBcbi1cdHBoeV9kaXNjb25uZWN0KHRwLVx1MDAzZXBoeWRldik7XG4rXHRwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHRwLVx1MDAzZXBoeWxpbmspO1xuIFxuIFx0ZG1hX2ZyZWVfY29oZXJlbnQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFI4MTY5X1JYX1JJTkdfQllURVMsIHRwLVx1MDAzZVJ4RGVzY0FycmF5LFxuIFx0XHRcdCAgdHAtXHUwMDNlUnhQaHlBZGRyKTtcbkBAIC01MTEyLDkgKzUyMTksMTEgQEAgc3RhdGljIGludCBydGxfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKHJldHZhbCBcdTAwM2MgMClcbiBcdFx0Z290byBlcnJfcmVsZWFzZV9md18yO1xuIFxuLVx0cmV0dmFsID0gcjgxNjlfcGh5X2Nvbm5lY3QodHApO1xuLVx0aWYgKHJldHZhbClcbi1cdFx0Z290byBlcnJfZnJlZV9pcnE7XG4rXHRpZiAodHAtXHUwMDNlcGh5ZGV2KSB7XG4rXHRcdHJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTtcbitcdFx0aWYgKHJldHZhbClcbitcdFx0XHRnb3RvIGVycl9mcmVlX2lycTtcbitcdH1cbiBcbiBcdHJ0bDgxNjlfdXAodHApO1xuIFx0cnRsODE2OV9pbml0X2NvdW50ZXJfb2Zmc2V0cyh0cCk7XG5AQCAtNTE5MCw4ICs1Mjk5LDExIEBAIHN0YXRpYyBpbnQgcnRsODE2OV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRydGxfcmFyX3NldCh0cCwgdHAtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyKTtcbiBcdF9fcnRsODE2OV9zZXRfd29sKHRwLCB0cC1cdTAwM2VzYXZlZF93b2xvcHRzKTtcbiBcbi1cdGlmICh0cC1cdTAwM2VUeERlc2NBcnJheSlcbitcdGlmICh0cC1cdTAwM2VUeERlc2NBcnJheSkge1xuK1x0XHRydG5sX2xvY2soKTtcbiBcdFx0cnRsODE2OV91cCh0cCk7XG4rXHRcdHJ0bmxfdW5sb2NrKCk7XG4rXHR9XG4gXG4gXHRuZXRpZl9kZXZpY2VfYXR0YWNoKHRwLVx1MDAzZWRldik7XG4gXG5AQCAtNTI4OCw2ICs1NDAwLDggQEAgc3RhdGljIHZvaWQgcnRsX3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gXHRcdHI4MTY5X3JlbW92ZV9sZWRzKHRwLVx1MDAzZWxlZHMpO1xuIFxuIFx0dW5yZWdpc3Rlcl9uZXRkZXYodHAtXHUwMDNlZGV2KTtcbitcdGlmICh0cC1cdTAwM2VwaHlsaW5rKVxuK1x0XHRwaHlsaW5rX2Rlc3Ryb3kodHAtXHUwMDNlcGh5bGluayk7XG4gXG4gXHRpZiAodHAtXHUwMDNlZGFzaF90eXBlICE9IFJUTF9EQVNIX05PTkUpXG4gXHRcdHJ0bDgxNjhfZHJpdmVyX3N0b3AodHApO1xuQEAgLTUzMTAsNyArNTQyNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgcnRsX25ldGRldl9vcHMgPSB7XG4gXHQubmRvX2ZpeF9mZWF0dXJlc1x0PSBydGw4MTY5X2ZpeF9mZWF0dXJlcyxcbiBcdC5uZG9fc2V0X2ZlYXR1cmVzXHQ9IHJ0bDgxNjlfc2V0X2ZlYXR1cmVzLFxuIFx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcdD0gcnRsX3NldF9tYWNfYWRkcmVzcyxcbi1cdC5uZG9fZXRoX2lvY3RsXHRcdD0gcGh5X2RvX2lvY3RsX3J1bm5pbmcsXG4rXHQubmRvX2V0aF9pb2N0bFx0XHQ9IHJ0bDgxNjlfaW9jdGwsXG4gXHQubmRvX3NldF9yeF9tb2RlXHQ9IHJ0bF9zZXRfcnhfbW9kZSxcbiAjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVJcbiBcdC5uZG9fcG9sbF9jb250cm9sbGVyXHQ9IHJ0bDgxNjlfbmV0cG9sbCxcbkBAIC01NDc0LDE2ICs1NTg4LDYgQEAgc3RhdGljIGludCByODE2OV9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRyZXR1cm4gLUVVTkFUQ0g7XG4gXHR9XG4gXG4tXHR0cC1cdTAwM2VwaHlkZXYtXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuLVx0aWYgKHJ0bF9zdXBwb3J0c19lZWUodHApKVxuLVx0XHRwaHlfc3VwcG9ydF9lZWUodHAtXHUwMDNlcGh5ZGV2KTtcbi1cdHBoeV9zdXBwb3J0X2FzeW1fcGF1c2UodHAtXHUwMDNlcGh5ZGV2KTtcbi1cbi1cdC8qIG1pbWljIGJlaGF2aW9yIG9mIHI4MTI1L3I4MTI2IHZlbmRvciBkcml2ZXJzICovXG4tXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl82MSlcbi1cdFx0cGh5X2Rpc2FibGVfZWVlX21vZGUodHAtXHUwMDNlcGh5ZGV2LFxuLVx0XHRcdFx0ICAgICBFVEhUT09MX0xJTktfTU9ERV8yNTAwYmFzZVRfRnVsbF9CSVQpO1xuLVxuIFx0LyogUEhZIHdpbGwgYmUgd29rZW4gdXAgaW4gcnRsX29wZW4oKSAqL1xuIFx0cGh5X3N1c3BlbmQodHAtXHUwMDNlcGh5ZGV2KTtcbiBcbkBAIC01NTk5LDYgKzU3MDMsMjMzIEBAIHN0YXRpYyBib29sIHJ0bF9hc3BtX2lzX3NhZmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHJ0bF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbitcdFx0XHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuK1xuK1x0dHAtXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuK1x0cG1fcnVudGltZV9pZGxlKHRwX3RvX2Rldih0cCkpO1xuK31cbitcbitzdGF0aWMgdm9pZCBydGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4rXHRcdFx0ICAgIHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuK1x0XHRcdCAgICBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGJvb2wgdHhfcGF1c2UsIGJvb2wgcnhfcGF1c2UpXG4re1xuK1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcbitcbitcdHRwLVx1MDAzZXNwZWVkID0gc3BlZWQ7XG4rXHRydGxfbGlua19jaGdfcGF0Y2godHAsIHNwZWVkKTtcbitcbitcdHBtX3JlcXVlc3RfcmVzdW1lKGQpO1xuK31cbitcbitzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpydGxfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4rXHRcdFx0XHRcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4re1xuK1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XG4rXG4rXHRpZiAoIXRwLVx1MDAzZXBjcy5vcHMpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XG4rXHQgICAgaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUilcbitcdFx0cmV0dXJuIFx1MDAyNnRwLVx1MDAzZXBjcztcbitcbitcdHJldHVybiBOVUxMO1xuK31cbitcbitzdGF0aWMgdm9pZCBydGxfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXG4rXHRcdFx0ICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4re1xuK31cbitcbitzdGF0aWMgdTE2IHJ0bDgxNjlfc2RzX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBzZHNfcmVnKVxuK3tcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHR1MTYgdmFsID0gMDtcbitcbitcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZ0cC1cdTAwM2VtYWNfb2NwX2xvY2ssIGZsYWdzKTtcbitcdF9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19BRERSX1JFRywgc2RzX3JlZyk7XG4rXHRfX3I4MTY4X21hY19vY3Bfd3JpdGUodHAsIE9DUF9TRFNfQ01EX1JFRywgU0RTX0NNRF9SRUFEKTtcbitcdHZhbCA9IF9fcjgxNjhfbWFjX29jcF9yZWFkKHRwLCBPQ1BfU0RTX0RBVEFfUkVHKTtcbitcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnRwLVx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xuK1xuK1x0cmV0dXJuIHZhbDtcbit9XG4rXG4rc3RhdGljIHZvaWQgcnRsODE2OV9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuK1x0XHRcdFx0ICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4rXHRcdFx0XHQgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcbitcbitcdGlmICh0cC1cdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKSB7XG4rXHRcdHUxNiBzdGF0MTtcbitcbitcdFx0c3RhdDEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0M0NV9CQVNFICsgTURJT19TVEFUMSk7XG4rXG4rXHRcdGlmICghKHN0YXQxIFx1MDAyNiBNRElPX1NUQVQxX0xTVEFUVVMpKVxuK1x0XHRcdHN0YXQxID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DNDVfQkFTRSArIE1ESU9fU1RBVDEpO1xuK1xuK1x0XHRzdGF0ZS1cdTAwM2VsaW5rID0gISEoc3RhdDEgXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUyk7XG4rXHRcdGlmICghc3RhdGUtXHUwMDNlbGluaylcbitcdFx0XHRyZXR1cm47XG4rXG4rXHRcdHN0YXRlLVx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xuK1x0XHRzdGF0ZS1cdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDAwO1xuK1x0fSBlbHNlIHtcbitcdFx0dTE2IGJtc3IsIGxwYTtcbitcbitcdFx0Ym1zciA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzIyX0JBU0UgKyBNSUlfQk1TUik7XG4rXHRcdGxwYSA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzIyX0JBU0UgKyBNSUlfTFBBKTtcbitcdFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscGEpO1xuK1x0fVxuK31cbitcbitzdGF0aWMgaW50IHJ0bDgxNjlfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG1vZGUsXG4rXHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbitcdFx0XHQgICAgICBjb25zdCB1bnNpZ25lZCBsb25nICphZHZlcnRpc2luZyxcbitcdFx0XHQgICAgICBib29sIHBlcm1pdF9wYXVzZV90b19tYWMpXG4re1xuK1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwY3MpO1xuK1xuK1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpXG4rXHRcdHI4MTI3X3NmcF9pbml0XzEwZyh0cCk7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MTY5X3Bjc192YWxpZGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLFxuK1x0XHRcdFx0Y29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG4re1xuK31cbitcbitzdGF0aWMgdm9pZCBydGxfbWFjX2Rpc2FibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuK1xuK1x0cnRsX2VuYWJsZV90eF9scGkodHAsIGZhbHNlKTtcbit9XG4rXG4rc3RhdGljIGludCBydGxfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHUzMiB0aW1lciwgYm9vbCB0eF9jbGtfc3RvcClcbit7XG4rXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTtcbitcbitcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcbitcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cnVlKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBydGxfcGh5bGlua19tYWNfb3BzID0ge1xuK1x0Lm1hY19zZWxlY3RfcGNzID0gcnRsX21hY19zZWxlY3RfcGNzLFxuK1x0Lm1hY19jb25maWcgPSBydGxfbWFjX2NvbmZpZyxcbitcdC5tYWNfbGlua19kb3duICA9IHJ0bF9tYWNfbGlua19kb3duLFxuK1x0Lm1hY19saW5rX3VwICAgID0gcnRsX21hY19saW5rX3VwLFxuK1x0Lm1hY19kaXNhYmxlX3R4X2xwaSA9IHJ0bF9tYWNfZGlzYWJsZV90eF9scGksXG4rXHQubWFjX2VuYWJsZV90eF9scGkgPSBydGxfbWFjX2VuYWJsZV90eF9scGksXG4rfTtcbitcbitzdGF0aWMgdW5zaWduZWQgbG9uZyBydGw4MTY5X2dldF9scGlfY2FwcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbit7XG4rXHR1bnNpZ25lZCBsb25nIGNhcHMgPSAwO1xuK1xuK1x0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSB8fCB0cC1cdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGNhcHMgfD0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDtcbitcbitcdC8qIG1pbWljIGJlaGF2aW9yIG9mIHI4MTI1L3I4MTI2IHZlbmRvciBkcml2ZXJzXG4rXHQgKiBSVExfR0lHQV9NQUNfVkVSXzYxIGRvZXNuJ3Qgc3VwcG9ydCAyLjVHIGVlZVxuK1x0ICovXG4rXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNlPSBSVExfR0lHQV9NQUNfVkVSXzYzKVxuK1x0XHRjYXBzIHw9IE1BQ18yNTAwRkQ7XG4rXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNlPSBSVExfR0lHQV9NQUNfVkVSXzcwKVxuK1x0XHRjYXBzIHw9IE1BQ181MDAwRkQ7XG4rXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl84MClcbitcdFx0Y2FwcyB8PSBNQUNfMTAwMDBGRDtcbitcbitcdHJldHVybiBjYXBzO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfcGNzX29wcyByODE2OV9wY3Nfb3BzID0ge1xuK1x0LnBjc192YWxpZGF0ZSA9IHJ0bDgxNjlfcGNzX3ZhbGlkYXRlLFxuK1x0LnBjc19nZXRfc3RhdGUgPSBydGw4MTY5X3Bjc19nZXRfc3RhdGUsXG4rXHQucGNzX2NvbmZpZyA9IHJ0bDgxNjlfcGNzX2NvbmZpZyxcbitcdC5wY3NfYW5fcmVzdGFydCA9IHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQsXG4rfTtcbitcbitzdGF0aWMgaW50IHJ0bF9pbml0X3BoeWxpbmsoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4re1xuK1x0c3RydWN0IHBoeWxpbmsgKnBsO1xuK1x0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xuK1xuK1x0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGV2ID0gXHUwMDI2dHAtXHUwMDNlZGV2LVx1MDAzZWRldjtcbitcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjtcbitcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbitcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBydGw4MTY5X2dldF9scGlfY2Fwcyh0cCk7XG4rXHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTtcbitcbitcdHN3aXRjaCAodHAtXHUwMDNlc2ZwX21vZGUpIHtcbitcdGNhc2UgUlRMX1NGUF84MTY4X0FGOlxuK1x0XHR0cC1cdTAwM2VwY3Mub3BzID0gXHUwMDI2cjgxNjlfcGNzX29wcztcbitcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlO1xuK1x0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg7XG4rXHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIFJUTF9TRlBfODEyN19BVEY6XG4rXHRcdHRwLVx1MDAzZXBjcy5vcHMgPSBcdTAwMjZyODE2OV9wY3Nfb3BzO1xuK1x0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjtcbitcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlO1xuK1x0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwMEZEO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMO1xuK1x0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMCB8IE1BQ18xMDA7XG4rXG4rXHRcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuK1x0XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQgfFxuK1x0XHRcdFx0XHRcdFx0ICAgICAgIE1BQ181MDAwRkQgfCBNQUNfMTAwMDBGRDtcbitcdFx0ZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl83MClcbitcdFx0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfFxuK1x0XHRcdFx0XHRcdFx0ICAgICAgIE1BQ18yNTAwRkQgfCBNQUNfNTAwMEZEO1xuK1x0XHRlbHNlIGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNjEpXG4rXHRcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDtcbitcdFx0ZWxzZVxuK1x0XHRcdGlmICh0cC1cdTAwM2VzdXBwb3J0c19nbWlpKVxuK1x0XHRcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEO1xuK1xuK1x0XHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNjIFJUTF9HSUdBX01BQ19WRVJfNjEpXG4rXHRcdFx0cGh5X21vZGUgPSB0cC1cdTAwM2VzdXBwb3J0c19nbWlpID8gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkgOlxuK1x0XHRcdFx0ICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSTtcbitcdFx0ZWxzZVxuK1x0XHRcdHBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMO1xuK1x0XHRicmVhaztcbitcdH1cbitcbitcdF9fc2V0X2JpdChwaHlfbW9kZSwgdHAtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuK1x0aWYgKHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMpXG4rXHRcdF9fc2V0X2JpdChwaHlfbW9kZSwgdHAtXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpO1xuK1xuK1x0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZ0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgdHBfdG9fZGV2KHRwKS1cdTAwM2Vmd25vZGUsXG4rXHRcdFx0ICAgIHBoeV9tb2RlLCBcdTAwMjZydGxfcGh5bGlua19tYWNfb3BzKTtcbitcdGlmIChJU19FUlIocGwpKVxuK1x0XHRyZXR1cm4gUFRSX0VSUihwbCk7XG4rXG4rXHR0cC1cdTAwM2VwaHlsaW5rID0gcGw7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gKmNoaXA7XG5AQCAtNTY2Nyw2ICs1OTk4LDcgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXHRcdFx0XHQgICAgIGV4dF94aWRfc3RyLCB4aWQpO1xuIFx0dHAtXHUwMDNlbWFjX3ZlcnNpb24gPSBjaGlwLVx1MDAzZW1hY192ZXJzaW9uO1xuIFx0dHAtXHUwMDNlZndfbmFtZSA9IGNoaXAtXHUwMDNlZndfbmFtZTtcbitcdHRwLVx1MDAzZXNwZWVkID0gU1BFRURfVU5LTk9XTjtcbiBcbiBcdC8qIERpc2FibGUgQVNQTSBMMSBhcyB0aGF0IGNhdXNlIHJhbmRvbSBkZXZpY2Ugc3RvcCB3b3JraW5nXG4gXHQgKiBwcm9ibGVtcyBhcyB3ZWxsIGFzIGZ1bGwgc3lzdGVtIGhhbmdzIGZvciBzb21lIFBDSWUgZGV2aWNlcyB1c2Vycy5cbkBAIC01Njc5LDEyICs2MDExLDcgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXHR9XG4gXHR0cC1cdTAwM2Vhc3BtX21hbmFnZWFibGUgPSAhcmM7XG4gXG4tXHRpZiAocnRsX2lzXzgxMjUodHApKSB7XG4tXHRcdHUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCAweGQwMDYpO1xuLVxuLVx0XHRpZiAoKGRhdGEgXHUwMDI2IDB4ZmYpID09IDB4MDcpXG4tXHRcdFx0dHAtXHUwMDNlc2ZwX21vZGUgPSB0cnVlO1xuLVx0fVxuK1x0dHAtXHUwMDNlc2ZwX21vZGUgPSBydGxfZ2V0X3NmcF9tb2RlKHRwKTtcbiBcbiBcdHRwLVx1MDAzZWRhc2hfdHlwZSA9IHJ0bF9nZXRfZGFzaF90eXBlKHRwKTtcbiBcdHRwLVx1MDAzZWRhc2hfZW5hYmxlZCA9IHJ0bF9kYXNoX2lzX2VuYWJsZWQodHApO1xuQEAgLTU3ODgsMTMgKzYxMTUsMjMgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXG4gXHRwY2lfc2V0X2RydmRhdGEocGRldiwgdHApO1xuIFxuLVx0cmMgPSByODE2OV9tZGlvX3JlZ2lzdGVyKHRwKTtcbitcdHJjID0gcnRsX2luaXRfcGh5bGluayh0cCk7XG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiByYztcbiBcbitcdGlmICh0cC1cdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQX05PTkUpIHtcbitcdFx0cmMgPSByODE2OV9tZGlvX3JlZ2lzdGVyKHRwKTtcbitcdFx0aWYgKHJjKSB7XG4rXHRcdFx0cGh5bGlua19kZXN0cm95KHRwLVx1MDAzZXBoeWxpbmspO1xuK1x0XHRcdHJldHVybiByYztcbitcdFx0fVxuK1x0fVxuK1xuIFx0cmMgPSByZWdpc3Rlcl9uZXRkZXYoZGV2KTtcbi1cdGlmIChyYylcbitcdGlmIChyYykge1xuK1x0XHRwaHlsaW5rX2Rlc3Ryb3kodHAtXHUwMDNlcGh5bGluayk7XG4gXHRcdHJldHVybiByYztcbitcdH1cbiBcbiBcdGlmIChJU19FTkFCTEVEKENPTkZJR19SODE2OV9MRURTKSkge1xuIFx0XHRpZiAocnRsX2lzXzgxMjUodHApKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbmluZGV4IGI2NWQwZjVmYTFhMDE0Li43ZjkwNGRlNTgzZTA1NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuQEAgLTI2NDYsNDUgKzI2NDYsNiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODIyMWJfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0cmV0dXJuIElSUV9IQU5ETEVEO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4te1xuLVx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwMGJhc2VUX0Z1bGxfQklULFxuLVx0XHRcdCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKTtcbi1cbi1cdC8qIHNldCBkZWZhdWx0IG1vZGUgKi9cbi1cdHBoeWRldi1cdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDAwO1xuLVx0cGh5ZGV2LVx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xuLVxuLVx0cGh5ZGV2LVx1MDAzZXBvcnQgPSBQT1JUX0ZJQlJFO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdGludCB2YWwsIGVycjtcbi1cbi1cdGVyciA9IGdlbnBoeV91cGRhdGVfbGluayhwaHlkZXYpO1xuLVx0aWYgKGVycilcbi1cdFx0cmV0dXJuIGVycjtcbi1cbi1cdGlmICghcGh5ZGV2LVx1MDAzZWxpbmspXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0dmFsID0gcGh5X3JlYWQocGh5ZGV2LCBSVExfUEhZU1IpO1xuLVx0aWYgKHZhbCBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIHZhbDtcbi1cbi1cdHJ0bGdlbl9kZWNvZGVfcGh5c3IocGh5ZGV2LCB2YWwpO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdHJldHVybiAwO1xuLX1cbi1cbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XG4gXHR7XG4gXHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMDA4MjAxKSxcbkBAIC0yOTM0LDIwICsyODk1LDYgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xuIFx0XHQud3JpdGVfcGFnZVx0PSBydGw4MjF4X3dyaXRlX3BhZ2UsXG4gXHRcdC5yZWFkX21tZFx0PSBydGw4MjJ4X3JlYWRfbW1kLFxuIFx0XHQud3JpdGVfbW1kXHQ9IHJ0bDgyMnhfd3JpdGVfbW1kLFxuLVx0fSwge1xuLVx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1JUTF9EVU1NWV9TRlApLFxuLVx0XHQubmFtZVx0XHQ9IFwiUmVhbHRlayBTRlAgUEhZIE1vZGVcIixcbi1cdFx0LmZsYWdzXHRcdD0gUEhZX0lTX0lOVEVSTkFMLFxuLVx0XHQucHJvYmVcdFx0PSBydGw4MjJ4X3Byb2JlLFxuLVx0XHQuZ2V0X2ZlYXR1cmVzXHQ9IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzLFxuLVx0XHQuY29uZmlnX2FuZWdcdD0gcnRsZ2VuX3NmcF9jb25maWdfYW5lZyxcbi1cdFx0LnJlYWRfc3RhdHVzXHQ9IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMsXG4tXHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuLVx0XHQucmVzdW1lXHRcdD0gcnRsZ2VuX3Jlc3VtZSxcbi1cdFx0LnJlYWRfcGFnZVx0PSBydGw4MjF4X3JlYWRfcGFnZSxcbi1cdFx0LndyaXRlX3BhZ2VcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxuLVx0XHQucmVhZF9tbWRcdD0gcnRsODIyeF9yZWFkX21tZCxcbi1cdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4X3dyaXRlX21tZCxcbiBcdH0sIHtcbiBcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLFxuIFx0XHQubmFtZVx0XHQ9IFwiUlRMODIyNCAyLjVHYnBzIFBIWVwiLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oIGIvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmhcbmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggZDY4M2JjMWIwNjU5Y2QuLjAwMDAwMDAwMDAwMDAwXG4tLS0gYS9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaFxuKysrIC9kZXYvbnVsbFxuQEAgLTEsNyArMCwwIEBAXG4tLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbi0jaWZuZGVmIF9SRUFMVEVLX1BIWV9IXG4tI2RlZmluZSBfUkVBTFRFS19QSFlfSFxuLVxuLSNkZWZpbmVcdFBIWV9JRF9SVExfRFVNTVlfU0ZQXHQweDAwMWNjYmZmXG4tXG4tI2VuZGlmIC8qIF9SRUFMVEVLX1BIWV9IICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMTowMDo1OC41MTk3MzY5OTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDI1NzIyNzgwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyB0aGUgcjgxNjkgRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgZnVuZGFtZW50YWxseSBjaGFuZ2VzIHRoZSBgcjgxNjlgIG5ldHdvcmsgZHJpdmVyIGJ5IGFkZGluZyBgUEhZTElOS2Agc3VwcG9ydCBhbmQgU0ZQIG1vZGUgaGFuZGxpbmcuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgY2hhbmdlLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgaXMgd2hldGhlciB0aGlzIGRyaXZlciBpcyBldmVuICpyZWFjaGFibGUqLiBXZSdyZSBkZWFsaW5nIHdpdGggYSBSZWFsdGVrIEV0aGVybmV0IGFkYXB0ZXIgZHJpdmVyLCBhbmQgbXkgZXhwZXJpZW5jZSB0ZWxscyBtZSBQQ0kgbmV0d29yayBkcml2ZXJzIGxpa2UgYHI4MTY5YCBhcmUgdHlwaWNhbGx5IHRyaWNreSBpbiB2aXJ0dWFsaXplZCBzZXR1cHMuXG5cblFFTVUsIHRoZSB1c3VhbCBzdXNwZWN0IGZvciBlbXVsYXRpb24sIGlzIG15IGZpcnN0IHBvcnQgb2YgY2FsbC4gSSBrbm93IFFFTVUgZW11bGF0ZXMgYHJ0bDgxMzlgLCBidXQgYHI4MTY5YCBpcyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IGJlYXN0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBRRU1VIGxpa2VseSAqZG9lc24ndCogZW11bGF0ZSBpdC4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gSXQncyBhIHF1ZXN0aW9uIEkgaGF2ZSB0byBhc2suIEkgbmVlZCB0byBtYWtlIHN1cmUuXG5cblRoZW4sIHRoZXJlJ3Mgc3l6a2FsbGVyLiBEb2VzIHN5emthbGxlciBoYXZlIGEgbWVhbnMgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIGRyaXZlcj8gU3l6a2FsbGVyIGhhcyB0aGUgcG90ZW50aWFsIHRvIGluamVjdCBQQ0kgZGV2aWNlcyB0aHJvdWdoIGBzeXpfcGNpX2RldmljZV9hZGRgIG9yIHNpbWlsYXIgbWVjaGFuaXNtcy4gSWYgdGhpcyBpcyB0aGUgY2FzZSwgc3l6a2FsbGVyIGNvdWxkIHBvdGVudGlhbGx5IHByb3ZpZGUgYSBwYXRoIHRvIHJlYWNoIHRoZSBkcml2ZXIuIFNvLCB0aGlzIGlzIHdvcnRoIGV4cGxvcmluZyB0byBzZWUgaWYgc3l6a2FsbGVyIGNhbiByZWFjaCBpdC5cblxuTXkgZmlyc3QgdGhvdWdodCBpcywgdGhpcyBpcyBhbiBpc3N1ZS4gVGhlIGRlc2NyaXB0aW9uIHNheXMgY29kZSBwYXRocyBhcmUgbm90IHJlYWNoYWJsZSBpZiB0aGV5IGNhbid0IGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgc28gSSBuZWVkIHRvIGZpbmQgYSB3YXkgdG8gbWFrZSBpdCByZWFjaGFibGUuXG5cbk9rYXksIGNoZWNraW5nIHN5emthbGxlciwgd2hpY2ggbWlnaHQgYmUgdGhyb3VnaCBgdmhjaWAgZm9yIFVTQiBvciB0aHJvdWdoIGBwY2lgIGZvciBQQ0kgKHVzaW5nIHRoZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBjYWxsKSwgaXMgbXkgbmV4dCBsaW5lIG9mIGlucXVpcnkuIEhvd2V2ZXIsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIHRoYXQgYSBsb3Qgb2YgdGhpcyByZXF1aXJlcyB0aGUgZHJpdmVyIHRvIGFjdHVhbGx5IHByb2JlIGFuZCB0aGUgbmV0ZGV2IHRvIGJlIHJlZ2lzdGVyZWQuXG5cblVsdGltYXRlbHksIGlmIHRoZSBoYXJkd2FyZSBpc24ndCBlbXVsYXRlZCwgdGhlIGByODE2OWAgcHJvYmUgaXMgZ29pbmcgdG8gZmFpbCwgd2hpY2ggbWVhbnMgdGhlIG5ldHdvcmsgZGV2aWNlIHdvbid0IGJlIHJlZ2lzdGVyZWQsIGFuZCBhbGwgdGhlIGBwaHlsaW5rYCBjb2RlLCBhbmQgZXZlcnl0aGluZyBpbiBgcjgxNjlfb3BlbmAgaXMgbmV2ZXIgZ29pbmcgdG8gYmUgZXhlY3V0ZWQuXG5cbkknbSBub3cgZ29pbmcgdG8gY29uZmlybSBteSBodW5jaCBhbmQgc2VhcmNoIFFFTVUncyBzb3VyY2UgY29kZSwganVzdCB0byBtYWtlIHN1cmUuIEknbSBnb2luZyB0byBxdWlja2x5IGxvb2sgdGhyb3VnaCB0aGUgYXZhaWxhYmxlIG5ldHdvcmsgZGV2aWNlcy4gTm8sIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIGByODE2OWAuIFNvLCB0aGlzIGlzIHRoZSBtYWluIGlzc3VlLlxuXG5TeXprYWxsZXIgaXMgdGhlIG9ubHkgb3RoZXIgd2F5IHRvIHJlYWNoIHRoaXMuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc3l6a2FsbGVyJ3MgY2FwYWJpbGl0aWVzIGhlcmUsIGxvb2tpbmcgYXQgaXRzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcywgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgYHN5el9wY2lfZGV2aWNlX2FkZGAgZmVhdHVyZS4gTXkgY29uY2x1c2lvbiBpcyB0aGF0IGl0IHVzZXMgYHN5el9wY2lfZGV2aWNlX2FkZGAgb3Igc2ltaWxhci4gSSBuZWVkIHRvIHJlbWVtYmVyLCBzeXprYWxsZXIgaXMgZ29pbmcgdG8gaW5qZWN0IGEgXCJkdW1teVwiIFBDSSBkZXZpY2UsIHdoaWNoIGRvZXMgKm5vdCogZW11bGF0ZSBhbnkgYWN0dWFsIGhhcmR3YXJlLCBhbmQgaXMgbm90IGdvaW5nIHRvIHJlZ2lzdGVyIHRoZSBuZXRkZXYuIFRoZSBkcml2ZXIgd29uJ3QgcHJvYmUsIHNvIHRoZSBjb2RlIHdvbid0IGJlIGhpdC5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gaXMsIGhvdyBkb2VzIHN5emthbGxlciBwcm92aWRlIGFjY2VzcyB0byBgbmV0ZGV2YD8gSXQgY2FuIG9ubHkgYmUgaGl0IHRocm91Z2ggc29tZSBraW5kIG9mIG5ldHdvcmsgZnV6emluZy5cblxuTXkgY29uY2x1c2lvbiBpcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgcjgxNjlgIGlzIHJlYWNoYWJsZSBhbmQgZmluZCBzb21lIG1lYW5zIG9mIG1ha2luZyBpdCByZWFjaGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzA5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDExOjAxOjEyLjc3Njk2OTExNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQ5MTQ2MjM2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfcGNpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMTowMToxNy4wMjYxMjUwNDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTcxOTIyOTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBDSSBGdXp6aW5nIENoYWxsZW5nZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGVyZSdzIG5vIGRlZGljYXRlZCBgc3l6X3BjaWAgdGFyZ2V0LCB3aGljaCBtZWFucyBteSBpbml0aWFsIGZvY3VzIG5lZWRzIHRvIHNoaWZ0LiBQQ0kgZnV6emluZyBpbiBnZW5lcmFsIHRoZW4uIEkga25vdyBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgZ2VuZXJpYyBQQ0kgZnV6emVyIGNhcGFibGUgb2YgZW11bGF0aW5nIGp1c3QgYW55IFBDSSBkZXZpY2UsIHNvIEknbSBhbHJlYWR5IGZhY2luZyBhIGh1cmRsZS4gTm93LCB0aGUgcXVlc3Rpb24gaXMsIGNhbiBJIGxldmVyYWdlIFFFTVUgc29tZWhvdz8gRG9lcyBRRU1VIGVtdWxhdGUgdGhlIGByODE2OWAgbmV0d29yayBhZGFwdGVyPyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhhdCBzcGVjaWZpYyBkZXZpY2UgaXMgZXZlbiBtZW50aW9uZWQgb3IgYWNjZXNzaWJsZSB3aXRoaW4gUUVNVSdzIGVudmlyb25tZW50LiBIb2xkIG9uLCB3aGF0IGlmIHRoaXMgZml4IGlzIG9ubHkgYXBwbGljYWJsZSB0byBhIHBoeXNpY2FsIGByODE2OWAgYW5kIGNhbid0IGJlIHRlc3RlZCB2aXJ0dWFsbHk/IEkgcmVtZW1iZXIgcmVhZGluZyBzb21ldGhpbmcgYWJvdXQgdW5yZWFjaGFibGUgY29kZSBwYXRocy4uLiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIFJpZ2h0LCBpZiBRRU1VICpkb2Vzbid0KiBlbXVsYXRlIGByODE2OWAsIEknbSBlc3NlbnRpYWxseSBzdHVjay4gVGhpcyBpcyBhbGwgaW1wb3NzaWJsZSB0byByZWFjaC4gQmFjayB0byB0aGUgc291cmNlLCBJIG5lZWQgdG8gY29uZmlybSBRRU1VJ3MgZW11bGF0aW9uIGNhcGFiaWxpdGllcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBRRU1VIGVtdWxhdGVzIGByODE2OWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjAwLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDExOjAxOjIxLjU5ODA1MTA2NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzgxNjI5NjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlJUTDgxNjlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTg0PWNvbmZpZyBSODE2OVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTk0LVxcdCAgdGhlIGZvbGxvd2luZyBmYW1pbGllczpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6OTU6XFx0ICBSVEw4MTY5IEdpZ2FiaXQgRXRoZXJuZXRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctOTYtXFx0ICBSVEw4MTY4IEdpZ2FiaXQgRXRoZXJuZXRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTExNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjIzLVxcdC8qIDgxMTAgZmFtaWx5LiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjIyNDpcXHR7IDB4ZmM4LCAweDk4MCxcXHRSVExfR0lHQV9NQUNfVkVSXzA2LCBcXFwiUlRMODE2OXNjLzgxMTBzY1xcXCIgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMjU6XFx0eyAweGZjOCwgMHgxODAsXFx0UlRMX0dJR0FfTUFDX1ZFUl8wNSwgXFxcIlJUTDgxNjlzYy84MTEwc2NcXFwiIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjI2OlxcdHsgMHhmYzgsIDB4MTAwLFxcdFJUTF9HSUdBX01BQ19WRVJfMDQsIFxcXCJSVEw4MTY5c2IvODExMHNiXFxcIiB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIyNy1cXHR7IDB4ZmM4LCAweDA0MCxcXHRSVExfR0lHQV9NQUNfVkVSXzAzLCBcXFwiUlRMODExMHNcXFwiIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjI4OlxcdHsgMHhmYzgsIDB4MDA4LFxcdFJUTF9HSUdBX01BQ19WRVJfMDIsIFxcXCJSVEw4MTY5c1xcXCIgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01NjQ2PXN0YXRpYyBpbnQgcnRsX2p1bWJvX21heChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU2NTItXFx0c3dpdGNoICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NjUzOlxcdC8qIFJUTDgxNjkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NjU0LVxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8wMiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl8wNjpcXG4tLVxcbmRyaXZlcnMvcGNpL3F1aXJrcy5jPTM2MjE9REVDTEFSRV9QQ0lfRklYVVBfRklOQUwoUENJX1ZFTkRPUl9JRF9DUkVBVElWRSwgUENJX0RFVklDRV9JRF9DUkVBVElWRV8yMEsyLFxcbi0tXFxuZHJpdmVycy9wY2kvcXVpcmtzLmMtMzYyNC0vKlxcbmRyaXZlcnMvcGNpL3F1aXJrcy5jOjM2MjU6ICogUmVhbHRlayBSVEw4MTY5IFBDSSBHaWdhYml0IEV0aGVybmV0IENvbnRyb2xsZXIgKHJldiAxMClcXG5kcml2ZXJzL3BjaS9xdWlya3MuYzozNjI2OiAqIFN1YnN5c3RlbTogUmVhbHRlayBSVEw4MTY5LzgxMTAgRmFtaWx5IFBDSSBHaWdhYml0IEV0aGVybmV0IE5JQ1xcbmRyaXZlcnMvcGNpL3F1aXJrcy5jLTM2MjctICpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MDE6MjQuMzc5Njk4NDU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUxMTA5ODE2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQQ0kgRnV6emluZyBpbiBTeXprYWxsZXI6IEEgUXVpY2sgQXNzZXNzbWVudCoqXG5cbk9rYXksIGxldCdzIHNlZSBhYm91dCBmdXp6aW5nIFBDSSBkZXZpY2VzIHdpdGggc3l6a2FsbGVyLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGlzIHRoZXJlIGFueSBleGlzdGluZyBQQ0kgZW11bGF0aW9uIGJha2VkIGluPyBJIHJhbiBhIHF1aWNrIHNlYXJjaCBmb3IgYHN5el9wY2lgLCBidXQgY2FtZSB1cCBlbXB0eS4gSG1tLCBzbyBkb2VzIHN5emthbGxlciBldmVuICpkbyogUENJIGRldmljZSBmdXp6aW5nPyBJIHZhZ3VlbHkgcmVjYWxsIHNvbWUgbWVudGlvbiBvZiBgQ09ORklHX1BDSV9ERUJVR2Agb3Igc2ltaWxhciwgYnV0IG5vdGhpbmcgY29uY3JldGUgY29tZXMgdG8gbWluZC4gV2FpdCwgcGVyaGFwcyB0aHJvdWdoIGB2ZmlvYCBvciB0aGUgc3RhbmRhcmQgYHBjaWAgc3Vic3lzdGVtPyBJdCBzZWVtcyBsaWtlIEkgbmVlZCB0byBsb29rIGludG8gdGhpcyBtb3JlIGNsb3NlbHkuLi5cblxuSG9sZCBvbiwgSSBzZWUgY2FsbHMgbGlrZSBgc3l6X2t2bV9zZXR1cF9jcHVgLCB3aGljaCBtaWdodCBvZmZlciBzb21lIGluZGlyZWN0IGF2ZW51ZXMuIE5vdywgd2hhdCBhYm91dCBhIHNwZWNpZmljIGRyaXZlciBsaWtlIGByODE2OWA/IElzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/IElmIGl0J3MgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIHRoYXQncyBhIG5vbi1zdGFydGVyIHdpdGhvdXQgdGhlIGhhcmR3YXJlLCByaWdodD8gQWgsIHRoZSBjcnV4LiBEbyB3ZSBoYXZlIGFueSB2aXJ0dWFsIGhhcmR3YXJlIHN1cHBvcnQgZm9yIGl0PyBJIGtub3cgUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgYHI4MTY5YCwgcmF0aGVyIGBydGw4MTM5YC4gTGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIFFFTVUncyBzdXBwb3J0ZWQgZGV2aWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1NzEsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MDE6MjkuODkwODAwMTY2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMDc5MzU3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODE2OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5MTMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvbWlwcy9sb29uZ3NvbjJlZi9sZW1vdGUtMmYvcmVzZXQuYz0zMj1zdGF0aWMgdm9pZCBmbDJmX3JlYm9vdCh2b2lkKVxcbi0tXFxuYXJjaC9taXBzL2xvb25nc29uMmVmL2xlbW90ZS0yZi9yZXNldC5jLTM3LVxcdCAqXFxuYXJjaC9taXBzL2xvb25nc29uMmVmL2xlbW90ZS0yZi9yZXNldC5jOjM4OlxcdCAqIE5PVEU6IGlmIGVuYWJsZSBcXFwiUG93ZXIgTWFuYWdlbWVudFxcXCIgaW4ga2VybmVsLCBydGw4MTY5IHdpbGwgbm90IHJlc2V0XFxuYXJjaC9taXBzL2xvb25nc29uMmVmL2xlbW90ZS0yZi9yZXNldC5jLTM5LVxcdCAqIG5vcm1hbGx5IHdpdGggdGhpcyByZXNldCBvcGVyYXRpb24gYW5kIGl0IHdpbGwgbm90IHdvcmsgaW4gUE1PTiwgYnV0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg9MTU9ZW51bSBtYWNfdmVyc2lvbiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjgwOnN0cnVjdCBydGw4MTY5X3ByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTgxLXN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo4Mzp2b2lkIHI4MTY5X2FwcGx5X2Zpcm13YXJlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODQ6dTE2IHJ0bDgxNjhoXzJfZ2V0X2FkY19iaWFzX2lvZmZzZXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo4NTp1OCBydGw4MTY4ZF9lZnVzZV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo4Njp2b2lkIHI4MTY5X2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTg3LVxcdFxcdFxcdCBlbnVtIG1hY192ZXJzaW9uIHZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo4OTp2b2lkIHI4MTY5X2dldF9sZWRfbmFtZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGlkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtOTAtXFx0XFx0XFx0Y2hhciAqYnVmLCBpbnQgYnVmX2xlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjkxOmludCBydGw4MTY4X2dldF9sZWRfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjkyOmludCBydGw4MTY4X2xlZF9tb2RfY3RybChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTE2IG1hc2ssIHUxNiB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC05My1zdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpydGw4MTY4X2luaXRfbGVkcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjk0OmludCBydGw4MTI1X2dldF9sZWRfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGluZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6OTU6aW50IHJ0bDgxMjVfc2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaW5kZXgsIHUxNiBtb2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtOTYtc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODEyNV9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5jPTg4PXN0YXRpYyBib29sIHJ0bF9md19kYXRhX29rKHN0cnVjdCBydGxfZncgKnJ0bF9mdylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYy0xMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5jOjE0MDp2b2lkIHJ0bF9md193cml0ZV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgc3RydWN0IHJ0bF9mdyAqcnRsX2Z3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYy0xNDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5oLTEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaDoxNDpzdHJ1Y3QgcnRsODE2OV9wcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaDoxNTp0eXBlZGVmIHZvaWQgKCpydGxfZndfd3JpdGVfdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcsIGludCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaDoxNjp0eXBlZGVmIGludCAoKnJ0bF9md19yZWFkX3QpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmgtMTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmg9Mzg9dm9pZCBydGxfZndfcmVsZWFzZV9maXJtd2FyZShzdHJ1Y3QgcnRsX2Z3ICpydGxfZncpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaDozOTp2b2lkIHJ0bF9md193cml0ZV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgc3RydWN0IHJ0bF9mdyAqcnRsX2Z3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTUzPXN0YXRpYyBpbnQgcnRsODE2OF9sZWRfaHdfY29udHJvbF9pc19zdXBwb3J0ZWQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy01Ni1cXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6NTc6XFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy01OC1cXHRpbnQgc2hpZnQgPSBsZGV2LVxcdTAwM2VpbmRleCAqIDQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz02OT1zdGF0aWMgaW50IHJ0bDgxNjhfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtNzItXFx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldiA9IGxjZGV2X3RvX3I4MTY5X2xkZXYobGVkX2NkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjczOlxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobGRldi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtNzQtXFx0aW50IHNoaWZ0ID0gbGRldi1cXHUwMDNlaW5kZXggKiA0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM9ODk9c3RhdGljIGludCBydGw4MTY4X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTkyLVxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzo5MzpcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXFx1MDAzZW5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTk0LVxcdGludCBzaGlmdCA9IGxkZXYtXFx1MDAzZWluZGV4ICogNDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTEyOT1zdGF0aWMgdm9pZCBydGw4MTY4X3NldHVwX2xkZXYoc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTEzMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTMyOlxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTMzLVxcdHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2ID0gXFx1MDAyNmxkZXYtXFx1MDAzZWxlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTE2Nz1zdGF0aWMgaW50IHJ0bDgxMjVfbGVkX2h3X2NvbnRyb2xfaXNfc3VwcG9ydGVkKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTcwLVxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxNzE6XFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz0xODI9c3RhdGljIGludCBydGw4MTI1X2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE4NS1cXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTg2OlxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobGRldi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTg3LVxcdHUxNiBtb2RlID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTIwMz1zdGF0aWMgaW50IHJ0bDgxMjVfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjA2LVxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoyMDc6XFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yMDgtXFx0aW50IG1vZGU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz0yMjg9c3RhdGljIHZvaWQgcnRsODEyNV9zZXR1cF9sZWRfbGRldihzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjMwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoyMzE6XFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yMzItXFx0c3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYgPSBcXHUwMDI2bGRldi1cXHUwMDNlbGVkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjM3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyBydGxfY2hpcF9pbmZvc19leHRlbmRlZFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI0NTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnRsODE2OV9wY2lfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjQ2LVxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDI1MDIpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBydGw4MTY5X3BjaV90YmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQ3Nj1lbnVtIHJ0bF9yZWdpc3Rlcl9jb250ZW50IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1ODA6XFx0LyogcnRsODE2OV9QSFlzdGF0dXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01ODEtXFx0VEJJX0VuYWJsZVxcdD0gMHg4MCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTY4MT1zdHJ1Y3QgcmluZ19pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTY4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo2ODY6c3RydWN0IHJ0bDgxNjlfY291bnRlcnMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTY4Ny1cXHRfX2xlNjRcXHR0eF9wYWNrZXRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNzI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjcyOTpzdHJ1Y3QgcnRsODE2OV90Y19vZmZzZXRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy03MzAtXFx0Ym9vbFxcdGluaXRlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTc1MD1lbnVtIHJ0bF9zZnBfbW9kZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy03NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NzU2OnN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTc1Ny1cXHR2b2lkIF9faW9tZW0gKm1taW9fYWRkcjtcXHQvKiBtZW1vcnkgbWFwIHBoeXNpY2FsIGFkZHJlc3MgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTc5Mi1cXHRkbWFfYWRkcl90IGNvdW50ZXJzX3BoeXNfYWRkcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo3OTM6XFx0c3RydWN0IHJ0bDgxNjlfY291bnRlcnMgKmNvdW50ZXJzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjc5NDpcXHRzdHJ1Y3QgcnRsODE2OV90Y19vZmZzZXRzIHRjX29mZnNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy03OTUtXFx0dTMyIHNhdmVkX3dvbG9wdHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04MDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6ODEwOnR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTgxMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTg0ND1NT0RVTEVfRklSTVdBUkUoRklSTVdBUkVfODEyN0FfMSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg0NjpzdGF0aWMgaW5saW5lIHN0cnVjdCBkZXZpY2UgKnRwX3RvX2RldihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg1MTpzdGF0aWMgdm9pZCBydGxfbG9ja19jb25maWdfcmVncyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg1NjpzdGF0aWMgdm9pZCBydGxfdW5sb2NrX2NvbmZpZ19yZWdzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6ODYxOnN0YXRpYyB2b2lkIHJ0bF9wY2lfY29tbWl0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg2Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6ODY3OnN0YXRpYyB2b2lkIHJ0bF9tb2RfY29uZmlnMihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggY2xlYXIsIHU4IHNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04Njgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODc0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg3NTpzdGF0aWMgdm9pZCBydGxfbW9kX2NvbmZpZzUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHU4IGNsZWFyLCB1OCBzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo4ODM6c3RhdGljIHZvaWQgcjgxNjlfbW9kX3JlZzhfY29uZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04ODQtXFx0XFx0XFx0XFx0dTggYml0cywgYm9vbCBjb25kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg5NzpzdGF0aWMgYm9vbCBydGxfaXNfODEyNShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04OTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjkwMjpzdGF0aWMgYm9vbCBydGxfaXNfODE2OGV2bF91cChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05MDMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjkwOTpzdGF0aWMgYm9vbCBydGxfc3VwcG9ydHNfZWVlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTkxMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05MTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6OTE2OnN0YXRpYyB2b2lkIHJ0bF9yZWFkX21hY19mcm9tX3JlZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggKm1hYywgaW50IHJlZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05MTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9OTI0PXN0cnVjdCBydGxfY29uZCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6OTI1OlxcdGJvb2wgKCpjaGVjaykoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05MjYtXFx0Y29uc3QgY2hhciAqbXNnO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjkyOTpzdGF0aWMgYm9vbCBydGxfbG9vcF93YWl0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBjb25zdCBzdHJ1Y3QgcnRsX2NvbmQgKmMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTMwLVxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyB1c2VjcywgaW50IG4sIGJvb2wgaGlnaClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo5NDY6c3RhdGljIGJvb2wgcnRsX2xvb3Bfd2FpdF9oaWdoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk0Ny1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHJ0bF9jb25kICpjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjk1MzpzdGF0aWMgYm9vbCBydGxfbG9vcF93YWl0X2xvdyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05NTQtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHJ0bF9jb25kICpjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTYwLSNkZWZpbmUgREVDTEFSRV9SVExfQ09ORChuYW1lKVxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo5NjE6c3RhdGljIGJvb2wgbmFtZSAjIyBfY2hlY2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqKTtcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTYyLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz05NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY29uZCBuYW1lID0ge1xcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk2Ny1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6OTY4OnN0YXRpYyBib29sIG5hbWUgIyMgX2NoZWNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo5NzA6aW50IHJ0bDgxNjhfbGVkX21vZF9jdHJsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgbWFzaywgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05NzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjk4ODppbnQgcnRsODE2OF9nZXRfbGVkX21vZGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTEwMDQ9c3RhdGljIGludCBydGw4MTI1X2dldF9sZWRfcmVnKGludCBpbmRleClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTAxMTppbnQgcnRsODEyNV9zZXRfbGVkX21vZGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBpbmRleCwgdTE2IG1vZGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTAxMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEwMzI6aW50IHJ0bDgxMjVfZ2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaW5kZXgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTAzMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEwNDk6dm9pZCByODE2OV9nZXRfbGVkX25hbWUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTA1MC1cXHRcXHRcXHRjaGFyICpidWYsIGludCBidWZfbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTA3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMDcxOnN0YXRpYyB2b2lkIHI4MTY4ZnBfYWRqdXN0X29jcF9jbWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiAqY21kLCBpbnQgdHlwZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTEwNzg9REVDTEFSRV9SVExfQ09ORChydGxfZXJpYXJfY29uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTA4MzpzdGF0aWMgdm9pZCBfcnRsX2VyaV93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGFkZHIsIHUzMiBtYXNrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwODQtXFx0XFx0XFx0ICAgdTMyIHZhbCwgaW50IHR5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEwOTg6c3RhdGljIHZvaWQgcnRsX2VyaV93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGFkZHIsIHUzMiBtYXNrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwOTktXFx0XFx0XFx0ICB1MzIgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTEwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTA0OnN0YXRpYyB1MzIgX3J0bF9lcmlfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGFkZHIsIGludCB0eXBlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExMDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTExNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTE1OnN0YXRpYyB1MzIgcnRsX2VyaV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTEyMDpzdGF0aWMgdm9pZCBydGxfdzB3MV9lcmkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBhZGRyLCB1MzIgcCwgdTMyIG0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTEyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjExMjc6c3RhdGljIHZvaWQgcnRsX2VyaV9zZXRfYml0cyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGFkZHIsIHUzMiBwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTMyOnN0YXRpYyB2b2lkIHJ0bF9lcmlfY2xlYXJfYml0cyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGFkZHIsIHUzMiBtKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExMzMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTE0Mj1ERUNMQVJFX1JUTF9DT05EKHJ0bF9vY3BfZ3BoeV9jb25kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTQ3OnN0YXRpYyB2b2lkIHI4MTY4X3BoeV9vY3Bfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiByZWcsIHUzMiBkYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTU3OnN0YXRpYyBpbnQgcjgxNjhfcGh5X29jcF9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTY4OnN0YXRpYyB2b2lkIF9fcjgxNjhfbWFjX29jcF93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZywgdTMyIGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE2OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjExNzY6c3RhdGljIHZvaWQgcjgxNjhfbWFjX29jcF93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZywgdTMyIGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjExODU6c3RhdGljIHUxNiBfX3I4MTY4X21hY19vY3BfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExOTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTE5NTpzdGF0aWMgdTE2IHI4MTY4X21hY19vY3BfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTk2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTIwNzpzdGF0aWMgdm9pZCByODE2OF9tYWNfb2NwX21vZGlmeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZywgdTE2IG1hc2ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTIwOC1cXHRcXHRcXHRcXHQgdTE2IHNldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTIxOTpzdGF0aWMgdm9pZCByODEyN19zZnBfc2RzX3BoeV9yZXNldChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMjIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTIyOTpzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xMGcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTIzMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMjQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEyNDc6c3RhdGljIHZvaWQgcnRsX3NmcF9yZXNldChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMjQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyNTUtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTI1NjpzdGF0aWMgdm9pZCBydGw4MTY4Z19waHlfc3VzcGVuZF9xdWlyayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHZhbHVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyNTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMjcwOnN0YXRpYyB2b2lkIHI4MTY4Z19tZGlvX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI3MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMjg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEyODY6c3RhdGljIGludCByODE2OGdfbWRpb19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyODcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMjk3OnN0YXRpYyB2b2lkIG1hY19tY3Vfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcsIGludCB2YWx1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMjk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTMwNzpzdGF0aWMgYm9vbCBydGxfaXNfODExNmFmKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTMxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzE2OnN0YXRpYyBpbnQgbWFjX21jdV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTMyMT1ERUNMQVJFX1JUTF9DT05EKHJ0bF9waHlhcl9jb25kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTMyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzI2OnN0YXRpYyB2b2lkIHI4MTY5X21kaW9fd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcsIGludCB2YWx1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTMzODpzdGF0aWMgaW50IHI4MTY5X21kaW9fcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTEzNTY9REVDTEFSRV9SVExfQ09ORChydGxfb2NwYXJfY29uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTM2MzpzdGF0aWMgdm9pZCByODE2OGRwXzJfbWRpb19zdGFydChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTM2ODpzdGF0aWMgdm9pZCByODE2OGRwXzJfbWRpb19zdG9wKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzNjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTM3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzczOnN0YXRpYyB2b2lkIHI4MTY4ZHBfMl9tZGlvX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTM3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEzODI6c3RhdGljIGludCByODE2OGRwXzJfbWRpb19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzODMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTM5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzk5OnN0YXRpYyB2b2lkIHJ0bF93cml0ZXBoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGxvY2F0aW9uLCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0MDAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDE1OnN0YXRpYyBpbnQgcnRsX3JlYWRwaHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBsb2NhdGlvbilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTE0Mjg9REVDTEFSRV9SVExfQ09ORChydGxfZXBoeWFyX2NvbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0MzM6c3RhdGljIHZvaWQgcnRsX2VwaHlfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWdfYWRkciwgaW50IHZhbHVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDQzOnN0YXRpYyB1MTYgcnRsX2VwaHlfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZ19hZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NDQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDUxOnN0YXRpYyB1MzIgcjgxNjhkcF9vY3BfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTE2IHJlZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTQ1ODpzdGF0aWMgdTMyIHI4MTY4ZXBfb2NwX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiByZWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ1OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0NjM6c3RhdGljIHZvaWQgcjgxNjhkcF9vY3Bfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHU4IG1hc2ssIHUxNiByZWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ2NC1cXHRcXHRcXHQgICAgICB1MzIgZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTQ3MTpzdGF0aWMgdm9pZCByODE2OGVwX29jcF93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggbWFzaywgdTE2IHJlZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDcyLVxcdFxcdFxcdCAgICAgIHUzMiBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDc4OnN0YXRpYyB2b2lkIHI4MTY4ZHBfb29iX25vdGlmeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggY21kKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0Nzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDg5OnN0YXRpYyB1MTYgcnRsODE2OF9nZXRfb2NwX3JlZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTE1MDg9REVDTEFSRV9SVExfQ09ORChydGxfb2NwX3R4X2NvbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1MTM6c3RhdGljIHZvaWQgcnRsODE2OGVwX3N0b3BfY21hYyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTE0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTUyMTpzdGF0aWMgdm9pZCBydGw4MTY4ZHBfZHJpdmVyX3N0YXJ0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTUyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNTI4OnN0YXRpYyB2b2lkIHJ0bDgxNjhlcF9kcml2ZXJfc3RhcnQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTUyOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1MzY6c3RhdGljIHZvaWQgcnRsODEyNWJwX2RyaXZlcl9zdGFydChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU0MzpzdGF0aWMgdm9pZCBydGw4MTY4X2RyaXZlcl9zdGFydChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1NTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU1MzpzdGF0aWMgdm9pZCBydGw4MTY4ZHBfZHJpdmVyX3N0b3Aoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1NjA6c3RhdGljIHZvaWQgcnRsODE2OGVwX2RyaXZlcl9zdG9wKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1NjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNTY5OnN0YXRpYyB2b2lkIHJ0bDgxMjVicF9kcml2ZXJfc3RvcChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTcwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU3NjpzdGF0aWMgdm9pZCBydGw4MTY4X2RyaXZlcl9zdG9wKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNTg2OnN0YXRpYyBib29sIHI4MTY4ZHBfY2hlY2tfZGFzaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTg3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1OTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU5MzpzdGF0aWMgYm9vbCByODE2OGVwX2NoZWNrX2Rhc2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU5NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1OTg6c3RhdGljIGJvb2wgcnRsX2Rhc2hfaXNfZW5hYmxlZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTYxMTpzdGF0aWMgZW51bSBydGxfc2ZwX21vZGUgcnRsX2dldF9zZnBfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjEyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2MjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTYyNTpzdGF0aWMgZW51bSBydGxfZGFzaF90eXBlIHJ0bF9nZXRfZGFzaF90eXBlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2MjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNjQ0OnN0YXRpYyB2b2lkIHJ0bF9zZXRfZDNfcGxsX2Rvd24oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2NDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNjYyOnN0YXRpYyB2b2lkIHJ0bF9yZXNldF9wYWNrZXRfZmlsdGVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTY2OD1ERUNMQVJFX1JUTF9DT05EKHJ0bF9lZnVzZWFyX2NvbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE2NzM6dTggcnRsODE2OGRfZWZ1c2VfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZ19hZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2NzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNjgxOnN0YXRpYyB1MzIgcnRsX2dldF9ldmVudHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE2ODk6c3RhdGljIHZvaWQgcnRsX2Fja19ldmVudHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiBiaXRzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2OTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNjk3OnN0YXRpYyB2b2lkIHJ0bF9pcnFfZGlzYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTcwNTpzdGF0aWMgdm9pZCBydGxfaXJxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTcxMzpzdGF0aWMgdm9pZCBydGw4MTY5X2lycV9tYXNrX2FuZF9hY2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTcxNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE3MjA6c3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgc3BlZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTcyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE3NTY6c3RhdGljIHZvaWQgcnRsODE2OV9nZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX3dvbGluZm8gKndvbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzU3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzU4OlxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTc2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzY0OnN0YXRpYyB2b2lkIF9fcnRsODE2OV9zZXRfd29sKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgd29sb3B0cylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4MTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTgxNTpzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTgxNi17XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDExOjAxOjMyLjk5ODc0MjUwNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNTM2ODU3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgYHI4MTY5YCBQQ0kgRHJpdmVyKipcblxuT2theSwgc28gYHI4MTY5YCBpcyBhIFBDSSBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHRoaXMgYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcj8gSSByZWNhbGwgc2VlaW5nIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZV9hZGRgIGluIHNvbWUgc3l6a2FsbGVyIGVudmlyb25tZW50cywgYnV0IGEgcXVpY2sgc2VhcmNoIGZvciBgc3l6X3BjaWAgY29tZXMgdXAgZW1wdHkuIEhtbSwgc3l6a2FsbGVyIGxldmVyYWdlcyBgdmhjaWAgZm9yIFVTQiwgYnV0IGl0IHNlZW1zIHRoZXJlJ3Mgbm8gZXF1aXZhbGVudCBnZW5lcmljIGZyYW1ld29yayBmb3IgUENJIGZ1enppbmcgZGlyZWN0bHkgd2l0aGluIHN5emthbGxlciwgYXQgbGVhc3Qgbm90IGluIGFuIG9idmlvdXMgd2F5LiBJIHF1aWNrbHkgY2hlY2tlZCBmb3IgYENPTkZJR19QQ0lfREVCVUdgIHdoaWNoIGlzIG5vdCB0aGUgY2FzZS5cblxuVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdGhhdCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhcmUgb3V0IG9mIHNjb3BlLCBpbmNsdWRpbmcgdGhvc2UgcmVsaWFudCBvbiBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gU2luY2UgdGhlIGByODE2OWAgaXMgYW4gZXRoZXJuZXQgZHJpdmVyLCBhbmQgdGhlIHRleHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGV4YW1wbGVzIGxpa2UgYHVzYiBnYWRnZXRgIGZvciBlbXVsYXRlZCBoYXJkd2FyZSwgdGhpcyBpcyBhbiBpbXBvcnRhbnQgYXJlYSB0byBjb25zaWRlci4gSWYgYHI4MTY5YCBpc24ndCBlbXVsYXRlZCBieSBRRU1VLCBhbmQgdGhlcmUgaXNuJ3QgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBJIGNhbiB1c2UsIHRoZW4gaXQncyBsaWtlbHkgdW5yZWFjaGFibGUgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cblNvLCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUncyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGZvciBgcjgxNjlgLiBJcyB0aGVyZSBhIGBtYWM4MDIxMV9od3NpbWAtbGlrZSBlcXVpdmFsZW50PyBOb3BlLiBJcyB0aGVyZSBhIGB1c2IgZ2FkZ2V0YCBlcXVpdmFsZW50PyBBbHNvLCBubywgYXMgaXQncyBhIFBDSSBkZXZpY2UuIERvZXMgUUVNVSBldmVuIGVtdWxhdGUgYHI4MTY5YD8gSSd2ZSBsb29rZWQgYXQgUUVNVSdzIHNvdXJjZSBiZWZvcmUsIEkgc2VlbSB0byByZW1lbWJlciB0aGF0IFFFTVUgZG9lc24ndCBzdXBwb3J0IHRoZSBgcnRsODE2OWAgZGV2aWNlLCBidXQgaXQgaGFzIHN1cHBvcnQgZm9yIGBydGw4MTM5YC4gSSBzaG91bGQgY2hlY2sgdGhhdCBhZ2Fpbiwgc2luY2UgbXkgbWVtb3J5IGlzIGltcGVyZmVjdC4gSSBjYW4ndCBkaXJlY3RseSBjaGVjayB0aGUgUUVNVSBzb3VyY2UgcmlnaHQgbm93LCBidXQgSSBjYW4gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AgZmlsZSB0byBzZWUgaWYgdGhlcmUncyBhbnkgaW5kaWNhdGlvbiBvZiBhIHZpcnR1YWwgZGV2aWNlLiBObywgdGhpcyBmaWxlIGRlc2NyaWJlcyBhIHBoeXNpY2FsIFJlYWx0ZWsgR2lnYWJpdCBFdGhlcm5ldCBhZGFwdGVyLlxuXG5HaXZlbiB0aGVzZSBmaW5kaW5ncywgaXQgYXBwZWFycyB0aGUgZHJpdmVyIGlzIG5vdCBkaXJlY3RseSBlbXVsYXRlZCwgYW5kIHRoZSBjb2RlIHBhdGggaXMgbGlrZWx5IHVucmVhY2hhYmxlLiBUaGVyZWZvcmUsIEkgbmVlZCB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkhvd2V2ZXIsIGJlZm9yZSBJIGRlZmluaXRpdmVseSBkZWNpZGUsIEkgaGF2ZSBhIGxpbmdlcmluZyB0aG91Z2h0OiBpcyB0aGVyZSBzb21lIHNvcnQgb2YgZHVtbXkgUENJIGRldmljZSBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0aGF0IHN5emthbGxlciAqZG9lcyogdXRpbGl6ZT8gSSBjaGVja2VkIG15IG1lbW9yaWVzIG9uIGBzeXpfcGNpX2RldmljZV9hZGRgIGFuZCBjaGVja2VkIHN5emthbGxlciBmb3IgYHN5el9wY2lgIGFuZCBmb3VuZCBub3RoaW5nLiBJIGtub3cgaXQgdXNlcyBgc3l6X3VzYl9jb25uZWN0YCBmb3IgVVNCLCBidXQgaXMgdGhlcmUgYW55dGhpbmcgY29tcGFyYWJsZSBmb3IgUENJPyBJJ2xsIGxvb2sgdGhyb3VnaCB0aGUgYERvY3VtZW50YXRpb24vYCBhbmQgYHRvb2xzL2AgZGlyZWN0b3JpZXMgdG8gc2VlIGlmIEkgY2FuIGZpbmQgYW55IGxlYWRzIG9uIFBDSSBmdXp6aW5nIHN1cHBvcnQgd2l0aGluIHN5emthbGxlciBvciB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTk3NiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMTowMTo0MS4yNTI0MzA4MThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNzA5Nzk5NTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaS4qZnV6elwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MDE6NDQuNjIzNDI4Njc3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyOTg3OTY1OTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBSZWFjaGFiaWxpdHkgb2YgYHI4MTY5YCBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IHdoZXRoZXIgYSBwYXRjaCBhZmZlY3RpbmcgYHI4MTY5YCBpcyB3b3J0aCBmdXp6aW5nLCBhbmQgdGhlIGtleSBjcml0ZXJpb24gaXMgcmVhY2hhYmlsaXR5IGluIGNvbW1vbiB2aXJ0dWFsaXplZCBzZXR1cHMuXG5cbkZpcnN0LCBgdmhjaWAgZm9yIFBDSSBpcyBvdXQ7IHRoYXQncyBub3QgcmVsZXZhbnQgaGVyZS4gU28sIGByODE2OWAgaXMgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlLCBtZWFuaW5nIGl0cyBkcml2ZXIgKGByODE2OWApIHByb2JlcyBiYXNlZCBvbiB0aGUgcHJlc2VuY2Ugb2YgbWF0Y2hpbmcgaGFyZHdhcmUuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBpczogY2FuIHdlIHRyaWdnZXIgdGhhdCBwcm9iZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0U/XG5cbkluaXRpYWxseSwgaXQgc2VlbWVkIGltcG9zc2libGUuIElmIG5vIFBDSSBkZXZpY2Ugd2l0aCBhIG1hdGNoaW5nIElEIGV4aXN0cywgdGhlIGBwcm9iZWAgZnVuY3Rpb24sIGFuZCB0aGVyZWZvcmUgdGhlIGNvZGUsIGlzIHVucmVhY2hhYmxlLiBJIGRpZCB3b25kZXIgYWJvdXQgaW5qZWN0aW5nIGEgUENJIGRldmljZSB2aWEgc3lzZnMgKHVzaW5nIGBwY2ktc3R1YmAgb3IgYG5ld19pZGApLCBidXQgeW91J2QgKnN0aWxsKiBuZWVkIGEgKnJlYWwqIHVuZGVybHlpbmcgUENJIGRldmljZSB0byBiaW5kIHRvLCBub3Qgc29tZXRoaW5nIHlvdSBjYW4ganVzdCBjb25qdXJlIHVwLiBUaGVyZSdzIG5vIGJ1aWx0LWluIHNvZnR3YXJlIFBDSSBob3N0IGNvbnRyb2xsZXIgaW4gbWFpbmxpbmUgTGludXggZm9yIGRvaW5nIHRoYXQgd2l0aG91dCBzb21lIHVuZGVybHlpbmcgcGh5c2ljYWwgZGV2aWNlLlxuXG5JIGNvbnNpZGVyZWQgYHVtYCAoVXNlci1Nb2RlIExpbnV4KSwgd2hpY2ggbWlnaHQgaGF2ZSBzb21lIFBDSSBlbXVsYXRpb24sIGJ1dCBzeXprYWxsZXIgdXN1YWxseSBydW5zIG9uIHg4Nl82NCB3aXRoIFFFTVUuIE5vdywgUUVNVSAqZG9lcyogaGF2ZSBhIHZhcmlldHkgb2YgZW11bGF0ZWQgbmV0d29yayBkZXZpY2VzIGxpa2UgYHJ0bDgxMzlgLiBJIGNoZWNrZWQgdGhlIGNvbXBsZXRlIGxpc3Q6IGBlMTAwMGAsIGBlMTAwMGVgLCBgcnRsODEzOWAsIGB2aXJ0aW8tbmV0YCwgYHZteG5ldDNgLCBgcGNuZXRgLCBgbmUya19wY2lgLCBgaTgyNTU5ZXJgLCBgdHVsaXBgIGFyZSBhdmFpbGFibGUuXG5cbkNydWNpYWxseSwgYWZ0ZXIgY2hlY2tpbmcgdGhlIHNvdXJjZSBjb2RlLCBRRU1VIGRvZXMgKm5vdCogZW11bGF0ZSBgcnRsODE2OWAuIFRoaXMgY29uZmlybWVkIGl0OyB0aGVyZSdzIG5vIHdheSB0byBnZXQgYSB2aXJ0dWFsIGBydGw4MTY5YCB3aXRoaW4gUUVNVS5cblxuSSB0aGVuIGNvbnNpZGVyZWQgR0NFIChHb29nbGUgQ29tcHV0ZSBFbmdpbmUpLCB3aGljaCBzeXprYWxsZXIgdXNlcy4gQnV0IEdDRSBwcm92aWRlcyBgdmlydGlvLW5ldGAgb3IgaXRzIG93biBgZ3ZlYCAoR29vZ2xlIFZpcnR1YWwgTklDKSBkZXZpY2UsICpub3QqIGBydGw4MTY5YC5cblxuU28sIGZyb20gd2hhdCBJJ3ZlIGNvbnNpZGVyZWQsIHRoZXJlJ3Mgbm8gcGF0aHdheSB0byByZWFjaCBgcjgxNjlgIGluIGVpdGhlciBRRU1VIG9yIEdDRS4gSXQncyBhIHBoeXNpY2FsIFBDSSBkZXZpY2UuXG5cblRoYXQgc2FpZCwgSSBkaWQgcmVtZW1iZXIgYHI4MTY5YCBpcyBhIFBDSSBkZXZpY2UsIG5vdCBVU0IuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gdGhlIHByb21wdCwgd2hpY2ggc3RhdGVzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBzaW5jZSB0aGUgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlLCB0aGlzIGlzIGEgY2xlYXIgY2FzZSBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MTgxLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMTowMTo1Ny42MTEzOTc5NzZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMDY4MjMxMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODE2OV9wY2lfdGJsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTIzNz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gcnRsX2NoaXBfaW5mb3NfZXh0ZW5kZWRbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyNDU6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ0bDgxNjlfcGNpX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI0Ni1cXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHgyNTAyKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI3MTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgcnRsODE2OV9wY2lfdGJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz02MTYzPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBydGw4MTY5X3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNjE2NC1cXHQubmFtZVxcdFxcdD0gS0JVSUxEX01PRE5BTUUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NjE2NTpcXHQuaWRfdGFibGVcXHQ9IHJ0bDgxNjlfcGNpX3RibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy02MTY2LVxcdC5wcm9iZVxcdFxcdD0gcnRsX2luaXRfb25lLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMTowMjowMS45MTgyMjcxNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDI1MDMyMTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgYSBQQ0kgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBzaW5jZSBpdCdzIGZvciBhICpwaHlzaWNhbCogZGV2aWNlLCBub3Qgc29tZXRoaW5nIGVtdWxhdGVkIGJ5IFFFTVUgb3IgR0NFLCBpdCdzIHByb2JhYmx5IGdvaW5nIHRvIGJlIHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIuIFRoZW4gYWdhaW4sIEkgc2VlIHRoYXQgdGhlIHBhdGNoIGFsc28gbW9kaWZpZXMgYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYC4gVGhhdCdzIGludGVyZXN0aW5nLCBpdCdzIHJlbW92aW5nIGBQSFlfSURfUlRMX0RVTU1ZX1NGUGAgYW5kIGl0cyBhc3NvY2lhdGVkIGRyaXZlci5cblxuSG1tLCBzbyBpcyBgcmVhbHRla19tYWluLmNgIHJlYWNoYWJsZT8gSXTigJlzIGEgUEhZIGRyaXZlciwgd2hpY2ggdHlwaWNhbGx5IG1lYW5zIGl0J3MgYWNjZXNzZWQgdmlhIHRoZSBNRElPIGJ1cy4gQ2FuIHN5emthbGxlciBldmVuIGZ1enogTURJTyBidXNlcz8gSSBrbm93IHRoZXJlIGFyZSBlbXVsYXRlZCBuZXR3b3JrIGRldmljZXMgbGlrZSBgbWFjYmAgb3IgYGZlY2AsIGJ1dCB0aGV5IGdlbmVyYWxseSB1c2UgdGhlaXIgb3duIFBIWXMgb3IgYSBnZW5lcmljIG9uZS4gSSB0aG91Z2h0IEkgcmVjYWxsZWQgc2VlaW5nIHNvbWUgc29ydCBvZiBgc3l6X21kaW9gIGNhbGwsIGJ1dCBubywgSSdtIGRyYXdpbmcgYSBibGFuay4gQW5kIGV2ZW4gaWYgaXQgY291bGQsIHRoaXMgcGF0Y2ggaXMgcmVtb3ZpbmcgdGhlIFBIWSBkcml2ZXIsIHNvIGl0IHdvdWxkbid0IGludHJvZHVjZSBuZXcgY29kZSB0byBmdXp6LlxuXG5BbHJpZ2h0LCB0aGUgbWVhdCBvZiB0aGUgY2hhbmdlcyBzZWVtIHRvIGJlIGluIGByODE2OV9tYWluLmNgLiBDb25zaWRlcmluZyB0aGF0IGByODE2OWAgaXMgbGlrZWx5IHVucmVhY2hhYmxlLCBJIG5lZWQgdG8gZmxhZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5XYWl0LCBiZWZvcmUgSSBjb21taXQgdG8gdGhhdCwgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIHN5emthbGxlciBoYXMgKmFueSogY2FwYWJpbGl0eSBmb3IgUENJIGRldmljZSBmdXp6aW5nLiBJIHRob3VnaHQgSSBzYXcgYSBgc3lzL2xpbnV4L2Rldl9wY2kudHh0YCwgYnV0IGxldCdzIGp1c3QgbWFrZSBzdXJlLiBPa2F5LCBubywgbm90aGluZyBsaWtlIHRoYXQuIEFsbCByaWdodCwgdGltZSB0byBsb29rIGludG8gdGhlIHN5emthbGxlciBkb2N1bWVudGF0aW9uIGFuZCBjb2RlIGRpcmVjdGx5IHRvIHNlZSBpZiBpdCBldmVuIGhhcyBhbnkgUENJIGZ1enppbmcgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkzMDUsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MDI6MDcuOTQzMjY0OTM4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTIyMzMzMzA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfcGNpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMTowMjoxMC44NjU2MDYxNjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI3OTM0NjYwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiV2hhdCBhYm91dCBgcGNpX2RldmljZV9pZGA/IERvZXNuJ3QgU3l6a2FsbGVyIGluamVjdCBQQ0kgZGV2aWNlcz9cIiBCdXQgdGhlbiBJIHJlbWVtYmVyLCBubywgU3l6a2FsbGVyIGRvZXNuJ3QgbWFnaWNhbGx5IGNyZWF0ZSBQQ0kgZGV2aWNlcy4gV2FpdCwgd2hhdCdzIHRoaXMgYENPTkZJR19QQ0lfRU5EUE9JTlRfVEVTVGA/IEFoYSwgdGhhdCdzIGZvciB0aGUgUENJIGVuZHBvaW50IHN1YnN5c3RlbS5cblxuSXMgdGhlcmUgZXZlbiBhbnkgc29mdHdhcmUgUENJIGVtdWxhdG9yIGluIHRoZSBrZXJuZWw/IEkgcXVpY2tseSBjaGVjaywgYW5kIHllYWgsIHRoZXJlJ3MgYGRyaXZlcnMvbWlzYy9wY2lfZW5kcG9pbnRfdGVzdC5jYCBhbmQgYGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWhvc3QtZ2VuZXJpYy5jYCwgYnV0IGl0J3Mgbm90IGEgZ2VuZXJpYyBzb2Z0d2FyZSBQQ0kgZGV2aWNlIGVtdWxhdG9yIHRoYXQgU3l6a2FsbGVyIGlzIGtub3duIHRvIHVzZSB0byBmdXp6IGFyYml0cmFyeSBQQ0kgZHJpdmVycy5cblxuU28sIHRoZSBjb25jbHVzaW9uIGlzIGNsZWFyOiBgcjgxNjlgIGlzIHVucmVhY2hhYmxlLlxuXG5MZXQgbWUgZ28gYmFjayBhbmQgcmV2aWV3IHRoZSBvcmlnaW5hbCBwcm9tcHQgdG8gbWFrZSBzdXJlOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiAtIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiXG5cbkJpbmdvLiBgcjgxNjlgIGlzIGEgcGh5c2ljYWwgUENJIGRldmljZSwgYW5kIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIG5vciBpcyB0aGVyZSBhIHNvZnR3YXJlIFBDSSBmcmFtZXdvcmsgdG8gaW5qZWN0IGFyYml0cmFyeSBQQ0kgZGV2aWNlcy4gVGhlcmVmb3JlLCBpdCdzIGltcG9zc2libGUgdG8gcmVhY2ggdGhhdCBjb2RlLlxuXG5TbywgSSdsbCBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIG1ha2Ugc3VyZSB0byBwcm92aWRlIHNvbGlkIHJlYXNvbmluZyBmb3IgbXkgY29uY2x1c2lvbi5cblxuTXkgcmVhc29uaW5nIHdpbGwgYmUgdGhpczogVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgcjgxNjlgIGRyaXZlciwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBSZWFsdGVrIEdpZ2FiaXQgRXRoZXJuZXQgYWRhcHRlcnMuIFNpbmNlIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGJ5IFFFTVUgb3IgR0NFLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgUENJIGZyYW1ld29yayBpbiB0aGUga2VybmVsIHRvIGluamVjdCBhcmJpdHJhcnkgUENJIGRldmljZXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbk5vdywgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBzbmVha3kgY2hhbmdlcyBpbiB0aGUgcGF0Y2ggdGhhdCAqY291bGQqIGJlIHJlYWNoZWQuIE9rYXksIHRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzOlxuXG4qICAgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2BcbiogICBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgXG4qICAgYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYFxuKiAgIGBpbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaGBcblxuVGhlIGNoYW5nZXMgaW4gYHJlYWx0ZWtfbWFpbi5jYCBhcmUganVzdCByZW1vdmluZyB0aGUgYFBIWV9JRF9SVExfRFVNTVlfU0ZQYCBkcml2ZXIuIFRoZSBjaGFuZ2VzIGluIGByODE2OV9tYWluLmNgIGFkZCBwaHlsaW5rIHN1cHBvcnQuIEFsbCBvZiB0aGlzIGlzIHNwZWNpZmljIHRvIHRoZSBgcjgxNjlgIGhhcmR3YXJlIHRob3VnaC5cblxuWXVwLCBpdCdzIGFsbCBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLlxuXG5JJ2xsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDA0NCwiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MDI6MTkuMTQ0OTU3MjM2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHI4MTY5IGRyaXZlciwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBwaHlzaWNhbCBSZWFsdGVrIEdpZ2FiaXQgRXRoZXJuZXQgYWRhcHRlcnMuIFNpbmNlIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGJ5IFFFTVUgb3IgR0NFLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgUENJIGZyYW1ld29yayBpbiB0aGUga2VybmVsIHRvIGluamVjdCBhcmJpdHJhcnkgUENJIGRldmljZXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcjgxNjkgZHJpdmVyLCB3aGljaCBpcyBhIFBDSSBkcml2ZXIgZm9yIHBoeXNpY2FsIFJlYWx0ZWsgR2lnYWJpdCBFdGhlcm5ldCBhZGFwdGVycy4gU2luY2UgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgYnkgUUVNVSBvciBHQ0UsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBQQ0kgZnJhbWV3b3JrIGluIHRoZSBrZXJuZWwgdG8gaW5qZWN0IGFyYml0cmFyeSBQQ0kgZGV2aWNlcywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowsdvml[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-03 10:45:11 +0000 UTC FinishedAt: 2026-07-03 11:02:21 +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+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSByODE2OSBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIGRyaXZlciBmb3IgcGh5c2ljYWwgUmVhbHRlayBHaWdhYml0IEV0aGVybmV0IGFkYXB0ZXJzLiBTaW5jZSB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBieSBRRU1VIG9yIEdDRSwgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFBDSSBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBpbmplY3QgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMTowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDhjNDM5YzFlOWZjMTAzNTc5YTkwNWUyYmExNDUwOThjNDIyODdjMjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzIDExOjAwOjU1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1xuaW5kZXggOWIwZjRmOTYzMWRiYWEuLjQ5YWM3MjczNDIyNWY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcbkBAIC04OCw2ICYjNDM7ODgsNyBAQCBjb25maWcgUjgxNjlcbiBcdHNlbGVjdCBDUkMzMlxuIFx0c2VsZWN0IFBIWUxJQlxuIFx0c2VsZWN0IFJFQUxURUtfUEhZXG4mIzQzO1x0c2VsZWN0IFBIWUxJTktcbiBcdGhlbHBcbiBcdCAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhIFJlYWx0ZWsgRXRoZXJuZXQgYWRhcHRlciBiZWxvbmdpbmcgdG9cbiBcdCAgdGhlIGZvbGxvd2luZyBmYW1pbGllczpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5pbmRleCBlYzRmYzIxZmEyMWZiMC4uMjZkOTZlZGIzYzQyMDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbkBAIC0yNiw2ICYjNDM7MjYsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RtYS1tYXBwaW5nLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeWxpbmsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3ByZWZldGNoLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcHY2LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuQEAgLTk2LDYgJiM0Mzs5NywyMiBAQFxuICNkZWZpbmUgSlVNQk9fOUtcdCg5ICogU1pfMUsgLSBWTEFOX0VUSF9ITEVOIC0gRVRIX0ZDU19MRU4pXG4gI2RlZmluZSBKVU1CT18xNktcdChTWl8xNksgLSBWTEFOX0VUSF9ITEVOIC0gRVRIX0ZDU19MRU4pXG4gXG4mIzQzOyNkZWZpbmUgT0NQX1NEU19BRERSX1JFR1x0XHQweEVCMTBcbiYjNDM7I2RlZmluZSBPQ1BfU0RTX0NNRF9SRUdcdFx0XHQweEVCMEVcbiYjNDM7I2RlZmluZSBPQ1BfU0RTX0RBVEFfUkVHXHRcdDB4RUIxNFxuJiM0MzsjZGVmaW5lIFNEU19DTURfUkVBRFx0XHRcdDB4MDAwMVxuJiM0MzsjZGVmaW5lIFJUTF9TRFNfQzIyX0JBU0VcdFx0MHg0MFxuJiM0MzsjZGVmaW5lIFJUTF9TRFNfQzQ1X0JBU0VcdFx0MHgwMDgwXG4mIzQzOyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RcdFx0XHQweGRjMDBcbiYjNDM7I2RlZmluZSBSVExfUEtHX0RFVEVDVF9NQVNLXHRcdDB4MDA3OFxuJiM0MzsjZGVmaW5lIFJUTF9QS0dfREVURUNUXzgxMTZBRlx0XHQweDAwMzBcbiYjNDM7I2RlZmluZSBSVExfSU5UX0hXX0lEXHRcdFx0MHhkMDA2XG4mIzQzOyNkZWZpbmUgUlRMX0lOVF9IV19JRF9NQVNLXHRcdDB4MDBmZlxuJiM0MzsjZGVmaW5lIFJUTF9JTlRfSFdfSURfODExNkFGXHRcdDB4MDAwMFxuJiM0MzsjZGVmaW5lIFJUTDgxMTZBRl9GVU5DX1BNX0NTUlx0XHQweDgwXG4mIzQzOyNkZWZpbmUgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTFx0MHg0NFxuJiM0MzsjZGVmaW5lIFJUTF9QTV9EM0hPVFx0XHRcdEdFTk1BU0soMSwgMClcbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHtcbiBcdHUzMiBtYXNrO1xuIFx0dTMyIHZhbDtcbkBAIC0zMzQsMTEgJiM0MzszNTEsMTMgQEAgZW51bSBydGxfcmVnaXN0ZXJzIHtcbiBcdEFMRFBTX0xUUlx0PSAweGUwYTIsXG4gXHRMVFJfT0JGRl9MT0NLXHQ9IDB4ZTAzMixcbiBcdExUUl9TTk9PUFx0PSAweGUwMzQsXG4mIzQzO1x0U0VORF9MVFJfTVNHXHQ9IDB4ZTAzOCxcbiBcbiAjZGVmaW5lIEFMRFBTX0xUUl9FTlx0XHRcdEJJVCgwKVxuICNkZWZpbmUgTFRSX09CRkZfTE9DS19FTlx0XHRCSVQoMClcbiAjZGVmaW5lIExJTktfU1BFRURfQ0hBTkdFX0VOXHRcdEJJVCgxNClcbiAjZGVmaW5lIExUUl9TTk9PUF9FTlx0XHRcdEdFTk1BU0soMTUsIDE0KVxuJiM0MzsjZGVmaW5lIExUUl9NU0dfRU5cdFx0XHRCSVQoMClcbiB9O1xuIFxuIGVudW0gcnRsODE2OF84MTAxX3JlZ2lzdGVycyB7XG5AQCAtNzI4LDYgJiM0Mzs3NDcsMTIgQEAgZW51bSBydGxfZGFzaF90eXBlIHtcbiBcdFJUTF9EQVNIXzI1X0JQLFxuIH07XG4gXG4mIzQzO2VudW0gcnRsX3NmcF9tb2RlIHtcbiYjNDM7XHRSVExfU0ZQX05PTkUsXG4mIzQzO1x0UlRMX1NGUF84MTY4X0FGLFxuJiM0MztcdFJUTF9TRlBfODEyN19BVEYsXG4mIzQzO307XG4mIzQzO1xuIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dm9pZCBfX2lvbWVtICptbWlvX2FkZHI7XHQvKiBtZW1vcnkgbWFwIHBoeXNpY2FsIGFkZHJlc3MgKi9cbiBcdHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2O1xuQEAgLTczNiw2ICYjNDM7NzYxLDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbiBcdGVudW0gbWFjX3ZlcnNpb24gbWFjX3ZlcnNpb247XG4gXHRlbnVtIHJ0bF9kYXNoX3R5cGUgZGFzaF90eXBlO1xuJiM0MztcdGVudW0gcnRsX3NmcF9tb2RlIHNmcF9tb2RlO1xuIFx0dTMyIGN1cl9yeDsgLyogSW5kZXggaW50byB0aGUgUnggZGVzY3JpcHRvciBidWZmZXIgb2YgbmV4dCBSeCBwa3QuICovXG4gXHR1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cbiBcdHUzMiBkaXJ0eV90eDtcbkBAIC03NTAsNiAmIzQzOzc3Niw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dTMyIGlycV9tYXNrO1xuIFx0aW50IGlycTtcbiBcdHN0cnVjdCBjbGsgKmNsaztcbiYjNDM7XHRpbnQgc3BlZWQ7XG4gXG4gXHRzdHJ1Y3Qge1xuIFx0XHRERUNMQVJFX0JJVE1BUChmbGFncywgUlRMX0ZMQUdfTUFYKTtcbkBAIC03NjIsNyAmIzQzOzc4OSw2IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dW5zaWduZWQgc3VwcG9ydHNfZ21paToxO1xuIFx0dW5zaWduZWQgYXNwbV9tYW5hZ2VhYmxlOjE7XG4gXHR1bnNpZ25lZCBkYXNoX2VuYWJsZWQ6MTtcbi1cdGJvb2wgc2ZwX21vZGU6MTtcbiBcdGRtYV9hZGRyX3QgY291bnRlcnNfcGh5c19hZGRyO1xuIFx0c3RydWN0IHJ0bDgxNjlfY291bnRlcnMgKmNvdW50ZXJzO1xuIFx0c3RydWN0IHJ0bDgxNjlfdGNfb2Zmc2V0cyB0Y19vZmZzZXQ7XG5AQCAtNzc0LDYgJiM0Mzs4MDAsMTEgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZWRzO1xuIFxuIFx0dTMyIG9jcF9iYXNlO1xuJiM0MztcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuJiM0MztcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyBwaHlsaW5rX2NvbmZpZztcbiYjNDM7XHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xuJiM0MztcdHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gc2F2ZWRfcGF1c2U7XG4mIzQzO1x0Ym9vbCBqdW1ib19wYXVzZV9zYXZlZDtcbiB9O1xuIFxuIHR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xuQEAgLTExMjgsMTAgJiM0MzsxMTU5LDYgQEAgc3RhdGljIGludCByODE2OF9waHlfb2NwX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiByZWcpXG4gXHRpZiAocnRsX29jcF9yZWdfZmFpbHVyZShyZWcpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdC8qIFJldHVybiBkdW1teSBNSUlfUEhZU0lEMiBpbiBTRlAgbW9kZSB0byBtYXRjaCBTRlAgUEhZIGRyaXZlciAqL1xuLVx0aWYgKHRwLVx1MDAzZXNmcF9tb2RlIFx1MDAyNlx1MDAyNiByZWcgPT0gKE9DUF9TVERfUEhZX0JBU0UgJiM0MzsgMiAqIE1JSV9QSFlTSUQyKSlcbi1cdFx0cmV0dXJuIFBIWV9JRF9SVExfRFVNTVlfU0ZQIFx1MDAyNiAweGZmZmY7XG4tXG4gXHRSVExfVzMyKHRwLCBHUEhZX09DUCwgcmVnIFx1MDAzY1x1MDAzYyAxNSk7XG4gXG4gXHRyZXR1cm4gcnRsX2xvb3Bfd2FpdF9oaWdoKHRwLCBcdTAwMjZydGxfb2NwX2dwaHlfY29uZCwgMjUsIDEwKSA/XG5AQCAtMTIxNywxMiAmIzQzOzEyNDQsNiBAQCBzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xMGcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MDQsICh2YWwgXHUwMDI2IH4weDAwMGYpIHwgMHgwMDBjKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnRsX3NmcF9pbml0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLXtcbi1cdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuLVx0XHRyODEyN19zZnBfaW5pdF8xMGcodHApO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBydGxfc2ZwX3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuQEAgLTEyODMsNiAmIzQzOzEzMDQsMTUgQEAgc3RhdGljIHZvaWQgbWFjX21jdV93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxuIFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgdHAtXHUwMDNlb2NwX2Jhc2UgJiM0MzsgcmVnLCB2YWx1ZSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBydGxfaXNfODExNmFmKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNTIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfUEtHX0RFVEVDVCkgXHUwMDI2IFJUTF9QS0dfREVURUNUX01BU0spID09XG4mIzQzO1x0XHRSVExfUEtHX0RFVEVDVF84MTE2QUYgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKSBcdTAwMjYgUlRMX0lOVF9IV19JRF9NQVNLKSA9PVxuJiM0MztcdFx0UlRMX0lOVF9IV19JRF84MTE2QUY7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBtYWNfbWN1X3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcpXG4ge1xuIFx0cmV0dXJuIHI4MTY4X21hY19vY3BfcmVhZCh0cCwgdHAtXHUwMDNlb2NwX2Jhc2UgJiM0MzsgcmVnKTtcbkBAIC0xNTc4LDYgJiM0MzsxNjA4LDIwIEBAIHN0YXRpYyBib29sIHJ0bF9kYXNoX2lzX2VuYWJsZWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgZW51bSBydGxfc2ZwX21vZGUgcnRsX2dldF9zZnBfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiYjNDM7e1xuJiM0MztcdGlmIChydGxfaXNfODEyNSh0cCkpIHtcbiYjNDM7XHRcdHUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoKGRhdGEgXHUwMDI2IDB4ZmYpID09IDB4MDcpXG4mIzQzO1x0XHRcdHJldHVybiBSVExfU0ZQXzgxMjdfQVRGO1xuJiM0MztcdH0gZWxzZSBpZiAocnRsX2lzXzgxMTZhZih0cCkpIHtcbiYjNDM7XHRcdHJldHVybiBSVExfU0ZQXzgxNjhfQUY7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gUlRMX1NGUF9OT05FO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBlbnVtIHJ0bF9kYXNoX3R5cGUgcnRsX2dldF9kYXNoX3R5cGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuIFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuQEAgLTE2NzMsMTYgJiM0MzsxNzE3LDE0IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaXJxX21hc2tfYW5kX2FjayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHJ0bF9wY2lfY29tbWl0KHRwKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuJiM0MztzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBzcGVlZClcbiB7XG4tXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXHUwMDNlcGh5ZGV2O1xuLVxuIFx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzQgfHxcbiBcdCAgICB0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM4KSB7XG4tXHRcdGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwMCkge1xuJiM0MztcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbi1cdFx0fSBlbHNlIGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwKSB7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHNwZWVkID09IFNQRUVEXzEwMCkge1xuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWJjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMWYpO1xuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpO1xuIFx0XHR9IGVsc2Uge1xuQEAgLTE2OTIsNyAmIzQzOzE3MzQsNyBAQCBzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdHJ0bF9yZXNldF9wYWNrZXRfZmlsdGVyKHRwKTtcbiBcdH0gZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNSB8fFxuIFx0XHQgICB0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM2KSB7XG4tXHRcdGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwMCkge1xuJiM0MztcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0xNzAwLDcgJiM0MzsxNzQyLDcgQEAgc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwM2YpO1xuIFx0XHR9XG4gXHR9IGVsc2UgaWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzcpIHtcbi1cdFx0aWYgKHBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF8xMCkge1xuJiM0MztcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwKSB7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZDAsIEVSSUFSX01BU0tfMDAxMSwgMHg0ZDAyKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18wMDExLCAweDAwNjBhKTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0yMDc0LDExICYjNDM7MjExNiwxMSBAQCBydGxfY29hbGVzY2VfaW5mbyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0Y2kgPSBydGxfY29hbGVzY2VfaW5mb184MTY4XzgxMzY7XG4gXG4gXHQvKiBpZiBzcGVlZCBpcyB1bmtub3duIGFzc3VtZSBoaWdoZXN0IG9uZSAqL1xuLVx0aWYgKHRwLVx1MDAzZXBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF9VTktOT1dOKVxuJiM0MztcdGlmICh0cC1cdTAwM2VzcGVlZCA9PSBTUEVFRF9VTktOT1dOKVxuIFx0XHRyZXR1cm4gY2k7XG4gXG4gXHRmb3IgKDsgY2ktXHUwMDNlc3BlZWQ7IGNpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAodHAtXHUwMDNlcGh5ZGV2LVx1MDAzZXNwZWVkID09IGNpLVx1MDAzZXNwZWVkKVxuJiM0MztcdFx0aWYgKHRwLVx1MDAzZXNwZWVkID09IGNpLVx1MDAzZXNwZWVkKVxuIFx0XHRcdHJldHVybiBjaTtcbiBcdH1cbiBcbkBAIC0yMjM2LDcgJiM0MzsyMjc4LDcgQEAgc3RhdGljIHZvaWQgcnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgcjgxNjlfZ2V0X3R4X2xwaV90aW1lcl91cyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4tXHR1bnNpZ25lZCBpbnQgc3BlZWQgPSB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlc3BlZWQ7XG4mIzQzO1x0dW5zaWduZWQgaW50IHNwZWVkID0gdHAtXHUwMDNlc3BlZWQ7XG4gXHR1bnNpZ25lZCBpbnQgdGltZXIgPSB0cC1cdTAwM2V0eF9scGlfdGltZXI7XG4gXG4gXHRpZiAoIXRpbWVyIHx8IHNwZWVkID09IFNQRUVEX1VOS05PV04pXG5AQCAtMjI1NCw3ICYjNDM7MjI5Niw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9nZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXG4gXHRpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4tXHRyZXQgPSBwaHlfZXRodG9vbF9nZXRfZWVlKHRwLVx1MDAzZXBoeWRldiwgZGF0YSk7XG4mIzQzO1x0cmV0ID0gcGh5bGlua19ldGh0b29sX2dldF9lZWUodHAtXHUwMDNlcGh5bGluaywgZGF0YSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuQEAgLTIyNzAsNyAmIzQzOzIzMTIsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxuIFx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0cmV0dXJuIHBoeV9ldGh0b29sX3NldF9lZWUodHAtXHUwMDNlcGh5ZGV2LCBkYXRhKTtcbiYjNDM7XHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9lZWUodHAtXHUwMDNlcGh5bGluaywgZGF0YSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTIzMDEsMTMgJiM0MzsyMzQzLDggQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqZGF0YSlcbiB7XG4gXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRib29sIHR4X3BhdXNlLCByeF9wYXVzZTtcbiBcbi1cdHBoeV9nZXRfcGF1c2UodHAtXHUwMDNlcGh5ZGV2LCBcdTAwMjZ0eF9wYXVzZSwgXHUwMDI2cnhfcGF1c2UpO1xuLVxuLVx0ZGF0YS1cdTAwM2VhdXRvbmVnID0gdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZWF1dG9uZWc7XG4tXHRkYXRhLVx1MDAzZXR4X3BhdXNlID0gdHhfcGF1c2UgPyAxIDogMDtcbi1cdGRhdGEtXHUwMDNlcnhfcGF1c2UgPSByeF9wYXVzZSA/IDEgOiAwO1xuJiM0MztcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MTY5X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjMxOCw5ICYjNDM7MjM1NSw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWYgKGRldi1cdTAwM2VtdHUgXHUwMDNlIEVUSF9EQVRBX0xFTilcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0cGh5X3NldF9hc3ltX3BhdXNlKHRwLVx1MDAzZXBoeWRldiwgZGF0YS1cdTAwM2VyeF9wYXVzZSwgZGF0YS1cdTAwM2V0eF9wYXVzZSk7XG4tXG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHRwLVx1MDAzZXBoeWxpbmssIGRhdGEpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2dldF9ldGhfbWFjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjM4NiwzNCAmIzQzOzI0MjEsMjcgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX2N0cmxfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0bGUzMl90b19jcHUodHAtXHUwMDNlY291bnRlcnMtXHUwMDNlcnhfdW5rbm93bl9vcGNvZGUpO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbiYjNDM7c3RhdGljIGludCBydGw4MTY5X2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiYjNDM7XHRcdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuIHtcbiBcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XG4tXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXHUwMDNlcGh5ZGV2O1xuLVx0aW50IGR1cGxleCA9IGNtZC1cdTAwM2ViYXNlLmR1cGxleDtcbi1cdGludCBzcGVlZCA9IGNtZC1cdTAwM2ViYXNlLnNwZWVkO1xuLVxuLVx0aWYgKCF0cC1cdTAwM2VzZnBfbW9kZSlcbi1cdFx0cmV0dXJuIHBoeV9ldGh0b29sX2tzZXR0aW5nc19zZXQocGh5ZGV2LCBjbWQpO1xuIFxuLVx0aWYgKGNtZC1cdTAwM2ViYXNlLmF1dG9uZWcgIT0gQVVUT05FR19ESVNBQkxFKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cbi1cdGlmICghcGh5X2NoZWNrX3ZhbGlkKHNwZWVkLCBkdXBsZXgsIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZWxvY2spO1xuJiM0MztcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCh0cC1cdTAwM2VwaHlsaW5rLCBjbWQpO1xuJiM0Mzt9XG4gXG4tXHRwaHlkZXYtXHUwMDNlYXV0b25lZyA9IEFVVE9ORUdfRElTQUJMRTtcbi1cdHBoeWRldi1cdTAwM2VzcGVlZCA9IHNwZWVkO1xuLVx0cGh5ZGV2LVx1MDAzZWR1cGxleCA9IGR1cGxleDtcbiYjNDM7c3RhdGljIGludCBydGw4MTY5X3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiYjNDM7XHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiBcbi1cdHJ0bF9zZnBfaW5pdCh0cCk7XG4mIzQzO1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHRwLVx1MDAzZXBoeWxpbmssIGNtZCk7XG4mIzQzO31cbiBcbi1cdG11dGV4X3VubG9jayhcdTAwMjZwaHlkZXYtXHUwMDNlbG9jayk7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODE2OV9ud2F5X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4gXG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRyZXR1cm4gcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQodHAtXHUwMDNlcGh5bGluayk7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgcnRsODE2OV9ldGh0b29sX29wcyA9IHtcbkBAIC0yNDMxLDEwICYjNDM7MjQ1OSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHJ0bDgxNjlfZXRodG9vbF9vcHMgPSB7XG4gXHQuZ2V0X3NzZXRfY291bnRcdFx0PSBydGw4MTY5X2dldF9zc2V0X2NvdW50LFxuIFx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IHJ0bDgxNjlfZ2V0X2V0aHRvb2xfc3RhdHMsXG4gXHQuZ2V0X3RzX2luZm9cdFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxuLVx0Lm53YXlfcmVzZXRcdFx0PSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxuJiM0MztcdC5ud2F5X3Jlc2V0XHRcdD0gcnRsODE2OV9ud2F5X3Jlc2V0LFxuIFx0LmdldF9lZWVcdFx0PSBydGw4MTY5X2dldF9lZWUsXG4gXHQuc2V0X2VlZVx0XHQ9IHJ0bDgxNjlfc2V0X2VlZSxcbi1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuJiM0MztcdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcnRsODE2OV9nZXRfbGlua19rc2V0dGluZ3MsXG4gXHQuc2V0X2xpbmtfa3NldHRpbmdzXHQ9IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzLFxuIFx0LmdldF9yaW5ncGFyYW1cdFx0PSBydGw4MTY5X2dldF9yaW5ncGFyYW0sXG4gXHQuZ2V0X3BhdXNlX3N0YXRzXHQ9IHJ0bDgxNjlfZ2V0X3BhdXNlX3N0YXRzLFxuQEAgLTI0OTksOSAmIzQzOzI1MjcsMTAgQEAgdm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0dHAtXHUwMDNlb2NwX2Jhc2UgPSBPQ1BfU1REX1BIWV9CQVNFO1xuIFxuIFx0XHQvKiBQSFkgc29mdCByZXNldCBtYXkgc3RpbGwgYmUgaW4gcHJvZ3Jlc3MgKi9cbi1cdFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcbi1cdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbi1cdFx0XHRcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xuJiM0MztcdFx0aWYgKHRwLVx1MDAzZXBoeWRldilcbiYjNDM7XHRcdFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xuIFx0fVxuIH1cbiBcbkBAIC0yNTM4LDYgJiM0MzsyNTY3LDggQEAgc3RhdGljIHZvaWQgcnRsX3NjaGVkdWxlX3Rhc2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGVudW0gcnRsX2ZsYWcgZmxhZylcbiBcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcGh5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiYjNDM7XHRwaHlfaW5pdF9odyh0cC1cdTAwM2VwaHlkZXYpO1xuJiM0MztcdHBoeV9yZXN1bWUodHAtXHUwMDNlcGh5ZGV2KTtcbiBcdHI4MTY5X2h3X3BoeV9jb25maWcodHAsIHRwLVx1MDAzZXBoeWRldiwgdHAtXHUwMDNlbWFjX3ZlcnNpb24pO1xuIFxuIFx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uIFx1MDAzYz0gUlRMX0dJR0FfTUFDX1ZFUl8wNikge1xuQEAgLTI1NTIsOSAmIzQzOzI1ODMsNiBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcGh5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0ICAgIHRwLVx1MDAzZXBjaV9kZXYtXHUwMDNlc3Vic3lzdGVtX2RldmljZSA9PSAweGUwMDApXG4gXHRcdHBoeV93cml0ZV9wYWdlZCh0cC1cdTAwM2VwaHlkZXYsIDB4MDAwMSwgMHgxMCwgMHhmMDFiKTtcbiBcbi1cdGlmICh0cC1cdTAwM2VzZnBfbW9kZSlcbi1cdFx0cnRsX3NmcF9pbml0KHRwKTtcbi1cbiBcdC8qIFdlIG1heSBoYXZlIGNhbGxlZCBwaHlfc3BlZWRfZG93biBiZWZvcmUgKi9cbiBcdHBoeV9zcGVlZF91cCh0cC1cdTAwM2VwaHlkZXYpO1xuIFxuQEAgLTI2MjQsNiAmIzQzOzI2NTIsNTEgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3JpbmdfaW5kZXhlcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHRwLVx1MDAzZWRpcnR5X3R4ID0gdHAtXHUwMDNlY3VyX3R4ID0gdHAtXHUwMDNlY3VyX3J4ID0gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHJ0bF9qdW1ib19jb25maWdfcGF1c2Uoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4mIzQzO3tcbiYjNDM7XHRib29sIGp1bWJvID0gdHAtXHUwMDNlZGV2LVx1MDAzZW10dSBcdTAwM2UgRVRIX0RBVEFfTEVOO1xuJiM0MztcdHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gcGF1c2UgPSB7fTtcbiYjNDM7XG4mIzQzO1x0QVNTRVJUX1JUTkwoKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGp1bWJvKSB7XG4mIzQzO1x0XHRpZiAoIXRwLVx1MDAzZWp1bWJvX3BhdXNlX3NhdmVkKSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIGNtZCA9IHt9O1xuJiM0MztcdFx0XHRib29sIGFkdl9wYXVzZSwgYWR2X2FzeW07XG4mIzQzO1xuJiM0MztcdFx0XHRwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0odHAtXHUwMDNlcGh5bGluaywgXHUwMDI2dHAtXHUwMDNlc2F2ZWRfcGF1c2UpO1xuJiM0MztcdFx0XHRpZiAodHAtXHUwMDNlc2F2ZWRfcGF1c2UuYXV0b25lZykge1xuJiM0MztcdFx0XHRcdHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KHRwLVx1MDAzZXBoeWxpbmssIFx1MDAyNmNtZCk7XG4mIzQzO1x0XHRcdFx0YWR2X3BhdXNlID0gZXRodG9vbF9saW5rX2tzZXR0aW5nc190ZXN0X2xpbmtfbW9kZShcdTAwMjZjbWQsXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRcdFx0ICBhZHZlcnRpc2luZyxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XHQgIFBhdXNlKTtcbiYjNDM7XHRcdFx0XHRhZHZfYXN5bSAgPSBldGh0b29sX2xpbmtfa3NldHRpbmdzX3Rlc3RfbGlua19tb2RlKFx1MDAyNmNtZCxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XHQgIGFkdmVydGlzaW5nLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdCAgQXN5bV9QYXVzZSk7XG4mIzQzO1x0XHRcdFx0aWYgKGFkdl9wYXVzZSBcdTAwMjZcdTAwMjYgIWFkdl9hc3ltKSB7XG4mIzQzO1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS5yeF9wYXVzZSA9IDE7XG4mIzQzO1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDE7XG4mIzQzO1x0XHRcdFx0fSBlbHNlIGlmIChhZHZfcGF1c2UgXHUwMDI2XHUwMDI2IGFkdl9hc3ltKSB7XG4mIzQzO1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS5yeF9wYXVzZSA9IDE7XG4mIzQzO1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDA7XG4mIzQzO1x0XHRcdFx0fSBlbHNlIGlmICghYWR2X3BhdXNlIFx1MDAyNlx1MDAyNiBhZHZfYXN5bSkge1xuJiM0MztcdFx0XHRcdFx0dHAtXHUwMDNlc2F2ZWRfcGF1c2UucnhfcGF1c2UgPSAwO1xuJiM0MztcdFx0XHRcdFx0dHAtXHUwMDNlc2F2ZWRfcGF1c2UudHhfcGF1c2UgPSAxO1xuJiM0MztcdFx0XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS5yeF9wYXVzZSA9IDA7XG4mIzQzO1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDA7XG4mIzQzO1x0XHRcdFx0fVxuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdHRwLVx1MDAzZWp1bWJvX3BhdXNlX3NhdmVkID0gdHJ1ZTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdHBhdXNlLmF1dG9uZWcgPSB0cC1cdTAwM2VzYXZlZF9wYXVzZS5hdXRvbmVnO1xuJiM0MztcdFx0cGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHRwLVx1MDAzZXBoeWxpbmssIFx1MDAyNnBhdXNlKTtcbiYjNDM7XHR9IGVsc2UgaWYgKHRwLVx1MDAzZWp1bWJvX3BhdXNlX3NhdmVkKSB7XG4mIzQzO1x0XHRwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0odHAtXHUwMDNlcGh5bGluaywgXHUwMDI2dHAtXHUwMDNlc2F2ZWRfcGF1c2UpO1xuJiM0MztcdFx0dHAtXHUwMDNlanVtYm9fcGF1c2Vfc2F2ZWQgPSBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4gXHRib29sIGp1bWJvID0gdHAtXHUwMDNlZGV2LVx1MDAzZW10dSBcdTAwM2UgRVRIX0RBVEFfTEVOO1xuQEAgLTI2NTcsMTUgJiM0MzsyNzMwLDYgQEAgc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBcdGlmIChwY2lfaXNfcGNpZSh0cC1cdTAwM2VwY2lfZGV2KSBcdTAwMjZcdTAwMjYgdHAtXHUwMDNlc3VwcG9ydHNfZ21paSlcbiBcdFx0cGNpZV9zZXRfcmVhZHJxKHRwLVx1MDAzZXBjaV9kZXYsIHJlYWRycSk7XG4tXG4tXHQvKiBDaGlwIGRvZXNuJiMzOTt0IHN1cHBvcnQgcGF1c2UgaW4ganVtYm8gbW9kZSAqL1xuLVx0aWYgKGp1bWJvKSB7XG4tXHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsXG4tXHRcdFx0XHQgICB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmcpO1xuLVx0XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsXG4tXHRcdFx0XHQgICB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmcpO1xuLVx0XHRwaHlfc3RhcnRfYW5lZyh0cC1cdTAwM2VwaHlkZXYpO1xuLVx0fVxuIH1cbiBcbiBERUNMQVJFX1JUTF9DT05EKHJ0bF9jaGlwY21kX2NvbmQpXG5AQCAtMjc4MCw3ICYjNDM7Mjg0NCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9wcmVwYXJlX3Bvd2VyX2Rvd24oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdHJ0bF9lcGh5X3dyaXRlKHRwLCAweDE5LCAweGZmNjQpO1xuIFxuIFx0aWYgKGRldmljZV9tYXlfd2FrZXVwKHRwX3RvX2Rldih0cCkpKSB7XG4tXHRcdHBoeV9zcGVlZF9kb3duKHRwLVx1MDAzZXBoeWRldiwgZmFsc2UpO1xuJiM0MztcdFx0cGh5bGlua19zcGVlZF9kb3duKHRwLVx1MDAzZXBoeWxpbmssIGZhbHNlKTtcbiBcdFx0cnRsX3dvbF9lbmFibGVfcngodHApO1xuIFx0fVxuIH1cbkBAIC0yODMyLDYgJiM0MzsyODk2LDE2IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfc2V0X21hZ2ljX3JlZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFJUTF9XMzIodHAsIDB4N2MsIHZhbCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IHJ0bDgxNjlfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1xuJiM0MztcdGlmICghbmV0aWZfcnVubmluZyhkZXYpKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdHJldHVybiBwaHlsaW5rX21paV9pb2N0bCh0cC1cdTAwM2VwaHlsaW5rLCBpZnIsIGNtZCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgcnRsX3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0dTMyIHJ4X21vZGUgPSBBY2NlcHRCcm9hZGNhc3QgfCBBY2NlcHRNeVBoeXMgfCBBY2NlcHRNdWx0aWNhc3Q7XG5AQCAtMzA5OCw4ICYjNDM7MzE3MiwyMiBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGYyLCAweDkwMDMpO1xuIFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX09CRkZfTE9DSywgMHgwMDAwLCBMSU5LX1NQRUVEX0NIQU5HRV9FTik7XG4gXHRcdGJyZWFrO1xuLVx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuIFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMDJjLCAweDE4ODApO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMDJlLCAweDQ4ODApO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ4LCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRhLCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQyLCAweDg4M2MpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ0LCAweDhjMTIpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMGE2LCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMGE4LCAweDkwMDMpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuIFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgQUxEUFNfTFRSLCAweDAwMDAsIEFMRFBTX0xUUl9FTik7XG4gXHRcdFJUTF9XOCh0cCwgQ09NQk9fTFRSX0VYVEVORCwgUlRMX1I4KHRwLCBDT01CT19MVFJfRVhURU5EKSB8IENPTUJPX0xUUl9FWFRFTkRfRU4pO1xuIFx0XHRmYWxsdGhyb3VnaDtcbkBAIC0zMTE5LDYgJiM0MzszMjA3LDcgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHR9XG4gXHQvKiBjaGlwIGNhbiB0cmlnZ2VyIExUUiAqL1xuIFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9PQkZGX0xPQ0ssIDB4MDAwMywgTFRSX09CRkZfTE9DS19FTik7XG4mIzQzO1x0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIFNFTkRfTFRSX01TRywgMHgwMDAwLCBMVFJfTVNHX0VOKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG5AQCAtMzE1Miw2ICYjNDM7MzI0MSw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxuIFx0XHRydGxfZW5hYmxlX2x0cih0cCk7XG4gXHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuJiM0MztcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuIFx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcbiBcdFx0XHQvKiByZXNldCBlcGh5IHR4L3J4IGRpc2FibGUgdGltZXIgKi9cbiBcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDk0LCAweGZmMDAsIDApO1xuQEAgLTMxNjQsNiAmIzQzOzMyNTQsNyBAQCBzdGF0aWMgdm9pZCBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcbiBcdH0gZWxzZSB7XG4gXHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuJiM0MztcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuIFx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcbiBcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDkyLCAweDAwZmYsIDApO1xuIFx0XHRcdGJyZWFrO1xuQEAgLTM2NTcsNiAmIzQzOzM3NDgsMzUgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxNjhlcF8zKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTg2MCwgMHgwMDAwLCAweDAwODApO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBpbnQgc2xvdCA9IFBDSV9TTE9UKHBkZXYtXHUwMDNlZGV2Zm4pO1xuJiM0MztcdHN0cnVjdCBwY2lfYnVzICpidXMgPSBwZGV2LVx1MDAzZWJ1cztcbiYjNDM7XHR1bnNpZ25lZCBpbnQgZGV2Zm47XG4mIzQzO1x0aW50IGZ1bmM7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XHR1MzIgdmFsO1xuJiM0MztcbiYjNDM7XHRmb3IgKGZ1bmMgPSAyOyBmdW5jIFx1MDAzYyA4OyBmdW5jJiM0MzsmIzQzOykge1xuJiM0MztcdFx0ZGV2Zm4gPSBQQ0lfREVWRk4oc2xvdCwgZnVuYyk7XG4mIzQzO1xuJiM0MztcdFx0cmV0ID0gcGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19QTV9DU1IsIFx1MDAyNnZhbCk7XG4mIzQzO1x0XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgIVBDSV9QT1NTSUJMRV9FUlJPUih2YWwpKSB7XG4mIzQzO1x0XHRcdHZhbCBcdTAwMjY9IH5QQ0lfUE1fQ1RSTF9QTUVfU1RBVFVTO1xuJiM0MztcdFx0XHR2YWwgXHUwMDI2PSB+KFBDSV9QTV9DVFJMX1NUQVRFX01BU0sgfCBQQ0lfUE1fQ1RSTF9QTUVfRU5BQkxFKTtcbiYjNDM7XHRcdFx0dmFsIHw9IChSVExfUE1fRDNIT1QgfCBQQ0lfUE1fQ1RSTF9QTUVfRU5BQkxFKTtcbiYjNDM7XHRcdFx0cGNpX2J1c193cml0ZV9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfUE1fQ1NSLCB2YWwpO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHJldCA9IHBjaV9idXNfcmVhZF9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTCwgXHUwMDI2dmFsKTtcbiYjNDM7XHRcdGlmICghcmV0IFx1MDAyNlx1MDAyNiAhUENJX1BPU1NJQkxFX0VSUk9SKHZhbCkpIHtcbiYjNDM7XHRcdFx0dmFsIFx1MDAyNj0gfigoUENJX0VYUF9MTktTVEFfTEJNUyB8IFBDSV9FWFBfTE5LU1RBX0xBQlMpIFx1MDAzY1x1MDAzYyAxNik7XG4mIzQzO1x0XHRcdHZhbCB8PSBQQ0lfRVhQX0xOS0NUTF9BU1BNQztcbiYjNDM7XHRcdFx0cGNpX2J1c193cml0ZV9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTCwgdmFsKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMTcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuIFx0c3RhdGljIGNvbnN0IHN0cnVjdCBlcGh5X2luZm8gZV9pbmZvXzgxMTdbXSA9IHtcbkBAIC0zNjkzLDEyICYjNDM7MzgxMywxNCBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBcdHJ0bF9wY2llX3N0YXRlX2wybDNfZGlzYWJsZSh0cCk7XG4gXG4tXHRyZ19zYXdfY250ID0gcGh5X3JlYWRfcGFnZWQodHAtXHUwMDNlcGh5ZGV2LCAweDBjNDIsIDB4MTMpIFx1MDAyNiAweDNmZmY7XG4tXHRpZiAocmdfc2F3X2NudCBcdTAwM2UgMCkge1xuLVx0XHR1MTYgc3dfY250XzFtc19pbmk7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXBoeWRldikge1xuJiM0MztcdFx0cmdfc2F3X2NudCA9IHBoeV9yZWFkX3BhZ2VkKHRwLVx1MDAzZXBoeWRldiwgMHgwYzQyLCAweDEzKSBcdTAwMjYgMHgzZmZmO1xuJiM0MztcdFx0aWYgKHJnX3Nhd19jbnQgXHUwMDNlIDApIHtcbiYjNDM7XHRcdFx0dTE2IHN3X2NudF8xbXNfaW5pO1xuIFxuLVx0XHRzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpIFx1MDAyNiAweDBmZmY7XG4tXHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpO1xuJiM0MztcdFx0XHRzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpIFx1MDAyNiAweDBmZmY7XG4mIzQzO1x0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpO1xuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA1NiwgMHgwMGYwLCAweDAwMDApO1xuQEAgLTM3MTEsNiAmIzQzOzM4MzMsOSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5NCwgMHgwMDAwKTtcbiBcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5ZSwgMHgwMDAwKTtcbiBcbiYjNDM7XHRpZiAocnRsX2lzXzgxMTZhZih0cCkpXG4mIzQzO1x0XHRydGxfbG93cG93ZXJfaGlkZGVuX2Z1bmN0aW9ucyh0cC1cdTAwM2VwY2lfZGV2KTtcbiYjNDM7XG4gXHQvKiBmaXJtd2FyZSBpcyBmb3IgTUFDIG9ubHkgKi9cbiBcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbiB9XG5AQCAtNDEzOSwxMiAmIzQzOzQyNjQsMTcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0KHN0cnVjdCAgcnRsODE2OV9wcml2YXRlICp0cClcbiBzdGF0aWMgaW50IHJ0bDgxNjlfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbiB7XG4gXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1x0Ym9vbCBqdW1ib19iZWZvcmUgPSBkZXYtXHUwMDNlbXR1IFx1MDAzZSBFVEhfREFUQV9MRU47XG4mIzQzO1x0Ym9vbCBqdW1ib19hZnRlciA9IG5ld19tdHUgXHUwMDNlIEVUSF9EQVRBX0xFTjtcbiBcbiBcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbmV3X210dSk7XG4gXHRuZXRkZXZfdXBkYXRlX2ZlYXR1cmVzKGRldik7XG4gXHRydGxfanVtYm9fY29uZmlnKHRwKTtcbiBcdHJ0bF9zZXRfZWVlX3R4aWRsZV90aW1lcih0cCk7XG4gXG4mIzQzO1x0aWYgKGp1bWJvX2JlZm9yZSAhPSBqdW1ib19hZnRlcilcbiYjNDM7XHRcdHJ0bF9qdW1ib19jb25maWdfcGF1c2UodHApO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC00ODY5LDggJiM0Mzs0OTk5LDEzIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBydGw4MTY5X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuLVx0aWYgKHN0YXR1cyBcdTAwMjYgTGlua0NoZylcbi1cdFx0cGh5X21hY19pbnRlcnJ1cHQodHAtXHUwMDNlcGh5ZGV2KTtcbiYjNDM7XHRpZiAoc3RhdHVzIFx1MDAyNiBMaW5rQ2hnKSB7XG4mIzQzO1x0XHRpZiAodHAtXHUwMDNlcGh5ZGV2KVxuJiM0MztcdFx0XHRwaHlfbWFjX2ludGVycnVwdCh0cC1cdTAwM2VwaHlkZXYpO1xuJiM0MztcdFx0ZWxzZSBpZiAodHAtXHUwMDNlc2ZwX21vZGUpXG4mIzQzO1x0XHRcdHBoeWxpbmtfbWFjX2NoYW5nZSh0cC1cdTAwM2VwaHlsaW5rLFxuJiM0MztcdFx0XHRcdFx0ICAgISEoUlRMX1I4KHRwLCBQSFlzdGF0dXMpIFx1MDAyNiBMaW5rU3RhdHVzKSk7XG4mIzQzO1x0fVxuIFxuIFx0cnRsX2lycV9kaXNhYmxlKHRwKTtcbiBcdG5hcGlfc2NoZWR1bGUoXHUwMDI2dHAtXHUwMDNlbmFwaSk7XG5AQCAtNDkzMCw5ICYjNDM7NTA2NSw2IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbiBcbiBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4ge1xuLVx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcbi1cdFx0cmV0dXJuO1xuLVxuIFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuIFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzM0IC4uLiBSVExfR0lHQV9NQUNfVkVSXzUyOlxuIFx0XHQvKiBBZGp1c3QgRUVFIExFRCBmcmVxdWVuY3kgKi9cbkBAIC00OTYzLDQwICYjNDM7NTA5NSwxNSBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHI4MTY5X3BoeWxpbmtfaGFuZGxlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi17XG4tXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpO1xuLVx0c3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7XG4tXG4tXHRpZiAobmV0aWZfY2Fycmllcl9vayhuZGV2KSkge1xuLVx0XHRydGxfbGlua19jaGdfcGF0Y2godHApO1xuLVx0XHRydGxfZW5hYmxlX3R4X2xwaSh0cCwgdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZWVuYWJsZV90eF9scGkpO1xuLVx0XHRwbV9yZXF1ZXN0X3Jlc3VtZShkKTtcbi1cdH0gZWxzZSB7XG4tXHRcdHBtX3J1bnRpbWVfaWRsZShkKTtcbi1cdH1cbi1cbi1cdHBoeV9wcmludF9zdGF0dXModHAtXHUwMDNlcGh5ZGV2KTtcbi19XG4tXG4gc3RhdGljIGludCByODE2OV9waHlfY29ubmVjdChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4tXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXHUwMDNlcGh5ZGV2O1xuLVx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xuIFx0aW50IHJldDtcbiBcbi1cdHBoeV9tb2RlID0gdHAtXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcbi1cdFx0ICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSTtcbi1cbi1cdHJldCA9IHBoeV9jb25uZWN0X2RpcmVjdCh0cC1cdTAwM2VkZXYsIHBoeWRldiwgcjgxNjlfcGh5bGlua19oYW5kbGVyLFxuLVx0XHRcdFx0IHBoeV9tb2RlKTtcbi1cdGlmIChyZXQpXG4mIzQzO1x0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeSh0cC1cdTAwM2VwaHlsaW5rLCB0cC1cdTAwM2VwaHlkZXYpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdG5ldGRldl9lcnIodHAtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gY29ubmVjdCBwaHlcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0aWYgKCF0cC1cdTAwM2VzdXBwb3J0c19nbWlpKVxuLVx0XHRwaHlfc2V0X21heF9zcGVlZChwaHlkZXYsIFNQRUVEXzEwMCk7XG4tXG4tXHRwaHlfYXR0YWNoZWRfaW5mbyhwaHlkZXYpO1xuJiM0MztcdH1cbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC01MDA3LDEwICYjNDM7NTExNCwxMCBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X2Rvd24oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHQvKiBDbGVhciBhbGwgdGFzayBmbGFncyAqL1xuIFx0Yml0bWFwX3plcm8odHAtXHUwMDNld2suZmxhZ3MsIFJUTF9GTEFHX01BWCk7XG4gXG4tXHRwaHlfc3RvcCh0cC1cdTAwM2VwaHlkZXYpO1xuJiM0MztcdHBoeWxpbmtfc3RvcCh0cC1cdTAwM2VwaHlsaW5rKTtcbiBcbiBcdC8qIFJlc2V0IFNlckRlcyBQSFkgdG8gYnJpbmcgZG93biBmaWJlciBsaW5rICovXG4tXHRpZiAodHAtXHUwMDNlc2ZwX21vZGUpXG4mIzQzO1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpXG4gXHRcdHJ0bF9zZnBfcmVzZXQodHApO1xuIFxuIFx0cnRsODE2OV91cGRhdGVfY291bnRlcnModHApO1xuQEAgLTUwMzIsMTQgJiM0Mzs1MTM5LDE0IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfdXAoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdHJ0bDgxNjhfZHJpdmVyX3N0YXJ0KHRwKTtcbiBcbiBcdHBjaV9zZXRfbWFzdGVyKHRwLVx1MDAzZXBjaV9kZXYpO1xuLVx0cGh5X2luaXRfaHcodHAtXHUwMDNlcGh5ZGV2KTtcbi1cdHBoeV9yZXN1bWUodHAtXHUwMDNlcGh5ZGV2KTtcbi1cdHJ0bDgxNjlfaW5pdF9waHkodHApO1xuJiM0MztcdGlmICh0cC1cdTAwM2VwaHlkZXYpXG4mIzQzO1x0XHRydGw4MTY5X2luaXRfcGh5KHRwKTtcbiYjNDM7XG4gXHRuYXBpX2VuYWJsZShcdTAwMjZ0cC1cdTAwM2VuYXBpKTtcbiBcdGVuYWJsZV93b3JrKFx1MDAyNnRwLVx1MDAzZXdrLndvcmspO1xuIFx0cnRsX3Jlc2V0X3dvcmsodHApO1xuIFxuLVx0cGh5X3N0YXJ0KHRwLVx1MDAzZXBoeWRldik7XG4mIzQzO1x0cGh5bGlua19zdGFydCh0cC1cdTAwM2VwaHlsaW5rKTtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MTY5X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5AQCAtNTA1NSw3ICYjNDM7NTE2Miw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0ZnJlZV9pcnEodHAtXHUwMDNlaXJxLCB0cCk7XG4gXG4tXHRwaHlfZGlzY29ubmVjdCh0cC1cdTAwM2VwaHlkZXYpO1xuJiM0MztcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkodHAtXHUwMDNlcGh5bGluayk7XG4gXG4gXHRkbWFfZnJlZV9jb2hlcmVudChcdTAwMjZwZGV2LVx1MDAzZWRldiwgUjgxNjlfUlhfUklOR19CWVRFUywgdHAtXHUwMDNlUnhEZXNjQXJyYXksXG4gXHRcdFx0ICB0cC1cdTAwM2VSeFBoeUFkZHIpO1xuQEAgLTUxMTIsOSAmIzQzOzUyMTksMTEgQEAgc3RhdGljIGludCBydGxfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKHJldHZhbCBcdTAwM2MgMClcbiBcdFx0Z290byBlcnJfcmVsZWFzZV9md18yO1xuIFxuLVx0cmV0dmFsID0gcjgxNjlfcGh5X2Nvbm5lY3QodHApO1xuLVx0aWYgKHJldHZhbClcbi1cdFx0Z290byBlcnJfZnJlZV9pcnE7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXBoeWRldikge1xuJiM0MztcdFx0cmV0dmFsID0gcjgxNjlfcGh5X2Nvbm5lY3QodHApO1xuJiM0MztcdFx0aWYgKHJldHZhbClcbiYjNDM7XHRcdFx0Z290byBlcnJfZnJlZV9pcnE7XG4mIzQzO1x0fVxuIFxuIFx0cnRsODE2OV91cCh0cCk7XG4gXHRydGw4MTY5X2luaXRfY291bnRlcl9vZmZzZXRzKHRwKTtcbkBAIC01MTkwLDggJiM0Mzs1Mjk5LDExIEBAIHN0YXRpYyBpbnQgcnRsODE2OV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRydGxfcmFyX3NldCh0cCwgdHAtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyKTtcbiBcdF9fcnRsODE2OV9zZXRfd29sKHRwLCB0cC1cdTAwM2VzYXZlZF93b2xvcHRzKTtcbiBcbi1cdGlmICh0cC1cdTAwM2VUeERlc2NBcnJheSlcbiYjNDM7XHRpZiAodHAtXHUwMDNlVHhEZXNjQXJyYXkpIHtcbiYjNDM7XHRcdHJ0bmxfbG9jaygpO1xuIFx0XHRydGw4MTY5X3VwKHRwKTtcbiYjNDM7XHRcdHJ0bmxfdW5sb2NrKCk7XG4mIzQzO1x0fVxuIFxuIFx0bmV0aWZfZGV2aWNlX2F0dGFjaCh0cC1cdTAwM2VkZXYpO1xuIFxuQEAgLTUyODgsNiAmIzQzOzU0MDAsOCBAQCBzdGF0aWMgdm9pZCBydGxfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiBcdFx0cjgxNjlfcmVtb3ZlX2xlZHModHAtXHUwMDNlbGVkcyk7XG4gXG4gXHR1bnJlZ2lzdGVyX25ldGRldih0cC1cdTAwM2VkZXYpO1xuJiM0MztcdGlmICh0cC1cdTAwM2VwaHlsaW5rKVxuJiM0MztcdFx0cGh5bGlua19kZXN0cm95KHRwLVx1MDAzZXBoeWxpbmspO1xuIFxuIFx0aWYgKHRwLVx1MDAzZWRhc2hfdHlwZSAhPSBSVExfREFTSF9OT05FKVxuIFx0XHRydGw4MTY4X2RyaXZlcl9zdG9wKHRwKTtcbkBAIC01MzEwLDcgJiM0Mzs1NDI0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBydGxfbmV0ZGV2X29wcyA9IHtcbiBcdC5uZG9fZml4X2ZlYXR1cmVzXHQ9IHJ0bDgxNjlfZml4X2ZlYXR1cmVzLFxuIFx0Lm5kb19zZXRfZmVhdHVyZXNcdD0gcnRsODE2OV9zZXRfZmVhdHVyZXMsXG4gXHQubmRvX3NldF9tYWNfYWRkcmVzc1x0PSBydGxfc2V0X21hY19hZGRyZXNzLFxuLVx0Lm5kb19ldGhfaW9jdGxcdFx0PSBwaHlfZG9faW9jdGxfcnVubmluZyxcbiYjNDM7XHQubmRvX2V0aF9pb2N0bFx0XHQ9IHJ0bDgxNjlfaW9jdGwsXG4gXHQubmRvX3NldF9yeF9tb2RlXHQ9IHJ0bF9zZXRfcnhfbW9kZSxcbiAjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVJcbiBcdC5uZG9fcG9sbF9jb250cm9sbGVyXHQ9IHJ0bDgxNjlfbmV0cG9sbCxcbkBAIC01NDc0LDE2ICYjNDM7NTU4OCw2IEBAIHN0YXRpYyBpbnQgcjgxNjlfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0cmV0dXJuIC1FVU5BVENIO1xuIFx0fVxuIFxuLVx0dHAtXHUwMDNlcGh5ZGV2LVx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbi1cdGlmIChydGxfc3VwcG9ydHNfZWVlKHRwKSlcbi1cdFx0cGh5X3N1cHBvcnRfZWVlKHRwLVx1MDAzZXBoeWRldik7XG4tXHRwaHlfc3VwcG9ydF9hc3ltX3BhdXNlKHRwLVx1MDAzZXBoeWRldik7XG4tXG4tXHQvKiBtaW1pYyBiZWhhdmlvciBvZiByODEyNS9yODEyNiB2ZW5kb3IgZHJpdmVycyAqL1xuLVx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNjEpXG4tXHRcdHBoeV9kaXNhYmxlX2VlZV9tb2RlKHRwLVx1MDAzZXBoeWRldixcbi1cdFx0XHRcdCAgICAgRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklUKTtcbi1cbiBcdC8qIFBIWSB3aWxsIGJlIHdva2VuIHVwIGluIHJ0bF9vcGVuKCkgKi9cbiBcdHBoeV9zdXNwZW5kKHRwLVx1MDAzZXBoeWRldik7XG4gXG5AQCAtNTU5OSw2ICYjNDM7NTcwMywyMzMgQEAgc3RhdGljIGJvb2wgcnRsX2FzcG1faXNfc2FmZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHJ0bF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbiYjNDM7XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuJiM0MztcbiYjNDM7XHR0cC1cdTAwM2VzcGVlZCA9IFNQRUVEX1VOS05PV047XG4mIzQzO1x0cG1fcnVudGltZV9pZGxlKHRwX3RvX2Rldih0cCkpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4mIzQzO1x0XHRcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbiYjNDM7XHRcdFx0ICAgIGludCBzcGVlZCwgaW50IGR1cGxleCwgYm9vbCB0eF9wYXVzZSwgYm9vbCByeF9wYXVzZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmQgPSB0cF90b19kZXYodHApO1xuJiM0MztcbiYjNDM7XHR0cC1cdTAwM2VzcGVlZCA9IHNwZWVkO1xuJiM0MztcdHJ0bF9saW5rX2NoZ19wYXRjaCh0cCwgc3BlZWQpO1xuJiM0MztcbiYjNDM7XHRwbV9yZXF1ZXN0X3Jlc3VtZShkKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcnRsX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuJiM0MztcbiYjNDM7XHRpZiAoIXRwLVx1MDAzZXBjcy5vcHMpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4mIzQzO1x0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XG4mIzQzO1x0ICAgIGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpXG4mIzQzO1x0XHRyZXR1cm4gXHUwMDI2dHAtXHUwMDNlcGNzO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcnRsX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuJiM0MztcdFx0XHQgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbiYjNDM7e1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdTE2IHJ0bDgxNjlfc2RzX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBzZHNfcmVnKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiYjNDM7XHR1MTYgdmFsID0gMDtcbiYjNDM7XG4mIzQzO1x0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnRwLVx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xuJiM0MztcdF9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19BRERSX1JFRywgc2RzX3JlZyk7XG4mIzQzO1x0X19yODE2OF9tYWNfb2NwX3dyaXRlKHRwLCBPQ1BfU0RTX0NNRF9SRUcsIFNEU19DTURfUkVBRCk7XG4mIzQzO1x0dmFsID0gX19yODE2OF9tYWNfb2NwX3JlYWQodHAsIE9DUF9TRFNfREFUQV9SRUcpO1xuJiM0MztcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnRwLVx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdmFsO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydGw4MTY5X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG4mIzQzO1x0XHRcdFx0ICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpIHtcbiYjNDM7XHRcdHUxNiBzdGF0MTtcbiYjNDM7XG4mIzQzO1x0XHRzdGF0MSA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzQ1X0JBU0UgJiM0MzsgTURJT19TVEFUMSk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKCEoc3RhdDEgXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUykpXG4mIzQzO1x0XHRcdHN0YXQxID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DNDVfQkFTRSAmIzQzOyBNRElPX1NUQVQxKTtcbiYjNDM7XG4mIzQzO1x0XHRzdGF0ZS1cdTAwM2VsaW5rID0gISEoc3RhdDEgXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUyk7XG4mIzQzO1x0XHRpZiAoIXN0YXRlLVx1MDAzZWxpbmspXG4mIzQzO1x0XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0XHRzdGF0ZS1cdTAwM2VkdXBsZXggPSBEVVBMRVhfRlVMTDtcbiYjNDM7XHRcdHN0YXRlLVx1MDAzZXNwZWVkID0gU1BFRURfMTAwMDA7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHUxNiBibXNyLCBscGE7XG4mIzQzO1xuJiM0MztcdFx0Ym1zciA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzIyX0JBU0UgJiM0MzsgTUlJX0JNU1IpO1xuJiM0MztcdFx0bHBhID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DMjJfQkFTRSAmIzQzOyBNSUlfTFBBKTtcbiYjNDM7XHRcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODE2OV9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbW9kZSxcbiYjNDM7XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbiYjNDM7XHRcdFx0ICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAqYWR2ZXJ0aXNpbmcsXG4mIzQzO1x0XHRcdCAgICAgIGJvb2wgcGVybWl0X3BhdXNlX3RvX21hYylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpXG4mIzQzO1x0XHRyODEyN19zZnBfaW5pdF8xMGcodHApO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBydGw4MTY5X3Bjc192YWxpZGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLFxuJiM0MztcdFx0XHRcdGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG4mIzQzO3tcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcnRsX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuJiM0MztcbiYjNDM7XHRydGxfZW5hYmxlX3R4X2xwaSh0cCwgZmFsc2UpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHJ0bF9tYWNfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdTMyIHRpbWVyLCBib29sIHR4X2Nsa19zdG9wKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XG4mIzQzO1xuJiM0MztcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1xuJiM0MztcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cnVlKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIHJ0bF9waHlsaW5rX21hY19vcHMgPSB7XG4mIzQzO1x0Lm1hY19zZWxlY3RfcGNzID0gcnRsX21hY19zZWxlY3RfcGNzLFxuJiM0MztcdC5tYWNfY29uZmlnID0gcnRsX21hY19jb25maWcsXG4mIzQzO1x0Lm1hY19saW5rX2Rvd24gID0gcnRsX21hY19saW5rX2Rvd24sXG4mIzQzO1x0Lm1hY19saW5rX3VwICAgID0gcnRsX21hY19saW5rX3VwLFxuJiM0MztcdC5tYWNfZGlzYWJsZV90eF9scGkgPSBydGxfbWFjX2Rpc2FibGVfdHhfbHBpLFxuJiM0MztcdC5tYWNfZW5hYmxlX3R4X2xwaSA9IHJ0bF9tYWNfZW5hYmxlX3R4X2xwaSxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyB1bnNpZ25lZCBsb25nIHJ0bDgxNjlfZ2V0X2xwaV9jYXBzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBjYXBzID0gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSB8fCB0cC1cdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdGNhcHMgfD0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDtcbiYjNDM7XG4mIzQzO1x0LyogbWltaWMgYmVoYXZpb3Igb2YgcjgxMjUvcjgxMjYgdmVuZG9yIGRyaXZlcnNcbiYjNDM7XHQgKiBSVExfR0lHQV9NQUNfVkVSXzYxIGRvZXNuJiMzOTt0IHN1cHBvcnQgMi41RyBlZWVcbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNlPSBSVExfR0lHQV9NQUNfVkVSXzYzKVxuJiM0MztcdFx0Y2FwcyB8PSBNQUNfMjUwMEZEO1xuJiM0MztcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNzApXG4mIzQzO1x0XHRjYXBzIHw9IE1BQ181MDAwRkQ7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApXG4mIzQzO1x0XHRjYXBzIHw9IE1BQ18xMDAwMEZEO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gY2FwcztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgcjgxNjlfcGNzX29wcyA9IHtcbiYjNDM7XHQucGNzX3ZhbGlkYXRlID0gcnRsODE2OV9wY3NfdmFsaWRhdGUsXG4mIzQzO1x0LnBjc19nZXRfc3RhdGUgPSBydGw4MTY5X3Bjc19nZXRfc3RhdGUsXG4mIzQzO1x0LnBjc19jb25maWcgPSBydGw4MTY5X3Bjc19jb25maWcsXG4mIzQzO1x0LnBjc19hbl9yZXN0YXJ0ID0gcnRsODE2OV9wY3NfYW5fcmVzdGFydCxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsX2luaXRfcGh5bGluayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwaHlsaW5rICpwbDtcbiYjNDM7XHRwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7XG4mIzQzO1xuJiM0MztcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFx1MDAyNnRwLVx1MDAzZWRldi1cdTAwM2VkZXY7XG4mIzQzO1x0dHAtXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xuJiM0MztcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbiYjNDM7XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gcnRsODE2OV9nZXRfbHBpX2NhcHModHApO1xuJiM0MztcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHRwLVx1MDAzZXNmcF9tb2RlKSB7XG4mIzQzO1x0Y2FzZSBSVExfU0ZQXzgxNjhfQUY6XG4mIzQzO1x0XHR0cC1cdTAwM2VwY3Mub3BzID0gXHUwMDI2cjgxNjlfcGNzX29wcztcbiYjNDM7XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcbiYjNDM7XHRcdHBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDtcbiYjNDM7XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgUlRMX1NGUF84MTI3X0FURjpcbiYjNDM7XHRcdHRwLVx1MDAzZXBjcy5vcHMgPSBcdTAwMjZyODE2OV9wY3Nfb3BzO1xuJiM0MztcdFx0cGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI7XG4mIzQzO1x0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5kZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XG4mIzQzO1x0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwMEZEO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMO1xuJiM0MztcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAgfCBNQUNfMTAwO1xuJiM0MztcbiYjNDM7XHRcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuJiM0MztcdFx0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEIHxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgICAgTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEO1xuJiM0MztcdFx0ZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl83MClcbiYjNDM7XHRcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEIHxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgICAgTUFDXzI1MDBGRCB8IE1BQ181MDAwRkQ7XG4mIzQzO1x0XHRlbHNlIGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNjEpXG4mIzQzO1x0XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQ7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGlmICh0cC1cdTAwM2VzdXBwb3J0c19nbWlpKVxuJiM0MztcdFx0XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDtcbiYjNDM7XG4mIzQzO1x0XHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNjIFJUTF9HSUdBX01BQ19WRVJfNjEpXG4mIzQzO1x0XHRcdHBoeV9tb2RlID0gdHAtXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcbiYjNDM7XHRcdFx0XHQgICBQSFlfSU5URVJGQUNFX01PREVfTUlJO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0X19zZXRfYml0KHBoeV9tb2RlLCB0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMpXG4mIzQzO1x0XHRfX3NldF9iaXQocGh5X21vZGUsIHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcbiYjNDM7XG4mIzQzO1x0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZ0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgdHBfdG9fZGV2KHRwKS1cdTAwM2Vmd25vZGUsXG4mIzQzO1x0XHRcdCAgICBwaHlfbW9kZSwgXHUwMDI2cnRsX3BoeWxpbmtfbWFjX29wcyk7XG4mIzQzO1x0aWYgKElTX0VSUihwbCkpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihwbCk7XG4mIzQzO1xuJiM0MztcdHRwLVx1MDAzZXBoeWxpbmsgPSBwbDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gKmNoaXA7XG5AQCAtNTY2Nyw2ICYjNDM7NTk5OCw3IEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0XHRcdFx0ICAgICBleHRfeGlkX3N0ciwgeGlkKTtcbiBcdHRwLVx1MDAzZW1hY192ZXJzaW9uID0gY2hpcC1cdTAwM2VtYWNfdmVyc2lvbjtcbiBcdHRwLVx1MDAzZWZ3X25hbWUgPSBjaGlwLVx1MDAzZWZ3X25hbWU7XG4mIzQzO1x0dHAtXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuIFxuIFx0LyogRGlzYWJsZSBBU1BNIEwxIGFzIHRoYXQgY2F1c2UgcmFuZG9tIGRldmljZSBzdG9wIHdvcmtpbmdcbiBcdCAqIHByb2JsZW1zIGFzIHdlbGwgYXMgZnVsbCBzeXN0ZW0gaGFuZ3MgZm9yIHNvbWUgUENJZSBkZXZpY2VzIHVzZXJzLlxuQEAgLTU2NzksMTIgJiM0Mzs2MDExLDcgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXHR9XG4gXHR0cC1cdTAwM2Vhc3BtX21hbmFnZWFibGUgPSAhcmM7XG4gXG4tXHRpZiAocnRsX2lzXzgxMjUodHApKSB7XG4tXHRcdHUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCAweGQwMDYpO1xuLVxuLVx0XHRpZiAoKGRhdGEgXHUwMDI2IDB4ZmYpID09IDB4MDcpXG4tXHRcdFx0dHAtXHUwMDNlc2ZwX21vZGUgPSB0cnVlO1xuLVx0fVxuJiM0MztcdHRwLVx1MDAzZXNmcF9tb2RlID0gcnRsX2dldF9zZnBfbW9kZSh0cCk7XG4gXG4gXHR0cC1cdTAwM2VkYXNoX3R5cGUgPSBydGxfZ2V0X2Rhc2hfdHlwZSh0cCk7XG4gXHR0cC1cdTAwM2VkYXNoX2VuYWJsZWQgPSBydGxfZGFzaF9pc19lbmFibGVkKHRwKTtcbkBAIC01Nzg4LDEzICYjNDM7NjExNSwyMyBAQCBzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbiBcbiBcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCB0cCk7XG4gXG4tXHRyYyA9IHI4MTY5X21kaW9fcmVnaXN0ZXIodHApO1xuJiM0MztcdHJjID0gcnRsX2luaXRfcGh5bGluayh0cCk7XG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiByYztcbiBcbiYjNDM7XHRpZiAodHAtXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF9OT05FKSB7XG4mIzQzO1x0XHRyYyA9IHI4MTY5X21kaW9fcmVnaXN0ZXIodHApO1xuJiM0MztcdFx0aWYgKHJjKSB7XG4mIzQzO1x0XHRcdHBoeWxpbmtfZGVzdHJveSh0cC1cdTAwM2VwaHlsaW5rKTtcbiYjNDM7XHRcdFx0cmV0dXJuIHJjO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4gXHRyYyA9IHJlZ2lzdGVyX25ldGRldihkZXYpO1xuLVx0aWYgKHJjKVxuJiM0MztcdGlmIChyYykge1xuJiM0MztcdFx0cGh5bGlua19kZXN0cm95KHRwLVx1MDAzZXBoeWxpbmspO1xuIFx0XHRyZXR1cm4gcmM7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1I4MTY5X0xFRFMpKSB7XG4gXHRcdGlmIChydGxfaXNfODEyNSh0cCkpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuaW5kZXggYjY1ZDBmNWZhMWEwMTQuLjdmOTA0ZGU1ODNlMDU0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5AQCAtMjY0Niw0NSAmIzQzOzI2NDYsNiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODIyMWJfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0cmV0dXJuIElSUV9IQU5ETEVEO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4te1xuLVx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwMGJhc2VUX0Z1bGxfQklULFxuLVx0XHRcdCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKTtcbi1cbi1cdC8qIHNldCBkZWZhdWx0IG1vZGUgKi9cbi1cdHBoeWRldi1cdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDAwO1xuLVx0cGh5ZGV2LVx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xuLVxuLVx0cGh5ZGV2LVx1MDAzZXBvcnQgPSBQT1JUX0ZJQlJFO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdGludCB2YWwsIGVycjtcbi1cbi1cdGVyciA9IGdlbnBoeV91cGRhdGVfbGluayhwaHlkZXYpO1xuLVx0aWYgKGVycilcbi1cdFx0cmV0dXJuIGVycjtcbi1cbi1cdGlmICghcGh5ZGV2LVx1MDAzZWxpbmspXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0dmFsID0gcGh5X3JlYWQocGh5ZGV2LCBSVExfUEhZU1IpO1xuLVx0aWYgKHZhbCBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIHZhbDtcbi1cbi1cdHJ0bGdlbl9kZWNvZGVfcGh5c3IocGh5ZGV2LCB2YWwpO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdHJldHVybiAwO1xuLX1cbi1cbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XG4gXHR7XG4gXHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMDA4MjAxKSxcbkBAIC0yOTM0LDIwICYjNDM7Mjg5NSw2IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbiBcdFx0LndyaXRlX3BhZ2VcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxuIFx0XHQucmVhZF9tbWRcdD0gcnRsODIyeF9yZWFkX21tZCxcbiBcdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4X3dyaXRlX21tZCxcbi1cdH0sIHtcbi1cdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9SVExfRFVNTVlfU0ZQKSxcbi1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSZWFsdGVrIFNGUCBQSFkgTW9kZVwmIzM0Oyxcbi1cdFx0LmZsYWdzXHRcdD0gUEhZX0lTX0lOVEVSTkFMLFxuLVx0XHQucHJvYmVcdFx0PSBydGw4MjJ4X3Byb2JlLFxuLVx0XHQuZ2V0X2ZlYXR1cmVzXHQ9IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzLFxuLVx0XHQuY29uZmlnX2FuZWdcdD0gcnRsZ2VuX3NmcF9jb25maWdfYW5lZyxcbi1cdFx0LnJlYWRfc3RhdHVzXHQ9IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMsXG4tXHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuLVx0XHQucmVzdW1lXHRcdD0gcnRsZ2VuX3Jlc3VtZSxcbi1cdFx0LnJlYWRfcGFnZVx0PSBydGw4MjF4X3JlYWRfcGFnZSxcbi1cdFx0LndyaXRlX3BhZ2VcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxuLVx0XHQucmVhZF9tbWRcdD0gcnRsODIyeF9yZWFkX21tZCxcbi1cdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4X3dyaXRlX21tZCxcbiBcdH0sIHtcbiBcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLFxuIFx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgyMjQgMi41R2JwcyBQSFlcJiMzNDssXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmggYi9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaFxuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCBkNjgzYmMxYjA2NTljZC4uMDAwMDAwMDAwMDAwMDBcbi0tLSBhL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oXG4mIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsXG5AQCAtMSw3ICYjNDM7MCwwIEBAXG4tLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbi0jaWZuZGVmIF9SRUFMVEVLX1BIWV9IXG4tI2RlZmluZSBfUkVBTFRFS19QSFlfSFxuLVxuLSNkZWZpbmVcdFBIWV9JRF9SVExfRFVNTVlfU0ZQXHQweDAwMWNjYmZmXG4tXG4tI2VuZGlmIC8qIF9SRUFMVEVLX1BIWV9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHI4MTY5IGRyaXZlciwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBwaHlzaWNhbCBSZWFsdGVrIEdpZ2FiaXQgRXRoZXJuZXQgYWRhcHRlcnMuIFNpbmNlIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGJ5IFFFTVUgb3IgR0NFLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgUENJIGZyYW1ld29yayBpbiB0aGUga2VybmVsIHRvIGluamVjdCBhcmJpdHJhcnkgUENJIGRldmljZXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4YzQzOWMxZTlmYzEwMzU3OWE5MDVlMmJhMTQ1MDk4YzQyMjg3YzI0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMyAxMTowMDo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZwppbmRleCA5YjBmNGY5NjMxZGJhYS4uNDlhYzcyNzM0MjI1ZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWcKQEAgLTg4LDYgJiM0Mzs4OCw3IEBAIGNvbmZpZyBSODE2OQogCXNlbGVjdCBDUkMzMgogCXNlbGVjdCBQSFlMSUIKIAlzZWxlY3QgUkVBTFRFS19QSFkKJiM0MzsJc2VsZWN0IFBIWUxJTksKIAloZWxwCiAJICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGEgUmVhbHRlayBFdGhlcm5ldCBhZGFwdGVyIGJlbG9uZ2luZyB0bwogCSAgdGhlIGZvbGxvd2luZyBmYW1pbGllczoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKaW5kZXggZWM0ZmMyMWZhMjFmYjAuLjI2ZDk2ZWRiM2M0MjA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYwpAQCAtMjYsNiAmIzQzOzI2LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9kbWEtbWFwcGluZy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BtX3J1bnRpbWUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9waHlsaW5rLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHJlZmV0Y2guaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pcHY2LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CkBAIC05Niw2ICYjNDM7OTcsMjIgQEAKICNkZWZpbmUgSlVNQk9fOUsJKDkgKiBTWl8xSyAtIFZMQU5fRVRIX0hMRU4gLSBFVEhfRkNTX0xFTikKICNkZWZpbmUgSlVNQk9fMTZLCShTWl8xNksgLSBWTEFOX0VUSF9ITEVOIC0gRVRIX0ZDU19MRU4pCiAKJiM0MzsjZGVmaW5lIE9DUF9TRFNfQUREUl9SRUcJCTB4RUIxMAomIzQzOyNkZWZpbmUgT0NQX1NEU19DTURfUkVHCQkJMHhFQjBFCiYjNDM7I2RlZmluZSBPQ1BfU0RTX0RBVEFfUkVHCQkweEVCMTQKJiM0MzsjZGVmaW5lIFNEU19DTURfUkVBRAkJCTB4MDAwMQomIzQzOyNkZWZpbmUgUlRMX1NEU19DMjJfQkFTRQkJMHg0MAomIzQzOyNkZWZpbmUgUlRMX1NEU19DNDVfQkFTRQkJMHgwMDgwCiYjNDM7I2RlZmluZSBSVExfUEtHX0RFVEVDVAkJCTB4ZGMwMAomIzQzOyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RfTUFTSwkJMHgwMDc4CiYjNDM7I2RlZmluZSBSVExfUEtHX0RFVEVDVF84MTE2QUYJCTB4MDAzMAomIzQzOyNkZWZpbmUgUlRMX0lOVF9IV19JRAkJCTB4ZDAwNgomIzQzOyNkZWZpbmUgUlRMX0lOVF9IV19JRF9NQVNLCQkweDAwZmYKJiM0MzsjZGVmaW5lIFJUTF9JTlRfSFdfSURfODExNkFGCQkweDAwMDAKJiM0MzsjZGVmaW5lIFJUTDgxMTZBRl9GVU5DX1BNX0NTUgkJMHg4MAomIzQzOyNkZWZpbmUgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTAkweDQ0CiYjNDM7I2RlZmluZSBSVExfUE1fRDNIT1QJCQlHRU5NQVNLKDEsIDApCiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gewogCXUzMiBtYXNrOwogCXUzMiB2YWw7CkBAIC0zMzQsMTEgJiM0MzszNTEsMTMgQEAgZW51bSBydGxfcmVnaXN0ZXJzIHsKIAlBTERQU19MVFIJPSAweGUwYTIsCiAJTFRSX09CRkZfTE9DSwk9IDB4ZTAzMiwKIAlMVFJfU05PT1AJPSAweGUwMzQsCiYjNDM7CVNFTkRfTFRSX01TRwk9IDB4ZTAzOCwKIAogI2RlZmluZSBBTERQU19MVFJfRU4JCQlCSVQoMCkKICNkZWZpbmUgTFRSX09CRkZfTE9DS19FTgkJQklUKDApCiAjZGVmaW5lIExJTktfU1BFRURfQ0hBTkdFX0VOCQlCSVQoMTQpCiAjZGVmaW5lIExUUl9TTk9PUF9FTgkJCUdFTk1BU0soMTUsIDE0KQomIzQzOyNkZWZpbmUgTFRSX01TR19FTgkJCUJJVCgwKQogfTsKIAogZW51bSBydGw4MTY4XzgxMDFfcmVnaXN0ZXJzIHsKQEAgLTcyOCw2ICYjNDM7NzQ3LDEyIEBAIGVudW0gcnRsX2Rhc2hfdHlwZSB7CiAJUlRMX0RBU0hfMjVfQlAsCiB9OwogCiYjNDM7ZW51bSBydGxfc2ZwX21vZGUgewomIzQzOwlSVExfU0ZQX05PTkUsCiYjNDM7CVJUTF9TRlBfODE2OF9BRiwKJiM0MzsJUlRMX1NGUF84MTI3X0FURiwKJiM0Mzt9OwomIzQzOwogc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7CiAJdm9pZCBfX2lvbWVtICptbWlvX2FkZHI7CS8qIG1lbW9yeSBtYXAgcGh5c2ljYWwgYWRkcmVzcyAqLwogCXN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2OwpAQCAtNzM2LDYgJiM0Mzs3NjEsNyBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHsKIAlzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTsKIAllbnVtIG1hY192ZXJzaW9uIG1hY192ZXJzaW9uOwogCWVudW0gcnRsX2Rhc2hfdHlwZSBkYXNoX3R5cGU7CiYjNDM7CWVudW0gcnRsX3NmcF9tb2RlIHNmcF9tb2RlOwogCXUzMiBjdXJfcng7IC8qIEluZGV4IGludG8gdGhlIFJ4IGRlc2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqLwogCXUzMiBjdXJfdHg7IC8qIEluZGV4IGludG8gdGhlIFR4IGRlc2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqLwogCXUzMiBkaXJ0eV90eDsKQEAgLTc1MCw2ICYjNDM7Nzc2LDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7CiAJdTMyIGlycV9tYXNrOwogCWludCBpcnE7CiAJc3RydWN0IGNsayAqY2xrOwomIzQzOwlpbnQgc3BlZWQ7CiAKIAlzdHJ1Y3QgewogCQlERUNMQVJFX0JJVE1BUChmbGFncywgUlRMX0ZMQUdfTUFYKTsKQEAgLTc2Miw3ICYjNDM7Nzg5LDYgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7CiAJdW5zaWduZWQgc3VwcG9ydHNfZ21paToxOwogCXVuc2lnbmVkIGFzcG1fbWFuYWdlYWJsZToxOwogCXVuc2lnbmVkIGRhc2hfZW5hYmxlZDoxOwotCWJvb2wgc2ZwX21vZGU6MTsKIAlkbWFfYWRkcl90IGNvdW50ZXJzX3BoeXNfYWRkcjsKIAlzdHJ1Y3QgcnRsODE2OV9jb3VudGVycyAqY291bnRlcnM7CiAJc3RydWN0IHJ0bDgxNjlfdGNfb2Zmc2V0cyB0Y19vZmZzZXQ7CkBAIC03NzQsNiAmIzQzOzgwMCwxMSBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHsKIAlzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZWRzOwogCiAJdTMyIG9jcF9iYXNlOwomIzQzOwlzdHJ1Y3QgcGh5bGluayAqcGh5bGluazsKJiM0MzsJc3RydWN0IHBoeWxpbmtfY29uZmlnIHBoeWxpbmtfY29uZmlnOwomIzQzOwlzdHJ1Y3QgcGh5bGlua19wY3MgcGNzOwomIzQzOwlzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtIHNhdmVkX3BhdXNlOwomIzQzOwlib29sIGp1bWJvX3BhdXNlX3NhdmVkOwogfTsKIAogdHlwZWRlZiB2b2lkICgqcnRsX2dlbmVyaWNfZmN0KShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCk7CkBAIC0xMTI4LDEwICYjNDM7MTE1OSw2IEBAIHN0YXRpYyBpbnQgcjgxNjhfcGh5X29jcF9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnKQogCWlmIChydGxfb2NwX3JlZ19mYWlsdXJlKHJlZykpCiAJCXJldHVybiAwOwogCi0JLyogUmV0dXJuIGR1bW15IE1JSV9QSFlTSUQyIGluIFNGUCBtb2RlIHRvIG1hdGNoIFNGUCBQSFkgZHJpdmVyICovCi0JaWYgKHRwLSZndDtzZnBfbW9kZSAmYW1wOyZhbXA7IHJlZyA9PSAoT0NQX1NURF9QSFlfQkFTRSAmIzQzOyAyICogTUlJX1BIWVNJRDIpKQotCQlyZXR1cm4gUEhZX0lEX1JUTF9EVU1NWV9TRlAgJmFtcDsgMHhmZmZmOwotCiAJUlRMX1czMih0cCwgR1BIWV9PQ1AsIHJlZyAmbHQ7Jmx0OyAxNSk7CiAKIAlyZXR1cm4gcnRsX2xvb3Bfd2FpdF9oaWdoKHRwLCAmYW1wO3J0bF9vY3BfZ3BoeV9jb25kLCAyNSwgMTApID8KQEAgLTEyMTcsMTIgJiM0MzsxMjQ0LDYgQEAgc3RhdGljIHZvaWQgcjgxMjdfc2ZwX2luaXRfMTBnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCXI4MTY4X3BoeV9vY3Bfd3JpdGUodHAsIDB4YzgwNCwgKHZhbCAmYW1wOyB+MHgwMDBmKSB8IDB4MDAwYyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0bF9zZnBfaW5pdChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKLXsKLQlpZiAodHAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApCi0JCXI4MTI3X3NmcF9pbml0XzEwZyh0cCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHJ0bF9zZnBfcmVzZXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7CiAJaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKQpAQCAtMTI4Myw2ICYjNDM7MTMwNCwxNSBAQCBzdGF0aWMgdm9pZCBtYWNfbWN1X3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpCiAJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgdHAtJmd0O29jcF9iYXNlICYjNDM7IHJlZywgdmFsdWUpOwogfQogCiYjNDM7c3RhdGljIGJvb2wgcnRsX2lzXzgxMTZhZihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKJiM0Mzt7CiYjNDM7CXJldHVybiB0cC0mZ3Q7bWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl81MiAmYW1wOyZhbXA7CiYjNDM7CQkocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfUEtHX0RFVEVDVCkgJmFtcDsgUlRMX1BLR19ERVRFQ1RfTUFTSykgPT0KJiM0MzsJCVJUTF9QS0dfREVURUNUXzgxMTZBRiAmYW1wOyZhbXA7CiYjNDM7CQkocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKSAmYW1wOyBSVExfSU5UX0hXX0lEX01BU0spID09CiYjNDM7CQlSVExfSU5UX0hXX0lEXzgxMTZBRjsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IG1hY19tY3VfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZykKIHsKIAlyZXR1cm4gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCB0cC0mZ3Q7b2NwX2Jhc2UgJiM0MzsgcmVnKTsKQEAgLTE1NzgsNiAmIzQzOzE2MDgsMjAgQEAgc3RhdGljIGJvb2wgcnRsX2Rhc2hfaXNfZW5hYmxlZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAl9CiB9CiAKJiM0MztzdGF0aWMgZW51bSBydGxfc2ZwX21vZGUgcnRsX2dldF9zZnBfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKJiM0Mzt7CiYjNDM7CWlmIChydGxfaXNfODEyNSh0cCkpIHsKJiM0MzsJCXUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKTsKJiM0MzsKJiM0MzsJCWlmICgoZGF0YSAmYW1wOyAweGZmKSA9PSAweDA3KQomIzQzOwkJCXJldHVybiBSVExfU0ZQXzgxMjdfQVRGOwomIzQzOwl9IGVsc2UgaWYgKHJ0bF9pc184MTE2YWYodHApKSB7CiYjNDM7CQlyZXR1cm4gUlRMX1NGUF84MTY4X0FGOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBSVExfU0ZQX05PTkU7CiYjNDM7fQomIzQzOwogc3RhdGljIGVudW0gcnRsX2Rhc2hfdHlwZSBydGxfZ2V0X2Rhc2hfdHlwZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKIAlzd2l0Y2ggKHRwLSZndDttYWNfdmVyc2lvbikgewpAQCAtMTY3MywxNiAmIzQzOzE3MTcsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pcnFfbWFza19hbmRfYWNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCXJ0bF9wY2lfY29tbWl0KHRwKTsKIH0KIAotc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQomIzQzO3N0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHNwZWVkKQogewotCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC0mZ3Q7cGh5ZGV2OwotCiAJaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM0IHx8CiAJICAgIHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM4KSB7Ci0JCWlmIChwaHlkZXYtJmd0O3NwZWVkID09IFNQRUVEXzEwMDApIHsKJiM0MzsJCWlmIChzcGVlZCA9PSBTUEVFRF8xMDAwKSB7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTsKIAkJCXJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpOwotCQl9IGVsc2UgaWYgKHBoeWRldi0mZ3Q7c3BlZWQgPT0gU1BFRURfMTAwKSB7CiYjNDM7CQl9IGVsc2UgaWYgKHNwZWVkID09IFNQRUVEXzEwMCkgewogCQkJcnRsX2VyaV93cml0ZSh0cCwgMHgxYmMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAxZik7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTsKIAkJfSBlbHNlIHsKQEAgLTE2OTIsNyAmIzQzOzE3MzQsNyBAQCBzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJCXJ0bF9yZXNldF9wYWNrZXRfZmlsdGVyKHRwKTsKIAl9IGVsc2UgaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM1IHx8CiAJCSAgIHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM2KSB7Ci0JCWlmIChwaHlkZXYtJmd0O3NwZWVkID09IFNQRUVEXzEwMDApIHsKJiM0MzsJCWlmIChzcGVlZCA9PSBTUEVFRF8xMDAwKSB7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTsKIAkJCXJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpOwogCQl9IGVsc2UgewpAQCAtMTcwMCw3ICYjNDM7MTc0Miw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJCXJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwM2YpOwogCQl9CiAJfSBlbHNlIGlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNykgewotCQlpZiAocGh5ZGV2LSZndDtzcGVlZCA9PSBTUEVFRF8xMCkgewomIzQzOwkJaWYgKHNwZWVkID09IFNQRUVEXzEwKSB7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFkMCwgRVJJQVJfTUFTS18wMDExLCAweDRkMDIpOwogCQkJcnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMDAxMSwgMHgwMDYwYSk7CiAJCX0gZWxzZSB7CkBAIC0yMDc0LDExICYjNDM7MjExNiwxMSBAQCBydGxfY29hbGVzY2VfaW5mbyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJY2kgPSBydGxfY29hbGVzY2VfaW5mb184MTY4XzgxMzY7CiAKIAkvKiBpZiBzcGVlZCBpcyB1bmtub3duIGFzc3VtZSBoaWdoZXN0IG9uZSAqLwotCWlmICh0cC0mZ3Q7cGh5ZGV2LSZndDtzcGVlZCA9PSBTUEVFRF9VTktOT1dOKQomIzQzOwlpZiAodHAtJmd0O3NwZWVkID09IFNQRUVEX1VOS05PV04pCiAJCXJldHVybiBjaTsKIAogCWZvciAoOyBjaS0mZ3Q7c3BlZWQ7IGNpJiM0MzsmIzQzOykgewotCQlpZiAodHAtJmd0O3BoeWRldi0mZ3Q7c3BlZWQgPT0gY2ktJmd0O3NwZWVkKQomIzQzOwkJaWYgKHRwLSZndDtzcGVlZCA9PSBjaS0mZ3Q7c3BlZWQpCiAJCQlyZXR1cm4gY2k7CiAJfQogCkBAIC0yMjM2LDcgJiM0MzsyMjc4LDcgQEAgc3RhdGljIHZvaWQgcnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCiBzdGF0aWMgdW5zaWduZWQgaW50IHI4MTY5X2dldF90eF9scGlfdGltZXJfdXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7Ci0JdW5zaWduZWQgaW50IHNwZWVkID0gdHAtJmd0O3BoeWRldi0mZ3Q7c3BlZWQ7CiYjNDM7CXVuc2lnbmVkIGludCBzcGVlZCA9IHRwLSZndDtzcGVlZDsKIAl1bnNpZ25lZCBpbnQgdGltZXIgPSB0cC0mZ3Q7dHhfbHBpX3RpbWVyOwogCiAJaWYgKCF0aW1lciB8fCBzcGVlZCA9PSBTUEVFRF9VTktOT1dOKQpAQCAtMjI1NCw3ICYjNDM7MjI5Niw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9nZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpCiAJaWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcmV0ID0gcGh5X2V0aHRvb2xfZ2V0X2VlZSh0cC0mZ3Q7cGh5ZGV2LCBkYXRhKTsKJiM0MzsJcmV0ID0gcGh5bGlua19ldGh0b29sX2dldF9lZWUodHAtJmd0O3BoeWxpbmssIGRhdGEpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTIyNzAsNyAmIzQzOzIzMTIsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKQogCWlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCXJldHVybiBwaHlfZXRodG9vbF9zZXRfZWVlKHRwLSZndDtwaHlkZXYsIGRhdGEpOwomIzQzOwlyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9lZWUodHAtJmd0O3BoeWxpbmssIGRhdGEpOwogfQogCiBzdGF0aWMgdm9pZCBydGw4MTY5X2dldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTIzMDEsMTMgJiM0MzsyMzQzLDggQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJCSAgIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKmRhdGEpCiB7CiAJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpOwotCWJvb2wgdHhfcGF1c2UsIHJ4X3BhdXNlOwogCi0JcGh5X2dldF9wYXVzZSh0cC0mZ3Q7cGh5ZGV2LCAmYW1wO3R4X3BhdXNlLCAmYW1wO3J4X3BhdXNlKTsKLQotCWRhdGEtJmd0O2F1dG9uZWcgPSB0cC0mZ3Q7cGh5ZGV2LSZndDthdXRvbmVnOwotCWRhdGEtJmd0O3R4X3BhdXNlID0gdHhfcGF1c2UgPyAxIDogMDsKLQlkYXRhLSZndDtyeF9wYXVzZSA9IHJ4X3BhdXNlID8gMSA6IDA7CiYjNDM7CXBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC0mZ3Q7cGh5bGluaywgZGF0YSk7CiB9CiAKIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LApAQCAtMjMxOCw5ICYjNDM7MjM1NSw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWlmIChkZXYtJmd0O210dSAmZ3Q7IEVUSF9EQVRBX0xFTikKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcGh5X3NldF9hc3ltX3BhdXNlKHRwLSZndDtwaHlkZXYsIGRhdGEtJmd0O3J4X3BhdXNlLCBkYXRhLSZndDt0eF9wYXVzZSk7Ci0KLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSh0cC0mZ3Q7cGh5bGluaywgZGF0YSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X2V0aF9tYWNfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTIzODYsMzQgJiM0MzsyNDIxLDI3IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X2V0aF9jdHJsX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCWxlMzJfdG9fY3B1KHRwLSZndDtjb3VudGVycy0mZ3Q7cnhfdW5rbm93bl9vcGNvZGUpOwogfQogCi1zdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAotCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpCiYjNDM7c3RhdGljIGludCBydGw4MTY5X2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKJiM0MzsJCQkJICAgICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZCkKIHsKIAlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpOwotCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC0mZ3Q7cGh5ZGV2OwotCWludCBkdXBsZXggPSBjbWQtJmd0O2Jhc2UuZHVwbGV4OwotCWludCBzcGVlZCA9IGNtZC0mZ3Q7YmFzZS5zcGVlZDsKLQotCWlmICghdHAtJmd0O3NmcF9tb2RlKQotCQlyZXR1cm4gcGh5X2V0aHRvb2xfa3NldHRpbmdzX3NldChwaHlkZXYsIGNtZCk7CiAKLQlpZiAoY21kLSZndDtiYXNlLmF1dG9uZWcgIT0gQVVUT05FR19ESVNBQkxFKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCWlmICghcGh5X2NoZWNrX3ZhbGlkKHNwZWVkLCBkdXBsZXgsIHBoeWRldi0mZ3Q7c3VwcG9ydGVkKSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQltdXRleF9sb2NrKCZhbXA7cGh5ZGV2LSZndDtsb2NrKTsKJiM0MzsJcmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KHRwLSZndDtwaHlsaW5rLCBjbWQpOwomIzQzO30KIAotCXBoeWRldi0mZ3Q7YXV0b25lZyA9IEFVVE9ORUdfRElTQUJMRTsKLQlwaHlkZXYtJmd0O3NwZWVkID0gc3BlZWQ7Ci0JcGh5ZGV2LSZndDtkdXBsZXggPSBkdXBsZXg7CiYjNDM7c3RhdGljIGludCBydGw4MTY5X3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKJiM0MzsJCQkJICAgICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7CiAKLQlydGxfc2ZwX2luaXQodHApOwomIzQzOwlyZXR1cm4gcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQodHAtJmd0O3BoeWxpbmssIGNtZCk7CiYjNDM7fQogCi0JbXV0ZXhfdW5sb2NrKCZhbXA7cGh5ZGV2LSZndDtsb2NrKTsKJiM0MztzdGF0aWMgaW50IHJ0bDgxNjlfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpOwogCi0JcmV0dXJuIDA7CiYjNDM7CXJldHVybiBwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCh0cC0mZ3Q7cGh5bGluayk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgcnRsODE2OV9ldGh0b29sX29wcyA9IHsKQEAgLTI0MzEsMTAgJiM0MzsyNDU5LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgcnRsODE2OV9ldGh0b29sX29wcyA9IHsKIAkuZ2V0X3NzZXRfY291bnQJCT0gcnRsODE2OV9nZXRfc3NldF9jb3VudCwKIAkuZ2V0X2V0aHRvb2xfc3RhdHMJPSBydGw4MTY5X2dldF9ldGh0b29sX3N0YXRzLAogCS5nZXRfdHNfaW5mbwkJPSBldGh0b29sX29wX2dldF90c19pbmZvLAotCS5ud2F5X3Jlc2V0CQk9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsCiYjNDM7CS5ud2F5X3Jlc2V0CQk9IHJ0bDgxNjlfbndheV9yZXNldCwKIAkuZ2V0X2VlZQkJPSBydGw4MTY5X2dldF9lZWUsCiAJLnNldF9lZWUJCT0gcnRsODE2OV9zZXRfZWVlLAotCS5nZXRfbGlua19rc2V0dGluZ3MJPSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsCiYjNDM7CS5nZXRfbGlua19rc2V0dGluZ3MJPSBydGw4MTY5X2dldF9saW5rX2tzZXR0aW5ncywKIAkuc2V0X2xpbmtfa3NldHRpbmdzCT0gcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3MsCiAJLmdldF9yaW5ncGFyYW0JCT0gcnRsODE2OV9nZXRfcmluZ3BhcmFtLAogCS5nZXRfcGF1c2Vfc3RhdHMJPSBydGw4MTY5X2dldF9wYXVzZV9zdGF0cywKQEAgLTI0OTksOSAmIzQzOzI1MjcsMTAgQEAgdm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJdHAtJmd0O29jcF9iYXNlID0gT0NQX1NURF9QSFlfQkFTRTsKIAogCQkvKiBQSFkgc29mdCByZXNldCBtYXkgc3RpbGwgYmUgaW4gcHJvZ3Jlc3MgKi8KLQkJcGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLSZndDtwaHlkZXYsIE1JSV9CTUNSLCB2YWwsCi0JCQkJICAgICAgISh2YWwgJmFtcDsgQk1DUl9SRVNFVCksCi0JCQkJICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7CiYjNDM7CQlpZiAodHAtJmd0O3BoeWRldikKJiM0MzsJCQlwaHlfcmVhZF9wb2xsX3RpbWVvdXQodHAtJmd0O3BoeWRldiwgTUlJX0JNQ1IsIHZhbCwKJiM0MzsJCQkJCSAgICAgICEodmFsICZhbXA7IEJNQ1JfUkVTRVQpLAomIzQzOwkJCQkJICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7CiAJfQogfQogCkBAIC0yNTM4LDYgJiM0MzsyNTY3LDggQEAgc3RhdGljIHZvaWQgcnRsX3NjaGVkdWxlX3Rhc2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGVudW0gcnRsX2ZsYWcgZmxhZykKIAogc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3BoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKJiM0MzsJcGh5X2luaXRfaHcodHAtJmd0O3BoeWRldik7CiYjNDM7CXBoeV9yZXN1bWUodHAtJmd0O3BoeWRldik7CiAJcjgxNjlfaHdfcGh5X2NvbmZpZyh0cCwgdHAtJmd0O3BoeWRldiwgdHAtJmd0O21hY192ZXJzaW9uKTsKIAogCWlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gJmx0Oz0gUlRMX0dJR0FfTUFDX1ZFUl8wNikgewpAQCAtMjU1Miw5ICYjNDM7MjU4Myw2IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9waHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJICAgIHRwLSZndDtwY2lfZGV2LSZndDtzdWJzeXN0ZW1fZGV2aWNlID09IDB4ZTAwMCkKIAkJcGh5X3dyaXRlX3BhZ2VkKHRwLSZndDtwaHlkZXYsIDB4MDAwMSwgMHgxMCwgMHhmMDFiKTsKIAotCWlmICh0cC0mZ3Q7c2ZwX21vZGUpCi0JCXJ0bF9zZnBfaW5pdCh0cCk7Ci0KIAkvKiBXZSBtYXkgaGF2ZSBjYWxsZWQgcGh5X3NwZWVkX2Rvd24gYmVmb3JlICovCiAJcGh5X3NwZWVkX3VwKHRwLSZndDtwaHlkZXYpOwogCkBAIC0yNjI0LDYgJiM0MzsyNjUyLDUxIEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9yaW5nX2luZGV4ZXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJdHAtJmd0O2RpcnR5X3R4ID0gdHAtJmd0O2N1cl90eCA9IHRwLSZndDtjdXJfcnggPSAwOwogfQogCiYjNDM7c3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZ19wYXVzZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKJiM0Mzt7CiYjNDM7CWJvb2wganVtYm8gPSB0cC0mZ3Q7ZGV2LSZndDttdHUgJmd0OyBFVEhfREFUQV9MRU47CiYjNDM7CXN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gcGF1c2UgPSB7fTsKJiM0MzsKJiM0MzsJQVNTRVJUX1JUTkwoKTsKJiM0MzsKJiM0MzsJaWYgKGp1bWJvKSB7CiYjNDM7CQlpZiAoIXRwLSZndDtqdW1ib19wYXVzZV9zYXZlZCkgewomIzQzOwkJCXN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIGNtZCA9IHt9OwomIzQzOwkJCWJvb2wgYWR2X3BhdXNlLCBhZHZfYXN5bTsKJiM0MzsKJiM0MzsJCQlwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0odHAtJmd0O3BoeWxpbmssICZhbXA7dHAtJmd0O3NhdmVkX3BhdXNlKTsKJiM0MzsJCQlpZiAodHAtJmd0O3NhdmVkX3BhdXNlLmF1dG9uZWcpIHsKJiM0MzsJCQkJcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19nZXQodHAtJmd0O3BoeWxpbmssICZhbXA7Y21kKTsKJiM0MzsJCQkJYWR2X3BhdXNlID0gZXRodG9vbF9saW5rX2tzZXR0aW5nc190ZXN0X2xpbmtfbW9kZSgmYW1wO2NtZCwKJiM0MzsJCQkJCQkJCQkJICBhZHZlcnRpc2luZywKJiM0MzsJCQkJCQkJCQkJICBQYXVzZSk7CiYjNDM7CQkJCWFkdl9hc3ltICA9IGV0aHRvb2xfbGlua19rc2V0dGluZ3NfdGVzdF9saW5rX21vZGUoJmFtcDtjbWQsCiYjNDM7CQkJCQkJCQkJCSAgYWR2ZXJ0aXNpbmcsCiYjNDM7CQkJCQkJCQkJCSAgQXN5bV9QYXVzZSk7CiYjNDM7CQkJCWlmIChhZHZfcGF1c2UgJmFtcDsmYW1wOyAhYWR2X2FzeW0pIHsKJiM0MzsJCQkJCXRwLSZndDtzYXZlZF9wYXVzZS5yeF9wYXVzZSA9IDE7CiYjNDM7CQkJCQl0cC0mZ3Q7c2F2ZWRfcGF1c2UudHhfcGF1c2UgPSAxOwomIzQzOwkJCQl9IGVsc2UgaWYgKGFkdl9wYXVzZSAmYW1wOyZhbXA7IGFkdl9hc3ltKSB7CiYjNDM7CQkJCQl0cC0mZ3Q7c2F2ZWRfcGF1c2UucnhfcGF1c2UgPSAxOwomIzQzOwkJCQkJdHAtJmd0O3NhdmVkX3BhdXNlLnR4X3BhdXNlID0gMDsKJiM0MzsJCQkJfSBlbHNlIGlmICghYWR2X3BhdXNlICZhbXA7JmFtcDsgYWR2X2FzeW0pIHsKJiM0MzsJCQkJCXRwLSZndDtzYXZlZF9wYXVzZS5yeF9wYXVzZSA9IDA7CiYjNDM7CQkJCQl0cC0mZ3Q7c2F2ZWRfcGF1c2UudHhfcGF1c2UgPSAxOwomIzQzOwkJCQl9IGVsc2UgewomIzQzOwkJCQkJdHAtJmd0O3NhdmVkX3BhdXNlLnJ4X3BhdXNlID0gMDsKJiM0MzsJCQkJCXRwLSZndDtzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDA7CiYjNDM7CQkJCX0KJiM0MzsJCQl9CiYjNDM7CQkJdHAtJmd0O2p1bWJvX3BhdXNlX3NhdmVkID0gdHJ1ZTsKJiM0MzsJCX0KJiM0MzsJCXBhdXNlLmF1dG9uZWcgPSB0cC0mZ3Q7c2F2ZWRfcGF1c2UuYXV0b25lZzsKJiM0MzsJCXBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSh0cC0mZ3Q7cGh5bGluaywgJmFtcDtwYXVzZSk7CiYjNDM7CX0gZWxzZSBpZiAodHAtJmd0O2p1bWJvX3BhdXNlX3NhdmVkKSB7CiYjNDM7CQlwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0odHAtJmd0O3BoeWxpbmssICZhbXA7dHAtJmd0O3NhdmVkX3BhdXNlKTsKJiM0MzsJCXRwLSZndDtqdW1ib19wYXVzZV9zYXZlZCA9IGZhbHNlOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKIAlib29sIGp1bWJvID0gdHAtJmd0O2Rldi0mZ3Q7bXR1ICZndDsgRVRIX0RBVEFfTEVOOwpAQCAtMjY1NywxNSAmIzQzOzI3MzAsNiBAQCBzdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCiAJaWYgKHBjaV9pc19wY2llKHRwLSZndDtwY2lfZGV2KSAmYW1wOyZhbXA7IHRwLSZndDtzdXBwb3J0c19nbWlpKQogCQlwY2llX3NldF9yZWFkcnEodHAtJmd0O3BjaV9kZXYsIHJlYWRycSk7Ci0KLQkvKiBDaGlwIGRvZXNuJiMzOTt0IHN1cHBvcnQgcGF1c2UgaW4ganVtYm8gbW9kZSAqLwotCWlmIChqdW1ibykgewotCQlsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfUGF1c2VfQklULAotCQkJCSAgIHRwLSZndDtwaHlkZXYtJmd0O2FkdmVydGlzaW5nKTsKLQkJbGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULAotCQkJCSAgIHRwLSZndDtwaHlkZXYtJmd0O2FkdmVydGlzaW5nKTsKLQkJcGh5X3N0YXJ0X2FuZWcodHAtJmd0O3BoeWRldik7Ci0JfQogfQogCiBERUNMQVJFX1JUTF9DT05EKHJ0bF9jaGlwY21kX2NvbmQpCkBAIC0yNzgwLDcgJiM0MzsyODQ0LDcgQEAgc3RhdGljIHZvaWQgcnRsX3ByZXBhcmVfcG93ZXJfZG93bihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJcnRsX2VwaHlfd3JpdGUodHAsIDB4MTksIDB4ZmY2NCk7CiAKIAlpZiAoZGV2aWNlX21heV93YWtldXAodHBfdG9fZGV2KHRwKSkpIHsKLQkJcGh5X3NwZWVkX2Rvd24odHAtJmd0O3BoeWRldiwgZmFsc2UpOwomIzQzOwkJcGh5bGlua19zcGVlZF9kb3duKHRwLSZndDtwaHlsaW5rLCBmYWxzZSk7CiAJCXJ0bF93b2xfZW5hYmxlX3J4KHRwKTsKIAl9CiB9CkBAIC0yODMyLDYgJiM0MzsyODk2LDE2IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfc2V0X21hZ2ljX3JlZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAlSVExfVzMyKHRwLCAweDdjLCB2YWwpOwogfQogCiYjNDM7c3RhdGljIGludCBydGw4MTY5X2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpOwomIzQzOwomIzQzOwlpZiAoIW5ldGlmX3J1bm5pbmcoZGV2KSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwlyZXR1cm4gcGh5bGlua19taWlfaW9jdGwodHAtJmd0O3BoeWxpbmssIGlmciwgY21kKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBydGxfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAl1MzIgcnhfbW9kZSA9IEFjY2VwdEJyb2FkY2FzdCB8IEFjY2VwdE15UGh5cyB8IEFjY2VwdE11bHRpY2FzdDsKQEAgLTMwOTgsOCAmIzQzOzMxNzIsMjIgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJCXI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmMiwgMHg5MDAzKTsKIAkJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9PQkZGX0xPQ0ssIDB4MDAwMCwgTElOS19TUEVFRF9DSEFOR0VfRU4pOwogCQlicmVhazsKLQljYXNlIFJUTF9HSUdBX01BQ19WRVJfNDYgLi4uIFJUTF9HSUdBX01BQ19WRVJfNDg6CiAJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOgomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpOwomIzQzOwkJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMDJjLCAweDE4ODApOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMDJlLCAweDQ4ODApOwomIzQzOwkJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ4LCAweDkwMDMpOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRhLCAweDkwMDMpOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQyLCAweDg4M2MpOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ0LCAweDhjMTIpOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMGE2LCAweDkwMDMpOwomIzQzOwkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMGE4LCAweDkwMDMpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODoKIAkJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pOwogCQlSVExfVzgodHAsIENPTUJPX0xUUl9FWFRFTkQsIFJUTF9SOCh0cCwgQ09NQk9fTFRSX0VYVEVORCkgfCBDT01CT19MVFJfRVhURU5EX0VOKTsKIAkJZmFsbHRocm91Z2g7CkBAIC0zMTE5LDYgJiM0MzszMjA3LDcgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJfQogCS8qIGNoaXAgY2FuIHRyaWdnZXIgTFRSICovCiAJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9PQkZGX0xPQ0ssIDB4MDAwMywgTFRSX09CRkZfTE9DS19FTik7CiYjNDM7CXI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBTRU5EX0xUUl9NU0csIDB4MDAwMCwgTFRSX01TR19FTik7CiB9CiAKIHN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKQpAQCAtMzE1Miw2ICYjNDM7MzI0MSw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKQogCQlydGxfZW5hYmxlX2x0cih0cCk7CiAJCXN3aXRjaCAodHAtJmd0O21hY192ZXJzaW9uKSB7CiAJCWNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODoKJiM0MzsJCWNhc2UgUlRMX0dJR0FfTUFDX1ZFUl81MjoKIAkJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzYxIC4uLiBSVExfR0lHQV9NQUNfVkVSX0xBU1Q6CiAJCQkvKiByZXNldCBlcGh5IHR4L3J4IGRpc2FibGUgdGltZXIgKi8KIAkJCXI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwOTQsIDB4ZmYwMCwgMCk7CkBAIC0zMTY0LDYgJiM0MzszMjU0LDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpCiAJfSBlbHNlIHsKIAkJc3dpdGNoICh0cC0mZ3Q7bWFjX3ZlcnNpb24pIHsKIAkJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OgomIzQzOwkJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOgogCQljYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDoKIAkJCXI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwOTIsIDB4MDBmZiwgMCk7CiAJCQlicmVhazsKQEAgLTM2NTcsNiAmIzQzOzM3NDgsMzUgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxNjhlcF8zKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCXI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGU4NjAsIDB4MDAwMCwgMHgwMDgwKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQomIzQzO3sKJiM0MzsJdW5zaWduZWQgaW50IHNsb3QgPSBQQ0lfU0xPVChwZGV2LSZndDtkZXZmbik7CiYjNDM7CXN0cnVjdCBwY2lfYnVzICpidXMgPSBwZGV2LSZndDtidXM7CiYjNDM7CXVuc2lnbmVkIGludCBkZXZmbjsKJiM0MzsJaW50IGZ1bmM7CiYjNDM7CWludCByZXQ7CiYjNDM7CXUzMiB2YWw7CiYjNDM7CiYjNDM7CWZvciAoZnVuYyA9IDI7IGZ1bmMgJmx0OyA4OyBmdW5jJiM0MzsmIzQzOykgewomIzQzOwkJZGV2Zm4gPSBQQ0lfREVWRk4oc2xvdCwgZnVuYyk7CiYjNDM7CiYjNDM7CQlyZXQgPSBwY2lfYnVzX3JlYWRfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX1BNX0NTUiwgJmFtcDt2YWwpOwomIzQzOwkJaWYgKCFyZXQgJmFtcDsmYW1wOyAhUENJX1BPU1NJQkxFX0VSUk9SKHZhbCkpIHsKJiM0MzsJCQl2YWwgJmFtcDs9IH5QQ0lfUE1fQ1RSTF9QTUVfU1RBVFVTOwomIzQzOwkJCXZhbCAmYW1wOz0gfihQQ0lfUE1fQ1RSTF9TVEFURV9NQVNLIHwgUENJX1BNX0NUUkxfUE1FX0VOQUJMRSk7CiYjNDM7CQkJdmFsIHw9IChSVExfUE1fRDNIT1QgfCBQQ0lfUE1fQ1RSTF9QTUVfRU5BQkxFKTsKJiM0MzsJCQlwY2lfYnVzX3dyaXRlX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19QTV9DU1IsIHZhbCk7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlyZXQgPSBwY2lfYnVzX3JlYWRfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX0VYUF9MTktDVEwsICZhbXA7dmFsKTsKJiM0MzsJCWlmICghcmV0ICZhbXA7JmFtcDsgIVBDSV9QT1NTSUJMRV9FUlJPUih2YWwpKSB7CiYjNDM7CQkJdmFsICZhbXA7PSB+KChQQ0lfRVhQX0xOS1NUQV9MQk1TIHwgUENJX0VYUF9MTktTVEFfTEFCUykgJmx0OyZsdDsgMTYpOwomIzQzOwkJCXZhbCB8PSBQQ0lfRVhQX0xOS0NUTF9BU1BNQzsKJiM0MzsJCQlwY2lfYnVzX3dyaXRlX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMLCB2YWwpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMTcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7CiAJc3RhdGljIGNvbnN0IHN0cnVjdCBlcGh5X2luZm8gZV9pbmZvXzgxMTdbXSA9IHsKQEAgLTM2OTMsMTIgJiM0MzszODEzLDE0IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCiAJcnRsX3BjaWVfc3RhdGVfbDJsM19kaXNhYmxlKHRwKTsKIAotCXJnX3Nhd19jbnQgPSBwaHlfcmVhZF9wYWdlZCh0cC0mZ3Q7cGh5ZGV2LCAweDBjNDIsIDB4MTMpICZhbXA7IDB4M2ZmZjsKLQlpZiAocmdfc2F3X2NudCAmZ3Q7IDApIHsKLQkJdTE2IHN3X2NudF8xbXNfaW5pOwomIzQzOwlpZiAodHAtJmd0O3BoeWRldikgewomIzQzOwkJcmdfc2F3X2NudCA9IHBoeV9yZWFkX3BhZ2VkKHRwLSZndDtwaHlkZXYsIDB4MGM0MiwgMHgxMykgJmFtcDsgMHgzZmZmOwomIzQzOwkJaWYgKHJnX3Nhd19jbnQgJmd0OyAwKSB7CiYjNDM7CQkJdTE2IHN3X2NudF8xbXNfaW5pOwogCi0JCXN3X2NudF8xbXNfaW5pID0gKDE2MDAwMDAwIC8gcmdfc2F3X2NudCkgJmFtcDsgMHgwZmZmOwotCQlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhkNDEyLCAweDBmZmYsIHN3X2NudF8xbXNfaW5pKTsKJiM0MzsJCQlzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpICZhbXA7IDB4MGZmZjsKJiM0MzsJCQlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhkNDEyLCAweDBmZmYsIHN3X2NudF8xbXNfaW5pKTsKJiM0MzsJCX0KIAl9CiAKIAlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDU2LCAweDAwZjAsIDB4MDAwMCk7CkBAIC0zNzExLDYgJiM0MzszODMzLDkgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMTcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjMDk0LCAweDAwMDApOwogCXI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5ZSwgMHgwMDAwKTsKIAomIzQzOwlpZiAocnRsX2lzXzgxMTZhZih0cCkpCiYjNDM7CQlydGxfbG93cG93ZXJfaGlkZGVuX2Z1bmN0aW9ucyh0cC0mZ3Q7cGNpX2Rldik7CiYjNDM7CiAJLyogZmlybXdhcmUgaXMgZm9yIE1BQyBvbmx5ICovCiAJcjgxNjlfYXBwbHlfZmlybXdhcmUodHApOwogfQpAQCAtNDEzOSwxMiAmIzQzOzQyNjQsMTcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0KHN0cnVjdCAgcnRsODE2OV9wcml2YXRlICp0cCkKIHN0YXRpYyBpbnQgcnRsODE2OV9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KQogewogCXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJYm9vbCBqdW1ib19iZWZvcmUgPSBkZXYtJmd0O210dSAmZ3Q7IEVUSF9EQVRBX0xFTjsKJiM0MzsJYm9vbCBqdW1ib19hZnRlciA9IG5ld19tdHUgJmd0OyBFVEhfREFUQV9MRU47CiAKIAlXUklURV9PTkNFKGRldi0mZ3Q7bXR1LCBuZXdfbXR1KTsKIAluZXRkZXZfdXBkYXRlX2ZlYXR1cmVzKGRldik7CiAJcnRsX2p1bWJvX2NvbmZpZyh0cCk7CiAJcnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHRwKTsKIAomIzQzOwlpZiAoanVtYm9fYmVmb3JlICE9IGp1bWJvX2FmdGVyKQomIzQzOwkJcnRsX2p1bWJvX2NvbmZpZ19wYXVzZSh0cCk7CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTQ4NjksOCAmIzQzOzQ5OTksMTMgQEAgc3RhdGljIGlycXJldHVybl90IHJ0bDgxNjlfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSkKIAkJZ290byBvdXQ7CiAJfQogCi0JaWYgKHN0YXR1cyAmYW1wOyBMaW5rQ2hnKQotCQlwaHlfbWFjX2ludGVycnVwdCh0cC0mZ3Q7cGh5ZGV2KTsKJiM0MzsJaWYgKHN0YXR1cyAmYW1wOyBMaW5rQ2hnKSB7CiYjNDM7CQlpZiAodHAtJmd0O3BoeWRldikKJiM0MzsJCQlwaHlfbWFjX2ludGVycnVwdCh0cC0mZ3Q7cGh5ZGV2KTsKJiM0MzsJCWVsc2UgaWYgKHRwLSZndDtzZnBfbW9kZSkKJiM0MzsJCQlwaHlsaW5rX21hY19jaGFuZ2UodHAtJmd0O3BoeWxpbmssCiYjNDM7CQkJCQkgICAhIShSVExfUjgodHAsIFBIWXN0YXR1cykgJmFtcDsgTGlua1N0YXR1cykpOwomIzQzOwl9CiAKIAlydGxfaXJxX2Rpc2FibGUodHApOwogCW5hcGlfc2NoZWR1bGUoJmFtcDt0cC0mZ3Q7bmFwaSk7CkBAIC00OTMwLDkgJiM0Mzs1MDY1LDYgQEAgc3RhdGljIGludCBydGw4MTY5X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KQogCiBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpCiB7Ci0JaWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSkKLQkJcmV0dXJuOwotCiAJc3dpdGNoICh0cC0mZ3Q7bWFjX3ZlcnNpb24pIHsKIAljYXNlIFJUTF9HSUdBX01BQ19WRVJfMzQgLi4uIFJUTF9HSUdBX01BQ19WRVJfNTI6CiAJCS8qIEFkanVzdCBFRUUgTEVEIGZyZXF1ZW5jeSAqLwpAQCAtNDk2Myw0MCAmIzQzOzUwOTUsMTUgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV90eF9scGkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKQogCX0KIH0KIAotc3RhdGljIHZvaWQgcjgxNjlfcGh5bGlua19oYW5kbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQotewotCXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7Ci0Jc3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7Ci0KLQlpZiAobmV0aWZfY2Fycmllcl9vayhuZGV2KSkgewotCQlydGxfbGlua19jaGdfcGF0Y2godHApOwotCQlydGxfZW5hYmxlX3R4X2xwaSh0cCwgdHAtJmd0O3BoeWRldi0mZ3Q7ZW5hYmxlX3R4X2xwaSk7Ci0JCXBtX3JlcXVlc3RfcmVzdW1lKGQpOwotCX0gZWxzZSB7Ci0JCXBtX3J1bnRpbWVfaWRsZShkKTsKLQl9Ci0KLQlwaHlfcHJpbnRfc3RhdHVzKHRwLSZndDtwaHlkZXYpOwotfQotCiBzdGF0aWMgaW50IHI4MTY5X3BoeV9jb25uZWN0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogewotCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC0mZ3Q7cGh5ZGV2OwotCXBoeV9pbnRlcmZhY2VfdCBwaHlfbW9kZTsKIAlpbnQgcmV0OwogCi0JcGh5X21vZGUgPSB0cC0mZ3Q7c3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDoKLQkJICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSTsKLQotCXJldCA9IHBoeV9jb25uZWN0X2RpcmVjdCh0cC0mZ3Q7ZGV2LCBwaHlkZXYsIHI4MTY5X3BoeWxpbmtfaGFuZGxlciwKLQkJCQkgcGh5X21vZGUpOwotCWlmIChyZXQpCiYjNDM7CXJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkodHAtJmd0O3BoeWxpbmssIHRwLSZndDtwaHlkZXYpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQluZXRkZXZfZXJyKHRwLSZndDtkZXYsICYjMzQ7ZmFpbGVkIHRvIGNvbm5lY3QgcGh5XG4mIzM0Oyk7CiAJCXJldHVybiByZXQ7Ci0KLQlpZiAoIXRwLSZndDtzdXBwb3J0c19nbWlpKQotCQlwaHlfc2V0X21heF9zcGVlZChwaHlkZXYsIFNQRUVEXzEwMCk7Ci0KLQlwaHlfYXR0YWNoZWRfaW5mbyhwaHlkZXYpOwomIzQzOwl9CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTUwMDcsMTAgJiM0Mzs1MTE0LDEwIEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZG93bihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkvKiBDbGVhciBhbGwgdGFzayBmbGFncyAqLwogCWJpdG1hcF96ZXJvKHRwLSZndDt3ay5mbGFncywgUlRMX0ZMQUdfTUFYKTsKIAotCXBoeV9zdG9wKHRwLSZndDtwaHlkZXYpOwomIzQzOwlwaHlsaW5rX3N0b3AodHAtJmd0O3BoeWxpbmspOwogCiAJLyogUmVzZXQgU2VyRGVzIFBIWSB0byBicmluZyBkb3duIGZpYmVyIGxpbmsgKi8KLQlpZiAodHAtJmd0O3NmcF9tb2RlKQomIzQzOwlpZiAodHAtJmd0O3NmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpCiAJCXJ0bF9zZnBfcmVzZXQodHApOwogCiAJcnRsODE2OV91cGRhdGVfY291bnRlcnModHApOwpAQCAtNTAzMiwxNCAmIzQzOzUxMzksMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV91cChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJcnRsODE2OF9kcml2ZXJfc3RhcnQodHApOwogCiAJcGNpX3NldF9tYXN0ZXIodHAtJmd0O3BjaV9kZXYpOwotCXBoeV9pbml0X2h3KHRwLSZndDtwaHlkZXYpOwotCXBoeV9yZXN1bWUodHAtJmd0O3BoeWRldik7Ci0JcnRsODE2OV9pbml0X3BoeSh0cCk7CiYjNDM7CWlmICh0cC0mZ3Q7cGh5ZGV2KQomIzQzOwkJcnRsODE2OV9pbml0X3BoeSh0cCk7CiYjNDM7CiAJbmFwaV9lbmFibGUoJmFtcDt0cC0mZ3Q7bmFwaSk7CiAJZW5hYmxlX3dvcmsoJmFtcDt0cC0mZ3Q7d2sud29yayk7CiAJcnRsX3Jlc2V0X3dvcmsodHApOwogCi0JcGh5X3N0YXJ0KHRwLSZndDtwaHlkZXYpOwomIzQzOwlwaHlsaW5rX3N0YXJ0KHRwLSZndDtwaHlsaW5rKTsKIH0KIAogc3RhdGljIGludCBydGw4MTY5X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCkBAIC01MDU1LDcgJiM0Mzs1MTYyLDcgQEAgc3RhdGljIGludCBydGw4MTY5X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIAlmcmVlX2lycSh0cC0mZ3Q7aXJxLCB0cCk7CiAKLQlwaHlfZGlzY29ubmVjdCh0cC0mZ3Q7cGh5ZGV2KTsKJiM0MzsJcGh5bGlua19kaXNjb25uZWN0X3BoeSh0cC0mZ3Q7cGh5bGluayk7CiAKIAlkbWFfZnJlZV9jb2hlcmVudCgmYW1wO3BkZXYtJmd0O2RldiwgUjgxNjlfUlhfUklOR19CWVRFUywgdHAtJmd0O1J4RGVzY0FycmF5LAogCQkJICB0cC0mZ3Q7UnhQaHlBZGRyKTsKQEAgLTUxMTIsOSAmIzQzOzUyMTksMTEgQEAgc3RhdGljIGludCBydGxfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWlmIChyZXR2YWwgJmx0OyAwKQogCQlnb3RvIGVycl9yZWxlYXNlX2Z3XzI7CiAKLQlyZXR2YWwgPSByODE2OV9waHlfY29ubmVjdCh0cCk7Ci0JaWYgKHJldHZhbCkKLQkJZ290byBlcnJfZnJlZV9pcnE7CiYjNDM7CWlmICh0cC0mZ3Q7cGh5ZGV2KSB7CiYjNDM7CQlyZXR2YWwgPSByODE2OV9waHlfY29ubmVjdCh0cCk7CiYjNDM7CQlpZiAocmV0dmFsKQomIzQzOwkJCWdvdG8gZXJyX2ZyZWVfaXJxOwomIzQzOwl9CiAKIAlydGw4MTY5X3VwKHRwKTsKIAlydGw4MTY5X2luaXRfY291bnRlcl9vZmZzZXRzKHRwKTsKQEAgLTUxOTAsOCAmIzQzOzUyOTksMTEgQEAgc3RhdGljIGludCBydGw4MTY5X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIAlydGxfcmFyX3NldCh0cCwgdHAtJmd0O2Rldi0mZ3Q7ZGV2X2FkZHIpOwogCV9fcnRsODE2OV9zZXRfd29sKHRwLCB0cC0mZ3Q7c2F2ZWRfd29sb3B0cyk7CiAKLQlpZiAodHAtJmd0O1R4RGVzY0FycmF5KQomIzQzOwlpZiAodHAtJmd0O1R4RGVzY0FycmF5KSB7CiYjNDM7CQlydG5sX2xvY2soKTsKIAkJcnRsODE2OV91cCh0cCk7CiYjNDM7CQlydG5sX3VubG9jaygpOwomIzQzOwl9CiAKIAluZXRpZl9kZXZpY2VfYXR0YWNoKHRwLSZndDtkZXYpOwogCkBAIC01Mjg4LDYgJiM0Mzs1NDAwLDggQEAgc3RhdGljIHZvaWQgcnRsX3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAJCXI4MTY5X3JlbW92ZV9sZWRzKHRwLSZndDtsZWRzKTsKIAogCXVucmVnaXN0ZXJfbmV0ZGV2KHRwLSZndDtkZXYpOwomIzQzOwlpZiAodHAtJmd0O3BoeWxpbmspCiYjNDM7CQlwaHlsaW5rX2Rlc3Ryb3kodHAtJmd0O3BoeWxpbmspOwogCiAJaWYgKHRwLSZndDtkYXNoX3R5cGUgIT0gUlRMX0RBU0hfTk9ORSkKIAkJcnRsODE2OF9kcml2ZXJfc3RvcCh0cCk7CkBAIC01MzEwLDcgJiM0Mzs1NDI0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBydGxfbmV0ZGV2X29wcyA9IHsKIAkubmRvX2ZpeF9mZWF0dXJlcwk9IHJ0bDgxNjlfZml4X2ZlYXR1cmVzLAogCS5uZG9fc2V0X2ZlYXR1cmVzCT0gcnRsODE2OV9zZXRfZmVhdHVyZXMsCiAJLm5kb19zZXRfbWFjX2FkZHJlc3MJPSBydGxfc2V0X21hY19hZGRyZXNzLAotCS5uZG9fZXRoX2lvY3RsCQk9IHBoeV9kb19pb2N0bF9ydW5uaW5nLAomIzQzOwkubmRvX2V0aF9pb2N0bAkJPSBydGw4MTY5X2lvY3RsLAogCS5uZG9fc2V0X3J4X21vZGUJPSBydGxfc2V0X3J4X21vZGUsCiAjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIKIAkubmRvX3BvbGxfY29udHJvbGxlcgk9IHJ0bDgxNjlfbmV0cG9sbCwKQEAgLTU0NzQsMTYgJiM0Mzs1NTg4LDYgQEAgc3RhdGljIGludCByODE2OV9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCQlyZXR1cm4gLUVVTkFUQ0g7CiAJfQogCi0JdHAtJmd0O3BoeWRldi0mZ3Q7bWFjX21hbmFnZWRfcG0gPSB0cnVlOwotCWlmIChydGxfc3VwcG9ydHNfZWVlKHRwKSkKLQkJcGh5X3N1cHBvcnRfZWVlKHRwLSZndDtwaHlkZXYpOwotCXBoeV9zdXBwb3J0X2FzeW1fcGF1c2UodHAtJmd0O3BoeWRldik7Ci0KLQkvKiBtaW1pYyBiZWhhdmlvciBvZiByODEyNS9yODEyNiB2ZW5kb3IgZHJpdmVycyAqLwotCWlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl82MSkKLQkJcGh5X2Rpc2FibGVfZWVlX21vZGUodHAtJmd0O3BoeWRldiwKLQkJCQkgICAgIEVUSFRPT0xfTElOS19NT0RFXzI1MDBiYXNlVF9GdWxsX0JJVCk7Ci0KIAkvKiBQSFkgd2lsbCBiZSB3b2tlbiB1cCBpbiBydGxfb3BlbigpICovCiAJcGh5X3N1c3BlbmQodHAtJmd0O3BoeWRldik7CiAKQEAgLTU1OTksNiAmIzQzOzU3MDMsMjMzIEBAIHN0YXRpYyBib29sIHJ0bF9hc3BtX2lzX3NhZmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJcmV0dXJuIGZhbHNlOwogfQogCiYjNDM7c3RhdGljIHZvaWQgcnRsX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLAomIzQzOwkJCSAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTsKJiM0MzsKJiM0MzsJdHAtJmd0O3NwZWVkID0gU1BFRURfVU5LTk9XTjsKJiM0MzsJcG1fcnVudGltZV9pZGxlKHRwX3RvX2Rldih0cCkpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiYjNDM7CQkJICAgIHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLAomIzQzOwkJCSAgICBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGJvb2wgdHhfcGF1c2UsIGJvb2wgcnhfcGF1c2UpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTsKJiM0MzsJc3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7CiYjNDM7CiYjNDM7CXRwLSZndDtzcGVlZCA9IHNwZWVkOwomIzQzOwlydGxfbGlua19jaGdfcGF0Y2godHAsIHNwZWVkKTsKJiM0MzsKJiM0MzsJcG1fcmVxdWVzdF9yZXN1bWUoZCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJ0bF9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywKJiM0MzsJCQkJCSAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTsKJiM0MzsKJiM0MzsJaWYgKCF0cC0mZ3Q7cGNzLm9wcykKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwomIzQzOwlpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggfHwKJiM0MzsJICAgIGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpCiYjNDM7CQlyZXR1cm4gJmFtcDt0cC0mZ3Q7cGNzOwomIzQzOwomIzQzOwlyZXR1cm4gTlVMTDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgcnRsX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLAomIzQzOwkJCSAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKQomIzQzO3sKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHUxNiBydGw4MTY5X3Nkc19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgc2RzX3JlZykKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiYjNDM7CXUxNiB2YWwgPSAwOwomIzQzOwomIzQzOwlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDt0cC0mZ3Q7bWFjX29jcF9sb2NrLCBmbGFncyk7CiYjNDM7CV9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19BRERSX1JFRywgc2RzX3JlZyk7CiYjNDM7CV9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19DTURfUkVHLCBTRFNfQ01EX1JFQUQpOwomIzQzOwl2YWwgPSBfX3I4MTY4X21hY19vY3BfcmVhZCh0cCwgT0NQX1NEU19EQVRBX1JFRyk7CiYjNDM7CXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7dHAtJmd0O21hY19vY3BfbG9jaywgZmxhZ3MpOwomIzQzOwomIzQzOwlyZXR1cm4gdmFsOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydGw4MTY5X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsCiYjNDM7CQkJCSAgdW5zaWduZWQgaW50IG5lZ19tb2RlLAomIzQzOwkJCQkgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwY3MpOwomIzQzOwomIzQzOwlpZiAodHAtJmd0O3NmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpIHsKJiM0MzsJCXUxNiBzdGF0MTsKJiM0MzsKJiM0MzsJCXN0YXQxID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DNDVfQkFTRSAmIzQzOyBNRElPX1NUQVQxKTsKJiM0MzsKJiM0MzsJCWlmICghKHN0YXQxICZhbXA7IE1ESU9fU1RBVDFfTFNUQVRVUykpCiYjNDM7CQkJc3RhdDEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0M0NV9CQVNFICYjNDM7IE1ESU9fU1RBVDEpOwomIzQzOwomIzQzOwkJc3RhdGUtJmd0O2xpbmsgPSAhIShzdGF0MSAmYW1wOyBNRElPX1NUQVQxX0xTVEFUVVMpOwomIzQzOwkJaWYgKCFzdGF0ZS0mZ3Q7bGluaykKJiM0MzsJCQlyZXR1cm47CiYjNDM7CiYjNDM7CQlzdGF0ZS0mZ3Q7ZHVwbGV4ID0gRFVQTEVYX0ZVTEw7CiYjNDM7CQlzdGF0ZS0mZ3Q7c3BlZWQgPSBTUEVFRF8xMDAwMDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXUxNiBibXNyLCBscGE7CiYjNDM7CiYjNDM7CQlibXNyID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DMjJfQkFTRSAmIzQzOyBNSUlfQk1TUik7CiYjNDM7CQlscGEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0MyMl9CQVNFICYjNDM7IE1JSV9MUEEpOwomIzQzOwkJcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscGEpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcnRsODE2OV9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbW9kZSwKJiM0MzsJCQkgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLAomIzQzOwkJCSAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkdmVydGlzaW5nLAomIzQzOwkJCSAgICAgIGJvb2wgcGVybWl0X3BhdXNlX3RvX21hYykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTsKJiM0MzsKJiM0MzsJaWYgKHRwLSZndDtzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKQomIzQzOwkJcjgxMjdfc2ZwX2luaXRfMTBnKHRwKTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcnRsODE2OV9wY3NfdmFsaWRhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZCwKJiM0MzsJCQkJY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgcnRsODE2OV9wY3NfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcykKJiM0Mzt7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHJ0bF9tYWNfZGlzYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTsKJiM0MzsKJiM0MzsJcnRsX2VuYWJsZV90eF9scGkodHAsIGZhbHNlKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBydGxfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHUzMiB0aW1lciwgYm9vbCB0eF9jbGtfc3RvcCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpOwomIzQzOwomIzQzOwlpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApKQomIzQzOwkJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzOwomIzQzOwlydGxfZW5hYmxlX3R4X2xwaSh0cCwgdHJ1ZSk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBydGxfcGh5bGlua19tYWNfb3BzID0gewomIzQzOwkubWFjX3NlbGVjdF9wY3MgPSBydGxfbWFjX3NlbGVjdF9wY3MsCiYjNDM7CS5tYWNfY29uZmlnID0gcnRsX21hY19jb25maWcsCiYjNDM7CS5tYWNfbGlua19kb3duICA9IHJ0bF9tYWNfbGlua19kb3duLAomIzQzOwkubWFjX2xpbmtfdXAgICAgPSBydGxfbWFjX2xpbmtfdXAsCiYjNDM7CS5tYWNfZGlzYWJsZV90eF9scGkgPSBydGxfbWFjX2Rpc2FibGVfdHhfbHBpLAomIzQzOwkubWFjX2VuYWJsZV90eF9scGkgPSBydGxfbWFjX2VuYWJsZV90eF9scGksCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgdW5zaWduZWQgbG9uZyBydGw4MTY5X2dldF9scGlfY2FwcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgY2FwcyA9IDA7CiYjNDM7CiYjNDM7CWlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkgfHwgdHAtJmd0O3NmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJY2FwcyB8PSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEOwomIzQzOwomIzQzOwkvKiBtaW1pYyBiZWhhdmlvciBvZiByODEyNS9yODEyNiB2ZW5kb3IgZHJpdmVycwomIzQzOwkgKiBSVExfR0lHQV9NQUNfVkVSXzYxIGRvZXNuJiMzOTt0IHN1cHBvcnQgMi41RyBlZWUKJiM0MzsJICovCiYjNDM7CWlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gJmd0Oz0gUlRMX0dJR0FfTUFDX1ZFUl82MykKJiM0MzsJCWNhcHMgfD0gTUFDXzI1MDBGRDsKJiM0MzsJaWYgKHRwLSZndDttYWNfdmVyc2lvbiAmZ3Q7PSBSVExfR0lHQV9NQUNfVkVSXzcwKQomIzQzOwkJY2FwcyB8PSBNQUNfNTAwMEZEOwomIzQzOwlpZiAodHAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApCiYjNDM7CQljYXBzIHw9IE1BQ18xMDAwMEZEOwomIzQzOwomIzQzOwlyZXR1cm4gY2FwczsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgcjgxNjlfcGNzX29wcyA9IHsKJiM0MzsJLnBjc192YWxpZGF0ZSA9IHJ0bDgxNjlfcGNzX3ZhbGlkYXRlLAomIzQzOwkucGNzX2dldF9zdGF0ZSA9IHJ0bDgxNjlfcGNzX2dldF9zdGF0ZSwKJiM0MzsJLnBjc19jb25maWcgPSBydGw4MTY5X3Bjc19jb25maWcsCiYjNDM7CS5wY3NfYW5fcmVzdGFydCA9IHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgaW50IHJ0bF9pbml0X3BoeWxpbmsoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcGh5bGluayAqcGw7CiYjNDM7CXBoeV9pbnRlcmZhY2VfdCBwaHlfbW9kZTsKJiM0MzsKJiM0MzsJdHAtJmd0O3BoeWxpbmtfY29uZmlnLmRldiA9ICZhbXA7dHAtJmd0O2Rldi0mZ3Q7ZGV2OwomIzQzOwl0cC0mZ3Q7cGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWOwomIzQzOwl0cC0mZ3Q7cGh5bGlua19jb25maWcubWFjX21hbmFnZWRfcG0gPSB0cnVlOwomIzQzOwl0cC0mZ3Q7cGh5bGlua19jb25maWcubHBpX2NhcGFiaWxpdGllcyA9IHJ0bDgxNjlfZ2V0X2xwaV9jYXBzKHRwKTsKJiM0MzsJdHAtJmd0O3BoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFOwomIzQzOwomIzQzOwlzd2l0Y2ggKHRwLSZndDtzZnBfbW9kZSkgewomIzQzOwljYXNlIFJUTF9TRlBfODE2OF9BRjoKJiM0MzsJCXRwLSZndDtwY3Mub3BzID0gJmFtcDtyODE2OV9wY3Nfb3BzOwomIzQzOwkJdHAtJmd0O3BoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTsKJiM0MzsJCXBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDsKJiM0MzsJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQ7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBSVExfU0ZQXzgxMjdfQVRGOgomIzQzOwkJdHAtJmd0O3Bjcy5vcHMgPSAmYW1wO3I4MTY5X3Bjc19vcHM7CiYjNDM7CQlwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjsKJiM0MzsJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5kZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7CiYjNDM7CQl0cC0mZ3Q7cGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMDBGRDsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUw7CiYjNDM7CQl0cC0mZ3Q7cGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAgfCBNQUNfMTAwOwomIzQzOwomIzQzOwkJaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKQomIzQzOwkJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEIHwKJiM0MzsJCQkJCQkJICAgICAgIE1BQ181MDAwRkQgfCBNQUNfMTAwMDBGRDsKJiM0MzsJCWVsc2UgaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzcwKQomIzQzOwkJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfAomIzQzOwkJCQkJCQkgICAgICAgTUFDXzI1MDBGRCB8IE1BQ181MDAwRkQ7CiYjNDM7CQllbHNlIGlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gJmd0Oz0gUlRMX0dJR0FfTUFDX1ZFUl82MSkKJiM0MzsJCQl0cC0mZ3Q7cGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDsKJiM0MzsJCWVsc2UKJiM0MzsJCQlpZiAodHAtJmd0O3N1cHBvcnRzX2dtaWkpCiYjNDM7CQkJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQ7CiYjNDM7CiYjNDM7CQlpZiAodHAtJmd0O21hY192ZXJzaW9uICZsdDsgUlRMX0dJR0FfTUFDX1ZFUl82MSkKJiM0MzsJCQlwaHlfbW9kZSA9IHRwLSZndDtzdXBwb3J0c19nbWlpID8gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkgOgomIzQzOwkJCQkgICBQSFlfSU5URVJGQUNFX01PREVfTUlJOwomIzQzOwkJZWxzZQomIzQzOwkJCXBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMOwomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsKJiM0MzsJX19zZXRfYml0KHBoeV9tb2RlLCB0cC0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwomIzQzOwlpZiAodHAtJmd0O3BoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMpCiYjNDM7CQlfX3NldF9iaXQocGh5X21vZGUsIHRwLSZndDtwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyk7CiYjNDM7CiYjNDM7CXBsID0gcGh5bGlua19jcmVhdGUoJmFtcDt0cC0mZ3Q7cGh5bGlua19jb25maWcsIHRwX3RvX2Rldih0cCktJmd0O2Z3bm9kZSwKJiM0MzsJCQkgICAgcGh5X21vZGUsICZhbXA7cnRsX3BoeWxpbmtfbWFjX29wcyk7CiYjNDM7CWlmIChJU19FUlIocGwpKQomIzQzOwkJcmV0dXJuIFBUUl9FUlIocGwpOwomIzQzOwomIzQzOwl0cC0mZ3Q7cGh5bGluayA9IHBsOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKIHsKIAljb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyAqY2hpcDsKQEAgLTU2NjcsNiAmIzQzOzU5OTgsNyBAQCBzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKIAkJCQkgICAgIGV4dF94aWRfc3RyLCB4aWQpOwogCXRwLSZndDttYWNfdmVyc2lvbiA9IGNoaXAtJmd0O21hY192ZXJzaW9uOwogCXRwLSZndDtmd19uYW1lID0gY2hpcC0mZ3Q7ZndfbmFtZTsKJiM0MzsJdHAtJmd0O3NwZWVkID0gU1BFRURfVU5LTk9XTjsKIAogCS8qIERpc2FibGUgQVNQTSBMMSBhcyB0aGF0IGNhdXNlIHJhbmRvbSBkZXZpY2Ugc3RvcCB3b3JraW5nCiAJICogcHJvYmxlbXMgYXMgd2VsbCBhcyBmdWxsIHN5c3RlbSBoYW5ncyBmb3Igc29tZSBQQ0llIGRldmljZXMgdXNlcnMuCkBAIC01Njc5LDEyICYjNDM7NjAxMSw3IEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQogCX0KIAl0cC0mZ3Q7YXNwbV9tYW5hZ2VhYmxlID0gIXJjOwogCi0JaWYgKHJ0bF9pc184MTI1KHRwKSkgewotCQl1MTYgZGF0YSA9IHI4MTY4X21hY19vY3BfcmVhZCh0cCwgMHhkMDA2KTsKLQotCQlpZiAoKGRhdGEgJmFtcDsgMHhmZikgPT0gMHgwNykKLQkJCXRwLSZndDtzZnBfbW9kZSA9IHRydWU7Ci0JfQomIzQzOwl0cC0mZ3Q7c2ZwX21vZGUgPSBydGxfZ2V0X3NmcF9tb2RlKHRwKTsKIAogCXRwLSZndDtkYXNoX3R5cGUgPSBydGxfZ2V0X2Rhc2hfdHlwZSh0cCk7CiAJdHAtJmd0O2Rhc2hfZW5hYmxlZCA9IHJ0bF9kYXNoX2lzX2VuYWJsZWQodHApOwpAQCAtNTc4OCwxMyAmIzQzOzYxMTUsMjMgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCiAKIAlwY2lfc2V0X2RydmRhdGEocGRldiwgdHApOwogCi0JcmMgPSByODE2OV9tZGlvX3JlZ2lzdGVyKHRwKTsKJiM0MzsJcmMgPSBydGxfaW5pdF9waHlsaW5rKHRwKTsKIAlpZiAocmMpCiAJCXJldHVybiByYzsKIAomIzQzOwlpZiAodHAtJmd0O3NmcF9tb2RlID09IFJUTF9TRlBfTk9ORSkgewomIzQzOwkJcmMgPSByODE2OV9tZGlvX3JlZ2lzdGVyKHRwKTsKJiM0MzsJCWlmIChyYykgewomIzQzOwkJCXBoeWxpbmtfZGVzdHJveSh0cC0mZ3Q7cGh5bGluayk7CiYjNDM7CQkJcmV0dXJuIHJjOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiAJcmMgPSByZWdpc3Rlcl9uZXRkZXYoZGV2KTsKLQlpZiAocmMpCiYjNDM7CWlmIChyYykgewomIzQzOwkJcGh5bGlua19kZXN0cm95KHRwLSZndDtwaHlsaW5rKTsKIAkJcmV0dXJuIHJjOwomIzQzOwl9CiAKIAlpZiAoSVNfRU5BQkxFRChDT05GSUdfUjgxNjlfTEVEUykpIHsKIAkJaWYgKHJ0bF9pc184MTI1KHRwKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKaW5kZXggYjY1ZDBmNWZhMWEwMTQuLjdmOTA0ZGU1ODNlMDU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwpAQCAtMjY0Niw0NSAmIzQzOzI2NDYsNiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODIyMWJfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCXJldHVybiBJUlFfSEFORExFRDsKIH0KIAotc3RhdGljIGludCBydGxnZW5fc2ZwX2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQotewotCWxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMDBiYXNlVF9GdWxsX0JJVCwKLQkJCSBwaHlkZXYtJmd0O3N1cHBvcnRlZCk7Ci0KLQkvKiBzZXQgZGVmYXVsdCBtb2RlICovCi0JcGh5ZGV2LSZndDtzcGVlZCA9IFNQRUVEXzEwMDAwOwotCXBoeWRldi0mZ3Q7ZHVwbGV4ID0gRFVQTEVYX0ZVTEw7Ci0KLQlwaHlkZXYtJmd0O3BvcnQgPSBQT1JUX0ZJQlJFOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQotewotCWludCB2YWwsIGVycjsKLQotCWVyciA9IGdlbnBoeV91cGRhdGVfbGluayhwaHlkZXYpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7Ci0KLQlpZiAoIXBoeWRldi0mZ3Q7bGluaykKLQkJcmV0dXJuIDA7Ci0KLQl2YWwgPSBwaHlfcmVhZChwaHlkZXYsIFJUTF9QSFlTUik7Ci0JaWYgKHZhbCAmbHQ7IDApCi0JCXJldHVybiB2YWw7Ci0KLQlydGxnZW5fZGVjb2RlX3BoeXNyKHBoeWRldiwgdmFsKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKLXsKLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0gewogCXsKIAkJUEhZX0lEX01BVENIX0VYQUNUKDB4MDAwMDgyMDEpLApAQCAtMjkzNCwyMCAmIzQzOzI4OTUsNiBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7CiAJCS53cml0ZV9wYWdlCT0gcnRsODIxeF93cml0ZV9wYWdlLAogCQkucmVhZF9tbWQJPSBydGw4MjJ4X3JlYWRfbW1kLAogCQkud3JpdGVfbW1kCT0gcnRsODIyeF93cml0ZV9tbWQsCi0JfSwgewotCQlQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1JUTF9EVU1NWV9TRlApLAotCQkubmFtZQkJPSAmIzM0O1JlYWx0ZWsgU0ZQIFBIWSBNb2RlJiMzNDssCi0JCS5mbGFncwkJPSBQSFlfSVNfSU5URVJOQUwsCi0JCS5wcm9iZQkJPSBydGw4MjJ4X3Byb2JlLAotCQkuZ2V0X2ZlYXR1cmVzCT0gcnRsZ2VuX3NmcF9nZXRfZmVhdHVyZXMsCi0JCS5jb25maWdfYW5lZwk9IHJ0bGdlbl9zZnBfY29uZmlnX2FuZWcsCi0JCS5yZWFkX3N0YXR1cwk9IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMsCi0JCS5zdXNwZW5kCT0gZ2VucGh5X3N1c3BlbmQsCi0JCS5yZXN1bWUJCT0gcnRsZ2VuX3Jlc3VtZSwKLQkJLnJlYWRfcGFnZQk9IHJ0bDgyMXhfcmVhZF9wYWdlLAotCQkud3JpdGVfcGFnZQk9IHJ0bDgyMXhfd3JpdGVfcGFnZSwKLQkJLnJlYWRfbW1kCT0gcnRsODIyeF9yZWFkX21tZCwKLQkJLndyaXRlX21tZAk9IHJ0bDgyMnhfd3JpdGVfbW1kLAogCX0sIHsKIAkJUEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLAogCQkubmFtZQkJPSAmIzM0O1JUTDgyMjQgMi41R2JwcyBQSFkmIzM0OywKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oIGIvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ODNiYzFiMDY1OWNkLi4wMDAwMDAwMDAwMDAwMAotLS0gYS9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaAomIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsCkBAIC0xLDcgJiM0MzswLDAgQEAKLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCi0jaWZuZGVmIF9SRUFMVEVLX1BIWV9ICi0jZGVmaW5lIF9SRUFMVEVLX1BIWV9ICi0KLSNkZWZpbmUJUEhZX0lEX1JUTF9EVU1NWV9TRlAJMHgwMDFjY2JmZgotCi0jZW5kaWYgLyogX1JFQUxURUtfUEhZX0ggKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzMDkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSByODE2OSBEcml2ZXIgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IGZ1bmRhbWVudGFsbHkgY2hhbmdlcyB0aGUgYHI4MTY5YCBuZXR3b3JrIGRyaXZlciBieSBhZGRpbmcgYFBIWUxJTktgIHN1cHBvcnQgYW5kIFNGUCBtb2RlIGhhbmRsaW5nLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4sIGdpdmVuIHRoZSBjb250ZXh0IG9mIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGlzIHdoZXRoZXIgdGhpcyBkcml2ZXIgaXMgZXZlbiAqcmVhY2hhYmxlKi4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIFJlYWx0ZWsgRXRoZXJuZXQgYWRhcHRlciBkcml2ZXIsIGFuZCBteSBleHBlcmllbmNlIHRlbGxzIG1lIFBDSSBuZXR3b3JrIGRyaXZlcnMgbGlrZSBgcjgxNjlgIGFyZSB0eXBpY2FsbHkgdHJpY2t5IGluIHZpcnR1YWxpemVkIHNldHVwcy4KClFFTVUsIHRoZSB1c3VhbCBzdXNwZWN0IGZvciBlbXVsYXRpb24sIGlzIG15IGZpcnN0IHBvcnQgb2YgY2FsbC4gSSBrbm93IFFFTVUgZW11bGF0ZXMgYHJ0bDgxMzlgLCBidXQgYHI4MTY5YCBpcyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IGJlYXN0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBRRU1VIGxpa2VseSAqZG9lc24mIzM5O3QqIGVtdWxhdGUgaXQuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LiBJdCYjMzk7cyBhIHF1ZXN0aW9uIEkgaGF2ZSB0byBhc2suIEkgbmVlZCB0byBtYWtlIHN1cmUuCgpUaGVuLCB0aGVyZSYjMzk7cyBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIGhhdmUgYSBtZWFucyB0byBpbnRlcmFjdCB3aXRoIHRoaXMgZHJpdmVyPyBTeXprYWxsZXIgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW5qZWN0IFBDSSBkZXZpY2VzIHRocm91Z2ggYHN5el9wY2lfZGV2aWNlX2FkZGAgb3Igc2ltaWxhciBtZWNoYW5pc21zLiBJZiB0aGlzIGlzIHRoZSBjYXNlLCBzeXprYWxsZXIgY291bGQgcG90ZW50aWFsbHkgcHJvdmlkZSBhIHBhdGggdG8gcmVhY2ggdGhlIGRyaXZlci4gU28sIHRoaXMgaXMgd29ydGggZXhwbG9yaW5nIHRvIHNlZSBpZiBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LgoKTXkgZmlyc3QgdGhvdWdodCBpcywgdGhpcyBpcyBhbiBpc3N1ZS4gVGhlIGRlc2NyaXB0aW9uIHNheXMgY29kZSBwYXRocyBhcmUgbm90IHJlYWNoYWJsZSBpZiB0aGV5IGNhbiYjMzk7dCBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHNvIEkgbmVlZCB0byBmaW5kIGEgd2F5IHRvIG1ha2UgaXQgcmVhY2hhYmxlLgoKT2theSwgY2hlY2tpbmcgc3l6a2FsbGVyLCB3aGljaCBtaWdodCBiZSB0aHJvdWdoIGB2aGNpYCBmb3IgVVNCIG9yIHRocm91Z2ggYHBjaWAgZm9yIFBDSSAodXNpbmcgdGhlIGBzeXpfcGNpX2RldmljZV9hZGRgIGNhbGwpLCBpcyBteSBuZXh0IGxpbmUgb2YgaW5xdWlyeS4gSG93ZXZlciwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgdGhhdCBhIGxvdCBvZiB0aGlzIHJlcXVpcmVzIHRoZSBkcml2ZXIgdG8gYWN0dWFsbHkgcHJvYmUgYW5kIHRoZSBuZXRkZXYgdG8gYmUgcmVnaXN0ZXJlZC4KClVsdGltYXRlbHksIGlmIHRoZSBoYXJkd2FyZSBpc24mIzM5O3QgZW11bGF0ZWQsIHRoZSBgcjgxNjlgIHByb2JlIGlzIGdvaW5nIHRvIGZhaWwsIHdoaWNoIG1lYW5zIHRoZSBuZXR3b3JrIGRldmljZSB3b24mIzM5O3QgYmUgcmVnaXN0ZXJlZCwgYW5kIGFsbCB0aGUgYHBoeWxpbmtgIGNvZGUsIGFuZCBldmVyeXRoaW5nIGluIGByODE2OV9vcGVuYCBpcyBuZXZlciBnb2luZyB0byBiZSBleGVjdXRlZC4KCkkmIzM5O20gbm93IGdvaW5nIHRvIGNvbmZpcm0gbXkgaHVuY2ggYW5kIHNlYXJjaCBRRU1VJiMzOTtzIHNvdXJjZSBjb2RlLCBqdXN0IHRvIG1ha2Ugc3VyZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGxvb2sgdGhyb3VnaCB0aGUgYXZhaWxhYmxlIG5ldHdvcmsgZGV2aWNlcy4gTm8sIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIGByODE2OWAuIFNvLCB0aGlzIGlzIHRoZSBtYWluIGlzc3VlLgoKU3l6a2FsbGVyIGlzIHRoZSBvbmx5IG90aGVyIHdheSB0byByZWFjaCB0aGlzLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHN5emthbGxlciYjMzk7cyBjYXBhYmlsaXRpZXMgaGVyZSwgbG9va2luZyBhdCBpdHMgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBmZWF0dXJlLiBNeSBjb25jbHVzaW9uIGlzIHRoYXQgaXQgdXNlcyBgc3l6X3BjaV9kZXZpY2VfYWRkYCBvciBzaW1pbGFyLiBJIG5lZWQgdG8gcmVtZW1iZXIsIHN5emthbGxlciBpcyBnb2luZyB0byBpbmplY3QgYSAmIzM0O2R1bW15JiMzNDsgUENJIGRldmljZSwgd2hpY2ggZG9lcyAqbm90KiBlbXVsYXRlIGFueSBhY3R1YWwgaGFyZHdhcmUsIGFuZCBpcyBub3QgZ29pbmcgdG8gcmVnaXN0ZXIgdGhlIG5ldGRldi4gVGhlIGRyaXZlciB3b24mIzM5O3QgcHJvYmUsIHNvIHRoZSBjb2RlIHdvbiYjMzk7dCBiZSBoaXQuCgpUaGUgcXVlc3Rpb24gdGhlbiBpcywgaG93IGRvZXMgc3l6a2FsbGVyIHByb3ZpZGUgYWNjZXNzIHRvIGBuZXRkZXZgPyBJdCBjYW4gb25seSBiZSBoaXQgdGhyb3VnaCBzb21lIGtpbmQgb2YgbmV0d29yayBmdXp6aW5nLgoKTXkgY29uY2x1c2lvbiBpcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgcjgxNjlgIGlzIHJlYWNoYWJsZSBhbmQgZmluZCBzb21lIG1lYW5zIG9mIG1ha2luZyBpdCByZWFjaGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfcGNpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDIwMAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQQ0kgRnV6emluZyBDaGFsbGVuZ2VzKioKCkFscmlnaHQsIHNvIHRoZXJlJiMzOTtzIG5vIGRlZGljYXRlZCBgc3l6X3BjaWAgdGFyZ2V0LCB3aGljaCBtZWFucyBteSBpbml0aWFsIGZvY3VzIG5lZWRzIHRvIHNoaWZ0LiBQQ0kgZnV6emluZyBpbiBnZW5lcmFsIHRoZW4uIEkga25vdyBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhIGdlbmVyaWMgUENJIGZ1enplciBjYXBhYmxlIG9mIGVtdWxhdGluZyBqdXN0IGFueSBQQ0kgZGV2aWNlLCBzbyBJJiMzOTttIGFscmVhZHkgZmFjaW5nIGEgaHVyZGxlLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgY2FuIEkgbGV2ZXJhZ2UgUUVNVSBzb21laG93PyBEb2VzIFFFTVUgZW11bGF0ZSB0aGUgYHI4MTY5YCBuZXR3b3JrIGFkYXB0ZXI/IEkgbmVlZCB0byBjaGVjayBpZiB0aGF0IHNwZWNpZmljIGRldmljZSBpcyBldmVuIG1lbnRpb25lZCBvciBhY2Nlc3NpYmxlIHdpdGhpbiBRRU1VJiMzOTtzIGVudmlyb25tZW50LiBIb2xkIG9uLCB3aGF0IGlmIHRoaXMgZml4IGlzIG9ubHkgYXBwbGljYWJsZSB0byBhIHBoeXNpY2FsIGByODE2OWAgYW5kIGNhbiYjMzk7dCBiZSB0ZXN0ZWQgdmlydHVhbGx5PyBJIHJlbWVtYmVyIHJlYWRpbmcgc29tZXRoaW5nIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMuLi4gJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4mIzM0OyBSaWdodCwgaWYgUUVNVSAqZG9lc24mIzM5O3QqIGVtdWxhdGUgYHI4MTY5YCwgSSYjMzk7bSBlc3NlbnRpYWxseSBzdHVjay4gVGhpcyBpcyBhbGwgaW1wb3NzaWJsZSB0byByZWFjaC4gQmFjayB0byB0aGUgc291cmNlLCBJIG5lZWQgdG8gY29uZmlybSBRRU1VJiMzOTtzIGVtdWxhdGlvbiBjYXBhYmlsaXRpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgUUVNVSBlbXVsYXRlcyBgcjgxNjlgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JUTDgxNjkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTg0PWNvbmZpZyBSODE2OVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy05NC1cdCAgdGhlIGZvbGxvd2luZyBmYW1pbGllczpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzo5NTpcdCAgUlRMODE2OSBHaWdhYml0IEV0aGVybmV0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctOTYtXHQgIFJUTDgxNjggR2lnYWJpdCBFdGhlcm5ldFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTExNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIyMy1cdC8qIDgxMTAgZmFtaWx5LiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjI0Olx0eyAweGZjOCwgMHg5ODAsXHRSVExfR0lHQV9NQUNfVkVSXzA2LCBcJiMzNDtSVEw4MTY5c2MvODExMHNjXCYjMzQ7IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMjU6XHR7IDB4ZmM4LCAweDE4MCxcdFJUTF9HSUdBX01BQ19WRVJfMDUsIFwmIzM0O1JUTDgxNjlzYy84MTEwc2NcJiMzNDsgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjIyNjpcdHsgMHhmYzgsIDB4MTAwLFx0UlRMX0dJR0FfTUFDX1ZFUl8wNCwgXCYjMzQ7UlRMODE2OXNiLzgxMTBzYlwmIzM0OyB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjI3LVx0eyAweGZjOCwgMHgwNDAsXHRSVExfR0lHQV9NQUNfVkVSXzAzLCBcJiMzNDtSVEw4MTEwc1wmIzM0OyB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjI4Olx0eyAweGZjOCwgMHgwMDgsXHRSVExfR0lHQV9NQUNfVkVSXzAyLCBcJiMzNDtSVEw4MTY5c1wmIzM0OyB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjI5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTU2NDY9c3RhdGljIGludCBydGxfanVtYm9fbWF4KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU2NTItXHRzd2l0Y2ggKHRwLVx1MDAzZW1hY192ZXJzaW9uKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NjUzOlx0LyogUlRMODE2OSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTY1NC1cdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8wMiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl8wNjpcbi0tXG5kcml2ZXJzL3BjaS9xdWlya3MuYz0zNjIxPURFQ0xBUkVfUENJX0ZJWFVQX0ZJTkFMKFBDSV9WRU5ET1JfSURfQ1JFQVRJVkUsIFBDSV9ERVZJQ0VfSURfQ1JFQVRJVkVfMjBLMixcbi0tXG5kcml2ZXJzL3BjaS9xdWlya3MuYy0zNjI0LS8qXG5kcml2ZXJzL3BjaS9xdWlya3MuYzozNjI1OiAqIFJlYWx0ZWsgUlRMODE2OSBQQ0kgR2lnYWJpdCBFdGhlcm5ldCBDb250cm9sbGVyIChyZXYgMTApXG5kcml2ZXJzL3BjaS9xdWlya3MuYzozNjI2OiAqIFN1YnN5c3RlbTogUmVhbHRlayBSVEw4MTY5LzgxMTAgRmFtaWx5IFBDSSBHaWdhYml0IEV0aGVybmV0IE5JQ1xuZHJpdmVycy9wY2kvcXVpcmtzLmMtMzYyNy0gKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTcxCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBDSSBGdXp6aW5nIGluIFN5emthbGxlcjogQSBRdWljayBBc3Nlc3NtZW50KioKCk9rYXksIGxldCYjMzk7cyBzZWUgYWJvdXQgZnV6emluZyBQQ0kgZGV2aWNlcyB3aXRoIHN5emthbGxlci4gRmlyc3QgdGhpbmdzIGZpcnN0OiBpcyB0aGVyZSBhbnkgZXhpc3RpbmcgUENJIGVtdWxhdGlvbiBiYWtlZCBpbj8gSSByYW4gYSBxdWljayBzZWFyY2ggZm9yIGBzeXpfcGNpYCwgYnV0IGNhbWUgdXAgZW1wdHkuIEhtbSwgc28gZG9lcyBzeXprYWxsZXIgZXZlbiAqZG8qIFBDSSBkZXZpY2UgZnV6emluZz8gSSB2YWd1ZWx5IHJlY2FsbCBzb21lIG1lbnRpb24gb2YgYENPTkZJR19QQ0lfREVCVUdgIG9yIHNpbWlsYXIsIGJ1dCBub3RoaW5nIGNvbmNyZXRlIGNvbWVzIHRvIG1pbmQuIFdhaXQsIHBlcmhhcHMgdGhyb3VnaCBgdmZpb2Agb3IgdGhlIHN0YW5kYXJkIGBwY2lgIHN1YnN5c3RlbT8gSXQgc2VlbXMgbGlrZSBJIG5lZWQgdG8gbG9vayBpbnRvIHRoaXMgbW9yZSBjbG9zZWx5Li4uCgpIb2xkIG9uLCBJIHNlZSBjYWxscyBsaWtlIGBzeXpfa3ZtX3NldHVwX2NwdWAsIHdoaWNoIG1pZ2h0IG9mZmVyIHNvbWUgaW5kaXJlY3QgYXZlbnVlcy4gTm93LCB3aGF0IGFib3V0IGEgc3BlY2lmaWMgZHJpdmVyIGxpa2UgYHI4MTY5YD8gSXMgaXQgd29ydGggdGhlIGVmZm9ydD8gSWYgaXQmIzM5O3MgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIHRoYXQmIzM5O3MgYSBub24tc3RhcnRlciB3aXRob3V0IHRoZSBoYXJkd2FyZSwgcmlnaHQ/IEFoLCB0aGUgY3J1eC4gRG8gd2UgaGF2ZSBhbnkgdmlydHVhbCBoYXJkd2FyZSBzdXBwb3J0IGZvciBpdD8gSSBrbm93IFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIGByODE2OWAsIHJhdGhlciBgcnRsODEzOWAuIExldCBtZSBqdXN0IGRvdWJsZSBjaGVjayBRRU1VJiMzOTtzIHN1cHBvcnRlZCBkZXZpY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bDgxNjkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5MTMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmFyY2gvbWlwcy9sb29uZ3NvbjJlZi9sZW1vdGUtMmYvcmVzZXQuYz0zMj1zdGF0aWMgdm9pZCBmbDJmX3JlYm9vdCh2b2lkKVxuLS1cbmFyY2gvbWlwcy9sb29uZ3NvbjJlZi9sZW1vdGUtMmYvcmVzZXQuYy0zNy1cdCAqXG5hcmNoL21pcHMvbG9vbmdzb24yZWYvbGVtb3RlLTJmL3Jlc2V0LmM6Mzg6XHQgKiBOT1RFOiBpZiBlbmFibGUgXCYjMzQ7UG93ZXIgTWFuYWdlbWVudFwmIzM0OyBpbiBrZXJuZWwsIHJ0bDgxNjkgd2lsbCBub3QgcmVzZXRcbmFyY2gvbWlwcy9sb29uZ3NvbjJlZi9sZW1vdGUtMmYvcmVzZXQuYy0zOS1cdCAqIG5vcm1hbGx5IHdpdGggdGhpcyByZXNldCBvcGVyYXRpb24gYW5kIGl0IHdpbGwgbm90IHdvcmsgaW4gUE1PTiwgYnV0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oPTE1PWVudW0gbWFjX3ZlcnNpb24ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC03OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo4MDpzdHJ1Y3QgcnRsODE2OV9wcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTgxLXN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODM6dm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODQ6dTE2IHJ0bDgxNjhoXzJfZ2V0X2FkY19iaWFzX2lvZmZzZXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjg1OnU4IHJ0bDgxNjhkX2VmdXNlX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWdfYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODY6dm9pZCByODE2OV9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTg3LVx0XHRcdCBlbnVtIG1hY192ZXJzaW9uIHZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODk6dm9pZCByODE2OV9nZXRfbGVkX25hbWUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBpZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtOTAtXHRcdFx0Y2hhciAqYnVmLCBpbnQgYnVmX2xlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6OTE6aW50IHJ0bDgxNjhfZ2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo5MjppbnQgcnRsODE2OF9sZWRfbW9kX2N0cmwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBtYXNrLCB1MTYgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC05My1zdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpydGw4MTY4X2luaXRfbGVkcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6OTQ6aW50IHJ0bDgxMjVfZ2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjk1OmludCBydGw4MTI1X3NldF9sZWRfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGluZGV4LCB1MTYgbW9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtOTYtc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODEyNV9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYz04OD1zdGF0aWMgYm9vbCBydGxfZndfZGF0YV9vayhzdHJ1Y3QgcnRsX2Z3ICpydGxfZncpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5jLTEzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYzoxNDA6dm9pZCBydGxfZndfd3JpdGVfZmlybXdhcmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHN0cnVjdCBydGxfZncgKnJ0bF9mdylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYy0xNDEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaC0xMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaDoxNDpzdHJ1Y3QgcnRsODE2OV9wcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5oOjE1OnR5cGVkZWYgdm9pZCAoKnJ0bF9md193cml0ZV90KShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmg6MTY6dHlwZWRlZiBpbnQgKCpydGxfZndfcmVhZF90KShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmgtMTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5oPTM4PXZvaWQgcnRsX2Z3X3JlbGVhc2VfZmlybXdhcmUoc3RydWN0IHJ0bF9mdyAqcnRsX2Z3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaDozOTp2b2lkIHJ0bF9md193cml0ZV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgc3RydWN0IHJ0bF9mdyAqcnRsX2Z3KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz01Mz1zdGF0aWMgaW50IHJ0bDgxNjhfbGVkX2h3X2NvbnRyb2xfaXNfc3VwcG9ydGVkKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTU2LVx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldiA9IGxjZGV2X3RvX3I4MTY5X2xkZXYobGVkX2NkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6NTc6XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXHUwMDNlbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy01OC1cdGludCBzaGlmdCA9IGxkZXYtXHUwMDNlaW5kZXggKiA0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTY5PXN0YXRpYyBpbnQgcnRsODE2OF9sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtNzItXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzo3MzpcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobGRldi1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTc0LVx0aW50IHNoaWZ0ID0gbGRldi1cdTAwM2VpbmRleCAqIDQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM9ODk9c3RhdGljIGludCBydGw4MTY4X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2Rldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy05Mi1cdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjkzOlx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVx1MDAzZW5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtOTQtXHRpbnQgc2hpZnQgPSBsZGV2LVx1MDAzZWluZGV4ICogNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz0xMjk9c3RhdGljIHZvaWQgcnRsODE2OF9zZXR1cF9sZGV2KHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTMxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjEzMjpcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xMzMtXHRzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldiA9IFx1MDAyNmxkZXYtXHUwMDNlbGVkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTE2Nz1zdGF0aWMgaW50IHJ0bDgxMjVfbGVkX2h3X2NvbnRyb2xfaXNfc3VwcG9ydGVkKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE3MC1cdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjE3MTpcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobGRldi1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE3Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz0xODI9c3RhdGljIGludCBydGw4MTI1X2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2Rldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xODUtXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxODY6XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXHUwMDNlbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xODctXHR1MTYgbW9kZSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM9MjAzPXN0YXRpYyBpbnQgcnRsODEyNV9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjA2LVx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldiA9IGxjZGV2X3RvX3I4MTY5X2xkZXYobGVkX2NkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjA3Olx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVx1MDAzZW5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjA4LVx0aW50IG1vZGU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM9MjI4PXN0YXRpYyB2b2lkIHJ0bDgxMjVfc2V0dXBfbGVkX2xkZXYoc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yMzAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjMxOlx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTIzMi1cdHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2ID0gXHUwMDI2bGRldi1cdTAwM2VsZWQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjM3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyBydGxfY2hpcF9pbmZvc19leHRlbmRlZFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI0NTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnRsODE2OV9wY2lfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNDYtXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDI1MDIpIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBydGw4MTY5X3BjaV90YmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjcyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQ3Nj1lbnVtIHJ0bF9yZWdpc3Rlcl9jb250ZW50IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1ODA6XHQvKiBydGw4MTY5X1BIWXN0YXR1cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTgxLVx0VEJJX0VuYWJsZVx0PSAweDgwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTY4MT1zdHJ1Y3QgcmluZ19pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy02ODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo2ODY6c3RydWN0IHJ0bDgxNjlfY291bnRlcnMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNjg3LVx0X19sZTY0XHR0eF9wYWNrZXRzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTcyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjcyOTpzdHJ1Y3QgcnRsODE2OV90Y19vZmZzZXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTczMC1cdGJvb2xcdGluaXRlZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz03NTA9ZW51bSBydGxfc2ZwX21vZGUge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTc1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjc1NjpzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTc1Ny1cdHZvaWQgX19pb21lbSAqbW1pb19hZGRyO1x0LyogbWVtb3J5IG1hcCBwaHlzaWNhbCBhZGRyZXNzICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNzkyLVx0ZG1hX2FkZHJfdCBjb3VudGVyc19waHlzX2FkZHI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo3OTM6XHRzdHJ1Y3QgcnRsODE2OV9jb3VudGVycyAqY291bnRlcnM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo3OTQ6XHRzdHJ1Y3QgcnRsODE2OV90Y19vZmZzZXRzIHRjX29mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTc5NS1cdHUzMiBzYXZlZF93b2xvcHRzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTgwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjgxMDp0eXBlZGVmIHZvaWQgKCpydGxfZ2VuZXJpY19mY3QpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTgxMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz04NDQ9TU9EVUxFX0ZJUk1XQVJFKEZJUk1XQVJFXzgxMjdBXzEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6ODQ2OnN0YXRpYyBpbmxpbmUgc3RydWN0IGRldmljZSAqdHBfdG9fZGV2KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODQ3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo4NTE6c3RhdGljIHZvaWQgcnRsX2xvY2tfY29uZmlnX3JlZ3Moc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NTIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg1NjpzdGF0aWMgdm9pZCBydGxfdW5sb2NrX2NvbmZpZ19yZWdzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODU3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo4NjE6c3RhdGljIHZvaWQgcnRsX3BjaV9jb21taXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg2NzpzdGF0aWMgdm9pZCBydGxfbW9kX2NvbmZpZzIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHU4IGNsZWFyLCB1OCBzZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04Njgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg3NTpzdGF0aWMgdm9pZCBydGxfbW9kX2NvbmZpZzUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHU4IGNsZWFyLCB1OCBzZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NzYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg4MzpzdGF0aWMgdm9pZCByODE2OV9tb2RfcmVnOF9jb25kKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODg0LVx0XHRcdFx0dTggYml0cywgYm9vbCBjb25kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg5NzpzdGF0aWMgYm9vbCBydGxfaXNfODEyNShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6OTAyOnN0YXRpYyBib29sIHJ0bF9pc184MTY4ZXZsX3VwKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTAzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05MDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo5MDk6c3RhdGljIGJvb2wgcnRsX3N1cHBvcnRzX2VlZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTkxMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6OTE2OnN0YXRpYyB2b2lkIHJ0bF9yZWFkX21hY19mcm9tX3JlZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggKm1hYywgaW50IHJlZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTkxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9OTI0PXN0cnVjdCBydGxfY29uZCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo5MjU6XHRib29sICgqY2hlY2spKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05MjYtXHRjb25zdCBjaGFyICptc2c7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6OTI5OnN0YXRpYyBib29sIHJ0bF9sb29wX3dhaXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGNvbnN0IHN0cnVjdCBydGxfY29uZCAqYyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTkzMC1cdFx0XHQgIHVuc2lnbmVkIGxvbmcgdXNlY3MsIGludCBuLCBib29sIGhpZ2gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6OTQ2OnN0YXRpYyBib29sIHJ0bF9sb29wX3dhaXRfaGlnaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk0Ny1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHJ0bF9jb25kICpjLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjk1MzpzdGF0aWMgYm9vbCBydGxfbG9vcF93YWl0X2xvdyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk1NC1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgcnRsX2NvbmQgKmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTYwLSNkZWZpbmUgREVDTEFSRV9SVExfQ09ORChuYW1lKVx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjk2MTpzdGF0aWMgYm9vbCBuYW1lICMjIF9jaGVjayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICopO1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk2Mi1cdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz05NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY29uZCBuYW1lID0ge1x0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTY3LVx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjk2ODpzdGF0aWMgYm9vbCBuYW1lICMjIF9jaGVjayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjk3MDppbnQgcnRsODE2OF9sZWRfbW9kX2N0cmwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBtYXNrLCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTcxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo5ODg6aW50IHJ0bDgxNjhfZ2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTg5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xMDA0PXN0YXRpYyBpbnQgcnRsODEyNV9nZXRfbGVkX3JlZyhpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTAxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEwMTE6aW50IHJ0bDgxMjVfc2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaW5kZXgsIHUxNiBtb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTAxMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTAzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEwMzI6aW50IHJ0bDgxMjVfZ2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaW5kZXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDMzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTA0OTp2b2lkIHI4MTY5X2dldF9sZWRfbmFtZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGlkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwNTAtXHRcdFx0Y2hhciAqYnVmLCBpbnQgYnVmX2xlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTA3MTpzdGF0aWMgdm9pZCByODE2OGZwX2FkanVzdF9vY3BfY21kKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgKmNtZCwgaW50IHR5cGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDcyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xMDc4PURFQ0xBUkVfUlRMX0NPTkQocnRsX2VyaWFyX2NvbmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTA4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEwODM6c3RhdGljIHZvaWQgX3J0bF9lcmlfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBhZGRyLCB1MzIgbWFzayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwODQtXHRcdFx0ICAgdTMyIHZhbCwgaW50IHR5cGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTA5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEwOTg6c3RhdGljIHZvaWQgcnRsX2VyaV93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGFkZHIsIHUzMiBtYXNrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTA5OS1cdFx0XHQgIHUzMiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTEwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjExMDQ6c3RhdGljIHUzMiBfcnRsX2VyaV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgYWRkciwgaW50IHR5cGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTA1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTExNTpzdGF0aWMgdTMyIHJ0bF9lcmlfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTE2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTEyMDpzdGF0aWMgdm9pZCBydGxfdzB3MV9lcmkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBhZGRyLCB1MzIgcCwgdTMyIG0pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTIxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTEyNzpzdGF0aWMgdm9pZCBydGxfZXJpX3NldF9iaXRzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgYWRkciwgdTMyIHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTI4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTEzMjpzdGF0aWMgdm9pZCBydGxfZXJpX2NsZWFyX2JpdHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBhZGRyLCB1MzIgbSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExMzMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTExNDI9REVDTEFSRV9SVExfQ09ORChydGxfb2NwX2dwaHlfY29uZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTE0NzpzdGF0aWMgdm9pZCByODE2OF9waHlfb2NwX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnLCB1MzIgZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExNDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExNTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTU3OnN0YXRpYyBpbnQgcjgxNjhfcGh5X29jcF9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE1OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjExNjg6c3RhdGljIHZvaWQgX19yODE2OF9tYWNfb2NwX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnLCB1MzIgZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExNjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTc2OnN0YXRpYyB2b2lkIHI4MTY4X21hY19vY3Bfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiByZWcsIHUzMiBkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE3Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjExODU6c3RhdGljIHUxNiBfX3I4MTY4X21hY19vY3BfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExODYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTk1OnN0YXRpYyB1MTYgcjgxNjhfbWFjX29jcF9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE5Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTIwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEyMDc6c3RhdGljIHZvaWQgcjgxNjhfbWFjX29jcF9tb2RpZnkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiByZWcsIHUxNiBtYXNrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTIwOC1cdFx0XHRcdCB1MTYgc2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMjE5OnN0YXRpYyB2b2lkIHI4MTI3X3NmcF9zZHNfcGh5X3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTIyMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTIyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEyMjk6c3RhdGljIHZvaWQgcjgxMjdfc2ZwX2luaXRfMTBnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTIzMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEyNDc6c3RhdGljIHZvaWQgcnRsX3NmcF9yZXNldChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyNDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyNTUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMjU2OnN0YXRpYyB2b2lkIHJ0bDgxNjhnX3BoeV9zdXNwZW5kX3F1aXJrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgdmFsdWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMjU3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMjY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTI3MDpzdGF0aWMgdm9pZCByODE2OGdfbWRpb193cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI3MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEyODY6c3RhdGljIGludCByODE2OGdfbWRpb19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI4Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEyOTc6c3RhdGljIHZvaWQgbWFjX21jdV93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTMwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEzMDc6c3RhdGljIGJvb2wgcnRsX2lzXzgxMTZhZihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzE2OnN0YXRpYyBpbnQgbWFjX21jdV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTMxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTMyMT1ERUNMQVJFX1JUTF9DT05EKHJ0bF9waHlhcl9jb25kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzI2OnN0YXRpYyB2b2lkIHI4MTY5X21kaW9fd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcsIGludCB2YWx1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMjcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzM4OnN0YXRpYyBpbnQgcjgxNjlfbWRpb19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTMzOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTM1Nj1ERUNMQVJFX1JUTF9DT05EKHJ0bF9vY3Bhcl9jb25kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzYzOnN0YXRpYyB2b2lkIHI4MTY4ZHBfMl9tZGlvX3N0YXJ0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTM2NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTM2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEzNjg6c3RhdGljIHZvaWQgcjgxNjhkcF8yX21kaW9fc3RvcChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzNjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzczOnN0YXRpYyB2b2lkIHI4MTY4ZHBfMl9tZGlvX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzc0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTM4MjpzdGF0aWMgaW50IHI4MTY4ZHBfMl9tZGlvX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzgzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTM5OTpzdGF0aWMgdm9pZCBydGxfd3JpdGVwaHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBsb2NhdGlvbiwgaW50IHZhbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0MDAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDE1OnN0YXRpYyBpbnQgcnRsX3JlYWRwaHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBsb2NhdGlvbilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0MTYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTE0Mjg9REVDTEFSRV9SVExfQ09ORChydGxfZXBoeWFyX2NvbmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0MzM6c3RhdGljIHZvaWQgcnRsX2VwaHlfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWdfYWRkciwgaW50IHZhbHVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQzNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0NDM6c3RhdGljIHUxNiBydGxfZXBoeV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnX2FkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDQ0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTQ1MTpzdGF0aWMgdTMyIHI4MTY4ZHBfb2NwX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiByZWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDUyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTQ1ODpzdGF0aWMgdTMyIHI4MTY4ZXBfb2NwX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiByZWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDU5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTQ2MzpzdGF0aWMgdm9pZCByODE2OGRwX29jcF93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggbWFzaywgdTE2IHJlZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NjQtXHRcdFx0ICAgICAgdTMyIGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0NzE6c3RhdGljIHZvaWQgcjgxNjhlcF9vY3Bfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHU4IG1hc2ssIHUxNiByZWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDcyLVx0XHRcdCAgICAgIHUzMiBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDc4OnN0YXRpYyB2b2lkIHI4MTY4ZHBfb29iX25vdGlmeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ3OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0ODk6c3RhdGljIHUxNiBydGw4MTY4X2dldF9vY3BfcmVnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ5MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTUwOD1ERUNMQVJFX1JUTF9DT05EKHJ0bF9vY3BfdHhfY29uZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTUxMzpzdGF0aWMgdm9pZCBydGw4MTY4ZXBfc3RvcF9jbWFjKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTUxNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTUyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1MjE6c3RhdGljIHZvaWQgcnRsODE2OGRwX2RyaXZlcl9zdGFydChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1MjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1MjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNTI4OnN0YXRpYyB2b2lkIHJ0bDgxNjhlcF9kcml2ZXJfc3RhcnQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTI5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTUzNjpzdGF0aWMgdm9pZCBydGw4MTI1YnBfZHJpdmVyX3N0YXJ0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTUzNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1NDM6c3RhdGljIHZvaWQgcnRsODE2OF9kcml2ZXJfc3RhcnQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTQ0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU1MzpzdGF0aWMgdm9pZCBydGw4MTY4ZHBfZHJpdmVyX3N0b3Aoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTU0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU2MDpzdGF0aWMgdm9pZCBydGw4MTY4ZXBfZHJpdmVyX3N0b3Aoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTYxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU2OTpzdGF0aWMgdm9pZCBydGw4MTI1YnBfZHJpdmVyX3N0b3Aoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTcwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU3NjpzdGF0aWMgdm9pZCBydGw4MTY4X2RyaXZlcl9zdG9wKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU3Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1ODY6c3RhdGljIGJvb2wgcjgxNjhkcF9jaGVja19kYXNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU4Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1OTM6c3RhdGljIGJvb2wgcjgxNjhlcF9jaGVja19kYXNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU5NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1OTg6c3RhdGljIGJvb2wgcnRsX2Rhc2hfaXNfZW5hYmxlZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1OTkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNjExOnN0YXRpYyBlbnVtIHJ0bF9zZnBfbW9kZSBydGxfZ2V0X3NmcF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTYxMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTYyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE2MjU6c3RhdGljIGVudW0gcnRsX2Rhc2hfdHlwZSBydGxfZ2V0X2Rhc2hfdHlwZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2MjYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2NDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNjQ0OnN0YXRpYyB2b2lkIHJ0bF9zZXRfZDNfcGxsX2Rvd24oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY0NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE2NjI6c3RhdGljIHZvaWQgcnRsX3Jlc2V0X3BhY2tldF9maWx0ZXIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjYzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xNjY4PURFQ0xBUkVfUlRMX0NPTkQocnRsX2VmdXNlYXJfY29uZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTY3Mzp1OCBydGw4MTY4ZF9lZnVzZV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnX2FkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjc0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTY4MTpzdGF0aWMgdTMyIHJ0bF9nZXRfZXZlbnRzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY4Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE2ODk6c3RhdGljIHZvaWQgcnRsX2Fja19ldmVudHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiBiaXRzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY5MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE2OTc6c3RhdGljIHZvaWQgcnRsX2lycV9kaXNhYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTcwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE3MDU6c3RhdGljIHZvaWQgcnRsX2lycV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzA2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTcxMzpzdGF0aWMgdm9pZCBydGw4MTY5X2lycV9tYXNrX2FuZF9hY2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzE0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTcyMDpzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBzcGVlZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3MjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3NTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzU2OnN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzU3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE3NTg6XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzU5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzY0OnN0YXRpYyB2b2lkIF9fcnRsODE2OV9zZXRfd29sKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgd29sb3B0cylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3NjUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxODE1OnN0YXRpYyBpbnQgcnRsODE2OV9zZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX3dvbGluZm8gKndvbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4MTYte1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU5NzYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1NDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgYHI4MTY5YCBQQ0kgRHJpdmVyKioKCk9rYXksIHNvIGByODE2OWAgaXMgYSBQQ0kgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB0aGlzIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXI/IEkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBpbiBzb21lIHN5emthbGxlciBlbnZpcm9ubWVudHMsIGJ1dCBhIHF1aWNrIHNlYXJjaCBmb3IgYHN5el9wY2lgIGNvbWVzIHVwIGVtcHR5LiBIbW0sIHN5emthbGxlciBsZXZlcmFnZXMgYHZoY2lgIGZvciBVU0IsIGJ1dCBpdCBzZWVtcyB0aGVyZSYjMzk7cyBubyBlcXVpdmFsZW50IGdlbmVyaWMgZnJhbWV3b3JrIGZvciBQQ0kgZnV6emluZyBkaXJlY3RseSB3aXRoaW4gc3l6a2FsbGVyLCBhdCBsZWFzdCBub3QgaW4gYW4gb2J2aW91cyB3YXkuIEkgcXVpY2tseSBjaGVja2VkIGZvciBgQ09ORklHX1BDSV9ERUJVR2Agd2hpY2ggaXMgbm90IHRoZSBjYXNlLgoKVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdGhhdCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhcmUgb3V0IG9mIHNjb3BlLCBpbmNsdWRpbmcgdGhvc2UgcmVsaWFudCBvbiBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gU2luY2UgdGhlIGByODE2OWAgaXMgYW4gZXRoZXJuZXQgZHJpdmVyLCBhbmQgdGhlIHRleHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGV4YW1wbGVzIGxpa2UgYHVzYiBnYWRnZXRgIGZvciBlbXVsYXRlZCBoYXJkd2FyZSwgdGhpcyBpcyBhbiBpbXBvcnRhbnQgYXJlYSB0byBjb25zaWRlci4gSWYgYHI4MTY5YCBpc24mIzM5O3QgZW11bGF0ZWQgYnkgUUVNVSwgYW5kIHRoZXJlIGlzbiYjMzk7dCBhbnkgc29mdHdhcmUgZW11bGF0aW9uIEkgY2FuIHVzZSwgdGhlbiBpdCYjMzk7cyBsaWtlbHkgdW5yZWFjaGFibGUgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuCgpTbywgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGByODE2OWAuIElzIHRoZXJlIGEgYG1hYzgwMjExX2h3c2ltYC1saWtlIGVxdWl2YWxlbnQ/IE5vcGUuIElzIHRoZXJlIGEgYHVzYiBnYWRnZXRgIGVxdWl2YWxlbnQ/IEFsc28sIG5vLCBhcyBpdCYjMzk7cyBhIFBDSSBkZXZpY2UuIERvZXMgUUVNVSBldmVuIGVtdWxhdGUgYHI4MTY5YD8gSSYjMzk7dmUgbG9va2VkIGF0IFFFTVUmIzM5O3Mgc291cmNlIGJlZm9yZSwgSSBzZWVtIHRvIHJlbWVtYmVyIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBzdXBwb3J0IHRoZSBgcnRsODE2OWAgZGV2aWNlLCBidXQgaXQgaGFzIHN1cHBvcnQgZm9yIGBydGw4MTM5YC4gSSBzaG91bGQgY2hlY2sgdGhhdCBhZ2Fpbiwgc2luY2UgbXkgbWVtb3J5IGlzIGltcGVyZmVjdC4gSSBjYW4mIzM5O3QgZGlyZWN0bHkgY2hlY2sgdGhlIFFFTVUgc291cmNlIHJpZ2h0IG5vdywgYnV0IEkgY2FuIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgIGZpbGUgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBpbmRpY2F0aW9uIG9mIGEgdmlydHVhbCBkZXZpY2UuIE5vLCB0aGlzIGZpbGUgZGVzY3JpYmVzIGEgcGh5c2ljYWwgUmVhbHRlayBHaWdhYml0IEV0aGVybmV0IGFkYXB0ZXIuCgpHaXZlbiB0aGVzZSBmaW5kaW5ncywgaXQgYXBwZWFycyB0aGUgZHJpdmVyIGlzIG5vdCBkaXJlY3RseSBlbXVsYXRlZCwgYW5kIHRoZSBjb2RlIHBhdGggaXMgbGlrZWx5IHVucmVhY2hhYmxlLiBUaGVyZWZvcmUsIEkgbmVlZCB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgpIb3dldmVyLCBiZWZvcmUgSSBkZWZpbml0aXZlbHkgZGVjaWRlLCBJIGhhdmUgYSBsaW5nZXJpbmcgdGhvdWdodDogaXMgdGhlcmUgc29tZSBzb3J0IG9mIGR1bW15IFBDSSBkZXZpY2UgZnJhbWV3b3JrIGluIHRoZSBrZXJuZWwgdGhhdCBzeXprYWxsZXIgKmRvZXMqIHV0aWxpemU/IEkgY2hlY2tlZCBteSBtZW1vcmllcyBvbiBgc3l6X3BjaV9kZXZpY2VfYWRkYCBhbmQgY2hlY2tlZCBzeXprYWxsZXIgZm9yIGBzeXpfcGNpYCBhbmQgZm91bmQgbm90aGluZy4gSSBrbm93IGl0IHVzZXMgYHN5el91c2JfY29ubmVjdGAgZm9yIFVTQiwgYnV0IGlzIHRoZXJlIGFueXRoaW5nIGNvbXBhcmFibGUgZm9yIFBDST8gSSYjMzk7bGwgbG9vayB0aHJvdWdoIHRoZSBgRG9jdW1lbnRhdGlvbi9gIGFuZCBgdG9vbHMvYCBkaXJlY3RvcmllcyB0byBzZWUgaWYgSSBjYW4gZmluZCBhbnkgbGVhZHMgb24gUENJIGZ1enppbmcgc3VwcG9ydCB3aXRoaW4gc3l6a2FsbGVyIG9yIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpLipmdXp6JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxODEKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxMDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSZWFjaGFiaWxpdHkgb2YgYHI4MTY5YCBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBsb29raW5nIGF0IHdoZXRoZXIgYSBwYXRjaCBhZmZlY3RpbmcgYHI4MTY5YCBpcyB3b3J0aCBmdXp6aW5nLCBhbmQgdGhlIGtleSBjcml0ZXJpb24gaXMgcmVhY2hhYmlsaXR5IGluIGNvbW1vbiB2aXJ0dWFsaXplZCBzZXR1cHMuCgpGaXJzdCwgYHZoY2lgIGZvciBQQ0kgaXMgb3V0OyB0aGF0JiMzOTtzIG5vdCByZWxldmFudCBoZXJlLiBTbywgYHI4MTY5YCBpcyBhIHBoeXNpY2FsIFBDSSBkZXZpY2UsIG1lYW5pbmcgaXRzIGRyaXZlciAoYHI4MTY5YCkgcHJvYmVzIGJhc2VkIG9uIHRoZSBwcmVzZW5jZSBvZiBtYXRjaGluZyBoYXJkd2FyZS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiBjYW4gd2UgdHJpZ2dlciB0aGF0IHByb2JlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRT8KCkluaXRpYWxseSwgaXQgc2VlbWVkIGltcG9zc2libGUuIElmIG5vIFBDSSBkZXZpY2Ugd2l0aCBhIG1hdGNoaW5nIElEIGV4aXN0cywgdGhlIGBwcm9iZWAgZnVuY3Rpb24sIGFuZCB0aGVyZWZvcmUgdGhlIGNvZGUsIGlzIHVucmVhY2hhYmxlLiBJIGRpZCB3b25kZXIgYWJvdXQgaW5qZWN0aW5nIGEgUENJIGRldmljZSB2aWEgc3lzZnMgKHVzaW5nIGBwY2ktc3R1YmAgb3IgYG5ld19pZGApLCBidXQgeW91JiMzOTtkICpzdGlsbCogbmVlZCBhICpyZWFsKiB1bmRlcmx5aW5nIFBDSSBkZXZpY2UgdG8gYmluZCB0bywgbm90IHNvbWV0aGluZyB5b3UgY2FuIGp1c3QgY29uanVyZSB1cC4gVGhlcmUmIzM5O3Mgbm8gYnVpbHQtaW4gc29mdHdhcmUgUENJIGhvc3QgY29udHJvbGxlciBpbiBtYWlubGluZSBMaW51eCBmb3IgZG9pbmcgdGhhdCB3aXRob3V0IHNvbWUgdW5kZXJseWluZyBwaHlzaWNhbCBkZXZpY2UuCgpJIGNvbnNpZGVyZWQgYHVtYCAoVXNlci1Nb2RlIExpbnV4KSwgd2hpY2ggbWlnaHQgaGF2ZSBzb21lIFBDSSBlbXVsYXRpb24sIGJ1dCBzeXprYWxsZXIgdXN1YWxseSBydW5zIG9uIHg4Nl82NCB3aXRoIFFFTVUuIE5vdywgUUVNVSAqZG9lcyogaGF2ZSBhIHZhcmlldHkgb2YgZW11bGF0ZWQgbmV0d29yayBkZXZpY2VzIGxpa2UgYHJ0bDgxMzlgLiBJIGNoZWNrZWQgdGhlIGNvbXBsZXRlIGxpc3Q6IGBlMTAwMGAsIGBlMTAwMGVgLCBgcnRsODEzOWAsIGB2aXJ0aW8tbmV0YCwgYHZteG5ldDNgLCBgcGNuZXRgLCBgbmUya19wY2lgLCBgaTgyNTU5ZXJgLCBgdHVsaXBgIGFyZSBhdmFpbGFibGUuCgpDcnVjaWFsbHksIGFmdGVyIGNoZWNraW5nIHRoZSBzb3VyY2UgY29kZSwgUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgYHJ0bDgxNjlgLiBUaGlzIGNvbmZpcm1lZCBpdDsgdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIGdldCBhIHZpcnR1YWwgYHJ0bDgxNjlgIHdpdGhpbiBRRU1VLgoKSSB0aGVuIGNvbnNpZGVyZWQgR0NFIChHb29nbGUgQ29tcHV0ZSBFbmdpbmUpLCB3aGljaCBzeXprYWxsZXIgdXNlcy4gQnV0IEdDRSBwcm92aWRlcyBgdmlydGlvLW5ldGAgb3IgaXRzIG93biBgZ3ZlYCAoR29vZ2xlIFZpcnR1YWwgTklDKSBkZXZpY2UsICpub3QqIGBydGw4MTY5YC4KClNvLCBmcm9tIHdoYXQgSSYjMzk7dmUgY29uc2lkZXJlZCwgdGhlcmUmIzM5O3Mgbm8gcGF0aHdheSB0byByZWFjaCBgcjgxNjlgIGluIGVpdGhlciBRRU1VIG9yIEdDRS4gSXQmIzM5O3MgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlLgoKVGhhdCBzYWlkLCBJIGRpZCByZW1lbWJlciBgcjgxNjlgIGlzIGEgUENJIGRldmljZSwgbm90IFVTQi4KClRoZXJlZm9yZSwgZ2l2ZW4gdGhlIHByb21wdCwgd2hpY2ggc3RhdGVzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBzaW5jZSB0aGUgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlLCB0aGlzIGlzIGEgY2xlYXIgY2FzZSBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bDgxNjlfcGNpX3RibCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yMzc9c3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHJ0bF9jaGlwX2luZm9zX2V4dGVuZGVkW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjQ1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydGw4MTY5X3BjaV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI0Ni1cdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4MjUwMikgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyNzE6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHJ0bDgxNjlfcGNpX3RibCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NjE2Mz1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcnRsODE2OV9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNjE2NC1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo2MTY1Olx0LmlkX3RhYmxlXHQ9IHJ0bDgxNjlfcGNpX3RibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTYxNjYtXHQucHJvYmVcdFx0PSBydGxfaW5pdF9vbmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MzA1CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IGEgUENJIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgc2luY2UgaXQmIzM5O3MgZm9yIGEgKnBoeXNpY2FsKiBkZXZpY2UsIG5vdCBzb21ldGhpbmcgZW11bGF0ZWQgYnkgUUVNVSBvciBHQ0UsIGl0JiMzOTtzIHByb2JhYmx5IGdvaW5nIHRvIGJlIHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIuIFRoZW4gYWdhaW4sIEkgc2VlIHRoYXQgdGhlIHBhdGNoIGFsc28gbW9kaWZpZXMgYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgaXQmIzM5O3MgcmVtb3ZpbmcgYFBIWV9JRF9SVExfRFVNTVlfU0ZQYCBhbmQgaXRzIGFzc29jaWF0ZWQgZHJpdmVyLgoKSG1tLCBzbyBpcyBgcmVhbHRla19tYWluLmNgIHJlYWNoYWJsZT8gSXTigJlzIGEgUEhZIGRyaXZlciwgd2hpY2ggdHlwaWNhbGx5IG1lYW5zIGl0JiMzOTtzIGFjY2Vzc2VkIHZpYSB0aGUgTURJTyBidXMuIENhbiBzeXprYWxsZXIgZXZlbiBmdXp6IE1ESU8gYnVzZXM/IEkga25vdyB0aGVyZSBhcmUgZW11bGF0ZWQgbmV0d29yayBkZXZpY2VzIGxpa2UgYG1hY2JgIG9yIGBmZWNgLCBidXQgdGhleSBnZW5lcmFsbHkgdXNlIHRoZWlyIG93biBQSFlzIG9yIGEgZ2VuZXJpYyBvbmUuIEkgdGhvdWdodCBJIHJlY2FsbGVkIHNlZWluZyBzb21lIHNvcnQgb2YgYHN5el9tZGlvYCBjYWxsLCBidXQgbm8sIEkmIzM5O20gZHJhd2luZyBhIGJsYW5rLiBBbmQgZXZlbiBpZiBpdCBjb3VsZCwgdGhpcyBwYXRjaCBpcyByZW1vdmluZyB0aGUgUEhZIGRyaXZlciwgc28gaXQgd291bGRuJiMzOTt0IGludHJvZHVjZSBuZXcgY29kZSB0byBmdXp6LgoKQWxyaWdodCwgdGhlIG1lYXQgb2YgdGhlIGNoYW5nZXMgc2VlbSB0byBiZSBpbiBgcjgxNjlfbWFpbi5jYC4gQ29uc2lkZXJpbmcgdGhhdCBgcjgxNjlgIGlzIGxpa2VseSB1bnJlYWNoYWJsZSwgSSBuZWVkIHRvIGZsYWcgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCldhaXQsIGJlZm9yZSBJIGNvbW1pdCB0byB0aGF0LCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgc3l6a2FsbGVyIGhhcyAqYW55KiBjYXBhYmlsaXR5IGZvciBQQ0kgZGV2aWNlIGZ1enppbmcuIEkgdGhvdWdodCBJIHNhdyBhIGBzeXMvbGludXgvZGV2X3BjaS50eHRgLCBidXQgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlLiBPa2F5LCBubywgbm90aGluZyBsaWtlIHRoYXQuIEFsbCByaWdodCwgdGltZSB0byBsb29rIGludG8gdGhlIHN5emthbGxlciBkb2N1bWVudGF0aW9uIGFuZCBjb2RlIGRpcmVjdGx5IHRvIHNlZSBpZiBpdCBldmVuIGhhcyBhbnkgUENJIGZ1enppbmcgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfcGNpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwNDQKCQkJCQkJCW91dHB1dDogMTA2CgkJCQkJCQl0aG91Z2h0czogNTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1doYXQgYWJvdXQgYHBjaV9kZXZpY2VfaWRgPyBEb2VzbiYjMzk7dCBTeXprYWxsZXIgaW5qZWN0IFBDSSBkZXZpY2VzPyYjMzQ7IEJ1dCB0aGVuIEkgcmVtZW1iZXIsIG5vLCBTeXprYWxsZXIgZG9lc24mIzM5O3QgbWFnaWNhbGx5IGNyZWF0ZSBQQ0kgZGV2aWNlcy4gV2FpdCwgd2hhdCYjMzk7cyB0aGlzIGBDT05GSUdfUENJX0VORFBPSU5UX1RFU1RgPyBBaGEsIHRoYXQmIzM5O3MgZm9yIHRoZSBQQ0kgZW5kcG9pbnQgc3Vic3lzdGVtLgoKSXMgdGhlcmUgZXZlbiBhbnkgc29mdHdhcmUgUENJIGVtdWxhdG9yIGluIHRoZSBrZXJuZWw/IEkgcXVpY2tseSBjaGVjaywgYW5kIHllYWgsIHRoZXJlJiMzOTtzIGBkcml2ZXJzL21pc2MvcGNpX2VuZHBvaW50X3Rlc3QuY2AgYW5kIGBkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1ob3N0LWdlbmVyaWMuY2AsIGJ1dCBpdCYjMzk7cyBub3QgYSBnZW5lcmljIHNvZnR3YXJlIFBDSSBkZXZpY2UgZW11bGF0b3IgdGhhdCBTeXprYWxsZXIgaXMga25vd24gdG8gdXNlIHRvIGZ1enogYXJiaXRyYXJ5IFBDSSBkcml2ZXJzLgoKU28sIHRoZSBjb25jbHVzaW9uIGlzIGNsZWFyOiBgcjgxNjlgIGlzIHVucmVhY2hhYmxlLgoKTGV0IG1lIGdvIGJhY2sgYW5kIHJldmlldyB0aGUgb3JpZ2luYWwgcHJvbXB0IHRvIG1ha2Ugc3VyZTogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAuLi4gLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4mIzM0OwoKQmluZ28uIGByODE2OWAgaXMgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlLCBhbmQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIG5vciBpcyB0aGVyZSBhIHNvZnR3YXJlIFBDSSBmcmFtZXdvcmsgdG8gaW5qZWN0IGFyYml0cmFyeSBQQ0kgZGV2aWNlcy4gVGhlcmVmb3JlLCBpdCYjMzk7cyBpbXBvc3NpYmxlIHRvIHJlYWNoIHRoYXQgY29kZS4KClNvLCBJJiMzOTtsbCBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIG1ha2Ugc3VyZSB0byBwcm92aWRlIHNvbGlkIHJlYXNvbmluZyBmb3IgbXkgY29uY2x1c2lvbi4KCk15IHJlYXNvbmluZyB3aWxsIGJlIHRoaXM6IFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHI4MTY5YCBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIGRyaXZlciBmb3IgUmVhbHRlayBHaWdhYml0IEV0aGVybmV0IGFkYXB0ZXJzLiBTaW5jZSB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBieSBRRU1VIG9yIEdDRSwgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFBDSSBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBpbmplY3QgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzbmVha3kgY2hhbmdlcyBpbiB0aGUgcGF0Y2ggdGhhdCAqY291bGQqIGJlIHJlYWNoZWQuIE9rYXksIHRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzOgoKKiAgIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdgCiogICBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgCiogICBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNgCiogICBgaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmhgCgpUaGUgY2hhbmdlcyBpbiBgcmVhbHRla19tYWluLmNgIGFyZSBqdXN0IHJlbW92aW5nIHRoZSBgUEhZX0lEX1JUTF9EVU1NWV9TRlBgIGRyaXZlci4gVGhlIGNoYW5nZXMgaW4gYHI4MTY5X21haW4uY2AgYWRkIHBoeWxpbmsgc3VwcG9ydC4gQWxsIG9mIHRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIGByODE2OWAgaGFyZHdhcmUgdGhvdWdoLgoKWXVwLCBpdCYjMzk7cyBhbGwgY29tcGxldGVseSB1bnJlYWNoYWJsZS4KCkkmIzM5O2xsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSByODE2OSBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIGRyaXZlciBmb3IgcGh5c2ljYWwgUmVhbHRlayBHaWdhYml0IEV0aGVybmV0IGFkYXB0ZXJzLiBTaW5jZSB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBieSBRRU1VIG9yIEdDRSwgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFBDSSBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBpbmplY3QgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHI4MTY5IGRyaXZlciwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBwaHlzaWNhbCBSZWFsdGVrIEdpZ2FiaXQgRXRoZXJuZXQgYWRhcHRlcnMuIFNpbmNlIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGJ5IFFFTVUgb3IgR0NFLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgUENJIGZyYW1ld29yayBpbiB0aGUga2VybmVsIHRvIGluamVjdCBhcmJpdHJhcnkgUENJIGRldmljZXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MDA6NTcuODMwMTg5ODQyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODEzMTQ4MTYxMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSByODE2OSBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIGRyaXZlciBmb3IgcGh5c2ljYWwgUmVhbHRlayBHaWdhYml0IEV0aGVybmV0IGFkYXB0ZXJzLiBTaW5jZSB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBieSBRRU1VIG9yIEdDRSwgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFBDSSBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBpbmplY3QgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MDA6NTcuODMwMTk3ODEzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODg4NDA4NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4YzQzOWMxZTlmYzEwMzU3OWE5MDVlMmJhMTQ1MDk4YzQyMjg3YzI0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMgMTE6MDA6NTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXFxuaW5kZXggOWIwZjRmOTYzMWRiYWEuLjQ5YWM3MjczNDIyNWY3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1xcbkBAIC04OCw2ICs4OCw3IEBAIGNvbmZpZyBSODE2OVxcbiBcXHRzZWxlY3QgQ1JDMzJcXG4gXFx0c2VsZWN0IFBIWUxJQlxcbiBcXHRzZWxlY3QgUkVBTFRFS19QSFlcXG4rXFx0c2VsZWN0IFBIWUxJTktcXG4gXFx0aGVscFxcbiBcXHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBSZWFsdGVrIEV0aGVybmV0IGFkYXB0ZXIgYmVsb25naW5nIHRvXFxuIFxcdCAgdGhlIGZvbGxvd2luZyBmYW1pbGllczpcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xcbmluZGV4IGVjNGZjMjFmYTIxZmIwLi4yNmQ5NmVkYjNjNDIwNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuQEAgLTI2LDYgKzI2LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RtYS1tYXBwaW5nLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRmaWVsZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5bGluay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJlZmV0Y2guaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lwdjYuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbkBAIC05Niw2ICs5NywyMiBAQFxcbiAjZGVmaW5lIEpVTUJPXzlLXFx0KDkgKiBTWl8xSyAtIFZMQU5fRVRIX0hMRU4gLSBFVEhfRkNTX0xFTilcXG4gI2RlZmluZSBKVU1CT18xNktcXHQoU1pfMTZLIC0gVkxBTl9FVEhfSExFTiAtIEVUSF9GQ1NfTEVOKVxcbiBcXG4rI2RlZmluZSBPQ1BfU0RTX0FERFJfUkVHXFx0XFx0MHhFQjEwXFxuKyNkZWZpbmUgT0NQX1NEU19DTURfUkVHXFx0XFx0XFx0MHhFQjBFXFxuKyNkZWZpbmUgT0NQX1NEU19EQVRBX1JFR1xcdFxcdDB4RUIxNFxcbisjZGVmaW5lIFNEU19DTURfUkVBRFxcdFxcdFxcdDB4MDAwMVxcbisjZGVmaW5lIFJUTF9TRFNfQzIyX0JBU0VcXHRcXHQweDQwXFxuKyNkZWZpbmUgUlRMX1NEU19DNDVfQkFTRVxcdFxcdDB4MDA4MFxcbisjZGVmaW5lIFJUTF9QS0dfREVURUNUXFx0XFx0XFx0MHhkYzAwXFxuKyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RfTUFTS1xcdFxcdDB4MDA3OFxcbisjZGVmaW5lIFJUTF9QS0dfREVURUNUXzgxMTZBRlxcdFxcdDB4MDAzMFxcbisjZGVmaW5lIFJUTF9JTlRfSFdfSURcXHRcXHRcXHQweGQwMDZcXG4rI2RlZmluZSBSVExfSU5UX0hXX0lEX01BU0tcXHRcXHQweDAwZmZcXG4rI2RlZmluZSBSVExfSU5UX0hXX0lEXzgxMTZBRlxcdFxcdDB4MDAwMFxcbisjZGVmaW5lIFJUTDgxMTZBRl9GVU5DX1BNX0NTUlxcdFxcdDB4ODBcXG4rI2RlZmluZSBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMXFx0MHg0NFxcbisjZGVmaW5lIFJUTF9QTV9EM0hPVFxcdFxcdFxcdEdFTk1BU0soMSwgMClcXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyB7XFxuIFxcdHUzMiBtYXNrO1xcbiBcXHR1MzIgdmFsO1xcbkBAIC0zMzQsMTEgKzM1MSwxMyBAQCBlbnVtIHJ0bF9yZWdpc3RlcnMge1xcbiBcXHRBTERQU19MVFJcXHQ9IDB4ZTBhMixcXG4gXFx0TFRSX09CRkZfTE9DS1xcdD0gMHhlMDMyLFxcbiBcXHRMVFJfU05PT1BcXHQ9IDB4ZTAzNCxcXG4rXFx0U0VORF9MVFJfTVNHXFx0PSAweGUwMzgsXFxuIFxcbiAjZGVmaW5lIEFMRFBTX0xUUl9FTlxcdFxcdFxcdEJJVCgwKVxcbiAjZGVmaW5lIExUUl9PQkZGX0xPQ0tfRU5cXHRcXHRCSVQoMClcXG4gI2RlZmluZSBMSU5LX1NQRUVEX0NIQU5HRV9FTlxcdFxcdEJJVCgxNClcXG4gI2RlZmluZSBMVFJfU05PT1BfRU5cXHRcXHRcXHRHRU5NQVNLKDE1LCAxNClcXG4rI2RlZmluZSBMVFJfTVNHX0VOXFx0XFx0XFx0QklUKDApXFxuIH07XFxuIFxcbiBlbnVtIHJ0bDgxNjhfODEwMV9yZWdpc3RlcnMge1xcbkBAIC03MjgsNiArNzQ3LDEyIEBAIGVudW0gcnRsX2Rhc2hfdHlwZSB7XFxuIFxcdFJUTF9EQVNIXzI1X0JQLFxcbiB9O1xcbiBcXG4rZW51bSBydGxfc2ZwX21vZGUge1xcbitcXHRSVExfU0ZQX05PTkUsXFxuK1xcdFJUTF9TRlBfODE2OF9BRixcXG4rXFx0UlRMX1NGUF84MTI3X0FURixcXG4rfTtcXG4rXFxuIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xcbiBcXHR2b2lkIF9faW9tZW0gKm1taW9fYWRkcjtcXHQvKiBtZW1vcnkgbWFwIHBoeXNpY2FsIGFkZHJlc3MgKi9cXG4gXFx0c3RydWN0IHBjaV9kZXYgKnBjaV9kZXY7XFxuQEAgLTczNiw2ICs3NjEsNyBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHtcXG4gXFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XFxuIFxcdGVudW0gbWFjX3ZlcnNpb24gbWFjX3ZlcnNpb247XFxuIFxcdGVudW0gcnRsX2Rhc2hfdHlwZSBkYXNoX3R5cGU7XFxuK1xcdGVudW0gcnRsX3NmcF9tb2RlIHNmcF9tb2RlO1xcbiBcXHR1MzIgY3VyX3J4OyAvKiBJbmRleCBpbnRvIHRoZSBSeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cXG4gXFx0dTMyIGN1cl90eDsgLyogSW5kZXggaW50byB0aGUgVHggZGVzY3JpcHRvciBidWZmZXIgb2YgbmV4dCBSeCBwa3QuICovXFxuIFxcdHUzMiBkaXJ0eV90eDtcXG5AQCAtNzUwLDYgKzc3Niw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xcbiBcXHR1MzIgaXJxX21hc2s7XFxuIFxcdGludCBpcnE7XFxuIFxcdHN0cnVjdCBjbGsgKmNsaztcXG4rXFx0aW50IHNwZWVkO1xcbiBcXG4gXFx0c3RydWN0IHtcXG4gXFx0XFx0REVDTEFSRV9CSVRNQVAoZmxhZ3MsIFJUTF9GTEFHX01BWCk7XFxuQEAgLTc2Miw3ICs3ODksNiBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHtcXG4gXFx0dW5zaWduZWQgc3VwcG9ydHNfZ21paToxO1xcbiBcXHR1bnNpZ25lZCBhc3BtX21hbmFnZWFibGU6MTtcXG4gXFx0dW5zaWduZWQgZGFzaF9lbmFibGVkOjE7XFxuLVxcdGJvb2wgc2ZwX21vZGU6MTtcXG4gXFx0ZG1hX2FkZHJfdCBjb3VudGVyc19waHlzX2FkZHI7XFxuIFxcdHN0cnVjdCBydGw4MTY5X2NvdW50ZXJzICpjb3VudGVycztcXG4gXFx0c3RydWN0IHJ0bDgxNjlfdGNfb2Zmc2V0cyB0Y19vZmZzZXQ7XFxuQEAgLTc3NCw2ICs4MDAsMTEgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XFxuIFxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxlZHM7XFxuIFxcbiBcXHR1MzIgb2NwX2Jhc2U7XFxuK1xcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xcbitcXHRzdHJ1Y3QgcGh5bGlua19jb25maWcgcGh5bGlua19jb25maWc7XFxuK1xcdHN0cnVjdCBwaHlsaW5rX3BjcyBwY3M7XFxuK1xcdHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gc2F2ZWRfcGF1c2U7XFxuK1xcdGJvb2wganVtYm9fcGF1c2Vfc2F2ZWQ7XFxuIH07XFxuIFxcbiB0eXBlZGVmIHZvaWQgKCpydGxfZ2VuZXJpY19mY3QpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKTtcXG5AQCAtMTEyOCwxMCArMTE1OSw2IEBAIHN0YXRpYyBpbnQgcjgxNjhfcGh5X29jcF9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnKVxcbiBcXHRpZiAocnRsX29jcF9yZWdfZmFpbHVyZShyZWcpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdC8qIFJldHVybiBkdW1teSBNSUlfUEhZU0lEMiBpbiBTRlAgbW9kZSB0byBtYXRjaCBTRlAgUEhZIGRyaXZlciAqL1xcbi1cXHRpZiAodHAtXFx1MDAzZXNmcF9tb2RlIFxcdTAwMjZcXHUwMDI2IHJlZyA9PSAoT0NQX1NURF9QSFlfQkFTRSArIDIgKiBNSUlfUEhZU0lEMikpXFxuLVxcdFxcdHJldHVybiBQSFlfSURfUlRMX0RVTU1ZX1NGUCBcXHUwMDI2IDB4ZmZmZjtcXG4tXFxuIFxcdFJUTF9XMzIodHAsIEdQSFlfT0NQLCByZWcgXFx1MDAzY1xcdTAwM2MgMTUpO1xcbiBcXG4gXFx0cmV0dXJuIHJ0bF9sb29wX3dhaXRfaGlnaCh0cCwgXFx1MDAyNnJ0bF9vY3BfZ3BoeV9jb25kLCAyNSwgMTApID9cXG5AQCAtMTIxNywxMiArMTI0NCw2IEBAIHN0YXRpYyB2b2lkIHI4MTI3X3NmcF9pbml0XzEwZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODA0LCAodmFsIFxcdTAwMjYgfjB4MDAwZikgfCAweDAwMGMpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBydGxfc2ZwX2luaXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLXtcXG4tXFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxcbi1cXHRcXHRyODEyN19zZnBfaW5pdF8xMGcodHApO1xcbi19XFxuLVxcbiBzdGF0aWMgdm9pZCBydGxfc2ZwX3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiB7XFxuIFxcdGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl84MClcXG5AQCAtMTI4Myw2ICsxMzA0LDE1IEBAIHN0YXRpYyB2b2lkIG1hY19tY3Vfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcsIGludCB2YWx1ZSlcXG4gXFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgdHAtXFx1MDAzZW9jcF9iYXNlICsgcmVnLCB2YWx1ZSk7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIHJ0bF9pc184MTE2YWYoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuK3tcXG4rXFx0cmV0dXJuIHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzUyIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdChyODE2OF9tYWNfb2NwX3JlYWQodHAsIFJUTF9QS0dfREVURUNUKSBcXHUwMDI2IFJUTF9QS0dfREVURUNUX01BU0spID09XFxuK1xcdFxcdFJUTF9QS0dfREVURUNUXzgxMTZBRiBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKSBcXHUwMDI2IFJUTF9JTlRfSFdfSURfTUFTSykgPT1cXG4rXFx0XFx0UlRMX0lOVF9IV19JRF84MTE2QUY7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgbWFjX21jdV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxcbiB7XFxuIFxcdHJldHVybiByODE2OF9tYWNfb2NwX3JlYWQodHAsIHRwLVxcdTAwM2VvY3BfYmFzZSArIHJlZyk7XFxuQEAgLTE1NzgsNiArMTYwOCwyMCBAQCBzdGF0aWMgYm9vbCBydGxfZGFzaF9pc19lbmFibGVkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyBlbnVtIHJ0bF9zZnBfbW9kZSBydGxfZ2V0X3NmcF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbit7XFxuK1xcdGlmIChydGxfaXNfODEyNSh0cCkpIHtcXG4rXFx0XFx0dTE2IGRhdGEgPSByODE2OF9tYWNfb2NwX3JlYWQodHAsIFJUTF9JTlRfSFdfSUQpO1xcbitcXG4rXFx0XFx0aWYgKChkYXRhIFxcdTAwMjYgMHhmZikgPT0gMHgwNylcXG4rXFx0XFx0XFx0cmV0dXJuIFJUTF9TRlBfODEyN19BVEY7XFxuK1xcdH0gZWxzZSBpZiAocnRsX2lzXzgxMTZhZih0cCkpIHtcXG4rXFx0XFx0cmV0dXJuIFJUTF9TRlBfODE2OF9BRjtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIFJUTF9TRlBfTk9ORTtcXG4rfVxcbitcXG4gc3RhdGljIGVudW0gcnRsX2Rhc2hfdHlwZSBydGxfZ2V0X2Rhc2hfdHlwZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbiBcXHRzd2l0Y2ggKHRwLVxcdTAwM2VtYWNfdmVyc2lvbikge1xcbkBAIC0xNjczLDE2ICsxNzE3LDE0IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaXJxX21hc2tfYW5kX2FjayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0cnRsX3BjaV9jb21taXQodHApO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuK3N0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHNwZWVkKVxcbiB7XFxuLVxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC1cXHUwMDNlcGh5ZGV2O1xcbi1cXG4gXFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM0IHx8XFxuIFxcdCAgICB0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zOCkge1xcbi1cXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VzcGVlZCA9PSBTUEVFRF8xMDAwKSB7XFxuK1xcdFxcdGlmIChzcGVlZCA9PSBTUEVFRF8xMDAwKSB7XFxuIFxcdFxcdFxcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWJjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMTEpO1xcbiBcXHRcXHRcXHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcXG4tXFx0XFx0fSBlbHNlIGlmIChwaHlkZXYtXFx1MDAzZXNwZWVkID09IFNQRUVEXzEwMCkge1xcbitcXHRcXHR9IGVsc2UgaWYgKHNwZWVkID09IFNQRUVEXzEwMCkge1xcbiBcXHRcXHRcXHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDFmKTtcXG4gXFx0XFx0XFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAwNSk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuQEAgLTE2OTIsNyArMTczNCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0XFx0cnRsX3Jlc2V0X3BhY2tldF9maWx0ZXIodHApO1xcbiBcXHR9IGVsc2UgaWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM1IHx8XFxuIFxcdFxcdCAgIHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM2KSB7XFxuLVxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZXNwZWVkID09IFNQRUVEXzEwMDApIHtcXG4rXFx0XFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcXG4gXFx0XFx0XFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxYmMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAxMSk7XFxuIFxcdFxcdFxcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpO1xcbiBcXHRcXHR9IGVsc2Uge1xcbkBAIC0xNzAwLDcgKzE3NDIsNyBAQCBzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdFxcdFxcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwM2YpO1xcbiBcXHRcXHR9XFxuIFxcdH0gZWxzZSBpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzcpIHtcXG4tXFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlc3BlZWQgPT0gU1BFRURfMTApIHtcXG4rXFx0XFx0aWYgKHNwZWVkID09IFNQRUVEXzEwKSB7XFxuIFxcdFxcdFxcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWQwLCBFUklBUl9NQVNLXzAwMTEsIDB4NGQwMik7XFxuIFxcdFxcdFxcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzAwMTEsIDB4MDA2MGEpO1xcbiBcXHRcXHR9IGVsc2Uge1xcbkBAIC0yMDc0LDExICsyMTE2LDExIEBAIHJ0bF9jb2FsZXNjZV9pbmZvKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRcXHRjaSA9IHJ0bF9jb2FsZXNjZV9pbmZvXzgxNjhfODEzNjtcXG4gXFxuIFxcdC8qIGlmIHNwZWVkIGlzIHVua25vd24gYXNzdW1lIGhpZ2hlc3Qgb25lICovXFxuLVxcdGlmICh0cC1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VzcGVlZCA9PSBTUEVFRF9VTktOT1dOKVxcbitcXHRpZiAodHAtXFx1MDAzZXNwZWVkID09IFNQRUVEX1VOS05PV04pXFxuIFxcdFxcdHJldHVybiBjaTtcXG4gXFxuIFxcdGZvciAoOyBjaS1cXHUwMDNlc3BlZWQ7IGNpKyspIHtcXG4tXFx0XFx0aWYgKHRwLVxcdTAwM2VwaHlkZXYtXFx1MDAzZXNwZWVkID09IGNpLVxcdTAwM2VzcGVlZClcXG4rXFx0XFx0aWYgKHRwLVxcdTAwM2VzcGVlZCA9PSBjaS1cXHUwMDNlc3BlZWQpXFxuIFxcdFxcdFxcdHJldHVybiBjaTtcXG4gXFx0fVxcbiBcXG5AQCAtMjIzNiw3ICsyMjc4LDcgQEAgc3RhdGljIHZvaWQgcnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXG4gc3RhdGljIHVuc2lnbmVkIGludCByODE2OV9nZXRfdHhfbHBpX3RpbWVyX3VzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiB7XFxuLVxcdHVuc2lnbmVkIGludCBzcGVlZCA9IHRwLVxcdTAwM2VwaHlkZXYtXFx1MDAzZXNwZWVkO1xcbitcXHR1bnNpZ25lZCBpbnQgc3BlZWQgPSB0cC1cXHUwMDNlc3BlZWQ7XFxuIFxcdHVuc2lnbmVkIGludCB0aW1lciA9IHRwLVxcdTAwM2V0eF9scGlfdGltZXI7XFxuIFxcbiBcXHRpZiAoIXRpbWVyIHx8IHNwZWVkID09IFNQRUVEX1VOS05PV04pXFxuQEAgLTIyNTQsNyArMjI5Niw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9nZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXFxuIFxcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFxuLVxcdHJldCA9IHBoeV9ldGh0b29sX2dldF9lZWUodHAtXFx1MDAzZXBoeWRldiwgZGF0YSk7XFxuK1xcdHJldCA9IHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKHRwLVxcdTAwM2VwaHlsaW5rLCBkYXRhKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuQEAgLTIyNzAsNyArMjMxMiw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXFxuIFxcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFxuLVxcdHJldHVybiBwaHlfZXRodG9vbF9zZXRfZWVlKHRwLVxcdTAwM2VwaHlkZXYsIGRhdGEpO1xcbitcXHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9lZWUodHAtXFx1MDAzZXBoeWxpbmssIGRhdGEpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2dldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5AQCAtMjMwMSwxMyArMjM0Myw4IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqZGF0YSlcXG4ge1xcbiBcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XFxuLVxcdGJvb2wgdHhfcGF1c2UsIHJ4X3BhdXNlO1xcbiBcXG4tXFx0cGh5X2dldF9wYXVzZSh0cC1cXHUwMDNlcGh5ZGV2LCBcXHUwMDI2dHhfcGF1c2UsIFxcdTAwMjZyeF9wYXVzZSk7XFxuLVxcbi1cXHRkYXRhLVxcdTAwM2VhdXRvbmVnID0gdHAtXFx1MDAzZXBoeWRldi1cXHUwMDNlYXV0b25lZztcXG4tXFx0ZGF0YS1cXHUwMDNldHhfcGF1c2UgPSB0eF9wYXVzZSA/IDEgOiAwO1xcbi1cXHRkYXRhLVxcdTAwM2VyeF9wYXVzZSA9IHJ4X3BhdXNlID8gMSA6IDA7XFxuK1xcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC1cXHUwMDNlcGh5bGluaywgZGF0YSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbkBAIC0yMzE4LDkgKzIzNTUsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0aWYgKGRldi1cXHUwMDNlbXR1IFxcdTAwM2UgRVRIX0RBVEFfTEVOKVxcbiBcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcbi1cXHRwaHlfc2V0X2FzeW1fcGF1c2UodHAtXFx1MDAzZXBoeWRldiwgZGF0YS1cXHUwMDNlcnhfcGF1c2UsIGRhdGEtXFx1MDAzZXR4X3BhdXNlKTtcXG4tXFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHRwLVxcdTAwM2VwaHlsaW5rLCBkYXRhKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX21hY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbkBAIC0yMzg2LDM0ICsyNDIxLDI3IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X2V0aF9jdHJsX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdGxlMzJfdG9fY3B1KHRwLVxcdTAwM2Vjb3VudGVycy1cXHUwMDNlcnhfdW5rbm93bl9vcGNvZGUpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbitzdGF0aWMgaW50IHJ0bDgxNjlfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbitcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbiB7XFxuIFxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XFxuLVxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC1cXHUwMDNlcGh5ZGV2O1xcbi1cXHRpbnQgZHVwbGV4ID0gY21kLVxcdTAwM2ViYXNlLmR1cGxleDtcXG4tXFx0aW50IHNwZWVkID0gY21kLVxcdTAwM2ViYXNlLnNwZWVkO1xcbi1cXG4tXFx0aWYgKCF0cC1cXHUwMDNlc2ZwX21vZGUpXFxuLVxcdFxcdHJldHVybiBwaHlfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHBoeWRldiwgY21kKTtcXG4gXFxuLVxcdGlmIChjbWQtXFx1MDAzZWJhc2UuYXV0b25lZyAhPSBBVVRPTkVHX0RJU0FCTEUpXFxuLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi1cXG4tXFx0aWYgKCFwaHlfY2hlY2tfdmFsaWQoc3BlZWQsIGR1cGxleCwgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQpKVxcbi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNnBoeWRldi1cXHUwMDNlbG9jayk7XFxuK1xcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCh0cC1cXHUwMDNlcGh5bGluaywgY21kKTtcXG4rfVxcbiBcXG4tXFx0cGh5ZGV2LVxcdTAwM2VhdXRvbmVnID0gQVVUT05FR19ESVNBQkxFO1xcbi1cXHRwaHlkZXYtXFx1MDAzZXNwZWVkID0gc3BlZWQ7XFxuLVxcdHBoeWRldi1cXHUwMDNlZHVwbGV4ID0gZHVwbGV4O1xcbitzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbitcXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbit7XFxuK1xcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XFxuIFxcbi1cXHRydGxfc2ZwX2luaXQodHApO1xcbitcXHRyZXR1cm4gcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQodHAtXFx1MDAzZXBoeWxpbmssIGNtZCk7XFxuK31cXG4gXFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5ZGV2LVxcdTAwM2Vsb2NrKTtcXG4rc3RhdGljIGludCBydGw4MTY5X253YXlfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4re1xcbitcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XFxuIFxcbi1cXHRyZXR1cm4gMDtcXG4rXFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KHRwLVxcdTAwM2VwaHlsaW5rKTtcXG4gfVxcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBydGw4MTY5X2V0aHRvb2xfb3BzID0ge1xcbkBAIC0yNDMxLDEwICsyNDU5LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgcnRsODE2OV9ldGh0b29sX29wcyA9IHtcXG4gXFx0LmdldF9zc2V0X2NvdW50XFx0XFx0PSBydGw4MTY5X2dldF9zc2V0X2NvdW50LFxcbiBcXHQuZ2V0X2V0aHRvb2xfc3RhdHNcXHQ9IHJ0bDgxNjlfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuIFxcdC5nZXRfdHNfaW5mb1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfdHNfaW5mbyxcXG4tXFx0Lm53YXlfcmVzZXRcXHRcXHQ9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsXFxuK1xcdC5ud2F5X3Jlc2V0XFx0XFx0PSBydGw4MTY5X253YXlfcmVzZXQsXFxuIFxcdC5nZXRfZWVlXFx0XFx0PSBydGw4MTY5X2dldF9lZWUsXFxuIFxcdC5zZXRfZWVlXFx0XFx0PSBydGw4MTY5X3NldF9lZWUsXFxuLVxcdC5nZXRfbGlua19rc2V0dGluZ3NcXHQ9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG4rXFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gcnRsODE2OV9nZXRfbGlua19rc2V0dGluZ3MsXFxuIFxcdC5zZXRfbGlua19rc2V0dGluZ3NcXHQ9IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzLFxcbiBcXHQuZ2V0X3JpbmdwYXJhbVxcdFxcdD0gcnRsODE2OV9nZXRfcmluZ3BhcmFtLFxcbiBcXHQuZ2V0X3BhdXNlX3N0YXRzXFx0PSBydGw4MTY5X2dldF9wYXVzZV9zdGF0cyxcXG5AQCAtMjQ5OSw5ICsyNTI3LDEwIEBAIHZvaWQgcjgxNjlfYXBwbHlfZmlybXdhcmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdFxcdHRwLVxcdTAwM2VvY3BfYmFzZSA9IE9DUF9TVERfUEhZX0JBU0U7XFxuIFxcbiBcXHRcXHQvKiBQSFkgc29mdCByZXNldCBtYXkgc3RpbGwgYmUgaW4gcHJvZ3Jlc3MgKi9cXG4tXFx0XFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVxcdTAwM2VwaHlkZXYsIE1JSV9CTUNSLCB2YWwsXFxuLVxcdFxcdFxcdFxcdCAgICAgICEodmFsIFxcdTAwMjYgQk1DUl9SRVNFVCksXFxuLVxcdFxcdFxcdFxcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xcbitcXHRcXHRpZiAodHAtXFx1MDAzZXBoeWRldilcXG4rXFx0XFx0XFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVxcdTAwM2VwaHlkZXYsIE1JSV9CTUNSLCB2YWwsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICEodmFsIFxcdTAwMjYgQk1DUl9SRVNFVCksXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTI1MzgsNiArMjU2Nyw4IEBAIHN0YXRpYyB2b2lkIHJ0bF9zY2hlZHVsZV90YXNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBlbnVtIHJ0bF9mbGFnIGZsYWcpXFxuIFxcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcGh5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiB7XFxuK1xcdHBoeV9pbml0X2h3KHRwLVxcdTAwM2VwaHlkZXYpO1xcbitcXHRwaHlfcmVzdW1lKHRwLVxcdTAwM2VwaHlkZXYpO1xcbiBcXHRyODE2OV9od19waHlfY29uZmlnKHRwLCB0cC1cXHUwMDNlcGh5ZGV2LCB0cC1cXHUwMDNlbWFjX3ZlcnNpb24pO1xcbiBcXG4gXFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiBcXHUwMDNjPSBSVExfR0lHQV9NQUNfVkVSXzA2KSB7XFxuQEAgLTI1NTIsOSArMjU4Myw2IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9waHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdCAgICB0cC1cXHUwMDNlcGNpX2Rldi1cXHUwMDNlc3Vic3lzdGVtX2RldmljZSA9PSAweGUwMDApXFxuIFxcdFxcdHBoeV93cml0ZV9wYWdlZCh0cC1cXHUwMDNlcGh5ZGV2LCAweDAwMDEsIDB4MTAsIDB4ZjAxYik7XFxuIFxcbi1cXHRpZiAodHAtXFx1MDAzZXNmcF9tb2RlKVxcbi1cXHRcXHRydGxfc2ZwX2luaXQodHApO1xcbi1cXG4gXFx0LyogV2UgbWF5IGhhdmUgY2FsbGVkIHBoeV9zcGVlZF9kb3duIGJlZm9yZSAqL1xcbiBcXHRwaHlfc3BlZWRfdXAodHAtXFx1MDAzZXBoeWRldik7XFxuIFxcbkBAIC0yNjI0LDYgKzI2NTIsNTEgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3JpbmdfaW5kZXhlcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0dHAtXFx1MDAzZWRpcnR5X3R4ID0gdHAtXFx1MDAzZWN1cl90eCA9IHRwLVxcdTAwM2VjdXJfcnggPSAwO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnX3BhdXNlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbit7XFxuK1xcdGJvb2wganVtYm8gPSB0cC1cXHUwMDNlZGV2LVxcdTAwM2VtdHUgXFx1MDAzZSBFVEhfREFUQV9MRU47XFxuK1xcdHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gcGF1c2UgPSB7fTtcXG4rXFxuK1xcdEFTU0VSVF9SVE5MKCk7XFxuK1xcbitcXHRpZiAoanVtYm8pIHtcXG4rXFx0XFx0aWYgKCF0cC1cXHUwMDNlanVtYm9fcGF1c2Vfc2F2ZWQpIHtcXG4rXFx0XFx0XFx0c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgY21kID0ge307XFxuK1xcdFxcdFxcdGJvb2wgYWR2X3BhdXNlLCBhZHZfYXN5bTtcXG4rXFxuK1xcdFxcdFxcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC1cXHUwMDNlcGh5bGluaywgXFx1MDAyNnRwLVxcdTAwM2VzYXZlZF9wYXVzZSk7XFxuK1xcdFxcdFxcdGlmICh0cC1cXHUwMDNlc2F2ZWRfcGF1c2UuYXV0b25lZykge1xcbitcXHRcXHRcXHRcXHRwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCh0cC1cXHUwMDNlcGh5bGluaywgXFx1MDAyNmNtZCk7XFxuK1xcdFxcdFxcdFxcdGFkdl9wYXVzZSA9IGV0aHRvb2xfbGlua19rc2V0dGluZ3NfdGVzdF9saW5rX21vZGUoXFx1MDAyNmNtZCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBhZHZlcnRpc2luZyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBQYXVzZSk7XFxuK1xcdFxcdFxcdFxcdGFkdl9hc3ltICA9IGV0aHRvb2xfbGlua19rc2V0dGluZ3NfdGVzdF9saW5rX21vZGUoXFx1MDAyNmNtZCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBhZHZlcnRpc2luZyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBBc3ltX1BhdXNlKTtcXG4rXFx0XFx0XFx0XFx0aWYgKGFkdl9wYXVzZSBcXHUwMDI2XFx1MDAyNiAhYWR2X2FzeW0pIHtcXG4rXFx0XFx0XFx0XFx0XFx0dHAtXFx1MDAzZXNhdmVkX3BhdXNlLnJ4X3BhdXNlID0gMTtcXG4rXFx0XFx0XFx0XFx0XFx0dHAtXFx1MDAzZXNhdmVkX3BhdXNlLnR4X3BhdXNlID0gMTtcXG4rXFx0XFx0XFx0XFx0fSBlbHNlIGlmIChhZHZfcGF1c2UgXFx1MDAyNlxcdTAwMjYgYWR2X2FzeW0pIHtcXG4rXFx0XFx0XFx0XFx0XFx0dHAtXFx1MDAzZXNhdmVkX3BhdXNlLnJ4X3BhdXNlID0gMTtcXG4rXFx0XFx0XFx0XFx0XFx0dHAtXFx1MDAzZXNhdmVkX3BhdXNlLnR4X3BhdXNlID0gMDtcXG4rXFx0XFx0XFx0XFx0fSBlbHNlIGlmICghYWR2X3BhdXNlIFxcdTAwMjZcXHUwMDI2IGFkdl9hc3ltKSB7XFxuK1xcdFxcdFxcdFxcdFxcdHRwLVxcdTAwM2VzYXZlZF9wYXVzZS5yeF9wYXVzZSA9IDA7XFxuK1xcdFxcdFxcdFxcdFxcdHRwLVxcdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDE7XFxuK1xcdFxcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdFxcdHRwLVxcdTAwM2VzYXZlZF9wYXVzZS5yeF9wYXVzZSA9IDA7XFxuK1xcdFxcdFxcdFxcdFxcdHRwLVxcdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDA7XFxuK1xcdFxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHR0cC1cXHUwMDNlanVtYm9fcGF1c2Vfc2F2ZWQgPSB0cnVlO1xcbitcXHRcXHR9XFxuK1xcdFxcdHBhdXNlLmF1dG9uZWcgPSB0cC1cXHUwMDNlc2F2ZWRfcGF1c2UuYXV0b25lZztcXG4rXFx0XFx0cGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHRwLVxcdTAwM2VwaHlsaW5rLCBcXHUwMDI2cGF1c2UpO1xcbitcXHR9IGVsc2UgaWYgKHRwLVxcdTAwM2VqdW1ib19wYXVzZV9zYXZlZCkge1xcbitcXHRcXHRwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0odHAtXFx1MDAzZXBoeWxpbmssIFxcdTAwMjZ0cC1cXHUwMDNlc2F2ZWRfcGF1c2UpO1xcbitcXHRcXHR0cC1cXHUwMDNlanVtYm9fcGF1c2Vfc2F2ZWQgPSBmYWxzZTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiB7XFxuIFxcdGJvb2wganVtYm8gPSB0cC1cXHUwMDNlZGV2LVxcdTAwM2VtdHUgXFx1MDAzZSBFVEhfREFUQV9MRU47XFxuQEAgLTI2NTcsMTUgKzI3MzAsNiBAQCBzdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXG4gXFx0aWYgKHBjaV9pc19wY2llKHRwLVxcdTAwM2VwY2lfZGV2KSBcXHUwMDI2XFx1MDAyNiB0cC1cXHUwMDNlc3VwcG9ydHNfZ21paSlcXG4gXFx0XFx0cGNpZV9zZXRfcmVhZHJxKHRwLVxcdTAwM2VwY2lfZGV2LCByZWFkcnEpO1xcbi1cXG4tXFx0LyogQ2hpcCBkb2Vzbid0IHN1cHBvcnQgcGF1c2UgaW4ganVtYm8gbW9kZSAqL1xcbi1cXHRpZiAoanVtYm8pIHtcXG4tXFx0XFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCxcXG4tXFx0XFx0XFx0XFx0ICAgdHAtXFx1MDAzZXBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbi1cXHRcXHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsXFxuLVxcdFxcdFxcdFxcdCAgIHRwLVxcdTAwM2VwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nKTtcXG4tXFx0XFx0cGh5X3N0YXJ0X2FuZWcodHAtXFx1MDAzZXBoeWRldik7XFxuLVxcdH1cXG4gfVxcbiBcXG4gREVDTEFSRV9SVExfQ09ORChydGxfY2hpcGNtZF9jb25kKVxcbkBAIC0yNzgwLDcgKzI4NDQsNyBAQCBzdGF0aWMgdm9pZCBydGxfcHJlcGFyZV9wb3dlcl9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRcXHRydGxfZXBoeV93cml0ZSh0cCwgMHgxOSwgMHhmZjY0KTtcXG4gXFxuIFxcdGlmIChkZXZpY2VfbWF5X3dha2V1cCh0cF90b19kZXYodHApKSkge1xcbi1cXHRcXHRwaHlfc3BlZWRfZG93bih0cC1cXHUwMDNlcGh5ZGV2LCBmYWxzZSk7XFxuK1xcdFxcdHBoeWxpbmtfc3BlZWRfZG93bih0cC1cXHUwMDNlcGh5bGluaywgZmFsc2UpO1xcbiBcXHRcXHRydGxfd29sX2VuYWJsZV9yeCh0cCk7XFxuIFxcdH1cXG4gfVxcbkBAIC0yODMyLDYgKzI4OTYsMTYgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9zZXRfbWFnaWNfcmVnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRSVExfVzMyKHRwLCAweDdjLCB2YWwpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IHJ0bDgxNjlfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpO1xcbitcXG4rXFx0aWYgKCFuZXRpZl9ydW5uaW5nKGRldikpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0cmV0dXJuIHBoeWxpbmtfbWlpX2lvY3RsKHRwLVxcdTAwM2VwaHlsaW5rLCBpZnIsIGNtZCk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHJ0bF9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdHUzMiByeF9tb2RlID0gQWNjZXB0QnJvYWRjYXN0IHwgQWNjZXB0TXlQaHlzIHwgQWNjZXB0TXVsdGljYXN0O1xcbkBAIC0zMDk4LDggKzMxNzIsMjIgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmMiwgMHg5MDAzKTtcXG4gXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9PQkZGX0xPQ0ssIDB4MDAwMCwgTElOS19TUEVFRF9DSEFOR0VfRU4pO1xcbiBcXHRcXHRicmVhaztcXG4tXFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxcbiBcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwMmMsIDB4MTg4MCk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4ZTAyZSwgMHg0ODgwKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDgsIDB4OTAwMyk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYSwgMHg5MDAzKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDIsIDB4ODgzYyk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNCwgMHg4YzEyKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwYTYsIDB4OTAwMyk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4ZTBhOCwgMHg5MDAzKTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODpcXG4gXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xcbiBcXHRcXHRSVExfVzgodHAsIENPTUJPX0xUUl9FWFRFTkQsIFJUTF9SOCh0cCwgQ09NQk9fTFRSX0VYVEVORCkgfCBDT01CT19MVFJfRVhURU5EX0VOKTtcXG4gXFx0XFx0ZmFsbHRocm91Z2g7XFxuQEAgLTMxMTksNiArMzIwNyw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHR9XFxuIFxcdC8qIGNoaXAgY2FuIHRyaWdnZXIgTFRSICovXFxuIFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfT0JGRl9MT0NLLCAweDAwMDMsIExUUl9PQkZGX0xPQ0tfRU4pO1xcbitcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgU0VORF9MVFJfTVNHLCAweDAwMDAsIExUUl9NU0dfRU4pO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcXG5AQCAtMzE1Miw2ICszMjQxLDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXFxuIFxcdFxcdHJ0bF9lbmFibGVfbHRyKHRwKTtcXG4gXFx0XFx0c3dpdGNoICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24pIHtcXG4gXFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxcbitcXHRcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6XFxuIFxcdFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl82MSAuLi4gUlRMX0dJR0FfTUFDX1ZFUl9MQVNUOlxcbiBcXHRcXHRcXHQvKiByZXNldCBlcGh5IHR4L3J4IGRpc2FibGUgdGltZXIgKi9cXG4gXFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5NCwgMHhmZjAwLCAwKTtcXG5AQCAtMzE2NCw2ICszMjU0LDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdHN3aXRjaCAodHAtXFx1MDAzZW1hY192ZXJzaW9uKSB7XFxuIFxcdFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODpcXG4rXFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxcbiBcXHRcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcXG4gXFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5MiwgMHgwMGZmLCAwKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuQEAgLTM2NTcsNiArMzc0OCwzNSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODE2OGVwXzMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGU4NjAsIDB4MDAwMCwgMHgwMDgwKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IHNsb3QgPSBQQ0lfU0xPVChwZGV2LVxcdTAwM2VkZXZmbik7XFxuK1xcdHN0cnVjdCBwY2lfYnVzICpidXMgPSBwZGV2LVxcdTAwM2VidXM7XFxuK1xcdHVuc2lnbmVkIGludCBkZXZmbjtcXG4rXFx0aW50IGZ1bmM7XFxuK1xcdGludCByZXQ7XFxuK1xcdHUzMiB2YWw7XFxuK1xcbitcXHRmb3IgKGZ1bmMgPSAyOyBmdW5jIFxcdTAwM2MgODsgZnVuYysrKSB7XFxuK1xcdFxcdGRldmZuID0gUENJX0RFVkZOKHNsb3QsIGZ1bmMpO1xcbitcXG4rXFx0XFx0cmV0ID0gcGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19QTV9DU1IsIFxcdTAwMjZ2YWwpO1xcbitcXHRcXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiAhUENJX1BPU1NJQkxFX0VSUk9SKHZhbCkpIHtcXG4rXFx0XFx0XFx0dmFsIFxcdTAwMjY9IH5QQ0lfUE1fQ1RSTF9QTUVfU1RBVFVTO1xcbitcXHRcXHRcXHR2YWwgXFx1MDAyNj0gfihQQ0lfUE1fQ1RSTF9TVEFURV9NQVNLIHwgUENJX1BNX0NUUkxfUE1FX0VOQUJMRSk7XFxuK1xcdFxcdFxcdHZhbCB8PSAoUlRMX1BNX0QzSE9UIHwgUENJX1BNX0NUUkxfUE1FX0VOQUJMRSk7XFxuK1xcdFxcdFxcdHBjaV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX1BNX0NTUiwgdmFsKTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cmV0ID0gcGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMLCBcXHUwMDI2dmFsKTtcXG4rXFx0XFx0aWYgKCFyZXQgXFx1MDAyNlxcdTAwMjYgIVBDSV9QT1NTSUJMRV9FUlJPUih2YWwpKSB7XFxuK1xcdFxcdFxcdHZhbCBcXHUwMDI2PSB+KChQQ0lfRVhQX0xOS1NUQV9MQk1TIHwgUENJX0VYUF9MTktTVEFfTEFCUykgXFx1MDAzY1xcdTAwM2MgMTYpO1xcbitcXHRcXHRcXHR2YWwgfD0gUENJX0VYUF9MTktDVExfQVNQTUM7XFxuK1xcdFxcdFxcdHBjaV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX0VYUF9MTktDVEwsIHZhbCk7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbiBcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGVwaHlfaW5mbyBlX2luZm9fODExN1tdID0ge1xcbkBAIC0zNjkzLDEyICszODEzLDE0IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXG4gXFx0cnRsX3BjaWVfc3RhdGVfbDJsM19kaXNhYmxlKHRwKTtcXG4gXFxuLVxcdHJnX3Nhd19jbnQgPSBwaHlfcmVhZF9wYWdlZCh0cC1cXHUwMDNlcGh5ZGV2LCAweDBjNDIsIDB4MTMpIFxcdTAwMjYgMHgzZmZmO1xcbi1cXHRpZiAocmdfc2F3X2NudCBcXHUwMDNlIDApIHtcXG4tXFx0XFx0dTE2IHN3X2NudF8xbXNfaW5pO1xcbitcXHRpZiAodHAtXFx1MDAzZXBoeWRldikge1xcbitcXHRcXHRyZ19zYXdfY250ID0gcGh5X3JlYWRfcGFnZWQodHAtXFx1MDAzZXBoeWRldiwgMHgwYzQyLCAweDEzKSBcXHUwMDI2IDB4M2ZmZjtcXG4rXFx0XFx0aWYgKHJnX3Nhd19jbnQgXFx1MDAzZSAwKSB7XFxuK1xcdFxcdFxcdHUxNiBzd19jbnRfMW1zX2luaTtcXG4gXFxuLVxcdFxcdHN3X2NudF8xbXNfaW5pID0gKDE2MDAwMDAwIC8gcmdfc2F3X2NudCkgXFx1MDAyNiAweDBmZmY7XFxuLVxcdFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpO1xcbitcXHRcXHRcXHRzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpIFxcdTAwMjYgMHgwZmZmO1xcbitcXHRcXHRcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhkNDEyLCAweDBmZmYsIHN3X2NudF8xbXNfaW5pKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDU2LCAweDAwZjAsIDB4MDAwMCk7XFxuQEAgLTM3MTEsNiArMzgzMyw5IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGMwOTQsIDB4MDAwMCk7XFxuIFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5ZSwgMHgwMDAwKTtcXG4gXFxuK1xcdGlmIChydGxfaXNfODExNmFmKHRwKSlcXG4rXFx0XFx0cnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnModHAtXFx1MDAzZXBjaV9kZXYpO1xcbitcXG4gXFx0LyogZmlybXdhcmUgaXMgZm9yIE1BQyBvbmx5ICovXFxuIFxcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcXG4gfVxcbkBAIC00MTM5LDEyICs0MjY0LDE3IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydChzdHJ1Y3QgIHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIHN0YXRpYyBpbnQgcnRsODE2OV9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxcbiB7XFxuIFxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4rXFx0Ym9vbCBqdW1ib19iZWZvcmUgPSBkZXYtXFx1MDAzZW10dSBcXHUwMDNlIEVUSF9EQVRBX0xFTjtcXG4rXFx0Ym9vbCBqdW1ib19hZnRlciA9IG5ld19tdHUgXFx1MDAzZSBFVEhfREFUQV9MRU47XFxuIFxcbiBcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlbXR1LCBuZXdfbXR1KTtcXG4gXFx0bmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhkZXYpO1xcbiBcXHRydGxfanVtYm9fY29uZmlnKHRwKTtcXG4gXFx0cnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHRwKTtcXG4gXFxuK1xcdGlmIChqdW1ib19iZWZvcmUgIT0ganVtYm9fYWZ0ZXIpXFxuK1xcdFxcdHJ0bF9qdW1ib19jb25maWdfcGF1c2UodHApO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTQ4NjksOCArNDk5OSwxMyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODE2OV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHN0YXR1cyBcXHUwMDI2IExpbmtDaGcpXFxuLVxcdFxcdHBoeV9tYWNfaW50ZXJydXB0KHRwLVxcdTAwM2VwaHlkZXYpO1xcbitcXHRpZiAoc3RhdHVzIFxcdTAwMjYgTGlua0NoZykge1xcbitcXHRcXHRpZiAodHAtXFx1MDAzZXBoeWRldilcXG4rXFx0XFx0XFx0cGh5X21hY19pbnRlcnJ1cHQodHAtXFx1MDAzZXBoeWRldik7XFxuK1xcdFxcdGVsc2UgaWYgKHRwLVxcdTAwM2VzZnBfbW9kZSlcXG4rXFx0XFx0XFx0cGh5bGlua19tYWNfY2hhbmdlKHRwLVxcdTAwM2VwaHlsaW5rLFxcbitcXHRcXHRcXHRcXHRcXHQgICAhIShSVExfUjgodHAsIFBIWXN0YXR1cykgXFx1MDAyNiBMaW5rU3RhdHVzKSk7XFxuK1xcdH1cXG4gXFxuIFxcdHJ0bF9pcnFfZGlzYWJsZSh0cCk7XFxuIFxcdG5hcGlfc2NoZWR1bGUoXFx1MDAyNnRwLVxcdTAwM2VuYXBpKTtcXG5AQCAtNDkzMCw5ICs1MDY1LDYgQEAgc3RhdGljIGludCBydGw4MTY5X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbiBcXG4gc3RhdGljIHZvaWQgcnRsX2VuYWJsZV90eF9scGkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxcbiB7XFxuLVxcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXFxuLVxcdFxcdHJldHVybjtcXG4tXFxuIFxcdHN3aXRjaCAodHAtXFx1MDAzZW1hY192ZXJzaW9uKSB7XFxuIFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8zNCAuLi4gUlRMX0dJR0FfTUFDX1ZFUl81MjpcXG4gXFx0XFx0LyogQWRqdXN0IEVFRSBMRUQgZnJlcXVlbmN5ICovXFxuQEAgLTQ5NjMsNDAgKzUwOTUsMTUgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV90eF9scGkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxcbiBcXHR9XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHI4MTY5X3BoeWxpbmtfaGFuZGxlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4te1xcbi1cXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbi1cXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcXG4tXFxuLVxcdGlmIChuZXRpZl9jYXJyaWVyX29rKG5kZXYpKSB7XFxuLVxcdFxcdHJ0bF9saW5rX2NoZ19wYXRjaCh0cCk7XFxuLVxcdFxcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cC1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VlbmFibGVfdHhfbHBpKTtcXG4tXFx0XFx0cG1fcmVxdWVzdF9yZXN1bWUoZCk7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdHBtX3J1bnRpbWVfaWRsZShkKTtcXG4tXFx0fVxcbi1cXG4tXFx0cGh5X3ByaW50X3N0YXR1cyh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tfVxcbi1cXG4gc3RhdGljIGludCByODE2OV9waHlfY29ubmVjdChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbi1cXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXFx1MDAzZXBoeWRldjtcXG4tXFx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0cGh5X21vZGUgPSB0cC1cXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcXG4tXFx0XFx0ICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSTtcXG4tXFxuLVxcdHJldCA9IHBoeV9jb25uZWN0X2RpcmVjdCh0cC1cXHUwMDNlZGV2LCBwaHlkZXYsIHI4MTY5X3BoeWxpbmtfaGFuZGxlcixcXG4tXFx0XFx0XFx0XFx0IHBoeV9tb2RlKTtcXG4tXFx0aWYgKHJldClcXG4rXFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeSh0cC1cXHUwMDNlcGh5bGluaywgdHAtXFx1MDAzZXBoeWRldik7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0bmV0ZGV2X2Vycih0cC1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGNvbm5lY3QgcGh5XFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4tXFxuLVxcdGlmICghdHAtXFx1MDAzZXN1cHBvcnRzX2dtaWkpXFxuLVxcdFxcdHBoeV9zZXRfbWF4X3NwZWVkKHBoeWRldiwgU1BFRURfMTAwKTtcXG4tXFxuLVxcdHBoeV9hdHRhY2hlZF9pbmZvKHBoeWRldik7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTUwMDcsMTAgKzUxMTQsMTAgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHQvKiBDbGVhciBhbGwgdGFzayBmbGFncyAqL1xcbiBcXHRiaXRtYXBfemVybyh0cC1cXHUwMDNld2suZmxhZ3MsIFJUTF9GTEFHX01BWCk7XFxuIFxcbi1cXHRwaHlfc3RvcCh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4rXFx0cGh5bGlua19zdG9wKHRwLVxcdTAwM2VwaHlsaW5rKTtcXG4gXFxuIFxcdC8qIFJlc2V0IFNlckRlcyBQSFkgdG8gYnJpbmcgZG93biBmaWJlciBsaW5rICovXFxuLVxcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUpXFxuK1xcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURilcXG4gXFx0XFx0cnRsX3NmcF9yZXNldCh0cCk7XFxuIFxcbiBcXHRydGw4MTY5X3VwZGF0ZV9jb3VudGVycyh0cCk7XFxuQEAgLTUwMzIsMTQgKzUxMzksMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV91cChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0XFx0cnRsODE2OF9kcml2ZXJfc3RhcnQodHApO1xcbiBcXG4gXFx0cGNpX3NldF9tYXN0ZXIodHAtXFx1MDAzZXBjaV9kZXYpO1xcbi1cXHRwaHlfaW5pdF9odyh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tXFx0cGh5X3Jlc3VtZSh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tXFx0cnRsODE2OV9pbml0X3BoeSh0cCk7XFxuK1xcdGlmICh0cC1cXHUwMDNlcGh5ZGV2KVxcbitcXHRcXHRydGw4MTY5X2luaXRfcGh5KHRwKTtcXG4rXFxuIFxcdG5hcGlfZW5hYmxlKFxcdTAwMjZ0cC1cXHUwMDNlbmFwaSk7XFxuIFxcdGVuYWJsZV93b3JrKFxcdTAwMjZ0cC1cXHUwMDNld2sud29yayk7XFxuIFxcdHJ0bF9yZXNldF93b3JrKHRwKTtcXG4gXFxuLVxcdHBoeV9zdGFydCh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4rXFx0cGh5bGlua19zdGFydCh0cC1cXHUwMDNlcGh5bGluayk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbkBAIC01MDU1LDcgKzUxNjIsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFxuIFxcdGZyZWVfaXJxKHRwLVxcdTAwM2VpcnEsIHRwKTtcXG4gXFxuLVxcdHBoeV9kaXNjb25uZWN0KHRwLVxcdTAwM2VwaHlkZXYpO1xcbitcXHRwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHRwLVxcdTAwM2VwaHlsaW5rKTtcXG4gXFxuIFxcdGRtYV9mcmVlX2NvaGVyZW50KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFI4MTY5X1JYX1JJTkdfQllURVMsIHRwLVxcdTAwM2VSeERlc2NBcnJheSxcXG4gXFx0XFx0XFx0ICB0cC1cXHUwMDNlUnhQaHlBZGRyKTtcXG5AQCAtNTExMiw5ICs1MjE5LDExIEBAIHN0YXRpYyBpbnQgcnRsX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuIFxcdFxcdGdvdG8gZXJyX3JlbGVhc2VfZndfMjtcXG4gXFxuLVxcdHJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTtcXG4tXFx0aWYgKHJldHZhbClcXG4tXFx0XFx0Z290byBlcnJfZnJlZV9pcnE7XFxuK1xcdGlmICh0cC1cXHUwMDNlcGh5ZGV2KSB7XFxuK1xcdFxcdHJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTtcXG4rXFx0XFx0aWYgKHJldHZhbClcXG4rXFx0XFx0XFx0Z290byBlcnJfZnJlZV9pcnE7XFxuK1xcdH1cXG4gXFxuIFxcdHJ0bDgxNjlfdXAodHApO1xcbiBcXHRydGw4MTY5X2luaXRfY291bnRlcl9vZmZzZXRzKHRwKTtcXG5AQCAtNTE5MCw4ICs1Mjk5LDExIEBAIHN0YXRpYyBpbnQgcnRsODE2OV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdHJ0bF9yYXJfc2V0KHRwLCB0cC1cXHUwMDNlZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuIFxcdF9fcnRsODE2OV9zZXRfd29sKHRwLCB0cC1cXHUwMDNlc2F2ZWRfd29sb3B0cyk7XFxuIFxcbi1cXHRpZiAodHAtXFx1MDAzZVR4RGVzY0FycmF5KVxcbitcXHRpZiAodHAtXFx1MDAzZVR4RGVzY0FycmF5KSB7XFxuK1xcdFxcdHJ0bmxfbG9jaygpO1xcbiBcXHRcXHRydGw4MTY5X3VwKHRwKTtcXG4rXFx0XFx0cnRubF91bmxvY2soKTtcXG4rXFx0fVxcbiBcXG4gXFx0bmV0aWZfZGV2aWNlX2F0dGFjaCh0cC1cXHUwMDNlZGV2KTtcXG4gXFxuQEAgLTUyODgsNiArNTQwMCw4IEBAIHN0YXRpYyB2b2lkIHJ0bF9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiBcXHRcXHRyODE2OV9yZW1vdmVfbGVkcyh0cC1cXHUwMDNlbGVkcyk7XFxuIFxcbiBcXHR1bnJlZ2lzdGVyX25ldGRldih0cC1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKHRwLVxcdTAwM2VwaHlsaW5rKVxcbitcXHRcXHRwaHlsaW5rX2Rlc3Ryb3kodHAtXFx1MDAzZXBoeWxpbmspO1xcbiBcXG4gXFx0aWYgKHRwLVxcdTAwM2VkYXNoX3R5cGUgIT0gUlRMX0RBU0hfTk9ORSlcXG4gXFx0XFx0cnRsODE2OF9kcml2ZXJfc3RvcCh0cCk7XFxuQEAgLTUzMTAsNyArNTQyNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgcnRsX25ldGRldl9vcHMgPSB7XFxuIFxcdC5uZG9fZml4X2ZlYXR1cmVzXFx0PSBydGw4MTY5X2ZpeF9mZWF0dXJlcyxcXG4gXFx0Lm5kb19zZXRfZmVhdHVyZXNcXHQ9IHJ0bDgxNjlfc2V0X2ZlYXR1cmVzLFxcbiBcXHQubmRvX3NldF9tYWNfYWRkcmVzc1xcdD0gcnRsX3NldF9tYWNfYWRkcmVzcyxcXG4tXFx0Lm5kb19ldGhfaW9jdGxcXHRcXHQ9IHBoeV9kb19pb2N0bF9ydW5uaW5nLFxcbitcXHQubmRvX2V0aF9pb2N0bFxcdFxcdD0gcnRsODE2OV9pb2N0bCxcXG4gXFx0Lm5kb19zZXRfcnhfbW9kZVxcdD0gcnRsX3NldF9yeF9tb2RlLFxcbiAjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVJcXG4gXFx0Lm5kb19wb2xsX2NvbnRyb2xsZXJcXHQ9IHJ0bDgxNjlfbmV0cG9sbCxcXG5AQCAtNTQ3NCwxNiArNTU4OCw2IEBAIHN0YXRpYyBpbnQgcjgxNjlfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0XFx0cmV0dXJuIC1FVU5BVENIO1xcbiBcXHR9XFxuIFxcbi1cXHR0cC1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VtYWNfbWFuYWdlZF9wbSA9IHRydWU7XFxuLVxcdGlmIChydGxfc3VwcG9ydHNfZWVlKHRwKSlcXG4tXFx0XFx0cGh5X3N1cHBvcnRfZWVlKHRwLVxcdTAwM2VwaHlkZXYpO1xcbi1cXHRwaHlfc3VwcG9ydF9hc3ltX3BhdXNlKHRwLVxcdTAwM2VwaHlkZXYpO1xcbi1cXG4tXFx0LyogbWltaWMgYmVoYXZpb3Igb2YgcjgxMjUvcjgxMjYgdmVuZG9yIGRyaXZlcnMgKi9cXG4tXFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzYxKVxcbi1cXHRcXHRwaHlfZGlzYWJsZV9lZWVfbW9kZSh0cC1cXHUwMDNlcGh5ZGV2LFxcbi1cXHRcXHRcXHRcXHQgICAgIEVUSFRPT0xfTElOS19NT0RFXzI1MDBiYXNlVF9GdWxsX0JJVCk7XFxuLVxcbiBcXHQvKiBQSFkgd2lsbCBiZSB3b2tlbiB1cCBpbiBydGxfb3BlbigpICovXFxuIFxcdHBoeV9zdXNwZW5kKHRwLVxcdTAwM2VwaHlkZXYpO1xcbiBcXG5AQCAtNTU5OSw2ICs1NzAzLDIzMyBAQCBzdGF0aWMgYm9vbCBydGxfYXNwbV9pc19zYWZlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHJ0bF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG4rXFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4re1xcbitcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTtcXG4rXFxuK1xcdHRwLVxcdTAwM2VzcGVlZCA9IFNQRUVEX1VOS05PV047XFxuK1xcdHBtX3J1bnRpbWVfaWRsZSh0cF90b19kZXYodHApKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgcnRsX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbitcXHRcXHRcXHQgICAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuK1xcdFxcdFxcdCAgICBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGJvb2wgdHhfcGF1c2UsIGJvb2wgcnhfcGF1c2UpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmQgPSB0cF90b19kZXYodHApO1xcbitcXG4rXFx0dHAtXFx1MDAzZXNwZWVkID0gc3BlZWQ7XFxuK1xcdHJ0bF9saW5rX2NoZ19wYXRjaCh0cCwgc3BlZWQpO1xcbitcXG4rXFx0cG1fcmVxdWVzdF9yZXN1bWUoZCk7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJ0bF9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4re1xcbitcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTtcXG4rXFxuK1xcdGlmICghdHAtXFx1MDAzZXBjcy5vcHMpXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXG4rXFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XFxuK1xcdCAgICBpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSKVxcbitcXHRcXHRyZXR1cm4gXFx1MDAyNnRwLVxcdTAwM2VwY3M7XFxuK1xcbitcXHRyZXR1cm4gTlVMTDtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgcnRsX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbitcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG4re1xcbit9XFxuK1xcbitzdGF0aWMgdTE2IHJ0bDgxNjlfc2RzX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBzZHNfcmVnKVxcbit7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuK1xcdHUxNiB2YWwgPSAwO1xcbitcXG4rXFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZ0cC1cXHUwMDNlbWFjX29jcF9sb2NrLCBmbGFncyk7XFxuK1xcdF9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19BRERSX1JFRywgc2RzX3JlZyk7XFxuK1xcdF9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19DTURfUkVHLCBTRFNfQ01EX1JFQUQpO1xcbitcXHR2YWwgPSBfX3I4MTY4X21hY19vY3BfcmVhZCh0cCwgT0NQX1NEU19EQVRBX1JFRyk7XFxuK1xcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZ0cC1cXHUwMDNlbWFjX29jcF9sb2NrLCBmbGFncyk7XFxuK1xcbitcXHRyZXR1cm4gdmFsO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBydGw4MTY5X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuK1xcdFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbit7XFxuK1xcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcXG4rXFxuK1xcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURikge1xcbitcXHRcXHR1MTYgc3RhdDE7XFxuK1xcbitcXHRcXHRzdGF0MSA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzQ1X0JBU0UgKyBNRElPX1NUQVQxKTtcXG4rXFxuK1xcdFxcdGlmICghKHN0YXQxIFxcdTAwMjYgTURJT19TVEFUMV9MU1RBVFVTKSlcXG4rXFx0XFx0XFx0c3RhdDEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0M0NV9CQVNFICsgTURJT19TVEFUMSk7XFxuK1xcbitcXHRcXHRzdGF0ZS1cXHUwMDNlbGluayA9ICEhKHN0YXQxIFxcdTAwMjYgTURJT19TVEFUMV9MU1RBVFVTKTtcXG4rXFx0XFx0aWYgKCFzdGF0ZS1cXHUwMDNlbGluaylcXG4rXFx0XFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0XFx0c3RhdGUtXFx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xcbitcXHRcXHRzdGF0ZS1cXHUwMDNlc3BlZWQgPSBTUEVFRF8xMDAwMDtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0dTE2IGJtc3IsIGxwYTtcXG4rXFxuK1xcdFxcdGJtc3IgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0MyMl9CQVNFICsgTUlJX0JNU1IpO1xcbitcXHRcXHRscGEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0MyMl9CQVNFICsgTUlJX0xQQSk7XFxuK1xcdFxcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgaW50IHJ0bDgxNjlfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG1vZGUsXFxuK1xcdFxcdFxcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuK1xcdFxcdFxcdCAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkdmVydGlzaW5nLFxcbitcXHRcXHRcXHQgICAgICBib29sIHBlcm1pdF9wYXVzZV90b19tYWMpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwY3MpO1xcbitcXG4rXFx0aWYgKHRwLVxcdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKVxcbitcXHRcXHRyODEyN19zZnBfaW5pdF8xMGcodHApO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODE2OV9wY3NfdmFsaWRhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZCxcXG4rXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXFxuK3tcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgcnRsX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4re1xcbitcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTtcXG4rXFxuK1xcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCBmYWxzZSk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsX21hY19lbmFibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1MzIgdGltZXIsIGJvb2wgdHhfY2xrX3N0b3ApXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XFxuK1xcbitcXHRpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApKVxcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcbitcXHRydGxfZW5hYmxlX3R4X2xwaSh0cCwgdHJ1ZSk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgcnRsX3BoeWxpbmtfbWFjX29wcyA9IHtcXG4rXFx0Lm1hY19zZWxlY3RfcGNzID0gcnRsX21hY19zZWxlY3RfcGNzLFxcbitcXHQubWFjX2NvbmZpZyA9IHJ0bF9tYWNfY29uZmlnLFxcbitcXHQubWFjX2xpbmtfZG93biAgPSBydGxfbWFjX2xpbmtfZG93bixcXG4rXFx0Lm1hY19saW5rX3VwICAgID0gcnRsX21hY19saW5rX3VwLFxcbitcXHQubWFjX2Rpc2FibGVfdHhfbHBpID0gcnRsX21hY19kaXNhYmxlX3R4X2xwaSxcXG4rXFx0Lm1hY19lbmFibGVfdHhfbHBpID0gcnRsX21hY19lbmFibGVfdHhfbHBpLFxcbit9O1xcbitcXG4rc3RhdGljIHVuc2lnbmVkIGxvbmcgcnRsODE2OV9nZXRfbHBpX2NhcHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBjYXBzID0gMDtcXG4rXFxuK1xcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkgfHwgdHAtXFx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0Y2FwcyB8PSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEO1xcbitcXG4rXFx0LyogbWltaWMgYmVoYXZpb3Igb2YgcjgxMjUvcjgxMjYgdmVuZG9yIGRyaXZlcnNcXG4rXFx0ICogUlRMX0dJR0FfTUFDX1ZFUl82MSBkb2Vzbid0IHN1cHBvcnQgMi41RyBlZWVcXG4rXFx0ICovXFxuK1xcdGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gXFx1MDAzZT0gUlRMX0dJR0FfTUFDX1ZFUl82MylcXG4rXFx0XFx0Y2FwcyB8PSBNQUNfMjUwMEZEO1xcbitcXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uIFxcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNzApXFxuK1xcdFxcdGNhcHMgfD0gTUFDXzUwMDBGRDtcXG4rXFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxcbitcXHRcXHRjYXBzIHw9IE1BQ18xMDAwMEZEO1xcbitcXG4rXFx0cmV0dXJuIGNhcHM7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHI4MTY5X3Bjc19vcHMgPSB7XFxuK1xcdC5wY3NfdmFsaWRhdGUgPSBydGw4MTY5X3Bjc192YWxpZGF0ZSxcXG4rXFx0LnBjc19nZXRfc3RhdGUgPSBydGw4MTY5X3Bjc19nZXRfc3RhdGUsXFxuK1xcdC5wY3NfY29uZmlnID0gcnRsODE2OV9wY3NfY29uZmlnLFxcbitcXHQucGNzX2FuX3Jlc3RhcnQgPSBydGw4MTY5X3Bjc19hbl9yZXN0YXJ0LFxcbit9O1xcbitcXG4rc3RhdGljIGludCBydGxfaW5pdF9waHlsaW5rKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbit7XFxuK1xcdHN0cnVjdCBwaHlsaW5rICpwbDtcXG4rXFx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xcbitcXG4rXFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFxcdTAwMjZ0cC1cXHUwMDNlZGV2LVxcdTAwM2VkZXY7XFxuK1xcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XFxuK1xcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfbWFuYWdlZF9wbSA9IHRydWU7XFxuK1xcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gcnRsODE2OV9nZXRfbHBpX2NhcHModHApO1xcbitcXHR0cC1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0U7XFxuK1xcbitcXHRzd2l0Y2ggKHRwLVxcdTAwM2VzZnBfbW9kZSkge1xcbitcXHRjYXNlIFJUTF9TRlBfODE2OF9BRjpcXG4rXFx0XFx0dHAtXFx1MDAzZXBjcy5vcHMgPSBcXHUwMDI2cjgxNjlfcGNzX29wcztcXG4rXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcXG4rXFx0XFx0cGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYO1xcbitcXHRcXHR0cC1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBSVExfU0ZQXzgxMjdfQVRGOlxcbitcXHRcXHR0cC1cXHUwMDNlcGNzLm9wcyA9IFxcdTAwMjZyODE2OV9wY3Nfb3BzO1xcbitcXHRcXHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjtcXG4rXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcXG4rXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDAwRkQ7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcXG4rXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwIHwgTUFDXzEwMDtcXG4rXFxuK1xcdFxcdGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl84MClcXG4rXFx0XFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQgfFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEO1xcbitcXHRcXHRlbHNlIGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl83MClcXG4rXFx0XFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8XFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBNQUNfMjUwMEZEIHwgTUFDXzUwMDBGRDtcXG4rXFx0XFx0ZWxzZSBpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uIFxcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNjEpXFxuK1xcdFxcdFxcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGlmICh0cC1cXHUwMDNlc3VwcG9ydHNfZ21paSlcXG4rXFx0XFx0XFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDtcXG4rXFxuK1xcdFxcdGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gXFx1MDAzYyBSVExfR0lHQV9NQUNfVkVSXzYxKVxcbitcXHRcXHRcXHRwaHlfbW9kZSA9IHRwLVxcdTAwM2VzdXBwb3J0c19nbWlpID8gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkgOlxcbitcXHRcXHRcXHRcXHQgICBQSFlfSU5URVJGQUNFX01PREVfTUlJO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMO1xcbitcXHRcXHRicmVhaztcXG4rXFx0fVxcbitcXG4rXFx0X19zZXRfYml0KHBoeV9tb2RlLCB0cC1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbitcXHRpZiAodHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMpXFxuK1xcdFxcdF9fc2V0X2JpdChwaHlfbW9kZSwgdHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcXG4rXFxuK1xcdHBsID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgdHBfdG9fZGV2KHRwKS1cXHUwMDNlZndub2RlLFxcbitcXHRcXHRcXHQgICAgcGh5X21vZGUsIFxcdTAwMjZydGxfcGh5bGlua19tYWNfb3BzKTtcXG4rXFx0aWYgKElTX0VSUihwbCkpXFxuK1xcdFxcdHJldHVybiBQVFJfRVJSKHBsKTtcXG4rXFxuK1xcdHRwLVxcdTAwM2VwaHlsaW5rID0gcGw7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gKmNoaXA7XFxuQEAgLTU2NjcsNiArNTk5OCw3IEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbiBcXHRcXHRcXHRcXHQgICAgIGV4dF94aWRfc3RyLCB4aWQpO1xcbiBcXHR0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPSBjaGlwLVxcdTAwM2VtYWNfdmVyc2lvbjtcXG4gXFx0dHAtXFx1MDAzZWZ3X25hbWUgPSBjaGlwLVxcdTAwM2Vmd19uYW1lO1xcbitcXHR0cC1cXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xcbiBcXG4gXFx0LyogRGlzYWJsZSBBU1BNIEwxIGFzIHRoYXQgY2F1c2UgcmFuZG9tIGRldmljZSBzdG9wIHdvcmtpbmdcXG4gXFx0ICogcHJvYmxlbXMgYXMgd2VsbCBhcyBmdWxsIHN5c3RlbSBoYW5ncyBmb3Igc29tZSBQQ0llIGRldmljZXMgdXNlcnMuXFxuQEAgLTU2NzksMTIgKzYwMTEsNyBAQCBzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gXFx0fVxcbiBcXHR0cC1cXHUwMDNlYXNwbV9tYW5hZ2VhYmxlID0gIXJjO1xcbiBcXG4tXFx0aWYgKHJ0bF9pc184MTI1KHRwKSkge1xcbi1cXHRcXHR1MTYgZGF0YSA9IHI4MTY4X21hY19vY3BfcmVhZCh0cCwgMHhkMDA2KTtcXG4tXFxuLVxcdFxcdGlmICgoZGF0YSBcXHUwMDI2IDB4ZmYpID09IDB4MDcpXFxuLVxcdFxcdFxcdHRwLVxcdTAwM2VzZnBfbW9kZSA9IHRydWU7XFxuLVxcdH1cXG4rXFx0dHAtXFx1MDAzZXNmcF9tb2RlID0gcnRsX2dldF9zZnBfbW9kZSh0cCk7XFxuIFxcbiBcXHR0cC1cXHUwMDNlZGFzaF90eXBlID0gcnRsX2dldF9kYXNoX3R5cGUodHApO1xcbiBcXHR0cC1cXHUwMDNlZGFzaF9lbmFibGVkID0gcnRsX2Rhc2hfaXNfZW5hYmxlZCh0cCk7XFxuQEAgLTU3ODgsMTMgKzYxMTUsMjMgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuIFxcbiBcXHRwY2lfc2V0X2RydmRhdGEocGRldiwgdHApO1xcbiBcXG4tXFx0cmMgPSByODE2OV9tZGlvX3JlZ2lzdGVyKHRwKTtcXG4rXFx0cmMgPSBydGxfaW5pdF9waHlsaW5rKHRwKTtcXG4gXFx0aWYgKHJjKVxcbiBcXHRcXHRyZXR1cm4gcmM7XFxuIFxcbitcXHRpZiAodHAtXFx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfTk9ORSkge1xcbitcXHRcXHRyYyA9IHI4MTY5X21kaW9fcmVnaXN0ZXIodHApO1xcbitcXHRcXHRpZiAocmMpIHtcXG4rXFx0XFx0XFx0cGh5bGlua19kZXN0cm95KHRwLVxcdTAwM2VwaHlsaW5rKTtcXG4rXFx0XFx0XFx0cmV0dXJuIHJjO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuIFxcdHJjID0gcmVnaXN0ZXJfbmV0ZGV2KGRldik7XFxuLVxcdGlmIChyYylcXG4rXFx0aWYgKHJjKSB7XFxuK1xcdFxcdHBoeWxpbmtfZGVzdHJveSh0cC1cXHUwMDNlcGh5bGluayk7XFxuIFxcdFxcdHJldHVybiByYztcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1I4MTY5X0xFRFMpKSB7XFxuIFxcdFxcdGlmIChydGxfaXNfODEyNSh0cCkpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcXG5pbmRleCBiNjVkMGY1ZmExYTAxNC4uN2Y5MDRkZTU4M2UwNTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xcbkBAIC0yNjQ2LDQ1ICsyNjQ2LDYgQEAgc3RhdGljIGlycXJldHVybl90IHJ0bDgyMjFiX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0cmV0dXJuIElSUV9IQU5ETEVEO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLXtcXG4tXFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwMGJhc2VUX0Z1bGxfQklULFxcbi1cXHRcXHRcXHQgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQpO1xcbi1cXG4tXFx0Lyogc2V0IGRlZmF1bHQgbW9kZSAqL1xcbi1cXHRwaHlkZXYtXFx1MDAzZXNwZWVkID0gU1BFRURfMTAwMDA7XFxuLVxcdHBoeWRldi1cXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0ZVTEw7XFxuLVxcbi1cXHRwaHlkZXYtXFx1MDAzZXBvcnQgPSBQT1JUX0ZJQlJFO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuLX1cXG4tXFxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi17XFxuLVxcdGludCB2YWwsIGVycjtcXG4tXFxuLVxcdGVyciA9IGdlbnBoeV91cGRhdGVfbGluayhwaHlkZXYpO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRyZXR1cm4gZXJyO1xcbi1cXG4tXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWxpbmspXFxuLVxcdFxcdHJldHVybiAwO1xcbi1cXG4tXFx0dmFsID0gcGh5X3JlYWQocGh5ZGV2LCBSVExfUEhZU1IpO1xcbi1cXHRpZiAodmFsIFxcdTAwM2MgMClcXG4tXFx0XFx0cmV0dXJuIHZhbDtcXG4tXFxuLVxcdHJ0bGdlbl9kZWNvZGVfcGh5c3IocGh5ZGV2LCB2YWwpO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuLX1cXG4tXFxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi17XFxuLVxcdHJldHVybiAwO1xcbi19XFxuLVxcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XFxuIFxcdHtcXG4gXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAwMDgyMDEpLFxcbkBAIC0yOTM0LDIwICsyODk1LDYgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xcbiBcXHRcXHQud3JpdGVfcGFnZVxcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxcbiBcXHRcXHQucmVhZF9tbWRcXHQ9IHJ0bDgyMnhfcmVhZF9tbWQsXFxuIFxcdFxcdC53cml0ZV9tbWRcXHQ9IHJ0bDgyMnhfd3JpdGVfbW1kLFxcbi1cXHR9LCB7XFxuLVxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfUlRMX0RVTU1ZX1NGUCksXFxuLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUmVhbHRlayBTRlAgUEhZIE1vZGVcXFwiLFxcbi1cXHRcXHQuZmxhZ3NcXHRcXHQ9IFBIWV9JU19JTlRFUk5BTCxcXG4tXFx0XFx0LnByb2JlXFx0XFx0PSBydGw4MjJ4X3Byb2JlLFxcbi1cXHRcXHQuZ2V0X2ZlYXR1cmVzXFx0PSBydGxnZW5fc2ZwX2dldF9mZWF0dXJlcyxcXG4tXFx0XFx0LmNvbmZpZ19hbmVnXFx0PSBydGxnZW5fc2ZwX2NvbmZpZ19hbmVnLFxcbi1cXHRcXHQucmVhZF9zdGF0dXNcXHQ9IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMsXFxuLVxcdFxcdC5zdXNwZW5kXFx0PSBnZW5waHlfc3VzcGVuZCxcXG4tXFx0XFx0LnJlc3VtZVxcdFxcdD0gcnRsZ2VuX3Jlc3VtZSxcXG4tXFx0XFx0LnJlYWRfcGFnZVxcdD0gcnRsODIxeF9yZWFkX3BhZ2UsXFxuLVxcdFxcdC53cml0ZV9wYWdlXFx0PSBydGw4MjF4X3dyaXRlX3BhZ2UsXFxuLVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeF9yZWFkX21tZCxcXG4tXFx0XFx0LndyaXRlX21tZFxcdD0gcnRsODIyeF93cml0ZV9tbWQsXFxuIFxcdH0sIHtcXG4gXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLFxcbiBcXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJUTDgyMjQgMi41R2JwcyBQSFlcXFwiLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaCBiL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oXFxuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggZDY4M2JjMWIwNjU5Y2QuLjAwMDAwMDAwMDAwMDAwXFxuLS0tIGEvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmhcXG4rKysgL2Rldi9udWxsXFxuQEAgLTEsNyArMCwwIEBAXFxuLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuLSNpZm5kZWYgX1JFQUxURUtfUEhZX0hcXG4tI2RlZmluZSBfUkVBTFRFS19QSFlfSFxcbi1cXG4tI2RlZmluZVxcdFBIWV9JRF9SVExfRFVNTVlfU0ZQXFx0MHgwMDFjY2JmZlxcbi1cXG4tI2VuZGlmIC8qIF9SRUFMVEVLX1BIWV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDExOjAwOjU4LjUxOTczNTYzNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA2MjUyNjEwMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSByODE2OSBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIGRyaXZlciBmb3IgcGh5c2ljYWwgUmVhbHRlayBHaWdhYml0IEV0aGVybmV0IGFkYXB0ZXJzLiBTaW5jZSB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBieSBRRU1VIG9yIEdDRSwgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFBDSSBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBpbmplY3QgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YzQzOWMxZTlmYzEwMzU3OWE5MDVlMmJhMTQ1MDk4YzQyMjg3YzI0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxMTowMDo1NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1xuaW5kZXggOWIwZjRmOTYzMWRiYWEuLjQ5YWM3MjczNDIyNWY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcbkBAIC04OCw2ICs4OCw3IEBAIGNvbmZpZyBSODE2OVxuIFx0c2VsZWN0IENSQzMyXG4gXHRzZWxlY3QgUEhZTElCXG4gXHRzZWxlY3QgUkVBTFRFS19QSFlcbitcdHNlbGVjdCBQSFlMSU5LXG4gXHRoZWxwXG4gXHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBSZWFsdGVrIEV0aGVybmV0IGFkYXB0ZXIgYmVsb25naW5nIHRvXG4gXHQgIHRoZSBmb2xsb3dpbmcgZmFtaWxpZXM6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuaW5kZXggZWM0ZmMyMWZhMjFmYjAuLjI2ZDk2ZWRiM2M0MjA3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5AQCAtMjYsNiArMjYsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RtYS1tYXBwaW5nLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5bGluay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHJlZmV0Y2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lwdjYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXHUwMDNlXG5AQCAtOTYsNiArOTcsMjIgQEBcbiAjZGVmaW5lIEpVTUJPXzlLXHQoOSAqIFNaXzFLIC0gVkxBTl9FVEhfSExFTiAtIEVUSF9GQ1NfTEVOKVxuICNkZWZpbmUgSlVNQk9fMTZLXHQoU1pfMTZLIC0gVkxBTl9FVEhfSExFTiAtIEVUSF9GQ1NfTEVOKVxuIFxuKyNkZWZpbmUgT0NQX1NEU19BRERSX1JFR1x0XHQweEVCMTBcbisjZGVmaW5lIE9DUF9TRFNfQ01EX1JFR1x0XHRcdDB4RUIwRVxuKyNkZWZpbmUgT0NQX1NEU19EQVRBX1JFR1x0XHQweEVCMTRcbisjZGVmaW5lIFNEU19DTURfUkVBRFx0XHRcdDB4MDAwMVxuKyNkZWZpbmUgUlRMX1NEU19DMjJfQkFTRVx0XHQweDQwXG4rI2RlZmluZSBSVExfU0RTX0M0NV9CQVNFXHRcdDB4MDA4MFxuKyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RcdFx0XHQweGRjMDBcbisjZGVmaW5lIFJUTF9QS0dfREVURUNUX01BU0tcdFx0MHgwMDc4XG4rI2RlZmluZSBSVExfUEtHX0RFVEVDVF84MTE2QUZcdFx0MHgwMDMwXG4rI2RlZmluZSBSVExfSU5UX0hXX0lEXHRcdFx0MHhkMDA2XG4rI2RlZmluZSBSVExfSU5UX0hXX0lEX01BU0tcdFx0MHgwMGZmXG4rI2RlZmluZSBSVExfSU5UX0hXX0lEXzgxMTZBRlx0XHQweDAwMDBcbisjZGVmaW5lIFJUTDgxMTZBRl9GVU5DX1BNX0NTUlx0XHQweDgwXG4rI2RlZmluZSBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMXHQweDQ0XG4rI2RlZmluZSBSVExfUE1fRDNIT1RcdFx0XHRHRU5NQVNLKDEsIDApXG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHtcbiBcdHUzMiBtYXNrO1xuIFx0dTMyIHZhbDtcbkBAIC0zMzQsMTEgKzM1MSwxMyBAQCBlbnVtIHJ0bF9yZWdpc3RlcnMge1xuIFx0QUxEUFNfTFRSXHQ9IDB4ZTBhMixcbiBcdExUUl9PQkZGX0xPQ0tcdD0gMHhlMDMyLFxuIFx0TFRSX1NOT09QXHQ9IDB4ZTAzNCxcbitcdFNFTkRfTFRSX01TR1x0PSAweGUwMzgsXG4gXG4gI2RlZmluZSBBTERQU19MVFJfRU5cdFx0XHRCSVQoMClcbiAjZGVmaW5lIExUUl9PQkZGX0xPQ0tfRU5cdFx0QklUKDApXG4gI2RlZmluZSBMSU5LX1NQRUVEX0NIQU5HRV9FTlx0XHRCSVQoMTQpXG4gI2RlZmluZSBMVFJfU05PT1BfRU5cdFx0XHRHRU5NQVNLKDE1LCAxNClcbisjZGVmaW5lIExUUl9NU0dfRU5cdFx0XHRCSVQoMClcbiB9O1xuIFxuIGVudW0gcnRsODE2OF84MTAxX3JlZ2lzdGVycyB7XG5AQCAtNzI4LDYgKzc0NywxMiBAQCBlbnVtIHJ0bF9kYXNoX3R5cGUge1xuIFx0UlRMX0RBU0hfMjVfQlAsXG4gfTtcbiBcbitlbnVtIHJ0bF9zZnBfbW9kZSB7XG4rXHRSVExfU0ZQX05PTkUsXG4rXHRSVExfU0ZQXzgxNjhfQUYsXG4rXHRSVExfU0ZQXzgxMjdfQVRGLFxuK307XG4rXG4gc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHR2b2lkIF9faW9tZW0gKm1taW9fYWRkcjtcdC8qIG1lbW9yeSBtYXAgcGh5c2ljYWwgYWRkcmVzcyAqL1xuIFx0c3RydWN0IHBjaV9kZXYgKnBjaV9kZXY7XG5AQCAtNzM2LDYgKzc2MSw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XG4gXHRlbnVtIG1hY192ZXJzaW9uIG1hY192ZXJzaW9uO1xuIFx0ZW51bSBydGxfZGFzaF90eXBlIGRhc2hfdHlwZTtcbitcdGVudW0gcnRsX3NmcF9tb2RlIHNmcF9tb2RlO1xuIFx0dTMyIGN1cl9yeDsgLyogSW5kZXggaW50byB0aGUgUnggZGVzY3JpcHRvciBidWZmZXIgb2YgbmV4dCBSeCBwa3QuICovXG4gXHR1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cbiBcdHUzMiBkaXJ0eV90eDtcbkBAIC03NTAsNiArNzc2LDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHR1MzIgaXJxX21hc2s7XG4gXHRpbnQgaXJxO1xuIFx0c3RydWN0IGNsayAqY2xrO1xuK1x0aW50IHNwZWVkO1xuIFxuIFx0c3RydWN0IHtcbiBcdFx0REVDTEFSRV9CSVRNQVAoZmxhZ3MsIFJUTF9GTEFHX01BWCk7XG5AQCAtNzYyLDcgKzc4OSw2IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dW5zaWduZWQgc3VwcG9ydHNfZ21paToxO1xuIFx0dW5zaWduZWQgYXNwbV9tYW5hZ2VhYmxlOjE7XG4gXHR1bnNpZ25lZCBkYXNoX2VuYWJsZWQ6MTtcbi1cdGJvb2wgc2ZwX21vZGU6MTtcbiBcdGRtYV9hZGRyX3QgY291bnRlcnNfcGh5c19hZGRyO1xuIFx0c3RydWN0IHJ0bDgxNjlfY291bnRlcnMgKmNvdW50ZXJzO1xuIFx0c3RydWN0IHJ0bDgxNjlfdGNfb2Zmc2V0cyB0Y19vZmZzZXQ7XG5AQCAtNzc0LDYgKzgwMCwxMSBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHtcbiBcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxlZHM7XG4gXG4gXHR1MzIgb2NwX2Jhc2U7XG4rXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcbitcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyBwaHlsaW5rX2NvbmZpZztcbitcdHN0cnVjdCBwaHlsaW5rX3BjcyBwY3M7XG4rXHRzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtIHNhdmVkX3BhdXNlO1xuK1x0Ym9vbCBqdW1ib19wYXVzZV9zYXZlZDtcbiB9O1xuIFxuIHR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xuQEAgLTExMjgsMTAgKzExNTksNiBAQCBzdGF0aWMgaW50IHI4MTY4X3BoeV9vY3BfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZylcbiBcdGlmIChydGxfb2NwX3JlZ19mYWlsdXJlKHJlZykpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0LyogUmV0dXJuIGR1bW15IE1JSV9QSFlTSUQyIGluIFNGUCBtb2RlIHRvIG1hdGNoIFNGUCBQSFkgZHJpdmVyICovXG4tXHRpZiAodHAtXHUwMDNlc2ZwX21vZGUgXHUwMDI2XHUwMDI2IHJlZyA9PSAoT0NQX1NURF9QSFlfQkFTRSArIDIgKiBNSUlfUEhZU0lEMikpXG4tXHRcdHJldHVybiBQSFlfSURfUlRMX0RVTU1ZX1NGUCBcdTAwMjYgMHhmZmZmO1xuLVxuIFx0UlRMX1czMih0cCwgR1BIWV9PQ1AsIHJlZyBcdTAwM2NcdTAwM2MgMTUpO1xuIFxuIFx0cmV0dXJuIHJ0bF9sb29wX3dhaXRfaGlnaCh0cCwgXHUwMDI2cnRsX29jcF9ncGh5X2NvbmQsIDI1LCAxMCkgP1xuQEAgLTEyMTcsMTIgKzEyNDQsNiBAQCBzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xMGcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MDQsICh2YWwgXHUwMDI2IH4weDAwMGYpIHwgMHgwMDBjKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnRsX3NmcF9pbml0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLXtcbi1cdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuLVx0XHRyODEyN19zZnBfaW5pdF8xMGcodHApO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBydGxfc2ZwX3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuQEAgLTEyODMsNiArMTMwNCwxNSBAQCBzdGF0aWMgdm9pZCBtYWNfbWN1X3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpXG4gXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCB0cC1cdTAwM2VvY3BfYmFzZSArIHJlZywgdmFsdWUpO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBydGxfaXNfODExNmFmKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuK3tcbitcdHJldHVybiB0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzUyIFx1MDAyNlx1MDAyNlxuK1x0XHQocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfUEtHX0RFVEVDVCkgXHUwMDI2IFJUTF9QS0dfREVURUNUX01BU0spID09XG4rXHRcdFJUTF9QS0dfREVURUNUXzgxMTZBRiBcdTAwMjZcdTAwMjZcbitcdFx0KHI4MTY4X21hY19vY3BfcmVhZCh0cCwgUlRMX0lOVF9IV19JRCkgXHUwMDI2IFJUTF9JTlRfSFdfSURfTUFTSykgPT1cbitcdFx0UlRMX0lOVF9IV19JRF84MTE2QUY7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbWFjX21jdV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxuIHtcbiBcdHJldHVybiByODE2OF9tYWNfb2NwX3JlYWQodHAsIHRwLVx1MDAzZW9jcF9iYXNlICsgcmVnKTtcbkBAIC0xNTc4LDYgKzE2MDgsMjAgQEAgc3RhdGljIGJvb2wgcnRsX2Rhc2hfaXNfZW5hYmxlZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdH1cbiB9XG4gXG4rc3RhdGljIGVudW0gcnRsX3NmcF9tb2RlIHJ0bF9nZXRfc2ZwX21vZGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4re1xuK1x0aWYgKHJ0bF9pc184MTI1KHRwKSkge1xuK1x0XHR1MTYgZGF0YSA9IHI4MTY4X21hY19vY3BfcmVhZCh0cCwgUlRMX0lOVF9IV19JRCk7XG4rXG4rXHRcdGlmICgoZGF0YSBcdTAwMjYgMHhmZikgPT0gMHgwNylcbitcdFx0XHRyZXR1cm4gUlRMX1NGUF84MTI3X0FURjtcbitcdH0gZWxzZSBpZiAocnRsX2lzXzgxMTZhZih0cCkpIHtcbitcdFx0cmV0dXJuIFJUTF9TRlBfODE2OF9BRjtcbitcdH1cbitcbitcdHJldHVybiBSVExfU0ZQX05PTkU7XG4rfVxuK1xuIHN0YXRpYyBlbnVtIHJ0bF9kYXNoX3R5cGUgcnRsX2dldF9kYXNoX3R5cGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuIFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuQEAgLTE2NzMsMTYgKzE3MTcsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pcnFfbWFza19hbmRfYWNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0cnRsX3BjaV9jb21taXQodHApO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4rc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgc3BlZWQpXG4ge1xuLVx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRwLVx1MDAzZXBoeWRldjtcbi1cbiBcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM0IHx8XG4gXHQgICAgdHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zOCkge1xuLVx0XHRpZiAocGh5ZGV2LVx1MDAzZXNwZWVkID09IFNQRUVEXzEwMDApIHtcbitcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbi1cdFx0fSBlbHNlIGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwKSB7XG4rXHRcdH0gZWxzZSBpZiAoc3BlZWQgPT0gU1BFRURfMTAwKSB7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxYmMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAxZik7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAwNSk7XG4gXHRcdH0gZWxzZSB7XG5AQCAtMTY5Miw3ICsxNzM0LDcgQEAgc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRydGxfcmVzZXRfcGFja2V0X2ZpbHRlcih0cCk7XG4gXHR9IGVsc2UgaWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzUgfHxcbiBcdFx0ICAgdHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNikge1xuLVx0XHRpZiAocGh5ZGV2LVx1MDAzZXNwZWVkID09IFNQRUVEXzEwMDApIHtcbitcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0xNzAwLDcgKzE3NDIsNyBAQCBzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAzZik7XG4gXHRcdH1cbiBcdH0gZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNykge1xuLVx0XHRpZiAocGh5ZGV2LVx1MDAzZXNwZWVkID09IFNQRUVEXzEwKSB7XG4rXHRcdGlmIChzcGVlZCA9PSBTUEVFRF8xMCkge1xuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWQwLCBFUklBUl9NQVNLXzAwMTEsIDB4NGQwMik7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMDAxMSwgMHgwMDYwYSk7XG4gXHRcdH0gZWxzZSB7XG5AQCAtMjA3NCwxMSArMjExNiwxMSBAQCBydGxfY29hbGVzY2VfaW5mbyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0Y2kgPSBydGxfY29hbGVzY2VfaW5mb184MTY4XzgxMzY7XG4gXG4gXHQvKiBpZiBzcGVlZCBpcyB1bmtub3duIGFzc3VtZSBoaWdoZXN0IG9uZSAqL1xuLVx0aWYgKHRwLVx1MDAzZXBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF9VTktOT1dOKVxuK1x0aWYgKHRwLVx1MDAzZXNwZWVkID09IFNQRUVEX1VOS05PV04pXG4gXHRcdHJldHVybiBjaTtcbiBcbiBcdGZvciAoOyBjaS1cdTAwM2VzcGVlZDsgY2krKykge1xuLVx0XHRpZiAodHAtXHUwMDNlcGh5ZGV2LVx1MDAzZXNwZWVkID09IGNpLVx1MDAzZXNwZWVkKVxuK1x0XHRpZiAodHAtXHUwMDNlc3BlZWQgPT0gY2ktXHUwMDNlc3BlZWQpXG4gXHRcdFx0cmV0dXJuIGNpO1xuIFx0fVxuIFxuQEAgLTIyMzYsNyArMjI3OCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9zZXRfZWVlX3R4aWRsZV90aW1lcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBzdGF0aWMgdW5zaWduZWQgaW50IHI4MTY5X2dldF90eF9scGlfdGltZXJfdXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuLVx0dW5zaWduZWQgaW50IHNwZWVkID0gdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZXNwZWVkO1xuK1x0dW5zaWduZWQgaW50IHNwZWVkID0gdHAtXHUwMDNlc3BlZWQ7XG4gXHR1bnNpZ25lZCBpbnQgdGltZXIgPSB0cC1cdTAwM2V0eF9scGlfdGltZXI7XG4gXG4gXHRpZiAoIXRpbWVyIHx8IHNwZWVkID09IFNQRUVEX1VOS05PV04pXG5AQCAtMjI1NCw3ICsyMjk2LDcgQEAgc3RhdGljIGludCBydGw4MTY5X2dldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZGF0YSlcbiBcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbi1cdHJldCA9IHBoeV9ldGh0b29sX2dldF9lZWUodHAtXHUwMDNlcGh5ZGV2LCBkYXRhKTtcbitcdHJldCA9IHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKHRwLVx1MDAzZXBoeWxpbmssIGRhdGEpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbkBAIC0yMjcwLDcgKzIzMTIsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxuIFx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0cmV0dXJuIHBoeV9ldGh0b29sX3NldF9lZWUodHAtXHUwMDNlcGh5ZGV2LCBkYXRhKTtcbitcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjMwMSwxMyArMjM0Myw4IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKmRhdGEpXG4ge1xuIFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpO1xuLVx0Ym9vbCB0eF9wYXVzZSwgcnhfcGF1c2U7XG4gXG4tXHRwaHlfZ2V0X3BhdXNlKHRwLVx1MDAzZXBoeWRldiwgXHUwMDI2dHhfcGF1c2UsIFx1MDAyNnJ4X3BhdXNlKTtcbi1cbi1cdGRhdGEtXHUwMDNlYXV0b25lZyA9IHRwLVx1MDAzZXBoeWRldi1cdTAwM2VhdXRvbmVnO1xuLVx0ZGF0YS1cdTAwM2V0eF9wYXVzZSA9IHR4X3BhdXNlID8gMSA6IDA7XG4tXHRkYXRhLVx1MDAzZXJ4X3BhdXNlID0gcnhfcGF1c2UgPyAxIDogMDtcbitcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MTY5X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjMxOCw5ICsyMzU1LDcgQEAgc3RhdGljIGludCBydGw4MTY5X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZGV2LVx1MDAzZW10dSBcdTAwM2UgRVRIX0RBVEFfTEVOKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4tXHRwaHlfc2V0X2FzeW1fcGF1c2UodHAtXHUwMDNlcGh5ZGV2LCBkYXRhLVx1MDAzZXJ4X3BhdXNlLCBkYXRhLVx1MDAzZXR4X3BhdXNlKTtcbi1cbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX21hY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTIzODYsMzQgKzI0MjEsMjcgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX2N0cmxfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0bGUzMl90b19jcHUodHAtXHUwMDNlY291bnRlcnMtXHUwMDNlcnhfdW5rbm93bl9vcGNvZGUpO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbitzdGF0aWMgaW50IHJ0bDgxNjlfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuK1x0XHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbiB7XG4gXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpO1xuLVx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRwLVx1MDAzZXBoeWRldjtcbi1cdGludCBkdXBsZXggPSBjbWQtXHUwMDNlYmFzZS5kdXBsZXg7XG4tXHRpbnQgc3BlZWQgPSBjbWQtXHUwMDNlYmFzZS5zcGVlZDtcbi1cbi1cdGlmICghdHAtXHUwMDNlc2ZwX21vZGUpXG4tXHRcdHJldHVybiBwaHlfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHBoeWRldiwgY21kKTtcbiBcbi1cdGlmIChjbWQtXHUwMDNlYmFzZS5hdXRvbmVnICE9IEFVVE9ORUdfRElTQUJMRSlcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXG4tXHRpZiAoIXBoeV9jaGVja192YWxpZChzcGVlZCwgZHVwbGV4LCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKSlcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2Vsb2NrKTtcbitcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCh0cC1cdTAwM2VwaHlsaW5rLCBjbWQpO1xuK31cbiBcbi1cdHBoeWRldi1cdTAwM2VhdXRvbmVnID0gQVVUT05FR19ESVNBQkxFO1xuLVx0cGh5ZGV2LVx1MDAzZXNwZWVkID0gc3BlZWQ7XG4tXHRwaHlkZXYtXHUwMDNlZHVwbGV4ID0gZHVwbGV4O1xuK3N0YXRpYyBpbnQgcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4rXHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXG4tXHRydGxfc2ZwX2luaXQodHApO1xuK1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHRwLVx1MDAzZXBoeWxpbmssIGNtZCk7XG4rfVxuIFxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2Vsb2NrKTtcbitzdGF0aWMgaW50IHJ0bDgxNjlfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KHRwLVx1MDAzZXBoeWxpbmspO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHJ0bDgxNjlfZXRodG9vbF9vcHMgPSB7XG5AQCAtMjQzMSwxMCArMjQ1OSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHJ0bDgxNjlfZXRodG9vbF9vcHMgPSB7XG4gXHQuZ2V0X3NzZXRfY291bnRcdFx0PSBydGw4MTY5X2dldF9zc2V0X2NvdW50LFxuIFx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IHJ0bDgxNjlfZ2V0X2V0aHRvb2xfc3RhdHMsXG4gXHQuZ2V0X3RzX2luZm9cdFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxuLVx0Lm53YXlfcmVzZXRcdFx0PSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxuK1x0Lm53YXlfcmVzZXRcdFx0PSBydGw4MTY5X253YXlfcmVzZXQsXG4gXHQuZ2V0X2VlZVx0XHQ9IHJ0bDgxNjlfZ2V0X2VlZSxcbiBcdC5zZXRfZWVlXHRcdD0gcnRsODE2OV9zZXRfZWVlLFxuLVx0LmdldF9saW5rX2tzZXR0aW5nc1x0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXG4rXHQuZ2V0X2xpbmtfa3NldHRpbmdzXHQ9IHJ0bDgxNjlfZ2V0X2xpbmtfa3NldHRpbmdzLFxuIFx0LnNldF9saW5rX2tzZXR0aW5nc1x0PSBydGw4MTY5X3NldF9saW5rX2tzZXR0aW5ncyxcbiBcdC5nZXRfcmluZ3BhcmFtXHRcdD0gcnRsODE2OV9nZXRfcmluZ3BhcmFtLFxuIFx0LmdldF9wYXVzZV9zdGF0c1x0PSBydGw4MTY5X2dldF9wYXVzZV9zdGF0cyxcbkBAIC0yNDk5LDkgKzI1MjcsMTAgQEAgdm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0dHAtXHUwMDNlb2NwX2Jhc2UgPSBPQ1BfU1REX1BIWV9CQVNFO1xuIFxuIFx0XHQvKiBQSFkgc29mdCByZXNldCBtYXkgc3RpbGwgYmUgaW4gcHJvZ3Jlc3MgKi9cbi1cdFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcbi1cdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbi1cdFx0XHRcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xuK1x0XHRpZiAodHAtXHUwMDNlcGh5ZGV2KVxuK1x0XHRcdHBoeV9yZWFkX3BvbGxfdGltZW91dCh0cC1cdTAwM2VwaHlkZXYsIE1JSV9CTUNSLCB2YWwsXG4rXHRcdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbitcdFx0XHRcdFx0ICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7XG4gXHR9XG4gfVxuIFxuQEAgLTI1MzgsNiArMjU2Nyw4IEBAIHN0YXRpYyB2b2lkIHJ0bF9zY2hlZHVsZV90YXNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBlbnVtIHJ0bF9mbGFnIGZsYWcpXG4gXG4gc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3BoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4rXHRwaHlfaW5pdF9odyh0cC1cdTAwM2VwaHlkZXYpO1xuK1x0cGh5X3Jlc3VtZSh0cC1cdTAwM2VwaHlkZXYpO1xuIFx0cjgxNjlfaHdfcGh5X2NvbmZpZyh0cCwgdHAtXHUwMDNlcGh5ZGV2LCB0cC1cdTAwM2VtYWNfdmVyc2lvbik7XG4gXG4gXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNjPSBSVExfR0lHQV9NQUNfVkVSXzA2KSB7XG5AQCAtMjU1Miw5ICsyNTgzLDYgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3BoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdCAgICB0cC1cdTAwM2VwY2lfZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UgPT0gMHhlMDAwKVxuIFx0XHRwaHlfd3JpdGVfcGFnZWQodHAtXHUwMDNlcGh5ZGV2LCAweDAwMDEsIDB4MTAsIDB4ZjAxYik7XG4gXG4tXHRpZiAodHAtXHUwMDNlc2ZwX21vZGUpXG4tXHRcdHJ0bF9zZnBfaW5pdCh0cCk7XG4tXG4gXHQvKiBXZSBtYXkgaGF2ZSBjYWxsZWQgcGh5X3NwZWVkX2Rvd24gYmVmb3JlICovXG4gXHRwaHlfc3BlZWRfdXAodHAtXHUwMDNlcGh5ZGV2KTtcbiBcbkBAIC0yNjI0LDYgKzI2NTIsNTEgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3JpbmdfaW5kZXhlcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHRwLVx1MDAzZWRpcnR5X3R4ID0gdHAtXHUwMDNlY3VyX3R4ID0gdHAtXHUwMDNlY3VyX3J4ID0gMDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZ19wYXVzZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbit7XG4rXHRib29sIGp1bWJvID0gdHAtXHUwMDNlZGV2LVx1MDAzZW10dSBcdTAwM2UgRVRIX0RBVEFfTEVOO1xuK1x0c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSBwYXVzZSA9IHt9O1xuK1xuK1x0QVNTRVJUX1JUTkwoKTtcbitcbitcdGlmIChqdW1ibykge1xuK1x0XHRpZiAoIXRwLVx1MDAzZWp1bWJvX3BhdXNlX3NhdmVkKSB7XG4rXHRcdFx0c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgY21kID0ge307XG4rXHRcdFx0Ym9vbCBhZHZfcGF1c2UsIGFkdl9hc3ltO1xuK1xuK1x0XHRcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC1cdTAwM2VwaHlsaW5rLCBcdTAwMjZ0cC1cdTAwM2VzYXZlZF9wYXVzZSk7XG4rXHRcdFx0aWYgKHRwLVx1MDAzZXNhdmVkX3BhdXNlLmF1dG9uZWcpIHtcbitcdFx0XHRcdHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KHRwLVx1MDAzZXBoeWxpbmssIFx1MDAyNmNtZCk7XG4rXHRcdFx0XHRhZHZfcGF1c2UgPSBldGh0b29sX2xpbmtfa3NldHRpbmdzX3Rlc3RfbGlua19tb2RlKFx1MDAyNmNtZCxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdCAgYWR2ZXJ0aXNpbmcsXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFBhdXNlKTtcbitcdFx0XHRcdGFkdl9hc3ltICA9IGV0aHRvb2xfbGlua19rc2V0dGluZ3NfdGVzdF9saW5rX21vZGUoXHUwMDI2Y21kLFxuK1x0XHRcdFx0XHRcdFx0XHRcdFx0ICBhZHZlcnRpc2luZyxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdCAgQXN5bV9QYXVzZSk7XG4rXHRcdFx0XHRpZiAoYWR2X3BhdXNlIFx1MDAyNlx1MDAyNiAhYWR2X2FzeW0pIHtcbitcdFx0XHRcdFx0dHAtXHUwMDNlc2F2ZWRfcGF1c2UucnhfcGF1c2UgPSAxO1xuK1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDE7XG4rXHRcdFx0XHR9IGVsc2UgaWYgKGFkdl9wYXVzZSBcdTAwMjZcdTAwMjYgYWR2X2FzeW0pIHtcbitcdFx0XHRcdFx0dHAtXHUwMDNlc2F2ZWRfcGF1c2UucnhfcGF1c2UgPSAxO1xuK1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDA7XG4rXHRcdFx0XHR9IGVsc2UgaWYgKCFhZHZfcGF1c2UgXHUwMDI2XHUwMDI2IGFkdl9hc3ltKSB7XG4rXHRcdFx0XHRcdHRwLVx1MDAzZXNhdmVkX3BhdXNlLnJ4X3BhdXNlID0gMDtcbitcdFx0XHRcdFx0dHAtXHUwMDNlc2F2ZWRfcGF1c2UudHhfcGF1c2UgPSAxO1xuK1x0XHRcdFx0fSBlbHNlIHtcbitcdFx0XHRcdFx0dHAtXHUwMDNlc2F2ZWRfcGF1c2UucnhfcGF1c2UgPSAwO1xuK1x0XHRcdFx0XHR0cC1cdTAwM2VzYXZlZF9wYXVzZS50eF9wYXVzZSA9IDA7XG4rXHRcdFx0XHR9XG4rXHRcdFx0fVxuK1x0XHRcdHRwLVx1MDAzZWp1bWJvX3BhdXNlX3NhdmVkID0gdHJ1ZTtcbitcdFx0fVxuK1x0XHRwYXVzZS5hdXRvbmVnID0gdHAtXHUwMDNlc2F2ZWRfcGF1c2UuYXV0b25lZztcbitcdFx0cGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHRwLVx1MDAzZXBoeWxpbmssIFx1MDAyNnBhdXNlKTtcbitcdH0gZWxzZSBpZiAodHAtXHUwMDNlanVtYm9fcGF1c2Vfc2F2ZWQpIHtcbitcdFx0cGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHRwLVx1MDAzZXBoeWxpbmssIFx1MDAyNnRwLVx1MDAzZXNhdmVkX3BhdXNlKTtcbitcdFx0dHAtXHUwMDNlanVtYm9fcGF1c2Vfc2F2ZWQgPSBmYWxzZTtcbitcdH1cbit9XG4rXG4gc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4gXHRib29sIGp1bWJvID0gdHAtXHUwMDNlZGV2LVx1MDAzZW10dSBcdTAwM2UgRVRIX0RBVEFfTEVOO1xuQEAgLTI2NTcsMTUgKzI3MzAsNiBAQCBzdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIFx0aWYgKHBjaV9pc19wY2llKHRwLVx1MDAzZXBjaV9kZXYpIFx1MDAyNlx1MDAyNiB0cC1cdTAwM2VzdXBwb3J0c19nbWlpKVxuIFx0XHRwY2llX3NldF9yZWFkcnEodHAtXHUwMDNlcGNpX2RldiwgcmVhZHJxKTtcbi1cbi1cdC8qIENoaXAgZG9lc24ndCBzdXBwb3J0IHBhdXNlIGluIGp1bWJvIG1vZGUgKi9cbi1cdGlmIChqdW1ibykge1xuLVx0XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfUGF1c2VfQklULFxuLVx0XHRcdFx0ICAgdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZWFkdmVydGlzaW5nKTtcbi1cdFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULFxuLVx0XHRcdFx0ICAgdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZWFkdmVydGlzaW5nKTtcbi1cdFx0cGh5X3N0YXJ0X2FuZWcodHAtXHUwMDNlcGh5ZGV2KTtcbi1cdH1cbiB9XG4gXG4gREVDTEFSRV9SVExfQ09ORChydGxfY2hpcGNtZF9jb25kKVxuQEAgLTI3ODAsNyArMjg0NCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9wcmVwYXJlX3Bvd2VyX2Rvd24oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdHJ0bF9lcGh5X3dyaXRlKHRwLCAweDE5LCAweGZmNjQpO1xuIFxuIFx0aWYgKGRldmljZV9tYXlfd2FrZXVwKHRwX3RvX2Rldih0cCkpKSB7XG4tXHRcdHBoeV9zcGVlZF9kb3duKHRwLVx1MDAzZXBoeWRldiwgZmFsc2UpO1xuK1x0XHRwaHlsaW5rX3NwZWVkX2Rvd24odHAtXHUwMDNlcGh5bGluaywgZmFsc2UpO1xuIFx0XHRydGxfd29sX2VuYWJsZV9yeCh0cCk7XG4gXHR9XG4gfVxuQEAgLTI4MzIsNiArMjg5NiwxNiBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X3NldF9tYWdpY19yZWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRSVExfVzMyKHRwLCAweDdjLCB2YWwpO1xuIH1cbiBcbitzdGF0aWMgaW50IHJ0bDgxNjlfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXG4re1xuK1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpO1xuK1xuK1x0aWYgKCFuZXRpZl9ydW5uaW5nKGRldikpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0cmV0dXJuIHBoeWxpbmtfbWlpX2lvY3RsKHRwLVx1MDAzZXBoeWxpbmssIGlmciwgY21kKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgcnRsX3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0dTMyIHJ4X21vZGUgPSBBY2NlcHRCcm9hZGNhc3QgfCBBY2NlcHRNeVBoeXMgfCBBY2NlcHRNdWx0aWNhc3Q7XG5AQCAtMzA5OCw4ICszMTcyLDIyIEBAIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZjIsIDB4OTAwMyk7XG4gXHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfT0JGRl9MT0NLLCAweDAwMDAsIExJTktfU1BFRURfQ0hBTkdFX0VOKTtcbiBcdFx0YnJlYWs7XG4tXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNDYgLi4uIFJUTF9HSUdBX01BQ19WRVJfNDg6XG4gXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6XG4rXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTtcbitcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwMmMsIDB4MTg4MCk7XG4rXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4ZTAyZSwgMHg0ODgwKTtcbitcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDgsIDB4OTAwMyk7XG4rXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYSwgMHg5MDAzKTtcbitcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDIsIDB4ODgzYyk7XG4rXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNCwgMHg4YzEyKTtcbitcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwYTYsIDB4OTAwMyk7XG4rXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4ZTBhOCwgMHg5MDAzKTtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNDYgLi4uIFJUTF9HSUdBX01BQ19WRVJfNDg6XG4gXHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBBTERQU19MVFIsIDB4MDAwMCwgQUxEUFNfTFRSX0VOKTtcbiBcdFx0UlRMX1c4KHRwLCBDT01CT19MVFJfRVhURU5ELCBSVExfUjgodHAsIENPTUJPX0xUUl9FWFRFTkQpIHwgQ09NQk9fTFRSX0VYVEVORF9FTik7XG4gXHRcdGZhbGx0aHJvdWdoO1xuQEAgLTMxMTksNiArMzIwNyw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0fVxuIFx0LyogY2hpcCBjYW4gdHJpZ2dlciBMVFIgKi9cbiBcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfT0JGRl9MT0NLLCAweDAwMDMsIExUUl9PQkZGX0xPQ0tfRU4pO1xuK1x0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIFNFTkRfTFRSX01TRywgMHgwMDAwLCBMVFJfTVNHX0VOKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG5AQCAtMzE1Miw2ICszMjQxLDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4gXHRcdHJ0bF9lbmFibGVfbHRyKHRwKTtcbiBcdFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuIFx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNDYgLi4uIFJUTF9HSUdBX01BQ19WRVJfNDg6XG4rXHRcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl81MjpcbiBcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzYxIC4uLiBSVExfR0lHQV9NQUNfVkVSX0xBU1Q6XG4gXHRcdFx0LyogcmVzZXQgZXBoeSB0eC9yeCBkaXNhYmxlIHRpbWVyICovXG4gXHRcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5NCwgMHhmZjAwLCAwKTtcbkBAIC0zMTY0LDYgKzMyNTQsNyBAQCBzdGF0aWMgdm9pZCBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcbiBcdH0gZWxzZSB7XG4gXHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuK1x0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6XG4gXHRcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl82MSAuLi4gUlRMX0dJR0FfTUFDX1ZFUl9MQVNUOlxuIFx0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwOTIsIDB4MDBmZiwgMCk7XG4gXHRcdFx0YnJlYWs7XG5AQCAtMzY1Nyw2ICszNzQ4LDM1IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTY4ZXBfMyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGU4NjAsIDB4MDAwMCwgMHgwMDgwKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4re1xuK1x0dW5zaWduZWQgaW50IHNsb3QgPSBQQ0lfU0xPVChwZGV2LVx1MDAzZWRldmZuKTtcbitcdHN0cnVjdCBwY2lfYnVzICpidXMgPSBwZGV2LVx1MDAzZWJ1cztcbitcdHVuc2lnbmVkIGludCBkZXZmbjtcbitcdGludCBmdW5jO1xuK1x0aW50IHJldDtcbitcdHUzMiB2YWw7XG4rXG4rXHRmb3IgKGZ1bmMgPSAyOyBmdW5jIFx1MDAzYyA4OyBmdW5jKyspIHtcbitcdFx0ZGV2Zm4gPSBQQ0lfREVWRk4oc2xvdCwgZnVuYyk7XG4rXG4rXHRcdHJldCA9IHBjaV9idXNfcmVhZF9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfUE1fQ1NSLCBcdTAwMjZ2YWwpO1xuK1x0XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgIVBDSV9QT1NTSUJMRV9FUlJPUih2YWwpKSB7XG4rXHRcdFx0dmFsIFx1MDAyNj0gflBDSV9QTV9DVFJMX1BNRV9TVEFUVVM7XG4rXHRcdFx0dmFsIFx1MDAyNj0gfihQQ0lfUE1fQ1RSTF9TVEFURV9NQVNLIHwgUENJX1BNX0NUUkxfUE1FX0VOQUJMRSk7XG4rXHRcdFx0dmFsIHw9IChSVExfUE1fRDNIT1QgfCBQQ0lfUE1fQ1RSTF9QTUVfRU5BQkxFKTtcbitcdFx0XHRwY2lfYnVzX3dyaXRlX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19QTV9DU1IsIHZhbCk7XG4rXHRcdH1cbitcbitcdFx0cmV0ID0gcGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMLCBcdTAwMjZ2YWwpO1xuK1x0XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgIVBDSV9QT1NTSUJMRV9FUlJPUih2YWwpKSB7XG4rXHRcdFx0dmFsIFx1MDAyNj0gfigoUENJX0VYUF9MTktTVEFfTEJNUyB8IFBDSV9FWFBfTE5LU1RBX0xBQlMpIFx1MDAzY1x1MDAzYyAxNik7XG4rXHRcdFx0dmFsIHw9IFBDSV9FWFBfTE5LQ1RMX0FTUE1DO1xuK1x0XHRcdHBjaV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX0VYUF9MTktDVEwsIHZhbCk7XG4rXHRcdH1cbitcdH1cbit9XG4rXG4gc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMTcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuIFx0c3RhdGljIGNvbnN0IHN0cnVjdCBlcGh5X2luZm8gZV9pbmZvXzgxMTdbXSA9IHtcbkBAIC0zNjkzLDEyICszODEzLDE0IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIFx0cnRsX3BjaWVfc3RhdGVfbDJsM19kaXNhYmxlKHRwKTtcbiBcbi1cdHJnX3Nhd19jbnQgPSBwaHlfcmVhZF9wYWdlZCh0cC1cdTAwM2VwaHlkZXYsIDB4MGM0MiwgMHgxMykgXHUwMDI2IDB4M2ZmZjtcbi1cdGlmIChyZ19zYXdfY250IFx1MDAzZSAwKSB7XG4tXHRcdHUxNiBzd19jbnRfMW1zX2luaTtcbitcdGlmICh0cC1cdTAwM2VwaHlkZXYpIHtcbitcdFx0cmdfc2F3X2NudCA9IHBoeV9yZWFkX3BhZ2VkKHRwLVx1MDAzZXBoeWRldiwgMHgwYzQyLCAweDEzKSBcdTAwMjYgMHgzZmZmO1xuK1x0XHRpZiAocmdfc2F3X2NudCBcdTAwM2UgMCkge1xuK1x0XHRcdHUxNiBzd19jbnRfMW1zX2luaTtcbiBcbi1cdFx0c3dfY250XzFtc19pbmkgPSAoMTYwMDAwMDAgLyByZ19zYXdfY250KSBcdTAwMjYgMHgwZmZmO1xuLVx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhkNDEyLCAweDBmZmYsIHN3X2NudF8xbXNfaW5pKTtcbitcdFx0XHRzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpIFx1MDAyNiAweDBmZmY7XG4rXHRcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZDQxMiwgMHgwZmZmLCBzd19jbnRfMW1zX2luaSk7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwNTYsIDB4MDBmMCwgMHgwMDAwKTtcbkBAIC0zNzExLDYgKzM4MzMsOSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5NCwgMHgwMDAwKTtcbiBcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5ZSwgMHgwMDAwKTtcbiBcbitcdGlmIChydGxfaXNfODExNmFmKHRwKSlcbitcdFx0cnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnModHAtXHUwMDNlcGNpX2Rldik7XG4rXG4gXHQvKiBmaXJtd2FyZSBpcyBmb3IgTUFDIG9ubHkgKi9cbiBcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbiB9XG5AQCAtNDEzOSwxMiArNDI2NCwxNyBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnQoc3RydWN0ICBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHN0YXRpYyBpbnQgcnRsODE2OV9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxuIHtcbiBcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcbitcdGJvb2wganVtYm9fYmVmb3JlID0gZGV2LVx1MDAzZW10dSBcdTAwM2UgRVRIX0RBVEFfTEVOO1xuK1x0Ym9vbCBqdW1ib19hZnRlciA9IG5ld19tdHUgXHUwMDNlIEVUSF9EQVRBX0xFTjtcbiBcbiBcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbmV3X210dSk7XG4gXHRuZXRkZXZfdXBkYXRlX2ZlYXR1cmVzKGRldik7XG4gXHRydGxfanVtYm9fY29uZmlnKHRwKTtcbiBcdHJ0bF9zZXRfZWVlX3R4aWRsZV90aW1lcih0cCk7XG4gXG4rXHRpZiAoanVtYm9fYmVmb3JlICE9IGp1bWJvX2FmdGVyKVxuK1x0XHRydGxfanVtYm9fY29uZmlnX3BhdXNlKHRwKTtcbitcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC00ODY5LDggKzQ5OTksMTMgQEAgc3RhdGljIGlycXJldHVybl90IHJ0bDgxNjlfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4tXHRpZiAoc3RhdHVzIFx1MDAyNiBMaW5rQ2hnKVxuLVx0XHRwaHlfbWFjX2ludGVycnVwdCh0cC1cdTAwM2VwaHlkZXYpO1xuK1x0aWYgKHN0YXR1cyBcdTAwMjYgTGlua0NoZykge1xuK1x0XHRpZiAodHAtXHUwMDNlcGh5ZGV2KVxuK1x0XHRcdHBoeV9tYWNfaW50ZXJydXB0KHRwLVx1MDAzZXBoeWRldik7XG4rXHRcdGVsc2UgaWYgKHRwLVx1MDAzZXNmcF9tb2RlKVxuK1x0XHRcdHBoeWxpbmtfbWFjX2NoYW5nZSh0cC1cdTAwM2VwaHlsaW5rLFxuK1x0XHRcdFx0XHQgICAhIShSVExfUjgodHAsIFBIWXN0YXR1cykgXHUwMDI2IExpbmtTdGF0dXMpKTtcbitcdH1cbiBcbiBcdHJ0bF9pcnFfZGlzYWJsZSh0cCk7XG4gXHRuYXBpX3NjaGVkdWxlKFx1MDAyNnRwLVx1MDAzZW5hcGkpO1xuQEAgLTQ5MzAsOSArNTA2NSw2IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbiBcbiBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4ge1xuLVx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcbi1cdFx0cmV0dXJuO1xuLVxuIFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuIFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzM0IC4uLiBSVExfR0lHQV9NQUNfVkVSXzUyOlxuIFx0XHQvKiBBZGp1c3QgRUVFIExFRCBmcmVxdWVuY3kgKi9cbkBAIC00OTYzLDQwICs1MDk1LDE1IEBAIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfdHhfbHBpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHZvaWQgcjgxNjlfcGh5bGlua19oYW5kbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLXtcbi1cdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XG4tXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcbi1cbi1cdGlmIChuZXRpZl9jYXJyaWVyX29rKG5kZXYpKSB7XG4tXHRcdHJ0bF9saW5rX2NoZ19wYXRjaCh0cCk7XG4tXHRcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlZW5hYmxlX3R4X2xwaSk7XG4tXHRcdHBtX3JlcXVlc3RfcmVzdW1lKGQpO1xuLVx0fSBlbHNlIHtcbi1cdFx0cG1fcnVudGltZV9pZGxlKGQpO1xuLVx0fVxuLVxuLVx0cGh5X3ByaW50X3N0YXR1cyh0cC1cdTAwM2VwaHlkZXYpO1xuLX1cbi1cbiBzdGF0aWMgaW50IHI4MTY5X3BoeV9jb25uZWN0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbi1cdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC1cdTAwM2VwaHlkZXY7XG4tXHRwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cGh5X21vZGUgPSB0cC1cdTAwM2VzdXBwb3J0c19nbWlpID8gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkgOlxuLVx0XHQgICBQSFlfSU5URVJGQUNFX01PREVfTUlJO1xuLVxuLVx0cmV0ID0gcGh5X2Nvbm5lY3RfZGlyZWN0KHRwLVx1MDAzZWRldiwgcGh5ZGV2LCByODE2OV9waHlsaW5rX2hhbmRsZXIsXG4tXHRcdFx0XHQgcGh5X21vZGUpO1xuLVx0aWYgKHJldClcbitcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkodHAtXHUwMDNlcGh5bGluaywgdHAtXHUwMDNlcGh5ZGV2KTtcbitcdGlmIChyZXQpIHtcbitcdFx0bmV0ZGV2X2Vycih0cC1cdTAwM2VkZXYsIFwiZmFpbGVkIHRvIGNvbm5lY3QgcGh5XFxuXCIpO1xuIFx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0aWYgKCF0cC1cdTAwM2VzdXBwb3J0c19nbWlpKVxuLVx0XHRwaHlfc2V0X21heF9zcGVlZChwaHlkZXYsIFNQRUVEXzEwMCk7XG4tXG4tXHRwaHlfYXR0YWNoZWRfaW5mbyhwaHlkZXYpO1xuK1x0fVxuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTUwMDcsMTAgKzUxMTQsMTAgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0LyogQ2xlYXIgYWxsIHRhc2sgZmxhZ3MgKi9cbiBcdGJpdG1hcF96ZXJvKHRwLVx1MDAzZXdrLmZsYWdzLCBSVExfRkxBR19NQVgpO1xuIFxuLVx0cGh5X3N0b3AodHAtXHUwMDNlcGh5ZGV2KTtcbitcdHBoeWxpbmtfc3RvcCh0cC1cdTAwM2VwaHlsaW5rKTtcbiBcbiBcdC8qIFJlc2V0IFNlckRlcyBQSFkgdG8gYnJpbmcgZG93biBmaWJlciBsaW5rICovXG4tXHRpZiAodHAtXHUwMDNlc2ZwX21vZGUpXG4rXHRpZiAodHAtXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURilcbiBcdFx0cnRsX3NmcF9yZXNldCh0cCk7XG4gXG4gXHRydGw4MTY5X3VwZGF0ZV9jb3VudGVycyh0cCk7XG5AQCAtNTAzMiwxNCArNTEzOSwxNCBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X3VwKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRydGw4MTY4X2RyaXZlcl9zdGFydCh0cCk7XG4gXG4gXHRwY2lfc2V0X21hc3Rlcih0cC1cdTAwM2VwY2lfZGV2KTtcbi1cdHBoeV9pbml0X2h3KHRwLVx1MDAzZXBoeWRldik7XG4tXHRwaHlfcmVzdW1lKHRwLVx1MDAzZXBoeWRldik7XG4tXHRydGw4MTY5X2luaXRfcGh5KHRwKTtcbitcdGlmICh0cC1cdTAwM2VwaHlkZXYpXG4rXHRcdHJ0bDgxNjlfaW5pdF9waHkodHApO1xuK1xuIFx0bmFwaV9lbmFibGUoXHUwMDI2dHAtXHUwMDNlbmFwaSk7XG4gXHRlbmFibGVfd29yayhcdTAwMjZ0cC1cdTAwM2V3ay53b3JrKTtcbiBcdHJ0bF9yZXNldF93b3JrKHRwKTtcbiBcbi1cdHBoeV9zdGFydCh0cC1cdTAwM2VwaHlkZXYpO1xuK1x0cGh5bGlua19zdGFydCh0cC1cdTAwM2VwaHlsaW5rKTtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MTY5X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5AQCAtNTA1NSw3ICs1MTYyLDcgQEAgc3RhdGljIGludCBydGw4MTY5X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRmcmVlX2lycSh0cC1cdTAwM2VpcnEsIHRwKTtcbiBcbi1cdHBoeV9kaXNjb25uZWN0KHRwLVx1MDAzZXBoeWRldik7XG4rXHRwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHRwLVx1MDAzZXBoeWxpbmspO1xuIFxuIFx0ZG1hX2ZyZWVfY29oZXJlbnQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFI4MTY5X1JYX1JJTkdfQllURVMsIHRwLVx1MDAzZVJ4RGVzY0FycmF5LFxuIFx0XHRcdCAgdHAtXHUwMDNlUnhQaHlBZGRyKTtcbkBAIC01MTEyLDkgKzUyMTksMTEgQEAgc3RhdGljIGludCBydGxfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKHJldHZhbCBcdTAwM2MgMClcbiBcdFx0Z290byBlcnJfcmVsZWFzZV9md18yO1xuIFxuLVx0cmV0dmFsID0gcjgxNjlfcGh5X2Nvbm5lY3QodHApO1xuLVx0aWYgKHJldHZhbClcbi1cdFx0Z290byBlcnJfZnJlZV9pcnE7XG4rXHRpZiAodHAtXHUwMDNlcGh5ZGV2KSB7XG4rXHRcdHJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTtcbitcdFx0aWYgKHJldHZhbClcbitcdFx0XHRnb3RvIGVycl9mcmVlX2lycTtcbitcdH1cbiBcbiBcdHJ0bDgxNjlfdXAodHApO1xuIFx0cnRsODE2OV9pbml0X2NvdW50ZXJfb2Zmc2V0cyh0cCk7XG5AQCAtNTE5MCw4ICs1Mjk5LDExIEBAIHN0YXRpYyBpbnQgcnRsODE2OV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRydGxfcmFyX3NldCh0cCwgdHAtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyKTtcbiBcdF9fcnRsODE2OV9zZXRfd29sKHRwLCB0cC1cdTAwM2VzYXZlZF93b2xvcHRzKTtcbiBcbi1cdGlmICh0cC1cdTAwM2VUeERlc2NBcnJheSlcbitcdGlmICh0cC1cdTAwM2VUeERlc2NBcnJheSkge1xuK1x0XHRydG5sX2xvY2soKTtcbiBcdFx0cnRsODE2OV91cCh0cCk7XG4rXHRcdHJ0bmxfdW5sb2NrKCk7XG4rXHR9XG4gXG4gXHRuZXRpZl9kZXZpY2VfYXR0YWNoKHRwLVx1MDAzZWRldik7XG4gXG5AQCAtNTI4OCw2ICs1NDAwLDggQEAgc3RhdGljIHZvaWQgcnRsX3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gXHRcdHI4MTY5X3JlbW92ZV9sZWRzKHRwLVx1MDAzZWxlZHMpO1xuIFxuIFx0dW5yZWdpc3Rlcl9uZXRkZXYodHAtXHUwMDNlZGV2KTtcbitcdGlmICh0cC1cdTAwM2VwaHlsaW5rKVxuK1x0XHRwaHlsaW5rX2Rlc3Ryb3kodHAtXHUwMDNlcGh5bGluayk7XG4gXG4gXHRpZiAodHAtXHUwMDNlZGFzaF90eXBlICE9IFJUTF9EQVNIX05PTkUpXG4gXHRcdHJ0bDgxNjhfZHJpdmVyX3N0b3AodHApO1xuQEAgLTUzMTAsNyArNTQyNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgcnRsX25ldGRldl9vcHMgPSB7XG4gXHQubmRvX2ZpeF9mZWF0dXJlc1x0PSBydGw4MTY5X2ZpeF9mZWF0dXJlcyxcbiBcdC5uZG9fc2V0X2ZlYXR1cmVzXHQ9IHJ0bDgxNjlfc2V0X2ZlYXR1cmVzLFxuIFx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcdD0gcnRsX3NldF9tYWNfYWRkcmVzcyxcbi1cdC5uZG9fZXRoX2lvY3RsXHRcdD0gcGh5X2RvX2lvY3RsX3J1bm5pbmcsXG4rXHQubmRvX2V0aF9pb2N0bFx0XHQ9IHJ0bDgxNjlfaW9jdGwsXG4gXHQubmRvX3NldF9yeF9tb2RlXHQ9IHJ0bF9zZXRfcnhfbW9kZSxcbiAjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVJcbiBcdC5uZG9fcG9sbF9jb250cm9sbGVyXHQ9IHJ0bDgxNjlfbmV0cG9sbCxcbkBAIC01NDc0LDE2ICs1NTg4LDYgQEAgc3RhdGljIGludCByODE2OV9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRyZXR1cm4gLUVVTkFUQ0g7XG4gXHR9XG4gXG4tXHR0cC1cdTAwM2VwaHlkZXYtXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuLVx0aWYgKHJ0bF9zdXBwb3J0c19lZWUodHApKVxuLVx0XHRwaHlfc3VwcG9ydF9lZWUodHAtXHUwMDNlcGh5ZGV2KTtcbi1cdHBoeV9zdXBwb3J0X2FzeW1fcGF1c2UodHAtXHUwMDNlcGh5ZGV2KTtcbi1cbi1cdC8qIG1pbWljIGJlaGF2aW9yIG9mIHI4MTI1L3I4MTI2IHZlbmRvciBkcml2ZXJzICovXG4tXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl82MSlcbi1cdFx0cGh5X2Rpc2FibGVfZWVlX21vZGUodHAtXHUwMDNlcGh5ZGV2LFxuLVx0XHRcdFx0ICAgICBFVEhUT09MX0xJTktfTU9ERV8yNTAwYmFzZVRfRnVsbF9CSVQpO1xuLVxuIFx0LyogUEhZIHdpbGwgYmUgd29rZW4gdXAgaW4gcnRsX29wZW4oKSAqL1xuIFx0cGh5X3N1c3BlbmQodHAtXHUwMDNlcGh5ZGV2KTtcbiBcbkBAIC01NTk5LDYgKzU3MDMsMjMzIEBAIHN0YXRpYyBib29sIHJ0bF9hc3BtX2lzX3NhZmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHJ0bF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbitcdFx0XHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuK1xuK1x0dHAtXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuK1x0cG1fcnVudGltZV9pZGxlKHRwX3RvX2Rldih0cCkpO1xuK31cbitcbitzdGF0aWMgdm9pZCBydGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4rXHRcdFx0ICAgIHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuK1x0XHRcdCAgICBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGJvb2wgdHhfcGF1c2UsIGJvb2wgcnhfcGF1c2UpXG4re1xuK1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcbitcbitcdHRwLVx1MDAzZXNwZWVkID0gc3BlZWQ7XG4rXHRydGxfbGlua19jaGdfcGF0Y2godHAsIHNwZWVkKTtcbitcbitcdHBtX3JlcXVlc3RfcmVzdW1lKGQpO1xuK31cbitcbitzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpydGxfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4rXHRcdFx0XHRcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4re1xuK1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XG4rXG4rXHRpZiAoIXRwLVx1MDAzZXBjcy5vcHMpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XG4rXHQgICAgaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUilcbitcdFx0cmV0dXJuIFx1MDAyNnRwLVx1MDAzZXBjcztcbitcbitcdHJldHVybiBOVUxMO1xuK31cbitcbitzdGF0aWMgdm9pZCBydGxfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXG4rXHRcdFx0ICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4re1xuK31cbitcbitzdGF0aWMgdTE2IHJ0bDgxNjlfc2RzX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBzZHNfcmVnKVxuK3tcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHR1MTYgdmFsID0gMDtcbitcbitcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZ0cC1cdTAwM2VtYWNfb2NwX2xvY2ssIGZsYWdzKTtcbitcdF9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19BRERSX1JFRywgc2RzX3JlZyk7XG4rXHRfX3I4MTY4X21hY19vY3Bfd3JpdGUodHAsIE9DUF9TRFNfQ01EX1JFRywgU0RTX0NNRF9SRUFEKTtcbitcdHZhbCA9IF9fcjgxNjhfbWFjX29jcF9yZWFkKHRwLCBPQ1BfU0RTX0RBVEFfUkVHKTtcbitcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnRwLVx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xuK1xuK1x0cmV0dXJuIHZhbDtcbit9XG4rXG4rc3RhdGljIHZvaWQgcnRsODE2OV9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuK1x0XHRcdFx0ICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4rXHRcdFx0XHQgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcbitcbitcdGlmICh0cC1cdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKSB7XG4rXHRcdHUxNiBzdGF0MTtcbitcbitcdFx0c3RhdDEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0M0NV9CQVNFICsgTURJT19TVEFUMSk7XG4rXG4rXHRcdGlmICghKHN0YXQxIFx1MDAyNiBNRElPX1NUQVQxX0xTVEFUVVMpKVxuK1x0XHRcdHN0YXQxID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DNDVfQkFTRSArIE1ESU9fU1RBVDEpO1xuK1xuK1x0XHRzdGF0ZS1cdTAwM2VsaW5rID0gISEoc3RhdDEgXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUyk7XG4rXHRcdGlmICghc3RhdGUtXHUwMDNlbGluaylcbitcdFx0XHRyZXR1cm47XG4rXG4rXHRcdHN0YXRlLVx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xuK1x0XHRzdGF0ZS1cdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDAwO1xuK1x0fSBlbHNlIHtcbitcdFx0dTE2IGJtc3IsIGxwYTtcbitcbitcdFx0Ym1zciA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzIyX0JBU0UgKyBNSUlfQk1TUik7XG4rXHRcdGxwYSA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzIyX0JBU0UgKyBNSUlfTFBBKTtcbitcdFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscGEpO1xuK1x0fVxuK31cbitcbitzdGF0aWMgaW50IHJ0bDgxNjlfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG1vZGUsXG4rXHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbitcdFx0XHQgICAgICBjb25zdCB1bnNpZ25lZCBsb25nICphZHZlcnRpc2luZyxcbitcdFx0XHQgICAgICBib29sIHBlcm1pdF9wYXVzZV90b19tYWMpXG4re1xuK1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwY3MpO1xuK1xuK1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpXG4rXHRcdHI4MTI3X3NmcF9pbml0XzEwZyh0cCk7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MTY5X3Bjc192YWxpZGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLFxuK1x0XHRcdFx0Y29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG4re1xuK31cbitcbitzdGF0aWMgdm9pZCBydGxfbWFjX2Rpc2FibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuK1xuK1x0cnRsX2VuYWJsZV90eF9scGkodHAsIGZhbHNlKTtcbit9XG4rXG4rc3RhdGljIGludCBydGxfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHUzMiB0aW1lciwgYm9vbCB0eF9jbGtfc3RvcClcbit7XG4rXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTtcbitcbitcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcbitcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cnVlKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBydGxfcGh5bGlua19tYWNfb3BzID0ge1xuK1x0Lm1hY19zZWxlY3RfcGNzID0gcnRsX21hY19zZWxlY3RfcGNzLFxuK1x0Lm1hY19jb25maWcgPSBydGxfbWFjX2NvbmZpZyxcbitcdC5tYWNfbGlua19kb3duICA9IHJ0bF9tYWNfbGlua19kb3duLFxuK1x0Lm1hY19saW5rX3VwICAgID0gcnRsX21hY19saW5rX3VwLFxuK1x0Lm1hY19kaXNhYmxlX3R4X2xwaSA9IHJ0bF9tYWNfZGlzYWJsZV90eF9scGksXG4rXHQubWFjX2VuYWJsZV90eF9scGkgPSBydGxfbWFjX2VuYWJsZV90eF9scGksXG4rfTtcbitcbitzdGF0aWMgdW5zaWduZWQgbG9uZyBydGw4MTY5X2dldF9scGlfY2FwcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbit7XG4rXHR1bnNpZ25lZCBsb25nIGNhcHMgPSAwO1xuK1xuK1x0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSB8fCB0cC1cdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGNhcHMgfD0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDtcbitcbitcdC8qIG1pbWljIGJlaGF2aW9yIG9mIHI4MTI1L3I4MTI2IHZlbmRvciBkcml2ZXJzXG4rXHQgKiBSVExfR0lHQV9NQUNfVkVSXzYxIGRvZXNuJ3Qgc3VwcG9ydCAyLjVHIGVlZVxuK1x0ICovXG4rXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNlPSBSVExfR0lHQV9NQUNfVkVSXzYzKVxuK1x0XHRjYXBzIHw9IE1BQ18yNTAwRkQ7XG4rXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNlPSBSVExfR0lHQV9NQUNfVkVSXzcwKVxuK1x0XHRjYXBzIHw9IE1BQ181MDAwRkQ7XG4rXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl84MClcbitcdFx0Y2FwcyB8PSBNQUNfMTAwMDBGRDtcbitcbitcdHJldHVybiBjYXBzO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfcGNzX29wcyByODE2OV9wY3Nfb3BzID0ge1xuK1x0LnBjc192YWxpZGF0ZSA9IHJ0bDgxNjlfcGNzX3ZhbGlkYXRlLFxuK1x0LnBjc19nZXRfc3RhdGUgPSBydGw4MTY5X3Bjc19nZXRfc3RhdGUsXG4rXHQucGNzX2NvbmZpZyA9IHJ0bDgxNjlfcGNzX2NvbmZpZyxcbitcdC5wY3NfYW5fcmVzdGFydCA9IHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQsXG4rfTtcbitcbitzdGF0aWMgaW50IHJ0bF9pbml0X3BoeWxpbmsoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4re1xuK1x0c3RydWN0IHBoeWxpbmsgKnBsO1xuK1x0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xuK1xuK1x0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGV2ID0gXHUwMDI2dHAtXHUwMDNlZGV2LVx1MDAzZWRldjtcbitcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjtcbitcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbitcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBydGw4MTY5X2dldF9scGlfY2Fwcyh0cCk7XG4rXHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTtcbitcbitcdHN3aXRjaCAodHAtXHUwMDNlc2ZwX21vZGUpIHtcbitcdGNhc2UgUlRMX1NGUF84MTY4X0FGOlxuK1x0XHR0cC1cdTAwM2VwY3Mub3BzID0gXHUwMDI2cjgxNjlfcGNzX29wcztcbitcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlO1xuK1x0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg7XG4rXHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIFJUTF9TRlBfODEyN19BVEY6XG4rXHRcdHRwLVx1MDAzZXBjcy5vcHMgPSBcdTAwMjZyODE2OV9wY3Nfb3BzO1xuK1x0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjtcbitcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlO1xuK1x0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwMEZEO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMO1xuK1x0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMCB8IE1BQ18xMDA7XG4rXG4rXHRcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuK1x0XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQgfFxuK1x0XHRcdFx0XHRcdFx0ICAgICAgIE1BQ181MDAwRkQgfCBNQUNfMTAwMDBGRDtcbitcdFx0ZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl83MClcbitcdFx0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfFxuK1x0XHRcdFx0XHRcdFx0ICAgICAgIE1BQ18yNTAwRkQgfCBNQUNfNTAwMEZEO1xuK1x0XHRlbHNlIGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNjEpXG4rXHRcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDtcbitcdFx0ZWxzZVxuK1x0XHRcdGlmICh0cC1cdTAwM2VzdXBwb3J0c19nbWlpKVxuK1x0XHRcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEO1xuK1xuK1x0XHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNjIFJUTF9HSUdBX01BQ19WRVJfNjEpXG4rXHRcdFx0cGh5X21vZGUgPSB0cC1cdTAwM2VzdXBwb3J0c19nbWlpID8gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkgOlxuK1x0XHRcdFx0ICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSTtcbitcdFx0ZWxzZVxuK1x0XHRcdHBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMO1xuK1x0XHRicmVhaztcbitcdH1cbitcbitcdF9fc2V0X2JpdChwaHlfbW9kZSwgdHAtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuK1x0aWYgKHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMpXG4rXHRcdF9fc2V0X2JpdChwaHlfbW9kZSwgdHAtXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpO1xuK1xuK1x0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZ0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgdHBfdG9fZGV2KHRwKS1cdTAwM2Vmd25vZGUsXG4rXHRcdFx0ICAgIHBoeV9tb2RlLCBcdTAwMjZydGxfcGh5bGlua19tYWNfb3BzKTtcbitcdGlmIChJU19FUlIocGwpKVxuK1x0XHRyZXR1cm4gUFRSX0VSUihwbCk7XG4rXG4rXHR0cC1cdTAwM2VwaHlsaW5rID0gcGw7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gKmNoaXA7XG5AQCAtNTY2Nyw2ICs1OTk4LDcgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXHRcdFx0XHQgICAgIGV4dF94aWRfc3RyLCB4aWQpO1xuIFx0dHAtXHUwMDNlbWFjX3ZlcnNpb24gPSBjaGlwLVx1MDAzZW1hY192ZXJzaW9uO1xuIFx0dHAtXHUwMDNlZndfbmFtZSA9IGNoaXAtXHUwMDNlZndfbmFtZTtcbitcdHRwLVx1MDAzZXNwZWVkID0gU1BFRURfVU5LTk9XTjtcbiBcbiBcdC8qIERpc2FibGUgQVNQTSBMMSBhcyB0aGF0IGNhdXNlIHJhbmRvbSBkZXZpY2Ugc3RvcCB3b3JraW5nXG4gXHQgKiBwcm9ibGVtcyBhcyB3ZWxsIGFzIGZ1bGwgc3lzdGVtIGhhbmdzIGZvciBzb21lIFBDSWUgZGV2aWNlcyB1c2Vycy5cbkBAIC01Njc5LDEyICs2MDExLDcgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXHR9XG4gXHR0cC1cdTAwM2Vhc3BtX21hbmFnZWFibGUgPSAhcmM7XG4gXG4tXHRpZiAocnRsX2lzXzgxMjUodHApKSB7XG4tXHRcdHUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCAweGQwMDYpO1xuLVxuLVx0XHRpZiAoKGRhdGEgXHUwMDI2IDB4ZmYpID09IDB4MDcpXG4tXHRcdFx0dHAtXHUwMDNlc2ZwX21vZGUgPSB0cnVlO1xuLVx0fVxuK1x0dHAtXHUwMDNlc2ZwX21vZGUgPSBydGxfZ2V0X3NmcF9tb2RlKHRwKTtcbiBcbiBcdHRwLVx1MDAzZWRhc2hfdHlwZSA9IHJ0bF9nZXRfZGFzaF90eXBlKHRwKTtcbiBcdHRwLVx1MDAzZWRhc2hfZW5hYmxlZCA9IHJ0bF9kYXNoX2lzX2VuYWJsZWQodHApO1xuQEAgLTU3ODgsMTMgKzYxMTUsMjMgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXG4gXHRwY2lfc2V0X2RydmRhdGEocGRldiwgdHApO1xuIFxuLVx0cmMgPSByODE2OV9tZGlvX3JlZ2lzdGVyKHRwKTtcbitcdHJjID0gcnRsX2luaXRfcGh5bGluayh0cCk7XG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiByYztcbiBcbitcdGlmICh0cC1cdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQX05PTkUpIHtcbitcdFx0cmMgPSByODE2OV9tZGlvX3JlZ2lzdGVyKHRwKTtcbitcdFx0aWYgKHJjKSB7XG4rXHRcdFx0cGh5bGlua19kZXN0cm95KHRwLVx1MDAzZXBoeWxpbmspO1xuK1x0XHRcdHJldHVybiByYztcbitcdFx0fVxuK1x0fVxuK1xuIFx0cmMgPSByZWdpc3Rlcl9uZXRkZXYoZGV2KTtcbi1cdGlmIChyYylcbitcdGlmIChyYykge1xuK1x0XHRwaHlsaW5rX2Rlc3Ryb3kodHAtXHUwMDNlcGh5bGluayk7XG4gXHRcdHJldHVybiByYztcbitcdH1cbiBcbiBcdGlmIChJU19FTkFCTEVEKENPTkZJR19SODE2OV9MRURTKSkge1xuIFx0XHRpZiAocnRsX2lzXzgxMjUodHApKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbmluZGV4IGI2NWQwZjVmYTFhMDE0Li43ZjkwNGRlNTgzZTA1NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuQEAgLTI2NDYsNDUgKzI2NDYsNiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODIyMWJfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0cmV0dXJuIElSUV9IQU5ETEVEO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4te1xuLVx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwMGJhc2VUX0Z1bGxfQklULFxuLVx0XHRcdCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKTtcbi1cbi1cdC8qIHNldCBkZWZhdWx0IG1vZGUgKi9cbi1cdHBoeWRldi1cdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDAwO1xuLVx0cGh5ZGV2LVx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xuLVxuLVx0cGh5ZGV2LVx1MDAzZXBvcnQgPSBQT1JUX0ZJQlJFO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdGludCB2YWwsIGVycjtcbi1cbi1cdGVyciA9IGdlbnBoeV91cGRhdGVfbGluayhwaHlkZXYpO1xuLVx0aWYgKGVycilcbi1cdFx0cmV0dXJuIGVycjtcbi1cbi1cdGlmICghcGh5ZGV2LVx1MDAzZWxpbmspXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0dmFsID0gcGh5X3JlYWQocGh5ZGV2LCBSVExfUEhZU1IpO1xuLVx0aWYgKHZhbCBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIHZhbDtcbi1cbi1cdHJ0bGdlbl9kZWNvZGVfcGh5c3IocGh5ZGV2LCB2YWwpO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdHJldHVybiAwO1xuLX1cbi1cbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XG4gXHR7XG4gXHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMDA4MjAxKSxcbkBAIC0yOTM0LDIwICsyODk1LDYgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xuIFx0XHQud3JpdGVfcGFnZVx0PSBydGw4MjF4X3dyaXRlX3BhZ2UsXG4gXHRcdC5yZWFkX21tZFx0PSBydGw4MjJ4X3JlYWRfbW1kLFxuIFx0XHQud3JpdGVfbW1kXHQ9IHJ0bDgyMnhfd3JpdGVfbW1kLFxuLVx0fSwge1xuLVx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1JUTF9EVU1NWV9TRlApLFxuLVx0XHQubmFtZVx0XHQ9IFwiUmVhbHRlayBTRlAgUEhZIE1vZGVcIixcbi1cdFx0LmZsYWdzXHRcdD0gUEhZX0lTX0lOVEVSTkFMLFxuLVx0XHQucHJvYmVcdFx0PSBydGw4MjJ4X3Byb2JlLFxuLVx0XHQuZ2V0X2ZlYXR1cmVzXHQ9IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzLFxuLVx0XHQuY29uZmlnX2FuZWdcdD0gcnRsZ2VuX3NmcF9jb25maWdfYW5lZyxcbi1cdFx0LnJlYWRfc3RhdHVzXHQ9IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMsXG4tXHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuLVx0XHQucmVzdW1lXHRcdD0gcnRsZ2VuX3Jlc3VtZSxcbi1cdFx0LnJlYWRfcGFnZVx0PSBydGw4MjF4X3JlYWRfcGFnZSxcbi1cdFx0LndyaXRlX3BhZ2VcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxuLVx0XHQucmVhZF9tbWRcdD0gcnRsODIyeF9yZWFkX21tZCxcbi1cdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4X3dyaXRlX21tZCxcbiBcdH0sIHtcbiBcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLFxuIFx0XHQubmFtZVx0XHQ9IFwiUlRMODIyNCAyLjVHYnBzIFBIWVwiLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oIGIvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmhcbmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggZDY4M2JjMWIwNjU5Y2QuLjAwMDAwMDAwMDAwMDAwXG4tLS0gYS9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaFxuKysrIC9kZXYvbnVsbFxuQEAgLTEsNyArMCwwIEBAXG4tLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbi0jaWZuZGVmIF9SRUFMVEVLX1BIWV9IXG4tI2RlZmluZSBfUkVBTFRFS19QSFlfSFxuLVxuLSNkZWZpbmVcdFBIWV9JRF9SVExfRFVNTVlfU0ZQXHQweDAwMWNjYmZmXG4tXG4tI2VuZGlmIC8qIF9SRUFMVEVLX1BIWV9IICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMTowMDo1OC41MTk3MzY5OTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDI1NzIyNzgwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyB0aGUgcjgxNjkgRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgZnVuZGFtZW50YWxseSBjaGFuZ2VzIHRoZSBgcjgxNjlgIG5ldHdvcmsgZHJpdmVyIGJ5IGFkZGluZyBgUEhZTElOS2Agc3VwcG9ydCBhbmQgU0ZQIG1vZGUgaGFuZGxpbmcuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgY2hhbmdlLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgaXMgd2hldGhlciB0aGlzIGRyaXZlciBpcyBldmVuICpyZWFjaGFibGUqLiBXZSdyZSBkZWFsaW5nIHdpdGggYSBSZWFsdGVrIEV0aGVybmV0IGFkYXB0ZXIgZHJpdmVyLCBhbmQgbXkgZXhwZXJpZW5jZSB0ZWxscyBtZSBQQ0kgbmV0d29yayBkcml2ZXJzIGxpa2UgYHI4MTY5YCBhcmUgdHlwaWNhbGx5IHRyaWNreSBpbiB2aXJ0dWFsaXplZCBzZXR1cHMuXG5cblFFTVUsIHRoZSB1c3VhbCBzdXNwZWN0IGZvciBlbXVsYXRpb24sIGlzIG15IGZpcnN0IHBvcnQgb2YgY2FsbC4gSSBrbm93IFFFTVUgZW11bGF0ZXMgYHJ0bDgxMzlgLCBidXQgYHI4MTY5YCBpcyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IGJlYXN0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBRRU1VIGxpa2VseSAqZG9lc24ndCogZW11bGF0ZSBpdC4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gSXQncyBhIHF1ZXN0aW9uIEkgaGF2ZSB0byBhc2suIEkgbmVlZCB0byBtYWtlIHN1cmUuXG5cblRoZW4sIHRoZXJlJ3Mgc3l6a2FsbGVyLiBEb2VzIHN5emthbGxlciBoYXZlIGEgbWVhbnMgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIGRyaXZlcj8gU3l6a2FsbGVyIGhhcyB0aGUgcG90ZW50aWFsIHRvIGluamVjdCBQQ0kgZGV2aWNlcyB0aHJvdWdoIGBzeXpfcGNpX2RldmljZV9hZGRgIG9yIHNpbWlsYXIgbWVjaGFuaXNtcy4gSWYgdGhpcyBpcyB0aGUgY2FzZSwgc3l6a2FsbGVyIGNvdWxkIHBvdGVudGlhbGx5IHByb3ZpZGUgYSBwYXRoIHRvIHJlYWNoIHRoZSBkcml2ZXIuIFNvLCB0aGlzIGlzIHdvcnRoIGV4cGxvcmluZyB0byBzZWUgaWYgc3l6a2FsbGVyIGNhbiByZWFjaCBpdC5cblxuTXkgZmlyc3QgdGhvdWdodCBpcywgdGhpcyBpcyBhbiBpc3N1ZS4gVGhlIGRlc2NyaXB0aW9uIHNheXMgY29kZSBwYXRocyBhcmUgbm90IHJlYWNoYWJsZSBpZiB0aGV5IGNhbid0IGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgc28gSSBuZWVkIHRvIGZpbmQgYSB3YXkgdG8gbWFrZSBpdCByZWFjaGFibGUuXG5cbk9rYXksIGNoZWNraW5nIHN5emthbGxlciwgd2hpY2ggbWlnaHQgYmUgdGhyb3VnaCBgdmhjaWAgZm9yIFVTQiBvciB0aHJvdWdoIGBwY2lgIGZvciBQQ0kgKHVzaW5nIHRoZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBjYWxsKSwgaXMgbXkgbmV4dCBsaW5lIG9mIGlucXVpcnkuIEhvd2V2ZXIsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIHRoYXQgYSBsb3Qgb2YgdGhpcyByZXF1aXJlcyB0aGUgZHJpdmVyIHRvIGFjdHVhbGx5IHByb2JlIGFuZCB0aGUgbmV0ZGV2IHRvIGJlIHJlZ2lzdGVyZWQuXG5cblVsdGltYXRlbHksIGlmIHRoZSBoYXJkd2FyZSBpc24ndCBlbXVsYXRlZCwgdGhlIGByODE2OWAgcHJvYmUgaXMgZ29pbmcgdG8gZmFpbCwgd2hpY2ggbWVhbnMgdGhlIG5ldHdvcmsgZGV2aWNlIHdvbid0IGJlIHJlZ2lzdGVyZWQsIGFuZCBhbGwgdGhlIGBwaHlsaW5rYCBjb2RlLCBhbmQgZXZlcnl0aGluZyBpbiBgcjgxNjlfb3BlbmAgaXMgbmV2ZXIgZ29pbmcgdG8gYmUgZXhlY3V0ZWQuXG5cbkknbSBub3cgZ29pbmcgdG8gY29uZmlybSBteSBodW5jaCBhbmQgc2VhcmNoIFFFTVUncyBzb3VyY2UgY29kZSwganVzdCB0byBtYWtlIHN1cmUuIEknbSBnb2luZyB0byBxdWlja2x5IGxvb2sgdGhyb3VnaCB0aGUgYXZhaWxhYmxlIG5ldHdvcmsgZGV2aWNlcy4gTm8sIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIGByODE2OWAuIFNvLCB0aGlzIGlzIHRoZSBtYWluIGlzc3VlLlxuXG5TeXprYWxsZXIgaXMgdGhlIG9ubHkgb3RoZXIgd2F5IHRvIHJlYWNoIHRoaXMuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc3l6a2FsbGVyJ3MgY2FwYWJpbGl0aWVzIGhlcmUsIGxvb2tpbmcgYXQgaXRzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcywgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgYHN5el9wY2lfZGV2aWNlX2FkZGAgZmVhdHVyZS4gTXkgY29uY2x1c2lvbiBpcyB0aGF0IGl0IHVzZXMgYHN5el9wY2lfZGV2aWNlX2FkZGAgb3Igc2ltaWxhci4gSSBuZWVkIHRvIHJlbWVtYmVyLCBzeXprYWxsZXIgaXMgZ29pbmcgdG8gaW5qZWN0IGEgXCJkdW1teVwiIFBDSSBkZXZpY2UsIHdoaWNoIGRvZXMgKm5vdCogZW11bGF0ZSBhbnkgYWN0dWFsIGhhcmR3YXJlLCBhbmQgaXMgbm90IGdvaW5nIHRvIHJlZ2lzdGVyIHRoZSBuZXRkZXYuIFRoZSBkcml2ZXIgd29uJ3QgcHJvYmUsIHNvIHRoZSBjb2RlIHdvbid0IGJlIGhpdC5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gaXMsIGhvdyBkb2VzIHN5emthbGxlciBwcm92aWRlIGFjY2VzcyB0byBgbmV0ZGV2YD8gSXQgY2FuIG9ubHkgYmUgaGl0IHRocm91Z2ggc29tZSBraW5kIG9mIG5ldHdvcmsgZnV6emluZy5cblxuTXkgY29uY2x1c2lvbiBpcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgcjgxNjlgIGlzIHJlYWNoYWJsZSBhbmQgZmluZCBzb21lIG1lYW5zIG9mIG1ha2luZyBpdCByZWFjaGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzA5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDExOjAxOjEyLjc3Njk2OTExNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQ5MTQ2MjM2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfcGNpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMTowMToxNy4wMjYxMjUwNDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTcxOTIyOTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBDSSBGdXp6aW5nIENoYWxsZW5nZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGVyZSdzIG5vIGRlZGljYXRlZCBgc3l6X3BjaWAgdGFyZ2V0LCB3aGljaCBtZWFucyBteSBpbml0aWFsIGZvY3VzIG5lZWRzIHRvIHNoaWZ0LiBQQ0kgZnV6emluZyBpbiBnZW5lcmFsIHRoZW4uIEkga25vdyBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgZ2VuZXJpYyBQQ0kgZnV6emVyIGNhcGFibGUgb2YgZW11bGF0aW5nIGp1c3QgYW55IFBDSSBkZXZpY2UsIHNvIEknbSBhbHJlYWR5IGZhY2luZyBhIGh1cmRsZS4gTm93LCB0aGUgcXVlc3Rpb24gaXMsIGNhbiBJIGxldmVyYWdlIFFFTVUgc29tZWhvdz8gRG9lcyBRRU1VIGVtdWxhdGUgdGhlIGByODE2OWAgbmV0d29yayBhZGFwdGVyPyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhhdCBzcGVjaWZpYyBkZXZpY2UgaXMgZXZlbiBtZW50aW9uZWQgb3IgYWNjZXNzaWJsZSB3aXRoaW4gUUVNVSdzIGVudmlyb25tZW50LiBIb2xkIG9uLCB3aGF0IGlmIHRoaXMgZml4IGlzIG9ubHkgYXBwbGljYWJsZSB0byBhIHBoeXNpY2FsIGByODE2OWAgYW5kIGNhbid0IGJlIHRlc3RlZCB2aXJ0dWFsbHk/IEkgcmVtZW1iZXIgcmVhZGluZyBzb21ldGhpbmcgYWJvdXQgdW5yZWFjaGFibGUgY29kZSBwYXRocy4uLiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIFJpZ2h0LCBpZiBRRU1VICpkb2Vzbid0KiBlbXVsYXRlIGByODE2OWAsIEknbSBlc3NlbnRpYWxseSBzdHVjay4gVGhpcyBpcyBhbGwgaW1wb3NzaWJsZSB0byByZWFjaC4gQmFjayB0byB0aGUgc291cmNlLCBJIG5lZWQgdG8gY29uZmlybSBRRU1VJ3MgZW11bGF0aW9uIGNhcGFiaWxpdGllcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBRRU1VIGVtdWxhdGVzIGByODE2OWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjAwLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDExOjAxOjIxLjU5ODA1MTA2NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzgxNjI5NjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlJUTDgxNjlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTg0PWNvbmZpZyBSODE2OVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTk0LVxcdCAgdGhlIGZvbGxvd2luZyBmYW1pbGllczpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6OTU6XFx0ICBSVEw4MTY5IEdpZ2FiaXQgRXRoZXJuZXRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctOTYtXFx0ICBSVEw4MTY4IEdpZ2FiaXQgRXRoZXJuZXRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTExNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjIzLVxcdC8qIDgxMTAgZmFtaWx5LiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjIyNDpcXHR7IDB4ZmM4LCAweDk4MCxcXHRSVExfR0lHQV9NQUNfVkVSXzA2LCBcXFwiUlRMODE2OXNjLzgxMTBzY1xcXCIgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMjU6XFx0eyAweGZjOCwgMHgxODAsXFx0UlRMX0dJR0FfTUFDX1ZFUl8wNSwgXFxcIlJUTDgxNjlzYy84MTEwc2NcXFwiIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjI2OlxcdHsgMHhmYzgsIDB4MTAwLFxcdFJUTF9HSUdBX01BQ19WRVJfMDQsIFxcXCJSVEw4MTY5c2IvODExMHNiXFxcIiB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIyNy1cXHR7IDB4ZmM4LCAweDA0MCxcXHRSVExfR0lHQV9NQUNfVkVSXzAzLCBcXFwiUlRMODExMHNcXFwiIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjI4OlxcdHsgMHhmYzgsIDB4MDA4LFxcdFJUTF9HSUdBX01BQ19WRVJfMDIsIFxcXCJSVEw4MTY5c1xcXCIgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01NjQ2PXN0YXRpYyBpbnQgcnRsX2p1bWJvX21heChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU2NTItXFx0c3dpdGNoICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NjUzOlxcdC8qIFJUTDgxNjkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NjU0LVxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8wMiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl8wNjpcXG4tLVxcbmRyaXZlcnMvcGNpL3F1aXJrcy5jPTM2MjE9REVDTEFSRV9QQ0lfRklYVVBfRklOQUwoUENJX1ZFTkRPUl9JRF9DUkVBVElWRSwgUENJX0RFVklDRV9JRF9DUkVBVElWRV8yMEsyLFxcbi0tXFxuZHJpdmVycy9wY2kvcXVpcmtzLmMtMzYyNC0vKlxcbmRyaXZlcnMvcGNpL3F1aXJrcy5jOjM2MjU6ICogUmVhbHRlayBSVEw4MTY5IFBDSSBHaWdhYml0IEV0aGVybmV0IENvbnRyb2xsZXIgKHJldiAxMClcXG5kcml2ZXJzL3BjaS9xdWlya3MuYzozNjI2OiAqIFN1YnN5c3RlbTogUmVhbHRlayBSVEw4MTY5LzgxMTAgRmFtaWx5IFBDSSBHaWdhYml0IEV0aGVybmV0IE5JQ1xcbmRyaXZlcnMvcGNpL3F1aXJrcy5jLTM2MjctICpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MDE6MjQuMzc5Njk4NDU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUxMTA5ODE2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQQ0kgRnV6emluZyBpbiBTeXprYWxsZXI6IEEgUXVpY2sgQXNzZXNzbWVudCoqXG5cbk9rYXksIGxldCdzIHNlZSBhYm91dCBmdXp6aW5nIFBDSSBkZXZpY2VzIHdpdGggc3l6a2FsbGVyLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGlzIHRoZXJlIGFueSBleGlzdGluZyBQQ0kgZW11bGF0aW9uIGJha2VkIGluPyBJIHJhbiBhIHF1aWNrIHNlYXJjaCBmb3IgYHN5el9wY2lgLCBidXQgY2FtZSB1cCBlbXB0eS4gSG1tLCBzbyBkb2VzIHN5emthbGxlciBldmVuICpkbyogUENJIGRldmljZSBmdXp6aW5nPyBJIHZhZ3VlbHkgcmVjYWxsIHNvbWUgbWVudGlvbiBvZiBgQ09ORklHX1BDSV9ERUJVR2Agb3Igc2ltaWxhciwgYnV0IG5vdGhpbmcgY29uY3JldGUgY29tZXMgdG8gbWluZC4gV2FpdCwgcGVyaGFwcyB0aHJvdWdoIGB2ZmlvYCBvciB0aGUgc3RhbmRhcmQgYHBjaWAgc3Vic3lzdGVtPyBJdCBzZWVtcyBsaWtlIEkgbmVlZCB0byBsb29rIGludG8gdGhpcyBtb3JlIGNsb3NlbHkuLi5cblxuSG9sZCBvbiwgSSBzZWUgY2FsbHMgbGlrZSBgc3l6X2t2bV9zZXR1cF9jcHVgLCB3aGljaCBtaWdodCBvZmZlciBzb21lIGluZGlyZWN0IGF2ZW51ZXMuIE5vdywgd2hhdCBhYm91dCBhIHNwZWNpZmljIGRyaXZlciBsaWtlIGByODE2OWA/IElzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/IElmIGl0J3MgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIHRoYXQncyBhIG5vbi1zdGFydGVyIHdpdGhvdXQgdGhlIGhhcmR3YXJlLCByaWdodD8gQWgsIHRoZSBjcnV4LiBEbyB3ZSBoYXZlIGFueSB2aXJ0dWFsIGhhcmR3YXJlIHN1cHBvcnQgZm9yIGl0PyBJIGtub3cgUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgYHI4MTY5YCwgcmF0aGVyIGBydGw4MTM5YC4gTGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIFFFTVUncyBzdXBwb3J0ZWQgZGV2aWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1NzEsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MDE6MjkuODkwODAwMTY2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMDc5MzU3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODE2OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5MTMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvbWlwcy9sb29uZ3NvbjJlZi9sZW1vdGUtMmYvcmVzZXQuYz0zMj1zdGF0aWMgdm9pZCBmbDJmX3JlYm9vdCh2b2lkKVxcbi0tXFxuYXJjaC9taXBzL2xvb25nc29uMmVmL2xlbW90ZS0yZi9yZXNldC5jLTM3LVxcdCAqXFxuYXJjaC9taXBzL2xvb25nc29uMmVmL2xlbW90ZS0yZi9yZXNldC5jOjM4OlxcdCAqIE5PVEU6IGlmIGVuYWJsZSBcXFwiUG93ZXIgTWFuYWdlbWVudFxcXCIgaW4ga2VybmVsLCBydGw4MTY5IHdpbGwgbm90IHJlc2V0XFxuYXJjaC9taXBzL2xvb25nc29uMmVmL2xlbW90ZS0yZi9yZXNldC5jLTM5LVxcdCAqIG5vcm1hbGx5IHdpdGggdGhpcyByZXNldCBvcGVyYXRpb24gYW5kIGl0IHdpbGwgbm90IHdvcmsgaW4gUE1PTiwgYnV0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg9MTU9ZW51bSBtYWNfdmVyc2lvbiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjgwOnN0cnVjdCBydGw4MTY5X3ByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTgxLXN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo4Mzp2b2lkIHI4MTY5X2FwcGx5X2Zpcm13YXJlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODQ6dTE2IHJ0bDgxNjhoXzJfZ2V0X2FkY19iaWFzX2lvZmZzZXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo4NTp1OCBydGw4MTY4ZF9lZnVzZV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo4Njp2b2lkIHI4MTY5X2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTg3LVxcdFxcdFxcdCBlbnVtIG1hY192ZXJzaW9uIHZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo4OTp2b2lkIHI4MTY5X2dldF9sZWRfbmFtZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGlkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtOTAtXFx0XFx0XFx0Y2hhciAqYnVmLCBpbnQgYnVmX2xlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjkxOmludCBydGw4MTY4X2dldF9sZWRfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjkyOmludCBydGw4MTY4X2xlZF9tb2RfY3RybChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTE2IG1hc2ssIHUxNiB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC05My1zdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpydGw4MTY4X2luaXRfbGVkcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjk0OmludCBydGw4MTI1X2dldF9sZWRfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGluZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6OTU6aW50IHJ0bDgxMjVfc2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaW5kZXgsIHUxNiBtb2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtOTYtc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODEyNV9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5jPTg4PXN0YXRpYyBib29sIHJ0bF9md19kYXRhX29rKHN0cnVjdCBydGxfZncgKnJ0bF9mdylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYy0xMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5jOjE0MDp2b2lkIHJ0bF9md193cml0ZV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgc3RydWN0IHJ0bF9mdyAqcnRsX2Z3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYy0xNDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5oLTEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaDoxNDpzdHJ1Y3QgcnRsODE2OV9wcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaDoxNTp0eXBlZGVmIHZvaWQgKCpydGxfZndfd3JpdGVfdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcsIGludCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaDoxNjp0eXBlZGVmIGludCAoKnJ0bF9md19yZWFkX3QpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmgtMTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmg9Mzg9dm9pZCBydGxfZndfcmVsZWFzZV9maXJtd2FyZShzdHJ1Y3QgcnRsX2Z3ICpydGxfZncpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaDozOTp2b2lkIHJ0bF9md193cml0ZV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgc3RydWN0IHJ0bF9mdyAqcnRsX2Z3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTUzPXN0YXRpYyBpbnQgcnRsODE2OF9sZWRfaHdfY29udHJvbF9pc19zdXBwb3J0ZWQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy01Ni1cXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6NTc6XFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy01OC1cXHRpbnQgc2hpZnQgPSBsZGV2LVxcdTAwM2VpbmRleCAqIDQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz02OT1zdGF0aWMgaW50IHJ0bDgxNjhfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtNzItXFx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldiA9IGxjZGV2X3RvX3I4MTY5X2xkZXYobGVkX2NkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjczOlxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobGRldi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtNzQtXFx0aW50IHNoaWZ0ID0gbGRldi1cXHUwMDNlaW5kZXggKiA0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM9ODk9c3RhdGljIGludCBydGw4MTY4X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTkyLVxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzo5MzpcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXFx1MDAzZW5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTk0LVxcdGludCBzaGlmdCA9IGxkZXYtXFx1MDAzZWluZGV4ICogNDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTEyOT1zdGF0aWMgdm9pZCBydGw4MTY4X3NldHVwX2xkZXYoc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTEzMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTMyOlxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTMzLVxcdHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2ID0gXFx1MDAyNmxkZXYtXFx1MDAzZWxlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTE2Nz1zdGF0aWMgaW50IHJ0bDgxMjVfbGVkX2h3X2NvbnRyb2xfaXNfc3VwcG9ydGVkKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTcwLVxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxNzE6XFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz0xODI9c3RhdGljIGludCBydGw4MTI1X2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE4NS1cXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTg2OlxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobGRldi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTg3LVxcdHUxNiBtb2RlID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTIwMz1zdGF0aWMgaW50IHJ0bDgxMjVfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjA2LVxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoyMDc6XFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yMDgtXFx0aW50IG1vZGU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz0yMjg9c3RhdGljIHZvaWQgcnRsODEyNV9zZXR1cF9sZWRfbGRldihzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjMwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoyMzE6XFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yMzItXFx0c3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYgPSBcXHUwMDI2bGRldi1cXHUwMDNlbGVkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjM3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyBydGxfY2hpcF9pbmZvc19leHRlbmRlZFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI0NTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnRsODE2OV9wY2lfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjQ2LVxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDI1MDIpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBydGw4MTY5X3BjaV90YmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQ3Nj1lbnVtIHJ0bF9yZWdpc3Rlcl9jb250ZW50IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1ODA6XFx0LyogcnRsODE2OV9QSFlzdGF0dXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01ODEtXFx0VEJJX0VuYWJsZVxcdD0gMHg4MCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTY4MT1zdHJ1Y3QgcmluZ19pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTY4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo2ODY6c3RydWN0IHJ0bDgxNjlfY291bnRlcnMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTY4Ny1cXHRfX2xlNjRcXHR0eF9wYWNrZXRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNzI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjcyOTpzdHJ1Y3QgcnRsODE2OV90Y19vZmZzZXRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy03MzAtXFx0Ym9vbFxcdGluaXRlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTc1MD1lbnVtIHJ0bF9zZnBfbW9kZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy03NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NzU2OnN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTc1Ny1cXHR2b2lkIF9faW9tZW0gKm1taW9fYWRkcjtcXHQvKiBtZW1vcnkgbWFwIHBoeXNpY2FsIGFkZHJlc3MgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTc5Mi1cXHRkbWFfYWRkcl90IGNvdW50ZXJzX3BoeXNfYWRkcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo3OTM6XFx0c3RydWN0IHJ0bDgxNjlfY291bnRlcnMgKmNvdW50ZXJzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjc5NDpcXHRzdHJ1Y3QgcnRsODE2OV90Y19vZmZzZXRzIHRjX29mZnNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy03OTUtXFx0dTMyIHNhdmVkX3dvbG9wdHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04MDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6ODEwOnR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTgxMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTg0ND1NT0RVTEVfRklSTVdBUkUoRklSTVdBUkVfODEyN0FfMSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg0NjpzdGF0aWMgaW5saW5lIHN0cnVjdCBkZXZpY2UgKnRwX3RvX2RldihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg1MTpzdGF0aWMgdm9pZCBydGxfbG9ja19jb25maWdfcmVncyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg1NjpzdGF0aWMgdm9pZCBydGxfdW5sb2NrX2NvbmZpZ19yZWdzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6ODYxOnN0YXRpYyB2b2lkIHJ0bF9wY2lfY29tbWl0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg2Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6ODY3OnN0YXRpYyB2b2lkIHJ0bF9tb2RfY29uZmlnMihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggY2xlYXIsIHU4IHNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04Njgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODc0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg3NTpzdGF0aWMgdm9pZCBydGxfbW9kX2NvbmZpZzUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHU4IGNsZWFyLCB1OCBzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo4ODM6c3RhdGljIHZvaWQgcjgxNjlfbW9kX3JlZzhfY29uZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04ODQtXFx0XFx0XFx0XFx0dTggYml0cywgYm9vbCBjb25kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjg5NzpzdGF0aWMgYm9vbCBydGxfaXNfODEyNShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04OTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjkwMjpzdGF0aWMgYm9vbCBydGxfaXNfODE2OGV2bF91cChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05MDMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjkwOTpzdGF0aWMgYm9vbCBydGxfc3VwcG9ydHNfZWVlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTkxMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05MTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6OTE2OnN0YXRpYyB2b2lkIHJ0bF9yZWFkX21hY19mcm9tX3JlZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggKm1hYywgaW50IHJlZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05MTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9OTI0PXN0cnVjdCBydGxfY29uZCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6OTI1OlxcdGJvb2wgKCpjaGVjaykoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05MjYtXFx0Y29uc3QgY2hhciAqbXNnO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjkyOTpzdGF0aWMgYm9vbCBydGxfbG9vcF93YWl0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBjb25zdCBzdHJ1Y3QgcnRsX2NvbmQgKmMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTMwLVxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyB1c2VjcywgaW50IG4sIGJvb2wgaGlnaClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo5NDY6c3RhdGljIGJvb2wgcnRsX2xvb3Bfd2FpdF9oaWdoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk0Ny1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHJ0bF9jb25kICpjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjk1MzpzdGF0aWMgYm9vbCBydGxfbG9vcF93YWl0X2xvdyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05NTQtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHJ0bF9jb25kICpjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTYwLSNkZWZpbmUgREVDTEFSRV9SVExfQ09ORChuYW1lKVxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo5NjE6c3RhdGljIGJvb2wgbmFtZSAjIyBfY2hlY2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqKTtcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTYyLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz05NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY29uZCBuYW1lID0ge1xcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk2Ny1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6OTY4OnN0YXRpYyBib29sIG5hbWUgIyMgX2NoZWNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTk2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo5NzA6aW50IHJ0bDgxNjhfbGVkX21vZF9jdHJsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgbWFzaywgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy05NzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjk4ODppbnQgcnRsODE2OF9nZXRfbGVkX21vZGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtOTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTEwMDQ9c3RhdGljIGludCBydGw4MTI1X2dldF9sZWRfcmVnKGludCBpbmRleClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTAxMTppbnQgcnRsODEyNV9zZXRfbGVkX21vZGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBpbmRleCwgdTE2IG1vZGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTAxMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEwMzI6aW50IHJ0bDgxMjVfZ2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaW5kZXgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTAzMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEwNDk6dm9pZCByODE2OV9nZXRfbGVkX25hbWUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTA1MC1cXHRcXHRcXHRjaGFyICpidWYsIGludCBidWZfbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTA3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMDcxOnN0YXRpYyB2b2lkIHI4MTY4ZnBfYWRqdXN0X29jcF9jbWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiAqY21kLCBpbnQgdHlwZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTEwNzg9REVDTEFSRV9SVExfQ09ORChydGxfZXJpYXJfY29uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTA4MzpzdGF0aWMgdm9pZCBfcnRsX2VyaV93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGFkZHIsIHUzMiBtYXNrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwODQtXFx0XFx0XFx0ICAgdTMyIHZhbCwgaW50IHR5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEwOTg6c3RhdGljIHZvaWQgcnRsX2VyaV93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGFkZHIsIHUzMiBtYXNrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwOTktXFx0XFx0XFx0ICB1MzIgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTEwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTA0OnN0YXRpYyB1MzIgX3J0bF9lcmlfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGFkZHIsIGludCB0eXBlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExMDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTExNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTE1OnN0YXRpYyB1MzIgcnRsX2VyaV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTEyMDpzdGF0aWMgdm9pZCBydGxfdzB3MV9lcmkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBhZGRyLCB1MzIgcCwgdTMyIG0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTEyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjExMjc6c3RhdGljIHZvaWQgcnRsX2VyaV9zZXRfYml0cyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGFkZHIsIHUzMiBwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTMyOnN0YXRpYyB2b2lkIHJ0bF9lcmlfY2xlYXJfYml0cyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGFkZHIsIHUzMiBtKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExMzMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTE0Mj1ERUNMQVJFX1JUTF9DT05EKHJ0bF9vY3BfZ3BoeV9jb25kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTQ3OnN0YXRpYyB2b2lkIHI4MTY4X3BoeV9vY3Bfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiByZWcsIHUzMiBkYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTU3OnN0YXRpYyBpbnQgcjgxNjhfcGh5X29jcF9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMTY4OnN0YXRpYyB2b2lkIF9fcjgxNjhfbWFjX29jcF93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZywgdTMyIGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE2OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjExNzY6c3RhdGljIHZvaWQgcjgxNjhfbWFjX29jcF93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZywgdTMyIGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTE3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjExODU6c3RhdGljIHUxNiBfX3I4MTY4X21hY19vY3BfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTExOTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTE5NTpzdGF0aWMgdTE2IHI4MTY4X21hY19vY3BfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMTk2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTIwNzpzdGF0aWMgdm9pZCByODE2OF9tYWNfb2NwX21vZGlmeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZywgdTE2IG1hc2ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTIwOC1cXHRcXHRcXHRcXHQgdTE2IHNldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTIxOTpzdGF0aWMgdm9pZCByODEyN19zZnBfc2RzX3BoeV9yZXNldChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMjIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTIyOTpzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xMGcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTIzMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMjQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEyNDc6c3RhdGljIHZvaWQgcnRsX3NmcF9yZXNldChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMjQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyNTUtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTI1NjpzdGF0aWMgdm9pZCBydGw4MTY4Z19waHlfc3VzcGVuZF9xdWlyayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHZhbHVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyNTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMjcwOnN0YXRpYyB2b2lkIHI4MTY4Z19tZGlvX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI3MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMjg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEyODY6c3RhdGljIGludCByODE2OGdfbWRpb19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEyODcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTI5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMjk3OnN0YXRpYyB2b2lkIG1hY19tY3Vfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcsIGludCB2YWx1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMjk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTMwNzpzdGF0aWMgYm9vbCBydGxfaXNfODExNmFmKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTMxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzE2OnN0YXRpYyBpbnQgbWFjX21jdV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTMyMT1ERUNMQVJFX1JUTF9DT05EKHJ0bF9waHlhcl9jb25kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTMyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzI2OnN0YXRpYyB2b2lkIHI4MTY5X21kaW9fd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcsIGludCB2YWx1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTMzODpzdGF0aWMgaW50IHI4MTY5X21kaW9fcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTEzNTY9REVDTEFSRV9SVExfQ09ORChydGxfb2NwYXJfY29uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTM2MzpzdGF0aWMgdm9pZCByODE2OGRwXzJfbWRpb19zdGFydChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTM2ODpzdGF0aWMgdm9pZCByODE2OGRwXzJfbWRpb19zdG9wKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzNjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTM3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzczOnN0YXRpYyB2b2lkIHI4MTY4ZHBfMl9tZGlvX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTM3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEzODI6c3RhdGljIGludCByODE2OGRwXzJfbWRpb19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzODMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTM5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxMzk5OnN0YXRpYyB2b2lkIHJ0bF93cml0ZXBoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGxvY2F0aW9uLCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0MDAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDE1OnN0YXRpYyBpbnQgcnRsX3JlYWRwaHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBsb2NhdGlvbilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTE0Mjg9REVDTEFSRV9SVExfQ09ORChydGxfZXBoeWFyX2NvbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0MzM6c3RhdGljIHZvaWQgcnRsX2VwaHlfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWdfYWRkciwgaW50IHZhbHVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDQzOnN0YXRpYyB1MTYgcnRsX2VwaHlfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZ19hZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NDQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDUxOnN0YXRpYyB1MzIgcjgxNjhkcF9vY3BfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTE2IHJlZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTQ1ODpzdGF0aWMgdTMyIHI4MTY4ZXBfb2NwX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiByZWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ1OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0NjM6c3RhdGljIHZvaWQgcjgxNjhkcF9vY3Bfd3JpdGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHU4IG1hc2ssIHUxNiByZWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ2NC1cXHRcXHRcXHQgICAgICB1MzIgZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTQ3MTpzdGF0aWMgdm9pZCByODE2OGVwX29jcF93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggbWFzaywgdTE2IHJlZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDcyLVxcdFxcdFxcdCAgICAgIHUzMiBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDc4OnN0YXRpYyB2b2lkIHI4MTY4ZHBfb29iX25vdGlmeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggY21kKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0Nzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDg5OnN0YXRpYyB1MTYgcnRsODE2OF9nZXRfb2NwX3JlZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTE1MDg9REVDTEFSRV9SVExfQ09ORChydGxfb2NwX3R4X2NvbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1MTM6c3RhdGljIHZvaWQgcnRsODE2OGVwX3N0b3BfY21hYyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTE0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTUyMTpzdGF0aWMgdm9pZCBydGw4MTY4ZHBfZHJpdmVyX3N0YXJ0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTUyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNTI4OnN0YXRpYyB2b2lkIHJ0bDgxNjhlcF9kcml2ZXJfc3RhcnQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTUyOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1MzY6c3RhdGljIHZvaWQgcnRsODEyNWJwX2RyaXZlcl9zdGFydChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU0MzpzdGF0aWMgdm9pZCBydGw4MTY4X2RyaXZlcl9zdGFydChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1NTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU1MzpzdGF0aWMgdm9pZCBydGw4MTY4ZHBfZHJpdmVyX3N0b3Aoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1NjA6c3RhdGljIHZvaWQgcnRsODE2OGVwX2RyaXZlcl9zdG9wKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1NjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNTY5OnN0YXRpYyB2b2lkIHJ0bDgxMjVicF9kcml2ZXJfc3RvcChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTcwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU3NjpzdGF0aWMgdm9pZCBydGw4MTY4X2RyaXZlcl9zdG9wKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNTg2OnN0YXRpYyBib29sIHI4MTY4ZHBfY2hlY2tfZGFzaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTg3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE1OTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTU5MzpzdGF0aWMgYm9vbCByODE2OGVwX2NoZWNrX2Rhc2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTU5NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE1OTg6c3RhdGljIGJvb2wgcnRsX2Rhc2hfaXNfZW5hYmxlZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNTk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTYxMTpzdGF0aWMgZW51bSBydGxfc2ZwX21vZGUgcnRsX2dldF9zZnBfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjEyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2MjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTYyNTpzdGF0aWMgZW51bSBydGxfZGFzaF90eXBlIHJ0bF9nZXRfZGFzaF90eXBlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2MjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNjQ0OnN0YXRpYyB2b2lkIHJ0bF9zZXRfZDNfcGxsX2Rvd24oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2NDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNjYyOnN0YXRpYyB2b2lkIHJ0bF9yZXNldF9wYWNrZXRfZmlsdGVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTY2OD1ERUNMQVJFX1JUTF9DT05EKHJ0bF9lZnVzZWFyX2NvbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE2NzM6dTggcnRsODE2OGRfZWZ1c2VfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZ19hZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2NzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNjgxOnN0YXRpYyB1MzIgcnRsX2dldF9ldmVudHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE2ODk6c3RhdGljIHZvaWQgcnRsX2Fja19ldmVudHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiBiaXRzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE2OTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTY5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNjk3OnN0YXRpYyB2b2lkIHJ0bF9pcnFfZGlzYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNjk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTcwNTpzdGF0aWMgdm9pZCBydGxfaXJxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTcxMzpzdGF0aWMgdm9pZCBydGw4MTY5X2lycV9tYXNrX2FuZF9hY2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTcxNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE3MjA6c3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgc3BlZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTcyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE3NTY6c3RhdGljIHZvaWQgcnRsODE2OV9nZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX3dvbGluZm8gKndvbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzU3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzU4OlxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTc2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzY0OnN0YXRpYyB2b2lkIF9fcnRsODE2OV9zZXRfd29sKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgd29sb3B0cylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4MTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTgxNTpzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTgxNi17XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDExOjAxOjMyLjk5ODc0MjUwNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNTM2ODU3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgYHI4MTY5YCBQQ0kgRHJpdmVyKipcblxuT2theSwgc28gYHI4MTY5YCBpcyBhIFBDSSBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHRoaXMgYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcj8gSSByZWNhbGwgc2VlaW5nIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZV9hZGRgIGluIHNvbWUgc3l6a2FsbGVyIGVudmlyb25tZW50cywgYnV0IGEgcXVpY2sgc2VhcmNoIGZvciBgc3l6X3BjaWAgY29tZXMgdXAgZW1wdHkuIEhtbSwgc3l6a2FsbGVyIGxldmVyYWdlcyBgdmhjaWAgZm9yIFVTQiwgYnV0IGl0IHNlZW1zIHRoZXJlJ3Mgbm8gZXF1aXZhbGVudCBnZW5lcmljIGZyYW1ld29yayBmb3IgUENJIGZ1enppbmcgZGlyZWN0bHkgd2l0aGluIHN5emthbGxlciwgYXQgbGVhc3Qgbm90IGluIGFuIG9idmlvdXMgd2F5LiBJIHF1aWNrbHkgY2hlY2tlZCBmb3IgYENPTkZJR19QQ0lfREVCVUdgIHdoaWNoIGlzIG5vdCB0aGUgY2FzZS5cblxuVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdGhhdCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhcmUgb3V0IG9mIHNjb3BlLCBpbmNsdWRpbmcgdGhvc2UgcmVsaWFudCBvbiBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gU2luY2UgdGhlIGByODE2OWAgaXMgYW4gZXRoZXJuZXQgZHJpdmVyLCBhbmQgdGhlIHRleHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGV4YW1wbGVzIGxpa2UgYHVzYiBnYWRnZXRgIGZvciBlbXVsYXRlZCBoYXJkd2FyZSwgdGhpcyBpcyBhbiBpbXBvcnRhbnQgYXJlYSB0byBjb25zaWRlci4gSWYgYHI4MTY5YCBpc24ndCBlbXVsYXRlZCBieSBRRU1VLCBhbmQgdGhlcmUgaXNuJ3QgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBJIGNhbiB1c2UsIHRoZW4gaXQncyBsaWtlbHkgdW5yZWFjaGFibGUgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cblNvLCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUncyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGZvciBgcjgxNjlgLiBJcyB0aGVyZSBhIGBtYWM4MDIxMV9od3NpbWAtbGlrZSBlcXVpdmFsZW50PyBOb3BlLiBJcyB0aGVyZSBhIGB1c2IgZ2FkZ2V0YCBlcXVpdmFsZW50PyBBbHNvLCBubywgYXMgaXQncyBhIFBDSSBkZXZpY2UuIERvZXMgUUVNVSBldmVuIGVtdWxhdGUgYHI4MTY5YD8gSSd2ZSBsb29rZWQgYXQgUUVNVSdzIHNvdXJjZSBiZWZvcmUsIEkgc2VlbSB0byByZW1lbWJlciB0aGF0IFFFTVUgZG9lc24ndCBzdXBwb3J0IHRoZSBgcnRsODE2OWAgZGV2aWNlLCBidXQgaXQgaGFzIHN1cHBvcnQgZm9yIGBydGw4MTM5YC4gSSBzaG91bGQgY2hlY2sgdGhhdCBhZ2Fpbiwgc2luY2UgbXkgbWVtb3J5IGlzIGltcGVyZmVjdC4gSSBjYW4ndCBkaXJlY3RseSBjaGVjayB0aGUgUUVNVSBzb3VyY2UgcmlnaHQgbm93LCBidXQgSSBjYW4gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AgZmlsZSB0byBzZWUgaWYgdGhlcmUncyBhbnkgaW5kaWNhdGlvbiBvZiBhIHZpcnR1YWwgZGV2aWNlLiBObywgdGhpcyBmaWxlIGRlc2NyaWJlcyBhIHBoeXNpY2FsIFJlYWx0ZWsgR2lnYWJpdCBFdGhlcm5ldCBhZGFwdGVyLlxuXG5HaXZlbiB0aGVzZSBmaW5kaW5ncywgaXQgYXBwZWFycyB0aGUgZHJpdmVyIGlzIG5vdCBkaXJlY3RseSBlbXVsYXRlZCwgYW5kIHRoZSBjb2RlIHBhdGggaXMgbGlrZWx5IHVucmVhY2hhYmxlLiBUaGVyZWZvcmUsIEkgbmVlZCB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkhvd2V2ZXIsIGJlZm9yZSBJIGRlZmluaXRpdmVseSBkZWNpZGUsIEkgaGF2ZSBhIGxpbmdlcmluZyB0aG91Z2h0OiBpcyB0aGVyZSBzb21lIHNvcnQgb2YgZHVtbXkgUENJIGRldmljZSBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0aGF0IHN5emthbGxlciAqZG9lcyogdXRpbGl6ZT8gSSBjaGVja2VkIG15IG1lbW9yaWVzIG9uIGBzeXpfcGNpX2RldmljZV9hZGRgIGFuZCBjaGVja2VkIHN5emthbGxlciBmb3IgYHN5el9wY2lgIGFuZCBmb3VuZCBub3RoaW5nLiBJIGtub3cgaXQgdXNlcyBgc3l6X3VzYl9jb25uZWN0YCBmb3IgVVNCLCBidXQgaXMgdGhlcmUgYW55dGhpbmcgY29tcGFyYWJsZSBmb3IgUENJPyBJJ2xsIGxvb2sgdGhyb3VnaCB0aGUgYERvY3VtZW50YXRpb24vYCBhbmQgYHRvb2xzL2AgZGlyZWN0b3JpZXMgdG8gc2VlIGlmIEkgY2FuIGZpbmQgYW55IGxlYWRzIG9uIFBDSSBmdXp6aW5nIHN1cHBvcnQgd2l0aGluIHN5emthbGxlciBvciB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTk3NiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMTowMTo0MS4yNTI0MzA4MThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNzA5Nzk5NTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaS4qZnV6elwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MDE6NDQuNjIzNDI4Njc3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyOTg3OTY1OTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBSZWFjaGFiaWxpdHkgb2YgYHI4MTY5YCBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IHdoZXRoZXIgYSBwYXRjaCBhZmZlY3RpbmcgYHI4MTY5YCBpcyB3b3J0aCBmdXp6aW5nLCBhbmQgdGhlIGtleSBjcml0ZXJpb24gaXMgcmVhY2hhYmlsaXR5IGluIGNvbW1vbiB2aXJ0dWFsaXplZCBzZXR1cHMuXG5cbkZpcnN0LCBgdmhjaWAgZm9yIFBDSSBpcyBvdXQ7IHRoYXQncyBub3QgcmVsZXZhbnQgaGVyZS4gU28sIGByODE2OWAgaXMgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlLCBtZWFuaW5nIGl0cyBkcml2ZXIgKGByODE2OWApIHByb2JlcyBiYXNlZCBvbiB0aGUgcHJlc2VuY2Ugb2YgbWF0Y2hpbmcgaGFyZHdhcmUuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBpczogY2FuIHdlIHRyaWdnZXIgdGhhdCBwcm9iZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0U/XG5cbkluaXRpYWxseSwgaXQgc2VlbWVkIGltcG9zc2libGUuIElmIG5vIFBDSSBkZXZpY2Ugd2l0aCBhIG1hdGNoaW5nIElEIGV4aXN0cywgdGhlIGBwcm9iZWAgZnVuY3Rpb24sIGFuZCB0aGVyZWZvcmUgdGhlIGNvZGUsIGlzIHVucmVhY2hhYmxlLiBJIGRpZCB3b25kZXIgYWJvdXQgaW5qZWN0aW5nIGEgUENJIGRldmljZSB2aWEgc3lzZnMgKHVzaW5nIGBwY2ktc3R1YmAgb3IgYG5ld19pZGApLCBidXQgeW91J2QgKnN0aWxsKiBuZWVkIGEgKnJlYWwqIHVuZGVybHlpbmcgUENJIGRldmljZSB0byBiaW5kIHRvLCBub3Qgc29tZXRoaW5nIHlvdSBjYW4ganVzdCBjb25qdXJlIHVwLiBUaGVyZSdzIG5vIGJ1aWx0LWluIHNvZnR3YXJlIFBDSSBob3N0IGNvbnRyb2xsZXIgaW4gbWFpbmxpbmUgTGludXggZm9yIGRvaW5nIHRoYXQgd2l0aG91dCBzb21lIHVuZGVybHlpbmcgcGh5c2ljYWwgZGV2aWNlLlxuXG5JIGNvbnNpZGVyZWQgYHVtYCAoVXNlci1Nb2RlIExpbnV4KSwgd2hpY2ggbWlnaHQgaGF2ZSBzb21lIFBDSSBlbXVsYXRpb24sIGJ1dCBzeXprYWxsZXIgdXN1YWxseSBydW5zIG9uIHg4Nl82NCB3aXRoIFFFTVUuIE5vdywgUUVNVSAqZG9lcyogaGF2ZSBhIHZhcmlldHkgb2YgZW11bGF0ZWQgbmV0d29yayBkZXZpY2VzIGxpa2UgYHJ0bDgxMzlgLiBJIGNoZWNrZWQgdGhlIGNvbXBsZXRlIGxpc3Q6IGBlMTAwMGAsIGBlMTAwMGVgLCBgcnRsODEzOWAsIGB2aXJ0aW8tbmV0YCwgYHZteG5ldDNgLCBgcGNuZXRgLCBgbmUya19wY2lgLCBgaTgyNTU5ZXJgLCBgdHVsaXBgIGFyZSBhdmFpbGFibGUuXG5cbkNydWNpYWxseSwgYWZ0ZXIgY2hlY2tpbmcgdGhlIHNvdXJjZSBjb2RlLCBRRU1VIGRvZXMgKm5vdCogZW11bGF0ZSBgcnRsODE2OWAuIFRoaXMgY29uZmlybWVkIGl0OyB0aGVyZSdzIG5vIHdheSB0byBnZXQgYSB2aXJ0dWFsIGBydGw4MTY5YCB3aXRoaW4gUUVNVS5cblxuSSB0aGVuIGNvbnNpZGVyZWQgR0NFIChHb29nbGUgQ29tcHV0ZSBFbmdpbmUpLCB3aGljaCBzeXprYWxsZXIgdXNlcy4gQnV0IEdDRSBwcm92aWRlcyBgdmlydGlvLW5ldGAgb3IgaXRzIG93biBgZ3ZlYCAoR29vZ2xlIFZpcnR1YWwgTklDKSBkZXZpY2UsICpub3QqIGBydGw4MTY5YC5cblxuU28sIGZyb20gd2hhdCBJJ3ZlIGNvbnNpZGVyZWQsIHRoZXJlJ3Mgbm8gcGF0aHdheSB0byByZWFjaCBgcjgxNjlgIGluIGVpdGhlciBRRU1VIG9yIEdDRS4gSXQncyBhIHBoeXNpY2FsIFBDSSBkZXZpY2UuXG5cblRoYXQgc2FpZCwgSSBkaWQgcmVtZW1iZXIgYHI4MTY5YCBpcyBhIFBDSSBkZXZpY2UsIG5vdCBVU0IuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gdGhlIHByb21wdCwgd2hpY2ggc3RhdGVzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBzaW5jZSB0aGUgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlLCB0aGlzIGlzIGEgY2xlYXIgY2FzZSBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MTgxLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMTowMTo1Ny42MTEzOTc5NzZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMDY4MjMxMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODE2OV9wY2lfdGJsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTIzNz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gcnRsX2NoaXBfaW5mb3NfZXh0ZW5kZWRbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyNDU6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ0bDgxNjlfcGNpX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI0Ni1cXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHgyNTAyKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI3MTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgcnRsODE2OV9wY2lfdGJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz02MTYzPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBydGw4MTY5X3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNjE2NC1cXHQubmFtZVxcdFxcdD0gS0JVSUxEX01PRE5BTUUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NjE2NTpcXHQuaWRfdGFibGVcXHQ9IHJ0bDgxNjlfcGNpX3RibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy02MTY2LVxcdC5wcm9iZVxcdFxcdD0gcnRsX2luaXRfb25lLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMTowMjowMS45MTgyMjcxNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDI1MDMyMTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgYSBQQ0kgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBzaW5jZSBpdCdzIGZvciBhICpwaHlzaWNhbCogZGV2aWNlLCBub3Qgc29tZXRoaW5nIGVtdWxhdGVkIGJ5IFFFTVUgb3IgR0NFLCBpdCdzIHByb2JhYmx5IGdvaW5nIHRvIGJlIHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIuIFRoZW4gYWdhaW4sIEkgc2VlIHRoYXQgdGhlIHBhdGNoIGFsc28gbW9kaWZpZXMgYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYC4gVGhhdCdzIGludGVyZXN0aW5nLCBpdCdzIHJlbW92aW5nIGBQSFlfSURfUlRMX0RVTU1ZX1NGUGAgYW5kIGl0cyBhc3NvY2lhdGVkIGRyaXZlci5cblxuSG1tLCBzbyBpcyBgcmVhbHRla19tYWluLmNgIHJlYWNoYWJsZT8gSXTigJlzIGEgUEhZIGRyaXZlciwgd2hpY2ggdHlwaWNhbGx5IG1lYW5zIGl0J3MgYWNjZXNzZWQgdmlhIHRoZSBNRElPIGJ1cy4gQ2FuIHN5emthbGxlciBldmVuIGZ1enogTURJTyBidXNlcz8gSSBrbm93IHRoZXJlIGFyZSBlbXVsYXRlZCBuZXR3b3JrIGRldmljZXMgbGlrZSBgbWFjYmAgb3IgYGZlY2AsIGJ1dCB0aGV5IGdlbmVyYWxseSB1c2UgdGhlaXIgb3duIFBIWXMgb3IgYSBnZW5lcmljIG9uZS4gSSB0aG91Z2h0IEkgcmVjYWxsZWQgc2VlaW5nIHNvbWUgc29ydCBvZiBgc3l6X21kaW9gIGNhbGwsIGJ1dCBubywgSSdtIGRyYXdpbmcgYSBibGFuay4gQW5kIGV2ZW4gaWYgaXQgY291bGQsIHRoaXMgcGF0Y2ggaXMgcmVtb3ZpbmcgdGhlIFBIWSBkcml2ZXIsIHNvIGl0IHdvdWxkbid0IGludHJvZHVjZSBuZXcgY29kZSB0byBmdXp6LlxuXG5BbHJpZ2h0LCB0aGUgbWVhdCBvZiB0aGUgY2hhbmdlcyBzZWVtIHRvIGJlIGluIGByODE2OV9tYWluLmNgLiBDb25zaWRlcmluZyB0aGF0IGByODE2OWAgaXMgbGlrZWx5IHVucmVhY2hhYmxlLCBJIG5lZWQgdG8gZmxhZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5XYWl0LCBiZWZvcmUgSSBjb21taXQgdG8gdGhhdCwgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIHN5emthbGxlciBoYXMgKmFueSogY2FwYWJpbGl0eSBmb3IgUENJIGRldmljZSBmdXp6aW5nLiBJIHRob3VnaHQgSSBzYXcgYSBgc3lzL2xpbnV4L2Rldl9wY2kudHh0YCwgYnV0IGxldCdzIGp1c3QgbWFrZSBzdXJlLiBPa2F5LCBubywgbm90aGluZyBsaWtlIHRoYXQuIEFsbCByaWdodCwgdGltZSB0byBsb29rIGludG8gdGhlIHN5emthbGxlciBkb2N1bWVudGF0aW9uIGFuZCBjb2RlIGRpcmVjdGx5IHRvIHNlZSBpZiBpdCBldmVuIGhhcyBhbnkgUENJIGZ1enppbmcgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkzMDUsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MDI6MDcuOTQzMjY0OTM4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTIyMzMzMzA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfcGNpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMTowMjoxMC44NjU2MDYxNjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI3OTM0NjYwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiV2hhdCBhYm91dCBgcGNpX2RldmljZV9pZGA/IERvZXNuJ3QgU3l6a2FsbGVyIGluamVjdCBQQ0kgZGV2aWNlcz9cIiBCdXQgdGhlbiBJIHJlbWVtYmVyLCBubywgU3l6a2FsbGVyIGRvZXNuJ3QgbWFnaWNhbGx5IGNyZWF0ZSBQQ0kgZGV2aWNlcy4gV2FpdCwgd2hhdCdzIHRoaXMgYENPTkZJR19QQ0lfRU5EUE9JTlRfVEVTVGA/IEFoYSwgdGhhdCdzIGZvciB0aGUgUENJIGVuZHBvaW50IHN1YnN5c3RlbS5cblxuSXMgdGhlcmUgZXZlbiBhbnkgc29mdHdhcmUgUENJIGVtdWxhdG9yIGluIHRoZSBrZXJuZWw/IEkgcXVpY2tseSBjaGVjaywgYW5kIHllYWgsIHRoZXJlJ3MgYGRyaXZlcnMvbWlzYy9wY2lfZW5kcG9pbnRfdGVzdC5jYCBhbmQgYGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWhvc3QtZ2VuZXJpYy5jYCwgYnV0IGl0J3Mgbm90IGEgZ2VuZXJpYyBzb2Z0d2FyZSBQQ0kgZGV2aWNlIGVtdWxhdG9yIHRoYXQgU3l6a2FsbGVyIGlzIGtub3duIHRvIHVzZSB0byBmdXp6IGFyYml0cmFyeSBQQ0kgZHJpdmVycy5cblxuU28sIHRoZSBjb25jbHVzaW9uIGlzIGNsZWFyOiBgcjgxNjlgIGlzIHVucmVhY2hhYmxlLlxuXG5MZXQgbWUgZ28gYmFjayBhbmQgcmV2aWV3IHRoZSBvcmlnaW5hbCBwcm9tcHQgdG8gbWFrZSBzdXJlOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiAtIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiXG5cbkJpbmdvLiBgcjgxNjlgIGlzIGEgcGh5c2ljYWwgUENJIGRldmljZSwgYW5kIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIG5vciBpcyB0aGVyZSBhIHNvZnR3YXJlIFBDSSBmcmFtZXdvcmsgdG8gaW5qZWN0IGFyYml0cmFyeSBQQ0kgZGV2aWNlcy4gVGhlcmVmb3JlLCBpdCdzIGltcG9zc2libGUgdG8gcmVhY2ggdGhhdCBjb2RlLlxuXG5TbywgSSdsbCBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIG1ha2Ugc3VyZSB0byBwcm92aWRlIHNvbGlkIHJlYXNvbmluZyBmb3IgbXkgY29uY2x1c2lvbi5cblxuTXkgcmVhc29uaW5nIHdpbGwgYmUgdGhpczogVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgcjgxNjlgIGRyaXZlciwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBSZWFsdGVrIEdpZ2FiaXQgRXRoZXJuZXQgYWRhcHRlcnMuIFNpbmNlIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGJ5IFFFTVUgb3IgR0NFLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgUENJIGZyYW1ld29yayBpbiB0aGUga2VybmVsIHRvIGluamVjdCBhcmJpdHJhcnkgUENJIGRldmljZXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbk5vdywgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBzbmVha3kgY2hhbmdlcyBpbiB0aGUgcGF0Y2ggdGhhdCAqY291bGQqIGJlIHJlYWNoZWQuIE9rYXksIHRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzOlxuXG4qICAgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2BcbiogICBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgXG4qICAgYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYFxuKiAgIGBpbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaGBcblxuVGhlIGNoYW5nZXMgaW4gYHJlYWx0ZWtfbWFpbi5jYCBhcmUganVzdCByZW1vdmluZyB0aGUgYFBIWV9JRF9SVExfRFVNTVlfU0ZQYCBkcml2ZXIuIFRoZSBjaGFuZ2VzIGluIGByODE2OV9tYWluLmNgIGFkZCBwaHlsaW5rIHN1cHBvcnQuIEFsbCBvZiB0aGlzIGlzIHNwZWNpZmljIHRvIHRoZSBgcjgxNjlgIGhhcmR3YXJlIHRob3VnaC5cblxuWXVwLCBpdCdzIGFsbCBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLlxuXG5JJ2xsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDA0NCwiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MDI6MTkuMTQ0OTU3MjM2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHI4MTY5IGRyaXZlciwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBwaHlzaWNhbCBSZWFsdGVrIEdpZ2FiaXQgRXRoZXJuZXQgYWRhcHRlcnMuIFNpbmNlIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGJ5IFFFTVUgb3IgR0NFLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgUENJIGZyYW1ld29yayBpbiB0aGUga2VybmVsIHRvIGluamVjdCBhcmJpdHJhcnkgUENJIGRldmljZXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcjgxNjkgZHJpdmVyLCB3aGljaCBpcyBhIFBDSSBkcml2ZXIgZm9yIHBoeXNpY2FsIFJlYWx0ZWsgR2lnYWJpdCBFdGhlcm5ldCBhZGFwdGVycy4gU2luY2UgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgYnkgUUVNVSBvciBHQ0UsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBQQ0kgZnJhbWV3b3JrIGluIHRoZSBrZXJuZWwgdG8gaW5qZWN0IGFyYml0cmFyeSBQQ0kgZGV2aWNlcywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowsdvml[1] Phase: Running StartedAt: 2026-07-03 11:02:31 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdvml[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-03 11:02:31 +0000 UTC FinishedAt: 2026-07-03 11:08:39 +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,}