Name: series-workflowbkl6m Phase: Failed StartedAt: 2026-07-07 15:40:40 +0000 UTC FinishedAt: 2026-07-07 16:08:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbkl6m[0] Phase: Succeeded StartedAt: 2026-07-07 15:40:40 +0000 UTC FinishedAt: 2026-07-07 16:07:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbkl6m[0].run-triage Phase: Succeeded StartedAt: 2026-07-07 15:40:40 +0000 UTC FinishedAt: 2026-07-07 16:07:44 +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+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBoYXJkd2FyZS1zcGVjaWZpYyB0byBOWFAgU29Dcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhYjU3ZTY4N2YzM2UwNzgzNzlhODllMmIyZmQ1Y2EzYjQ0NzFlMTIzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNjowNjo1MiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oXG5pbmRleCAwNGE1ZGQ1ZWE2Yzc0Yy4uODgzOWNmYjQ5YmNmZTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmhcbkBAIC0xLDUgJiM0MzsxLDUgQEBcbiAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAmIzQzOyBPUiBCU0QtMy1DbGF1c2UpICovXG4tLyogQ29weXJpZ2h0IDIwMTctMjAxOSBOWFAgKi9cbiYjNDM7LyogQ29weXJpZ2h0IDIwMTctMjAxOSwgMjAyNS0yMDI2IE5YUCAqL1xuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3RpbWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wY2kuaFx1MDAzZVxuQEAgLTMyNCw4ICYjNDM7MzI0LDYgQEAgc3RydWN0IGVuZXRjX3NpIHtcbiBcdGNvbnN0IHN0cnVjdCBlbmV0Y19kcnZkYXRhICpkcnZkYXRhO1xuIFx0Y29uc3Qgc3RydWN0IGVuZXRjX3NpX29wcyAqb3BzO1xuIFxuLVx0c3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndvcmtxdWV1ZTtcbi1cdHN0cnVjdCB3b3JrX3N0cnVjdCByeF9tb2RlX3Rhc2s7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3Jvb3Q7XG4gXHRzdHJ1Y3QgZW5ldGNfbXNnX3N3YmQgbXNnOyAvKiBPbmx5IHZhbGlkIGZvciBWU0kgKi9cbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9kZWJ1Z2ZzLmNcbmluZGV4IDFiMTU5MWRjZTczZDRiLi41MDI5MDM4YmY5OWZhYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfZGVidWdmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2RlYnVnZnMuY1xuQEAgLTI4LDE1ICYjNDM7MjgsMTQgQEAgc3RhdGljIHZvaWQgZW5ldGNfc2hvd19zaV9tYWNfaGFzaF9maWx0ZXIoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgaSlcbiBcbiBzdGF0aWMgaW50IGVuZXRjX21hY19maWx0ZXJfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG4ge1xuLVx0c3RydWN0IGVuZXRjX3NpICpzaSA9IHMtXHUwMDNlcHJpdmF0ZTtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZzaS1cdTAwM2VodztcbiYjNDM7XHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihzLVx1MDAzZXByaXZhdGUpO1xuJiM0MztcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VodztcbiYjNDM7XHRpbnQgbnVtX3NpID0gcGYtXHUwMDNldG90YWxfdmZzICYjNDM7IDE7XG4gXHRzdHJ1Y3QgbWFmdF9lbnRyeV9kYXRhIG1hZnQ7XG4tXHRzdHJ1Y3QgZW5ldGNfcGYgKnBmO1xuLVx0aW50IGksIGVyciwgbnVtX3NpO1xuLVx0dTMyIHZhbDtcbi1cbi1cdHBmID0gZW5ldGNfc2lfcHJpdihzaSk7XG4tXHRudW1fc2kgPSBwZi1cdTAwM2VjYXBzLm51bV92c2kgJiM0MzsgMTtcbiYjNDM7XHRzdHJ1Y3QgbnRtcF91c2VyICp1c2VyO1xuJiM0MztcdHUzMiB2YWwsIGVudHJ5X2lkO1xuJiM0MztcdGludCBlcnIgPSAwO1xuJiM0MztcdGludCBpO1xuIFxuIFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSVBNTVIpO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3NpOyBpJiM0MzsmIzQzOykge1xuQEAgLTUwLDMxICYjNDM7NDksMzggQEAgc3RhdGljIGludCBlbmV0Y19tYWNfZmlsdGVyX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3NpOyBpJiM0MzsmIzQzOylcbiBcdFx0ZW5ldGNfc2hvd19zaV9tYWNfaGFzaF9maWx0ZXIocywgaSk7XG4gXG4tXHRpZiAoIXBmLVx1MDAzZW51bV9tZmUpXG4tXHRcdHJldHVybiAwO1xuJiM0MztcdHVzZXIgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VudG1wX3VzZXI7XG4mIzQzO1x0cnRubF9sb2NrKCk7XG4mIzQzO1xuJiM0MztcdGlmIChiaXRtYXBfZW1wdHkodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAsIHVzZXItXHUwMDNlbWFmdF9udW1fZW50cmllcykpXG4mIzQzO1x0XHRnb3RvIHVubG9ja19ydG5sO1xuIFxuIFx0LyogTUFDIGFkZHJlc3MgZmlsdGVyIHRhYmxlICovXG4gXHRzZXFfcHV0cyhzLCBcJiMzNDtNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGVcXG5cJiMzNDspO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNlbnVtX21mZTsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRmb3JfZWFjaF9zZXRfYml0KGVudHJ5X2lkLCB1c2VyLVx1MDAzZW1hZnRfZWlkX2JpdG1hcCxcbiYjNDM7XHRcdFx0IHVzZXItXHUwMDNlbWFmdF9udW1fZW50cmllcykge1xuIFx0XHRtZW1zZXQoXHUwMDI2bWFmdCwgMCwgc2l6ZW9mKG1hZnQpKTtcbi1cdFx0ZXJyID0gbnRtcF9tYWZ0X3F1ZXJ5X2VudHJ5KFx1MDAyNnNpLVx1MDAzZW50bXBfdXNlciwgaSwgXHUwMDI2bWFmdCk7XG4mIzQzO1x0XHRlcnIgPSBudG1wX21hZnRfcXVlcnlfZW50cnkodXNlciwgZW50cnlfaWQsIFx1MDAyNm1hZnQpO1xuIFx0XHRpZiAoZXJyKVxuLVx0XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0XHRcdGdvdG8gdW5sb2NrX3J0bmw7XG4gXG4tXHRcdHNlcV9wcmludGYocywgXCYjMzQ7RW50cnkgJWQsIE1BQzogJXBNLCBTSSBiaXRtYXA6IDB4JTA0eFxcblwmIzM0OywgaSxcbi1cdFx0XHQgICBtYWZ0LmtleWUubWFjX2FkZHIsIGxlMTZfdG9fY3B1KG1hZnQuY2ZnZS5zaV9iaXRtYXApKTtcbiYjNDM7XHRcdHNlcV9wcmludGYocywgXCYjMzQ7RW50cnkgJWQsIE1BQzogJXBNLCBTSSBiaXRtYXA6IDB4JTA0eFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgZW50cnlfaWQsIG1hZnQua2V5ZS5tYWNfYWRkcixcbiYjNDM7XHRcdFx0ICAgbGUxNl90b19jcHUobWFmdC5jZmdlLnNpX2JpdG1hcCkpO1xuIFx0fVxuIFxuLVx0cmV0dXJuIDA7XG4mIzQzO3VubG9ja19ydG5sOlxuJiM0MztcdHJ0bmxfdW5sb2NrKCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBlcnI7XG4gfVxuIERFRklORV9TSE9XX0FUVFJJQlVURShlbmV0Y19tYWNfZmlsdGVyKTtcbiBcbiB2b2lkIGVuZXRjX2NyZWF0ZV9kZWJ1Z2ZzKHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4ge1xuLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBzaS1cdTAwM2VuZGV2O1xuIFx0c3RydWN0IGRlbnRyeSAqcm9vdDtcbiBcbi1cdHJvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIobmV0ZGV2X25hbWUobmRldiksIE5VTEwpO1xuJiM0MztcdHJvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIocGNpX25hbWUoc2ktXHUwMDNlcGRldiksIE5VTEwpO1xuIFx0aWYgKElTX0VSUihyb290KSlcbiBcdFx0cmV0dXJuO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaFxuaW5kZXggZjE4NDM3NTU2YTBlZTIuLjA5MDI1ZTdhMmEzYWVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9ody5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2h3LmhcbkBAIC02OSw4ICYjNDM7NjksNiBAQFxuIFxuIC8qIFBvcnQgU3RhdGlvbiBpbnRlcmZhY2UgcHJvbWlzY3VvdXMgTUFDIG1vZGUgcmVnaXN0ZXIgKi9cbiAjZGVmaW5lIEVORVRDNF9QU0lQTU1SXHRcdFx0MHgyMDBcbi0jZGVmaW5lICBQU0lQTU1SX1NJX01BQ19VUChhKVx0XHRCSVQoYSkgLyogYSA9IFNJIGluZGV4ICovXG4tI2RlZmluZSAgUFNJUE1NUl9TSV9NQUNfTVAoYSlcdFx0QklUKChhKSAmIzQzOyAxNilcbiBcbiAvKiBQb3J0IFN0YXRpb24gaW50ZXJmYWNlIHByb21pc2N1b3VzIFZMQU4gbW9kZSByZWdpc3RlciAqL1xuICNkZWZpbmUgRU5FVEM0X1BTSVBWTVJcdFx0XHQweDIwNFxuQEAgLTEzNyw3ICYjNDM7MTM1LDYgQEBcbiAjZGVmaW5lIEVORVRDNF9QU0lWSEZSMShhKVx0XHQoKGEpICogMHg4MCAmIzQzOyAweDIwNjQpXG4gXG4gI2RlZmluZSBFTkVUQzRfUE1DQVBSXHRcdFx0MHg0MDA0XG4tI2RlZmluZSAgUE1DQVBSX0hEXHRcdFx0QklUKDgpXG4gI2RlZmluZSAgUE1DQVBSX0ZQXHRcdFx0R0VOTUFTSygxMCwgOSlcbiBcbiAvKiBQb3J0IGNhcGFiaWxpdHkgcmVnaXN0ZXIgKi9cbkBAIC0xNTAsNyAmIzQzOzE0Nyw3IEBAXG4gI2RlZmluZSAgUENSX0wyRE9TRVx0XHRcdEJJVCg0KVxuICNkZWZpbmUgIFBDUl9USU1FUl9DU1x0XHRcdEJJVCg4KVxuICNkZWZpbmUgIFBDUl9QU1BFRURcdFx0XHRHRU5NQVNLKDI5LCAxNilcbi0jZGVmaW5lICBQQ1JfUFNQRUVEX1ZBTChzcGVlZClcdFx0KCgoc3BlZWQpIC8gMTAgLSAxKSBcdTAwM2NcdTAwM2MgMTYpXG4mIzQzOyNkZWZpbmUgIFBDUl9QU1BFRURfVkFMKHMpXHRcdEZJRUxEX1BSRVAoUENSX1BTUEVFRCwgKChzKSAvIDEwIC0gMSkpXG4gXG4gLyogUG9ydCBNQUMgYWRkcmVzcyByZWdpc3RlciAwLzEgKi9cbiAjZGVmaW5lIEVORVRDNF9QTUFSMFx0XHRcdDB4NDAyMFxuQEAgLTIwMCw3ICYjNDM7MTk3LDYgQEBcbiAjZGVmaW5lICBQTV9DTURfQ0ZHX0NOVF9GUk1fRU5cdFx0QklUKDEzKVxuICNkZWZpbmUgIFBNX0NNRF9DRkdfVFhQXHRcdFx0QklUKDE1KVxuICNkZWZpbmUgIFBNX0NNRF9DRkdfU0VORF9JRExFXHRcdEJJVCgxNilcbi0jZGVmaW5lICBQTV9DTURfQ0ZHX0hEX0ZDRU5cdFx0QklUKDE4KVxuICNkZWZpbmUgIFBNX0NNRF9DRkdfU0ZEXHRcdFx0QklUKDIxKVxuICNkZWZpbmUgIFBNX0NNRF9DRkdfVFhfRkxVU0hcdFx0QklUKDIyKVxuICNkZWZpbmUgIFBNX0NNRF9DRkdfVFhfTE9XUF9FTlx0XHRCSVQoMjMpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXG5pbmRleCA0MzdhMTViYmI0N2JhOC4uZmNmYmFiYjI5ZDIyZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY1xuQEAgLTIzLDE4ICYjNDM7MjMsMTEgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2dldF9wb3J0X2NhcHMoc3RydWN0IGVuZXRjX3BmICpwZilcbiBcdHUzMiB2YWw7XG4gXG4gXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQzRfRUNBUFIxKTtcbi1cdHBmLVx1MDAzZWNhcHMubnVtX3ZzaSA9ICh2YWwgXHUwMDI2IEVDQVBSMV9OVU1fVlNJKSBcdTAwM2VcdTAwM2UgMjQ7XG4gXHRwZi1cdTAwM2VjYXBzLm51bV9tc2l4ID0gKCh2YWwgXHUwMDI2IEVDQVBSMV9OVU1fTVNJWCkgXHUwMDNlXHUwMDNlIDEyKSAmIzQzOyAxO1xuIFxuIFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X0VDQVBSMik7XG4gXHRwZi1cdTAwM2VjYXBzLm51bV9yeF9iZHIgPSAodmFsIFx1MDAyNiBFQ0FQUjJfTlVNX1JYX0JEUikgXHUwMDNlXHUwMDNlIDE2O1xuIFx0cGYtXHUwMDNlY2Fwcy5udW1fdHhfYmRyID0gdmFsIFx1MDAyNiBFQ0FQUjJfTlVNX1RYX0JEUjtcbi1cbi1cdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QTUNBUFIpO1xuLVx0cGYtXHUwMDNlY2Fwcy5oYWxmX2R1cGxleCA9ICh2YWwgXHUwMDI2IFBNQ0FQUl9IRCkgPyAxIDogMDtcbi1cbi1cdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lNQUZDQVBSKTtcbi1cdHBmLVx1MDAzZWNhcHMubWFjX2ZpbHRlcl9udW0gPSB2YWwgXHUwMDI2IFBTSU1BRkNBUFJfTlVNX01BQ19BRlRFO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbmV0YzRfZ2V0X3BzaV9od19mZWF0dXJlcyhzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxuQEAgLTc1LDM4ICYjNDM7NjgsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGZfZ2V0X3NpX3ByaW1hcnlfbWFjKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSxcbiBcdHB1dF91bmFsaWduZWRfbGUxNihsb3dlciwgYWRkciAmIzQzOyA0KTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9zaV9tYWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksXG4tXHRcdFx0XHRcdCBib29sIHVjX3Byb21pc2MsIGJvb2wgbWNfcHJvbWlzYylcbi17XG4tXHR1MzIgdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSVBNTVIpO1xuLVxuLVx0aWYgKHVjX3Byb21pc2MpXG4tXHRcdHZhbCB8PSBQU0lQTU1SX1NJX01BQ19VUChzaSk7XG4tXHRlbHNlXG4tXHRcdHZhbCBcdTAwMjY9IH5QU0lQTU1SX1NJX01BQ19VUChzaSk7XG4tXG4tXHRpZiAobWNfcHJvbWlzYylcbi1cdFx0dmFsIHw9IFBTSVBNTVJfU0lfTUFDX01QKHNpKTtcbi1cdGVsc2Vcbi1cdFx0dmFsIFx1MDAyNj0gflBTSVBNTVJfU0lfTUFDX01QKHNpKTtcbi1cbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lQTU1SLCB2YWwpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSxcbi1cdFx0XHRcdFx0ICAgIHU2NCBoYXNoKVxuLXtcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lVTUhGUjAoc2kpLCBsb3dlcl8zMl9iaXRzKGhhc2gpKTtcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lVTUhGUjEoc2kpLCB1cHBlcl8zMl9iaXRzKGhhc2gpKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksXG4tXHRcdFx0XHRcdCAgICB1NjQgaGFzaClcbi17XG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJTU1IRlIwKHNpKSwgbG93ZXJfMzJfYml0cyhoYXNoKSk7XG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJTU1IRlIxKHNpKSwgdXBwZXJfMzJfYml0cyhoYXNoKSk7XG4tfVxuLVxuIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbG9vcGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZW4pXG4ge1xuIFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTEyNCwzNCAmIzQzOzg1LDQ3IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbG9vcGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZW4pXG4gXG4gc3RhdGljIHZvaWQgZW5ldGM0X3BmX2NsZWFyX21hZnRfZW50cmllcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIHtcbi1cdGludCBpO1xuJiM0MztcdHN0cnVjdCBudG1wX3VzZXIgKnVzZXIgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VudG1wX3VzZXI7XG4mIzQzO1x0dTMyIGVudHJ5X2lkO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNlbnVtX21mZTsgaSYjNDM7JiM0MzspXG4tXHRcdG50bXBfbWFmdF9kZWxldGVfZW50cnkoXHUwMDI2cGYtXHUwMDNlc2ktXHUwMDNlbnRtcF91c2VyLCBpKTtcbi1cbi1cdHBmLVx1MDAzZW51bV9tZmUgPSAwO1xuJiM0MztcdGZvcl9lYWNoX3NldF9iaXQoZW50cnlfaWQsIHVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwLFxuJiM0MztcdFx0XHQgdXNlci1cdTAwM2VtYWZ0X251bV9lbnRyaWVzKSB7XG4mIzQzO1x0XHRpZiAoIW50bXBfbWFmdF9kZWxldGVfZW50cnkodXNlciwgZW50cnlfaWQpKVxuJiM0MztcdFx0XHRudG1wX2NsZWFyX2VpZF9iaXRtYXAodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAsIGVudHJ5X2lkKTtcbiYjNDM7XHR9XG4gfVxuIFxuIHN0YXRpYyBpbnQgZW5ldGM0X3BmX2FkZF9tYWZ0X2VudHJpZXMoc3RydWN0IGVuZXRjX3BmICpwZixcbi1cdFx0XHRcdCAgICAgIHN0cnVjdCBlbmV0Y19tYWNfYWRkciAqbWFjLFxuLVx0XHRcdFx0ICAgICAgaW50IG1hY19jbnQpXG4mIzQzO1x0XHRcdFx0ICAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgbnRtcF91c2VyICp1c2VyID0gXHUwMDI2cGYtXHUwMDNlc2ktXHUwMDNlbnRtcF91c2VyO1xuJiM0MztcdGludCBtYWNfY250ID0gbmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1Yyk7XG4gXHRzdHJ1Y3QgbWFmdF9lbnRyeV9kYXRhIG1hZnQgPSB7fTtcbiYjNDM7XHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xuJiM0MztcdHUzMiBhdmFpbGFibGVfZW50cmllcztcbiBcdHUxNiBzaV9iaXQgPSBCSVQoMCk7XG4tXHRpbnQgaSwgZXJyO1xuJiM0MztcdHUzMiBlbnRyeV9pZDtcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRhdmFpbGFibGVfZW50cmllcyA9IHVzZXItXHUwMDNlbWFmdF9udW1fZW50cmllcyAtXG4mIzQzO1x0XHRcdCAgICBiaXRtYXBfd2VpZ2h0KHVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwLFxuJiM0MztcdFx0XHRcdFx0ICB1c2VyLVx1MDAzZW1hZnRfbnVtX2VudHJpZXMpO1xuJiM0MztcbiYjNDM7XHRpZiAobWFjX2NudCBcdTAwM2UgYXZhaWxhYmxlX2VudHJpZXMpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT1NQQztcbiBcbiBcdG1hZnQuY2ZnZS5zaV9iaXRtYXAgPSBjcHVfdG9fbGUxNihzaV9iaXQpO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbWFjX2NudDsgaSYjNDM7JiM0MzspIHtcbi1cdFx0ZXRoZXJfYWRkcl9jb3B5KG1hZnQua2V5ZS5tYWNfYWRkciwgbWFjW2ldLmFkZHIpO1xuLVx0XHRlcnIgPSBudG1wX21hZnRfYWRkX2VudHJ5KFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZW50bXBfdXNlciwgaSwgXHUwMDI2bWFmdCk7XG4mIzQzO1x0bmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgdWMpIHtcbiYjNDM7XHRcdGVudHJ5X2lkID0gbnRtcF9sb29rdXBfZnJlZV9laWQodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAsXG4mIzQzO1x0XHRcdFx0XHRcdHVzZXItXHUwMDNlbWFmdF9udW1fZW50cmllcyk7XG4mIzQzO1x0XHRldGhlcl9hZGRyX2NvcHkobWFmdC5rZXllLm1hY19hZGRyLCBoYS1cdTAwM2VhZGRyKTtcbiYjNDM7XHRcdGVyciA9IG50bXBfbWFmdF9hZGRfZW50cnkodXNlciwgZW50cnlfaWQsIFx1MDAyNm1hZnQpO1xuIFx0XHRpZiAodW5saWtlbHkoZXJyKSkge1xuLVx0XHRcdHBmLVx1MDAzZW51bV9tZmUgPSBpO1xuJiM0MztcdFx0XHRudG1wX2NsZWFyX2VpZF9iaXRtYXAodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAsIGVudHJ5X2lkKTtcbiBcdFx0XHRnb3RvIGNsZWFyX21hZnRfZW50cmllcztcbiBcdFx0fVxuIFx0fVxuIFxuLVx0cGYtXHUwMDNlbnVtX21mZSA9IG1hY19jbnQ7XG4tXG4gXHRyZXR1cm4gMDtcbiBcbiBjbGVhcl9tYWZ0X2VudHJpZXM6XG5AQCAtMTYwLDk3ICYjNDM7MTM0LDcwIEBAIHN0YXRpYyBpbnQgZW5ldGM0X3BmX2FkZF9tYWZ0X2VudHJpZXMoc3RydWN0IGVuZXRjX3BmICpwZixcbiBcdHJldHVybiAgZXJyO1xuIH1cbiBcbi1zdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4mIzQzO3N0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfdWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZixcbiYjNDM7XHRcdFx0XHRcdCBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMpXG4ge1xuLVx0aW50IG1heF9udW1fbWZlID0gcGYtXHUwMDNlY2Fwcy5tYWNfZmlsdGVyX251bTtcbi1cdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyIG1hY19maWx0ZXIgPSB7fTtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGYtXHUwMDNlc2ktXHUwMDNlbmRldjtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2Vodztcbi1cdHN0cnVjdCBlbmV0Y19tYWNfYWRkciAqbWFjX3RibDtcbiYjNDM7XHRzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqbWFjX2ZpbHRlciA9IFx1MDAyNnBmLVx1MDAzZW1hY19maWx0ZXJbVUNdO1xuIFx0c3RydWN0IG5ldGRldl9od19hZGRyICpoYTtcbi1cdGludCBpID0gMCwgZXJyO1xuLVx0aW50IG1hY19jbnQ7XG4mIzQzO1x0dTY0IGhhc2g7XG4gXG4tXHRuZXRpZl9hZGRyX2xvY2tfYmgobmRldik7XG4mIzQzO1x0ZW5ldGNfcmVzZXRfbWFjX2FkZHJfZmlsdGVyKG1hY19maWx0ZXIpO1xuJiM0MztcdG5ldGRldl9od19hZGRyX2xpc3RfZm9yX2VhY2goaGEsIHVjKVxuJiM0MztcdFx0ZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihtYWNfZmlsdGVyLCBoYS1cdTAwM2VhZGRyKTtcbiYjNDM7XG4mIzQzO1x0Yml0bWFwX3RvX2FycjY0KFx1MDAyNmhhc2gsIG1hY19maWx0ZXItXHUwMDNlbWFjX2hhc2hfdGFibGUsXG4mIzQzO1x0XHRcdEVORVRDX01BRERSX0hBU0hfVEJMX1NaKTtcbiYjNDM7XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIocGYtXHUwMDNlc2ksIDAsIGhhc2gpO1xuJiM0Mzt9XG4gXG4tXHRtYWNfY250ID0gbmV0ZGV2X3VjX2NvdW50KG5kZXYpO1xuLVx0aWYgKCFtYWNfY250KSB7XG4tXHRcdG5ldGlmX2FkZHJfdW5sb2NrX2JoKG5kZXYpO1xuJiM0MztzdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYsXG4mIzQzO1x0XHRcdFx0XHQgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGVuZXRjX3NpICpzaSA9IHBmLVx1MDAzZXNpO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2VtcHR5KHVjKSkge1xuIFx0XHQvKiBjbGVhciBib3RoIE1BQyBoYXNoIGFuZCBleGFjdCBmaWx0ZXJzICovXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApO1xuJiM0MztcdFx0ZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTtcbiBcdFx0ZW5ldGM0X3BmX2NsZWFyX21hZnRfZW50cmllcyhwZik7XG4gXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuLVx0aWYgKG1hY19jbnQgXHUwMDNlIG1heF9udW1fbWZlKSB7XG4tXHRcdGVyciA9IC1FTk9TUEM7XG4tXHRcdGdvdG8gdW5sb2NrX25ldGlmX2FkZHI7XG4tXHR9XG4tXG4tXHRtYWNfdGJsID0ga3phbGxvY19vYmpzKCptYWNfdGJsLCBtYWNfY250LCBHRlBfQVRPTUlDKTtcbi1cdGlmICghbWFjX3RibCkge1xuLVx0XHRlcnIgPSAtRU5PTUVNO1xuLVx0XHRnb3RvIHVubG9ja19uZXRpZl9hZGRyO1xuLVx0fVxuLVxuLVx0bmV0ZGV2X2Zvcl9lYWNoX3VjX2FkZHIoaGEsIG5kZXYpIHtcbi1cdFx0ZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihcdTAwMjZtYWNfZmlsdGVyLCBoYS1cdTAwM2VhZGRyKTtcbi1cdFx0ZXRoZXJfYWRkcl9jb3B5KG1hY190YmxbaSYjNDM7JiM0MztdLmFkZHIsIGhhLVx1MDAzZWFkZHIpO1xuLVx0fVxuLVxuLVx0bmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7XG4tXG4tXHQvKiBTZXQgdGVtcG9yYXJ5IHVuaWNhc3QgaGFzaCBmaWx0ZXJzIGluIGNhc2Ugb2YgUnggbG9zcyB3aGVuXG4mIzQzO1x0LyogU2V0IHRlbXBvcmFyeSB1bmljYXN0IGhhc2ggZmlsdGVyIGluIGNhc2Ugb2YgUnggbG9zcyB3aGVuXG4gXHQgKiB1cGRhdGluZyBNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGVcbiBcdCAqL1xuLVx0ZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihodywgMCwgKm1hY19maWx0ZXIubWFjX2hhc2hfdGFibGUpO1xuJiM0MztcdGVuZXRjNF9wZl9zZXRfdWNfaGFzaF9maWx0ZXIocGYsIHVjKTtcbiBcdGVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpO1xuIFxuLVx0aWYgKCFlbmV0YzRfcGZfYWRkX21hZnRfZW50cmllcyhwZiwgbWFjX3RibCwgaSkpXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApO1xuLVxuLVx0a2ZyZWUobWFjX3RibCk7XG4tXG4tXHRyZXR1cm4gMDtcbi1cbi11bmxvY2tfbmV0aWZfYWRkcjpcbi1cdG5ldGlmX2FkZHJfdW5sb2NrX2JoKG5kZXYpO1xuJiM0MztcdGVyciA9IGVuZXRjNF9wZl9hZGRfbWFmdF9lbnRyaWVzKHBmLCB1Yyk7XG4mIzQzO1x0aWYgKCFlcnIpIHtcbiYjNDM7XHRcdGVuZXRjX3Jlc2V0X21hY19hZGRyX2ZpbHRlcihcdTAwMjZwZi1cdTAwM2VtYWNfZmlsdGVyW1VDXSk7XG4mIzQzO1x0XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuJiM0MztcdH1cbiBcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbWFjX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCB0eXBlKVxuJiM0MztzdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X21jX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYsXG4mIzQzO1x0XHRcdFx0XHQgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKm1jKVxuIHtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGYtXHUwMDNlc2ktXHUwMDNlbmRldjtcbi1cdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICptYWNfZmlsdGVyO1xuLVx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZWh3O1xuJiM0MztcdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICptYWNfZmlsdGVyID0gXHUwMDI2cGYtXHUwMDNlbWFjX2ZpbHRlcltNQ107XG4gXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xuJiM0MztcdHU2NCBoYXNoO1xuIFxuLVx0bmV0aWZfYWRkcl9sb2NrX2JoKG5kZXYpO1xuLVx0aWYgKHR5cGUgXHUwMDI2IEVORVRDX01BQ19GSUxURVJfVFlQRV9VQykge1xuLVx0XHRtYWNfZmlsdGVyID0gXHUwMDI2cGYtXHUwMDNlbWFjX2ZpbHRlcltVQ107XG4tXHRcdGVuZXRjX3Jlc2V0X21hY19hZGRyX2ZpbHRlcihtYWNfZmlsdGVyKTtcbi1cdFx0bmV0ZGV2X2Zvcl9lYWNoX3VjX2FkZHIoaGEsIG5kZXYpXG4tXHRcdFx0ZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihtYWNfZmlsdGVyLCBoYS1cdTAwM2VhZGRyKTtcbi1cbi1cdFx0ZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihodywgMCxcbi1cdFx0XHRcdFx0XHQqbWFjX2ZpbHRlci1cdTAwM2VtYWNfaGFzaF90YWJsZSk7XG4tXHR9XG4mIzQzO1x0ZW5ldGNfcmVzZXRfbWFjX2FkZHJfZmlsdGVyKG1hY19maWx0ZXIpO1xuJiM0MztcdG5ldGRldl9od19hZGRyX2xpc3RfZm9yX2VhY2goaGEsIG1jKVxuJiM0MztcdFx0ZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihtYWNfZmlsdGVyLCBoYS1cdTAwM2VhZGRyKTtcbiBcbi1cdGlmICh0eXBlIFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpIHtcbi1cdFx0bWFjX2ZpbHRlciA9IFx1MDAyNnBmLVx1MDAzZW1hY19maWx0ZXJbTUNdO1xuLVx0XHRlbmV0Y19yZXNldF9tYWNfYWRkcl9maWx0ZXIobWFjX2ZpbHRlcik7XG4tXHRcdG5ldGRldl9mb3JfZWFjaF9tY19hZGRyKGhhLCBuZGV2KVxuLVx0XHRcdGVuZXRjX2FkZF9tYWNfYWRkcl9odF9maWx0ZXIobWFjX2ZpbHRlciwgaGEtXHUwMDNlYWRkcik7XG4tXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfbWNfaGFzaF9maWx0ZXIoaHcsIDAsXG4tXHRcdFx0XHRcdFx0Km1hY19maWx0ZXItXHUwMDNlbWFjX2hhc2hfdGFibGUpO1xuLVx0fVxuLVx0bmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7XG4mIzQzO1x0Yml0bWFwX3RvX2FycjY0KFx1MDAyNmhhc2gsIG1hY19maWx0ZXItXHUwMDNlbWFjX2hhc2hfdGFibGUsXG4mIzQzO1x0XHRcdEVORVRDX01BRERSX0hBU0hfVEJMX1NaKTtcbiYjNDM7XHRlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIocGYtXHUwMDNlc2ksIDAsIGhhc2gpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHR5cGUpXG4mIzQzO3N0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbWFjX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgdHlwZSxcbiYjNDM7XHRcdFx0XHQgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcbiYjNDM7XHRcdFx0XHQgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYylcbiB7XG4gXHQvKiBDdXJyZW50bHksIHRoZSBNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGUgKE1BRlQpIG9ubHkgaGFzIDQgZW50cmllcyxcbiBcdCAqIGFuZCBtdWx0aXBsZSBtdWx0aWNhc3QgYWRkcmVzc2VzIGZvciBmaWx0ZXJpbmcgd2lsbCBiZSBjb25maWd1cmVkXG5AQCAtMjU4LDE1ICYjNDM7MjA1LDE2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbWFjX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgdHlwZSlcbiBcdCAqIHVuaWNhc3QgZmlsdGVyaW5nLiBJZiB0aGUgbnVtYmVyIG9mIHVuaWNhc3QgYWRkcmVzc2VzIGV4Y2VlZHMgdGhlXG4gXHQgKiB0YWJsZSBjYXBhY2l0eSwgdGhlIE1BQyBoYXNoIGZpbHRlciB3aWxsIGJlIHVzZWQuXG4gXHQgKi9cbi1cdGlmICh0eXBlIFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfVUMgXHUwMDI2XHUwMDI2IGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHBmKSkge1xuJiM0MztcdGlmICh0eXBlIFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfVUMgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHBmLCB1YykpIHtcbiBcdFx0LyogRmFsbCBiYWNrIHRvIHRoZSBNQUMgaGFzaCBmaWx0ZXIgKi9cbi1cdFx0ZW5ldGM0X3BmX3NldF9tYWNfaGFzaF9maWx0ZXIocGYsIEVORVRDX01BQ19GSUxURVJfVFlQRV9VQyk7XG4mIzQzO1x0XHRlbmV0YzRfcGZfc2V0X3VjX2hhc2hfZmlsdGVyKHBmLCB1Yyk7XG4gXHRcdC8qIENsZWFyIHRoZSBvbGQgTUFDIGV4YWN0IGZpbHRlciAqL1xuIFx0XHRlbmV0YzRfcGZfY2xlYXJfbWFmdF9lbnRyaWVzKHBmKTtcbiBcdH1cbiBcbiBcdGlmICh0eXBlIFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpXG4tXHRcdGVuZXRjNF9wZl9zZXRfbWFjX2hhc2hfZmlsdGVyKHBmLCBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpO1xuJiM0MztcdFx0ZW5ldGM0X3BmX3NldF9tY19oYXNoX2ZpbHRlcihwZiwgbWMpO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGVuZXRjX3BmX29wcyBlbmV0YzRfcGZfb3BzID0ge1xuQEAgLTMwNiwzNCAmIzQzOzI1NCwzNSBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4ge1xuIFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZWh3O1xuIFx0dTMyIG51bV9yeF9iZHIsIG51bV90eF9iZHIsIHZhbDtcbiYjNDM7XHRpbnQgbnVtX3ZmcyA9IHBmLVx1MDAzZXRvdGFsX3ZmcztcbiBcdHUzMiB2Zl90eF9iZHIsIHZmX3J4X2JkcjtcbiBcdGludCBpLCByeF9yZW0sIHR4X3JlbTtcbiBcbi1cdGlmIChwZi1cdTAwM2VjYXBzLm51bV9yeF9iZHIgXHUwMDNjIEVORVRDX1NJX01BWF9SSU5HX05VTSAmIzQzOyBwZi1cdTAwM2VjYXBzLm51bV92c2kpXG4tXHRcdG51bV9yeF9iZHIgPSBwZi1cdTAwM2VjYXBzLm51bV9yeF9iZHIgLSBwZi1cdTAwM2VjYXBzLm51bV92c2k7XG4mIzQzO1x0aWYgKHBmLVx1MDAzZWNhcHMubnVtX3J4X2JkciBcdTAwM2MgRU5FVENfU0lfTUFYX1JJTkdfTlVNICYjNDM7IG51bV92ZnMpXG4mIzQzO1x0XHRudW1fcnhfYmRyID0gcGYtXHUwMDNlY2Fwcy5udW1fcnhfYmRyIC0gbnVtX3ZmcztcbiBcdGVsc2VcbiBcdFx0bnVtX3J4X2JkciA9IEVORVRDX1NJX01BWF9SSU5HX05VTTtcbiBcbi1cdGlmIChwZi1cdTAwM2VjYXBzLm51bV90eF9iZHIgXHUwMDNjIEVORVRDX1NJX01BWF9SSU5HX05VTSAmIzQzOyBwZi1cdTAwM2VjYXBzLm51bV92c2kpXG4tXHRcdG51bV90eF9iZHIgPSBwZi1cdTAwM2VjYXBzLm51bV90eF9iZHIgLSBwZi1cdTAwM2VjYXBzLm51bV92c2k7XG4mIzQzO1x0aWYgKHBmLVx1MDAzZWNhcHMubnVtX3R4X2JkciBcdTAwM2MgRU5FVENfU0lfTUFYX1JJTkdfTlVNICYjNDM7IG51bV92ZnMpXG4mIzQzO1x0XHRudW1fdHhfYmRyID0gcGYtXHUwMDNlY2Fwcy5udW1fdHhfYmRyIC0gbnVtX3ZmcztcbiBcdGVsc2VcbiBcdFx0bnVtX3R4X2JkciA9IEVORVRDX1NJX01BWF9SSU5HX05VTTtcbiBcbiBcdHZhbCA9IGVuZXRjNF9wc2ljZmdyMF92YWxfY29uc3RydWN0KGZhbHNlLCBudW1fdHhfYmRyLCBudW1fcnhfYmRyKTtcbiBcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMCgwKSwgdmFsKTtcbiBcbi1cdGlmICghcGYtXHUwMDNlY2Fwcy5udW1fdnNpKVxuJiM0MztcdGlmICghbnVtX3ZmcylcbiBcdFx0cmV0dXJuO1xuIFxuIFx0bnVtX3J4X2JkciA9IHBmLVx1MDAzZWNhcHMubnVtX3J4X2JkciAtIG51bV9yeF9iZHI7XG4tXHRyeF9yZW0gPSBudW1fcnhfYmRyICUgcGYtXHUwMDNlY2Fwcy5udW1fdnNpO1xuLVx0bnVtX3J4X2JkciA9IG51bV9yeF9iZHIgLyBwZi1cdTAwM2VjYXBzLm51bV92c2k7XG4mIzQzO1x0cnhfcmVtID0gbnVtX3J4X2JkciAlIG51bV92ZnM7XG4mIzQzO1x0bnVtX3J4X2JkciA9IG51bV9yeF9iZHIgLyBudW1fdmZzO1xuIFxuIFx0bnVtX3R4X2JkciA9IHBmLVx1MDAzZWNhcHMubnVtX3R4X2JkciAtIG51bV90eF9iZHI7XG4tXHR0eF9yZW0gPSBudW1fdHhfYmRyICUgcGYtXHUwMDNlY2Fwcy5udW1fdnNpO1xuLVx0bnVtX3R4X2JkciA9IG51bV90eF9iZHIgLyBwZi1cdTAwM2VjYXBzLm51bV92c2k7XG4mIzQzO1x0dHhfcmVtID0gbnVtX3R4X2JkciAlIG51bV92ZnM7XG4mIzQzO1x0bnVtX3R4X2JkciA9IG51bV90eF9iZHIgLyBudW1fdmZzO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNlY2Fwcy5udW1fdnNpOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV92ZnM7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHZmX3R4X2JkciA9IChpIFx1MDAzYyB0eF9yZW0pID8gbnVtX3R4X2JkciAmIzQzOyAxIDogbnVtX3R4X2JkcjtcbiBcdFx0dmZfcnhfYmRyID0gKGkgXHUwMDNjIHJ4X3JlbSkgPyBudW1fcnhfYmRyICYjNDM7IDEgOiBudW1fcnhfYmRyO1xuIFx0XHR2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdCh0cnVlLCB2Zl90eF9iZHIsIHZmX3J4X2Jkcik7XG5AQCAtMzQ2LDUzICYjNDM7Mjk1LDcwIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5ncyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0ZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbihwZik7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSwgYm9vbCBlbilcbi17XG4tXHR1MzIgdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSVBWTVIpO1xuLVxuLVx0aWYgKGVuKVxuLVx0XHR2YWwgfD0gQklUKHNpKTtcbi1cdGVsc2Vcbi1cdFx0dmFsIFx1MDAyNj0gfkJJVChzaSk7XG4tXG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJUFZNUiwgdmFsKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZW5ldGM0X3NldF9kZWZhdWx0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuLXtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2Vodztcbi1cdGludCBudW1fc2kgPSBwZi1cdTAwM2VjYXBzLm51bV92c2kgJiM0MzsgMTtcbi1cdGludCBpO1xuLVxuLVx0LyogZW5mb3JjZSBWTEFOIHByb21pc2N1b3VzIG1vZGUgZm9yIGFsbCBTSXMgKi9cbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV9zaTsgaSYjNDM7JiM0MzspXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKGh3LCBpLCB0cnVlKTtcbi19XG4tXG4gLyogQWxsb2NhdGUgdGhlIG51bWJlciBvZiBNU0ktWCB2ZWN0b3JzIGZvciBwZXIgU0kuICovXG4gc3RhdGljIHZvaWQgZW5ldGM0X3NldF9zaV9tc2l4X251bShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIHtcbiYjNDM7XHRpbnQgdmFsaWRfbnVtX3NpID0gcGYtXHUwMDNldG90YWxfdmZzICYjNDM7IDE7XG4gXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2cGYtXHUwMDNlc2ktXHUwMDNlaHc7XG4tXHRpbnQgaSwgbnVtX21zaXgsIHRvdGFsX3NpO1xuJiM0MztcdGludCBpLCBudW1fbXNpeCwgbnVtX3ZzaTtcbiBcdHUzMiB2YWw7XG4gXG4tXHR0b3RhbF9zaSA9IHBmLVx1MDAzZWNhcHMubnVtX3ZzaSAmIzQzOyAxO1xuJiM0MztcdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9FQ0FQUjEpO1xuJiM0MztcdG51bV92c2kgPSBGSUVMRF9HRVQoRUNBUFIxX05VTV9WU0ksIHZhbCk7XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBQU0lhQ0ZHUjJbTlVNX01TSVhdIGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIE1TSS1YIGFsbG9jYXRlZCB0b1xuJiM0MztcdCAqIHRoZSBTSSBpcyBOVU1fTVNJWCAmIzQzOyAxLCBzbyB0aGUgbWluaW11bSBudW1iZXIgb2YgTVNJLVggYWxsb2NhdGVkIHRvXG4mIzQzO1x0ICogZWFjaCBTSSBpcyAxLiBUaGUgdG90YWwgbnVtYmVyIG9mIE1TSS1YIGFsbG9jYXRlZCB0byBQU0kgYW5kIFZTSXNcbiYjNDM7XHQgKiBjYW5ub3QgZXhjZWVkIHRoZSB0b3RhbCBudW1iZXIgb2YgTVNJLVggb3duZWQgYnkgdGhpcyBFTkVUQywgd2hpY2hcbiYjNDM7XHQgKiBpcyBFQ0FQUjFbTlVNX01TSVhdLiBPdGhlcndpc2UsIHdoZW4gbXVsdGlwbGUgRU5FVEMgaW5zdGFuY2VzIGV4aXN0LFxuJiM0MztcdCAqIGl0IHdpbGwgYWZmZWN0IG90aGVyIEVORVRDcyB3aG9zZSBNU0ktWCBpbnRlcnJ1cHRzIGNhbm5vdCBiZVxuJiM0MztcdCAqIGdlbmVyYXRlZC4gVGhpcyBpcyBzaW1pbGFyIHRvIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzOiB0aGUgYXJyYXlcbiYjNDM7XHQgKiBpdHNlbGYgaXMgbm90IGFmZmVjdGVkLCBidXQgYWRqYWNlbnQgYXJyYXlzIHdpbGwgYmUgY29ycnVwdGVkLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogcGYtXHUwMDNldG90YWxfdmZzIGlzIDAgaWYgQ09ORklHX1BDSV9JT1YgaXMgZGlzYWJsZWQuIElmIHRoZSBoYXJkd2FyZVxuJiM0MztcdCAqIGl0c2VsZiBzdXBwb3J0cyBTUi1JT1YsIHRoZW4gd2hlbiBhbGxvY2F0aW5nIHRoZSBudW1iZXIgb2YgTVNJWHMgdG9cbiYjNDM7XHQgKiB0aGUgU0ksIGl0IG11c3QgYmUgdGFrZW4gaW50byBhY2NvdW50IHRoYXQgdGhlIFZTSSBoYXMgYXQgbGVhc3QgMVxuJiM0MztcdCAqIE1TSVgsIGFuZCB0aGUgdG90YWwgbnVtYmVyIG9mIE1TSVhzIG9mIGFsbCBTSXMgY2Fubm90IGV4Y2VlZFxuJiM0MztcdCAqIEVDQVBSMVtOVU1fTVNJWF0uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFwZi1cdTAwM2V0b3RhbF92ZnMgXHUwMDI2XHUwMDI2IG51bV92c2kpIHtcbiYjNDM7XHRcdC8qIEJlY2F1c2UgZWFjaCBTSSBoYXMgYXQgbGVhc3Qgb25lIE1TSVgsIGFuZCBmcm9tIHRoZSBoYXJkd2FyZVxuJiM0MztcdFx0ICogcGVyc3BlY3RpdmUsIHBmLVx1MDAzZWNhcHMubnVtX21zaXggd2lsbCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuXG4mIzQzO1x0XHQgKiBudW1fdnNpLiBTbyBudW1fbXNpeCBpcyBhbHdheXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdG51bV9tc2l4ID0gcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAtIG51bV92c2kgLSAxO1xuJiM0MztcdFx0aWYgKG51bV9tc2l4IFx1MDAzZSBQU0lDRkdSMl9OVU1fTVNJWClcbiYjNDM7XHRcdFx0bnVtX21zaXggPSBQU0lDRkdSMl9OVU1fTVNJWDtcbiYjNDM7XHRcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMigwKSwgbnVtX21zaXgpO1xuIFxuLVx0bnVtX21zaXggPSBwZi1cdTAwM2VjYXBzLm51bV9tc2l4IC8gdG90YWxfc2kgJiM0Mztcbi1cdFx0ICAgcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAlIHRvdGFsX3NpIC0gMTtcbi1cdHZhbCA9IG51bV9tc2l4IFx1MDAyNiBQU0lDRkdSMl9OVU1fTVNJWDtcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMigwKSwgdmFsKTtcbiYjNDM7XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV92c2k7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoaSAmIzQzOyAxKSwgMCk7XG4gXG4tXHRudW1fbXNpeCA9IHBmLVx1MDAzZWNhcHMubnVtX21zaXggLyB0b3RhbF9zaSAtIDE7XG4tXHR2YWwgPSBudW1fbXNpeCBcdTAwMjYgUFNJQ0ZHUjJfTlVNX01TSVg7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZi1cdTAwM2VjYXBzLm51bV92c2k7IGkmIzQzOyYjNDM7KVxuLVx0XHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoaSAmIzQzOyAxKSwgdmFsKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIExpa2V3aXNlLCBmcm9tIHRoZSBoYXJkd2FyZSBwZXJzcGVjdGl2ZSBwZi1cdTAwM2VjYXBzLm51bV9tc2l4IGlzIGFsd2F5c1xuJiM0MztcdCAqIGdyZWF0ZXIgdGhhbiB2YWxpZF9udW1fc2kuIFNvIG51bV9tc2l4IGlzIGFsd2F5cyBncmVhdGVyIHRoYW4gb3JcbiYjNDM7XHQgKiBlcXVhbCB0byAwLlxuJiM0MztcdCAqL1xuJiM0MztcdG51bV9tc2l4ID0gcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAvIHZhbGlkX251bV9zaSAmIzQzO1xuJiM0MztcdFx0ICAgcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAlIHZhbGlkX251bV9zaSAtIDE7XG4mIzQzO1x0aWYgKG51bV9tc2l4IFx1MDAzZSBQU0lDRkdSMl9OVU1fTVNJWClcbiYjNDM7XHRcdG51bV9tc2l4ID0gUFNJQ0ZHUjJfTlVNX01TSVg7XG4mIzQzO1x0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSUNGR1IyKDApLCBudW1fbXNpeCk7XG4mIzQzO1xuJiM0MztcdG51bV9tc2l4ID0gcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAvIHZhbGlkX251bV9zaSAtIDE7XG4mIzQzO1x0aWYgKG51bV9tc2l4IFx1MDAzZSBQU0lDRkdSMl9OVU1fTVNJWClcbiYjNDM7XHRcdG51bV9tc2l4ID0gUFNJQ0ZHUjJfTlVNX01TSVg7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBmLVx1MDAzZXRvdGFsX3ZmczsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoaSAmIzQzOyAxKSwgbnVtX21zaXgpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbmV0YzRfZW5hYmxlX2FsbF9zaShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIHtcbiBcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2Vodztcbi1cdGludCBudW1fc2kgPSBwZi1cdTAwM2VjYXBzLm51bV92c2kgJiM0MzsgMTtcbiYjNDM7XHRpbnQgbnVtX3NpID0gcGYtXHUwMDNldG90YWxfdmZzICYjNDM7IDE7XG4gXHR1MzIgc2lfYml0bWFwID0gMDtcbiBcdGludCBpO1xuIFxuQEAgLTQxMiw3ICYjNDM7Mzc4LDkgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2NvbmZpZ3VyZV9wb3J0X3NpKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXHQvKiBPdXRlciBWTEFOIHRhZyB3aWxsIGJlIHVzZWQgZm9yIFZMQU4gZmlsdGVyaW5nICovXG4gXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJVkxBTkZNUiwgUFNJVkxBTkZNUl9WUyk7XG4gXG4tXHRlbmV0YzRfc2V0X2RlZmF1bHRfc2lfdmxhbl9wcm9taXNjKHBmKTtcbiYjNDM7XHQvKiBFbmZvcmNlIFZMQU4gcHJvbWlzY3VvdXMgbW9kZSBmb3IgYWxsIFNJcyAqL1xuJiM0MztcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBwZi1cdTAwM2V0b3RhbF92ZnMgJiM0MzsgMTsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRlbmV0Y19zZXRfc2lfdmxhbl9wcm9taXNjKHBmLVx1MDAzZXNpLCBpLCB0cnVlKTtcbiBcbiBcdC8qIERpc2FibGUgU0kgTUFDIG11bHRpY2FzdCBcdTAwMjYgdW5pY2FzdCBwcm9taXNjdW91cyAqL1xuIFx0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSVBNTVIsIDApO1xuQEAgLTQ1MCwxOCAmIzQzOzQxOCw2MCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfY29uZmlndXJlX3BvcnQoc3RydWN0IGVuZXRjX3BmICpwZilcbiBcdGVuZXRjX3NldF9kZWZhdWx0X3Jzc19rZXkocGYpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgZW5ldGM0X2dldF9udG1wX2NhcHMoc3RydWN0IGVuZXRjX3NpICpzaSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBudG1wX3VzZXIgKnVzZXIgPSBcdTAwMjZzaS1cdTAwM2VudG1wX3VzZXI7XG4mIzQzO1x0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnNpLVx1MDAzZWh3O1xuJiM0MztcdHUzMiB2YWw7XG4mIzQzO1xuJiM0MztcdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lNQUZDQVBSKTtcbiYjNDM7XHR1c2VyLVx1MDAzZW1hZnRfbnVtX2VudHJpZXMgPSBGSUVMRF9HRVQoUFNJTUFGQ0FQUl9OVU1fTUFDX0FGVEUsIHZhbCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgZW5ldGM0X250bXBfYml0bWFwX2luaXQoc3RydWN0IG50bXBfdXNlciAqdXNlcilcbiYjNDM7e1xuJiM0MztcdHVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwID0gYml0bWFwX3phbGxvYyh1c2VyLVx1MDAzZW1hZnRfbnVtX2VudHJpZXMsXG4mIzQzO1x0XHRcdFx0XHQgICAgICBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIXVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBlbmV0YzRfbnRtcF9iaXRtYXBfZnJlZShzdHJ1Y3QgbnRtcF91c2VyICp1c2VyKVxuJiM0Mzt7XG4mIzQzO1x0Yml0bWFwX2ZyZWUodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXApO1xuJiM0MztcdHVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwID0gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGVuZXRjNF9pbml0X250bXBfdXNlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxuIHtcbiBcdHN0cnVjdCBudG1wX3VzZXIgKnVzZXIgPSBcdTAwMjZzaS1cdTAwM2VudG1wX3VzZXI7XG4mIzQzO1x0aW50IGVycjtcbiBcbiBcdC8qIEZvciBFTkVUQyA0LjEsIGFsbCB0YWJsZSB2ZXJzaW9ucyBhcmUgMCAqL1xuIFx0bWVtc2V0KFx1MDAyNnVzZXItXHUwMDNldGJsLCAwLCBzaXplb2YodXNlci1cdTAwM2V0YmwpKTtcbiBcbi1cdHJldHVybiBlbmV0YzRfc2V0dXBfY2JkcihzaSk7XG4mIzQzO1x0ZXJyID0gZW5ldGM0X3NldHVwX2NiZHIoc2kpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRlbmV0YzRfZ2V0X250bXBfY2FwcyhzaSk7XG4mIzQzO1x0ZXJyID0gZW5ldGM0X250bXBfYml0bWFwX2luaXQodXNlcik7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdGdvdG8gdGVhcmRvd25fY2JkcjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO1xuJiM0Mzt0ZWFyZG93bl9jYmRyOlxuJiM0MztcdGVuZXRjNF90ZWFyZG93bl9jYmRyKHNpKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW5ldGM0X2ZyZWVfbnRtcF91c2VyKHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4ge1xuJiM0MztcdGVuZXRjNF9udG1wX2JpdG1hcF9mcmVlKFx1MDAyNnNpLVx1MDAzZW50bXBfdXNlcik7XG4gXHRlbmV0YzRfdGVhcmRvd25fY2JkcihzaSk7XG4gfVxuIFxuQEAgLTQ3OSw3ICYjNDM7NDg5LDcgQEAgc3RhdGljIGludCBlbmV0YzRfcGZfaW5pdChzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFxuIFx0ZXJyID0gZW5ldGM0X2luaXRfbnRtcF91c2VyKHBmLVx1MDAzZXNpKTtcbiBcdGlmIChlcnIpIHtcbi1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBpbml0IENCRFJcXG5cJiMzNDspO1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBpbml0IE5UTVAgdXNlclxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiBlcnI7XG4gXHR9XG4gXG5AQCAtNDkzLDE4ICYjNDM7NTAzLDE3IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9mcmVlKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXHRlbmV0YzRfZnJlZV9udG1wX3VzZXIocGYtXHUwMDNlc2kpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBlbmV0YzRfcHNpX2RvX3NldF9yeF9tb2RlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiYjNDM7c3RhdGljIGludCBlbmV0YzRfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4mIzQzO1x0XHRcdFx0IHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcbiYjNDM7XHRcdFx0XHQgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKm1jKVxuIHtcbi1cdHN0cnVjdCBlbmV0Y19zaSAqc2kgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGVuZXRjX3NpLCByeF9tb2RlX3Rhc2spO1xuLVx0c3RydWN0IGVuZXRjX3BmICpwZiA9IGVuZXRjX3NpX3ByaXYoc2kpO1xuLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBzaS1cdTAwM2VuZGV2O1xuLVx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnNpLVx1MDAzZWh3O1xuJiM0MztcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiYjNDM7XHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihwcml2LVx1MDAzZXNpKTtcbiYjNDM7XHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcHJpdi1cdTAwM2VzaTtcbiBcdGJvb2wgdWNfcHJvbWlzYyA9IGZhbHNlO1xuIFx0Ym9vbCBtY19wcm9taXNjID0gZmFsc2U7XG4gXHRpbnQgdHlwZSA9IDA7XG4gXG4tXHRydG5sX2xvY2soKTtcbi1cbiBcdGlmIChuZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUFJPTUlTQykge1xuIFx0XHR1Y19wcm9taXNjID0gdHJ1ZTtcbiBcdFx0bWNfcHJvbWlzYyA9IHRydWU7XG5AQCAtNTE1LDI4ICYjNDM7NTI0LDIxIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wc2lfZG9fc2V0X3J4X21vZGUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHR0eXBlID0gRU5FVENfTUFDX0ZJTFRFUl9UWVBFX0FMTDtcbiBcdH1cbiBcbi1cdGVuZXRjNF9wZl9zZXRfc2lfbWFjX3Byb21pc2MoaHcsIDAsIHVjX3Byb21pc2MsIG1jX3Byb21pc2MpO1xuJiM0MztcdGVuZXRjX3NldF9zaV91Y19wcm9taXNjKHNpLCAwLCB1Y19wcm9taXNjKTtcbiYjNDM7XHRlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhzaSwgMCwgbWNfcHJvbWlzYyk7XG4gXG4gXHRpZiAodWNfcHJvbWlzYykge1xuLVx0XHRlbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKGh3LCAwLCAwKTtcbiYjNDM7XHRcdGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7XG4gXHRcdGVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpO1xuIFx0fVxuIFxuIFx0aWYgKG1jX3Byb21pc2MpXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfbWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApO1xuJiM0MztcdFx0ZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTtcbiBcbiBcdC8qIFNldCBuZXcgTUFDIGZpbHRlciAqL1xuLVx0ZW5ldGM0X3BmX3NldF9tYWNfZmlsdGVyKHBmLCB0eXBlKTtcbiYjNDM7XHRlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIocGYsIHR5cGUsIHVjLCBtYyk7XG4gXG4tXHRydG5sX3VubG9jaygpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4te1xuLVx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuLVx0c3RydWN0IGVuZXRjX3NpICpzaSA9IHByaXYtXHUwMDNlc2k7XG4tXG4tXHRxdWV1ZV93b3JrKHNpLVx1MDAzZXdvcmtxdWV1ZSwgXHUwMDI2c2ktXHUwMDNlcnhfbW9kZV90YXNrKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBlbmV0YzRfcGZfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuQEAgLTU0NCwxMiAmIzQzOzU0NiwxMSBAQCBzdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4ge1xuIFx0bmV0ZGV2X2ZlYXR1cmVzX3QgY2hhbmdlZCA9IG5kZXYtXHUwMDNlZmVhdHVyZXMgXiBmZWF0dXJlcztcbiBcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwcml2LVx1MDAzZXNpLVx1MDAzZWh3O1xuIFxuIFx0aWYgKGNoYW5nZWQgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUikge1xuIFx0XHRib29sIHByb21pc2NfZW4gPSAhKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19GSUxURVIpO1xuIFxuLVx0XHRlbmV0YzRfcGZfc2V0X3NpX3ZsYW5fcHJvbWlzYyhodywgMCwgcHJvbWlzY19lbik7XG4mIzQzO1x0XHRlbmV0Y19zZXRfc2lfdmxhbl9wcm9taXNjKHByaXYtXHUwMDNlc2ksIDAsIHByb21pc2NfZW4pO1xuIFx0fVxuIFxuIFx0aWYgKGNoYW5nZWQgXHUwMDI2IE5FVElGX0ZfTE9PUEJBQ0spXG5AQCAtNTY2LDcgJiM0Mzs1NjcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVuZXRjNF9uZGV2X29wcyA9IHtcbiBcdC5uZG9fc3RhcnRfeG1pdFx0XHQ9IGVuZXRjX3htaXQsXG4gXHQubmRvX2dldF9zdGF0c1x0XHQ9IGVuZXRjX2dldF9zdGF0cyxcbiBcdC5uZG9fc2V0X21hY19hZGRyZXNzXHQ9IGVuZXRjX3BmX3NldF9tYWNfYWRkcixcbi1cdC5uZG9fc2V0X3J4X21vZGVcdD0gZW5ldGM0X3BmX3NldF9yeF9tb2RlLFxuJiM0MztcdC5uZG9fc2V0X3J4X21vZGVfYXN5bmNcdD0gZW5ldGM0X3BmX3NldF9yeF9tb2RlLFxuIFx0Lm5kb19zZXRfZmVhdHVyZXNcdD0gZW5ldGM0X3BmX3NldF9mZWF0dXJlcyxcbiBcdC5uZG9fdmxhbl9yeF9hZGRfdmlkXHQ9IGVuZXRjX3ZsYW5fcnhfYWRkX3ZpZCxcbiBcdC5uZG9fdmxhbl9yeF9raWxsX3ZpZFx0PSBlbmV0Y192bGFuX3J4X2RlbF92aWQsXG5AQCAtNjAyLDExICYjNDM7NjAzLDYgQEAgc3RhdGljIHZvaWQgZW5ldGM0X21hY19jb25maWcoc3RydWN0IGVuZXRjX3BmICpwZiwgdW5zaWduZWQgaW50IG1vZGUsXG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcbiBcdFx0dmFsIHw9IElGTU9ERV9SR01JSTtcbi1cdFx0LyogV2UgbmVlZCB0byBlbmFibGUgYXV0by1uZWdvdGlhdGlvbiBmb3IgdGhlIE1BQ1xuLVx0XHQgKiBpZiBpdHMgUkdNSUkgaW50ZXJmYWNlIHN1cHBvcnQgSW4tQmFuZCBzdGF0dXMuXG4tXHRcdCAqL1xuLVx0XHRpZiAocGh5bGlua19hdXRvbmVnX2luYmFuZChtb2RlKSlcbi1cdFx0XHR2YWwgfD0gUE1fSUZfTU9ERV9FTkE7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUk1JSTpcbiBcdFx0dmFsIHw9IElGTU9ERV9STUlJO1xuQEAgLTYxNiw3ICYjNDM7NjEyLDYgQEAgc3RhdGljIHZvaWQgZW5ldGM0X21hY19jb25maWcoc3RydWN0IGVuZXRjX3BmICpwZiwgdW5zaWduZWQgaW50IG1vZGUsXG4gXHRcdHZhbCB8PSBJRk1PREVfU0dNSUk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XG4tXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9YR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUk6XG4gXHRcdHZhbCB8PSBJRk1PREVfWEdNSUk7XG4gXHRcdGJyZWFrO1xuQEAgLTY0MiwyNiAmIzQzOzYzNywxOSBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3BvcnRfc3BlZWQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgaW50IHNwZWVkKVxuIFx0dTMyIG9sZF9zcGVlZCA9IHByaXYtXHUwMDNlc3BlZWQ7XG4gXHR1MzIgdmFsO1xuIFxuJiM0MztcdC8qIElmIHRoZSBzcGVlZCBpcyB1bmtub3duLCB1c2UgdGhlIG1pbmltdW0gdmFsdWUgKi9cbiYjNDM7XHRpZiAoc3BlZWQgPT0gU1BFRURfVU5LTk9XTikge1xuJiM0MztcdFx0c3BlZWQgPSBTUEVFRF8xMDtcbiYjNDM7XHRcdGRldl93YXJuKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtTcGVlZCB1bmtub3duLCBkZWZhdWx0IGlzIDEwTWJwc1xcblwmIzM0Oyk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChzcGVlZCA9PSBvbGRfc3BlZWQpXG4gXHRcdHJldHVybjtcbiBcbi1cdHZhbCA9IGVuZXRjX3BvcnRfcmQoXHUwMDI2cHJpdi1cdTAwM2VzaS1cdTAwM2VodywgRU5FVEM0X1BDUik7XG4tXHR2YWwgXHUwMDI2PSB+UENSX1BTUEVFRDtcbi1cbi1cdHN3aXRjaCAoc3BlZWQpIHtcbi1cdGNhc2UgU1BFRURfMTAwOlxuLVx0Y2FzZSBTUEVFRF8xMDAwOlxuLVx0Y2FzZSBTUEVFRF8yNTAwOlxuLVx0Y2FzZSBTUEVFRF8xMDAwMDpcbi1cdFx0dmFsIHw9IChQQ1JfUFNQRUVEIFx1MDAyNiBQQ1JfUFNQRUVEX1ZBTChzcGVlZCkpO1xuLVx0XHRicmVhaztcbi1cdGNhc2UgU1BFRURfMTA6XG4tXHRkZWZhdWx0OlxuLVx0XHR2YWwgfD0gKFBDUl9QU1BFRUQgXHUwMDI2IFBDUl9QU1BFRURfVkFMKFNQRUVEXzEwKSk7XG4tXHR9XG4tXG4tXHRwcml2LVx1MDAzZXNwZWVkID0gc3BlZWQ7XG4mIzQzO1x0dmFsID0gZW5ldGNfcG9ydF9yZChcdTAwMjZwcml2LVx1MDAzZXNpLVx1MDAzZWh3LCBFTkVUQzRfUENSKSBcdTAwMjYgKH5QQ1JfUFNQRUVEKTtcbiYjNDM7XHR2YWwgfD0gUENSX1BTUEVFRF9WQUwoc3BlZWQpO1xuIFx0ZW5ldGNfcG9ydF93cihcdTAwMjZwcml2LVx1MDAzZXNpLVx1MDAzZWh3LCBFTkVUQzRfUENSLCB2YWwpO1xuJiM0MztcdHByaXYtXHUwMDNlc3BlZWQgPSBzcGVlZDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW5ldGM0X3NldF9yZ21paV9tYWMoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHNwZWVkLCBpbnQgZHVwbGV4KVxuQEAgLTcxNywyMiAmIzQzOzcwNSw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfcm1paV9tYWMoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHNwZWVkLCBpbnQgZHVwbGV4KVxuIFx0ZW5ldGNfcG9ydF9tYWNfd3Ioc2ksIEVORVRDNF9QTV9JRl9NT0RFKDApLCB2YWwpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBlbmV0YzRfc2V0X2hkX2Zsb3dfY29udHJvbChzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBib29sIGVuYWJsZSlcbi17XG4tXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcGYtXHUwMDNlc2k7XG4tXHR1MzIgb2xkX3ZhbCwgdmFsO1xuLVxuLVx0aWYgKCFwZi1cdTAwM2VjYXBzLmhhbGZfZHVwbGV4KVxuLVx0XHRyZXR1cm47XG4tXG4tXHRvbGRfdmFsID0gZW5ldGNfcG9ydF9tYWNfcmQoc2ksIEVORVRDNF9QTV9DTURfQ0ZHKDApKTtcbi1cdHZhbCA9IHUzMl9yZXBsYWNlX2JpdHMob2xkX3ZhbCwgZW5hYmxlID8gMSA6IDAsIFBNX0NNRF9DRkdfSERfRkNFTik7XG4tXHRpZiAodmFsID09IG9sZF92YWwpXG4tXHRcdHJldHVybjtcbi1cbi1cdGVuZXRjX3BvcnRfbWFjX3dyKHNpLCBFTkVUQzRfUE1fQ01EX0NGRygwKSwgdmFsKTtcbi19XG4tXG4gc3RhdGljIHZvaWQgZW5ldGM0X3NldF9yeF9wYXVzZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBib29sIHJ4X3BhdXNlKVxuIHtcbiBcdHN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwZi1cdTAwM2VzaTtcbkBAIC05MDgsMTMgJiM0Mzs4ODAsMTEgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BsX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuIFx0c3RydWN0IGVuZXRjX3BmICpwZiA9IHBoeWxpbmtfdG9fZW5ldGNfcGYoY29uZmlnKTtcbiBcdHN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwZi1cdTAwM2VzaTtcbiBcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXY7XG4tXHRib29sIGhkX2ZjID0gZmFsc2U7XG4gXG4gXHRwcml2ID0gbmV0ZGV2X3ByaXYoc2ktXHUwMDNlbmRldik7XG4gXHRlbmV0YzRfc2V0X3BvcnRfc3BlZWQocHJpdiwgc3BlZWQpO1xuIFxuLVx0aWYgKCFwaHlsaW5rX2F1dG9uZWdfaW5iYW5kKG1vZGUpIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHBoeV9pbnRlcmZhY2VfbW9kZV9pc19yZ21paShpbnRlcmZhY2UpKVxuJiM0MztcdGlmIChwaHlfaW50ZXJmYWNlX21vZGVfaXNfcmdtaWkoaW50ZXJmYWNlKSlcbiBcdFx0ZW5ldGM0X3NldF9yZ21paV9tYWMocGYsIHNwZWVkLCBkdXBsZXgpO1xuIFxuIFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUk1JSSlcbkBAIC05MjYsMTggJiM0Mzs4OTYsOCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4gXHRcdCAqL1xuIFx0XHRpZiAocHJpdi1cdTAwM2VhY3RpdmVfb2ZmbG9hZHMgXHUwMDI2IEVORVRDX0ZfUUJVKVxuIFx0XHRcdHR4X3BhdXNlID0gZmFsc2U7XG4tXHR9IGVsc2UgeyAvKiBEVVBMRVhfSEFMRiAqL1xuLVx0XHRpZiAodHhfcGF1c2UgfHwgcnhfcGF1c2UpXG4tXHRcdFx0aGRfZmMgPSB0cnVlO1xuLVxuLVx0XHQvKiBBcyBwZXIgODAyLjMgYW5uZXggMzFCLCBQQVVTRSBmcmFtZXMgYXJlIG9ubHkgc3VwcG9ydGVkXG4tXHRcdCAqIHdoZW4gdGhlIGxpbmsgaXMgY29uZmlndXJlZCBmb3IgZnVsbCBkdXBsZXggb3BlcmF0aW9uLlxuLVx0XHQgKi9cbi1cdFx0dHhfcGF1c2UgPSBmYWxzZTtcbi1cdFx0cnhfcGF1c2UgPSBmYWxzZTtcbiBcdH1cbiBcbi1cdGVuZXRjNF9zZXRfaGRfZmxvd19jb250cm9sKHBmLCBoZF9mYyk7XG4gXHRlbmV0YzRfc2V0X3R4X3BhdXNlKHBmLCBwcml2LVx1MDAzZW51bV9yeF9yaW5ncywgdHhfcGF1c2UpO1xuIFx0ZW5ldGM0X3NldF9yeF9wYXVzZShwZiwgcnhfcGF1c2UpO1xuIFx0ZW5ldGM0X21hY190eF9lbmFibGUocGYpO1xuQEAgLTEwMDksMTkgJiM0Mzs5NjksNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfbGlua19kZWluaXQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdilcbiBcdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZW5ldGM0X3BzaV93cV90YXNrX2luaXQoc3RydWN0IGVuZXRjX3NpICpzaSlcbi17XG4tXHRjaGFyIHdxX25hbWVbMjRdO1xuLVxuLVx0SU5JVF9XT1JLKFx1MDAyNnNpLVx1MDAzZXJ4X21vZGVfdGFzaywgZW5ldGM0X3BzaV9kb19zZXRfcnhfbW9kZSk7XG4tXHRzbnByaW50Zih3cV9uYW1lLCBzaXplb2Yod3FfbmFtZSksIFwmIzM0O2VuZXRjLSVzXCYjMzQ7LCBwY2lfbmFtZShzaS1cdTAwM2VwZGV2KSk7XG4tXHRzaS1cdTAwM2V3b3JrcXVldWUgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSh3cV9uYW1lKTtcbi1cdGlmICghc2ktXHUwMDNld29ya3F1ZXVlKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbi1cbi1cdHJldHVybiAwO1xuLX1cbi1cbiBzdGF0aWMgaW50IGVuZXRjNF9wZl9uZXRkZXZfY3JlYXRlKHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4ge1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2c2ktXHUwMDNlcGRldi1cdTAwM2VkZXY7XG5AQCAtMTA2MiwxMiAmIzQzOzEwMDksNiBAQCBzdGF0aWMgaW50IGVuZXRjNF9wZl9uZXRkZXZfY3JlYXRlKHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9saW5rX2luaXQ7XG4gXG4tXHRlcnIgPSBlbmV0YzRfcHNpX3dxX3Rhc2tfaW5pdChzaSk7XG4tXHRpZiAoZXJyKSB7XG4tXHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gaW5pdCB3b3JrcXVldWVcXG5cJiMzNDspO1xuLVx0XHRnb3RvIGVycl93cV9pbml0O1xuLVx0fVxuLVxuIFx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuIFx0aWYgKGVycikge1xuIFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIG5ldGRldlxcblwmIzM0Oyk7XG5AQCAtMTA3Nyw4ICYjNDM7MTAxOCw2IEBAIHN0YXRpYyBpbnQgZW5ldGM0X3BmX25ldGRldl9jcmVhdGUoc3RydWN0IGVuZXRjX3NpICpzaSlcbiBcdHJldHVybiAwO1xuIFxuIGVycl9yZWdfbmV0ZGV2OlxuLVx0ZGVzdHJveV93b3JrcXVldWUoc2ktXHUwMDNld29ya3F1ZXVlKTtcbi1lcnJfd3FfaW5pdDpcbiBcdGVuZXRjNF9saW5rX2RlaW5pdChwcml2KTtcbiBlcnJfbGlua19pbml0OlxuIFx0ZW5ldGNfZnJlZV9tc2l4KHByaXYpO1xuQEAgLTEwOTYsOCAmIzQzOzEwMzUsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGZfbmV0ZGV2X2Rlc3Ryb3koc3RydWN0IGVuZXRjX3NpICpzaSlcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gc2ktXHUwMDNlbmRldjtcbiBcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuLVx0Y2FuY2VsX3dvcmsoXHUwMDI2c2ktXHUwMDNlcnhfbW9kZV90YXNrKTtcbi1cdGRlc3Ryb3lfd29ya3F1ZXVlKHNpLVx1MDAzZXdvcmtxdWV1ZSk7XG4gXHRlbmV0YzRfbGlua19kZWluaXQocHJpdik7XG4gXHRlbmV0Y19mcmVlX21zaXgocHJpdik7XG4gXHRmcmVlX25ldGRldihuZGV2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuY1xuaW5kZXggNzFmMzc2ZWYxYmUxYzkuLjA3Yjc4MzJmMjQyNzZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuY1xuQEAgLTI5LDcgJiM0MzsyOSw3IEBAIHN0YXRpYyBjb25zdCB1MzIgZW5ldGNfcnhiZHJfcmVnc1tdID0ge1xuIH07XG4gXG4gc3RhdGljIGNvbnN0IHUzMiBlbmV0Y19wb3J0X3JlZ3NbXSA9IHtcbi1cdEVORVRDX1BNUiwgRU5FVENfUFNSLCBFTkVUQ19QU0lQTVIsIEVORVRDX1BTSVBNQVIwKDApLFxuJiM0MztcdEVORVRDX1BNUiwgRU5FVENfUFNSLCBFTkVUQ19QU0lQTU1SLCBFTkVUQ19QU0lQTUFSMCgwKSxcbiBcdEVORVRDX1BTSVBNQVIxKDApLCBFTkVUQ19QVFhNQkFSLCBFTkVUQ19QQ0FQUjAsIEVORVRDX1BDQVBSMSxcbiBcdEVORVRDX1BTSUNGR1IwKDApLCBFTkVUQ19QUkZTQ0FQUiwgRU5FVENfUFRDTVNEVVIoMCksXG4gXHRFTkVUQ19QTTBfQ01EX0NGRywgRU5FVENfUE0wX01BWEZSTSwgRU5FVENfUE0wX0lGX01PREVcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oXG5pbmRleCBiZjk5YjY1ZDc1OThhYi4uMTZkYTczMmRjNWRlODIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfaHcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmhcbkBAIC0xODAsMTMgJiM0MzsxODAsMTMgQEAgZW51bSBlbmV0Y19iZHJfdHlwZSB7VFgsIFJYfTtcbiAjZGVmaW5lIEVORVRDX1BNUl9QU1BFRURfMTAwME1cdEJJVCg5KVxuICNkZWZpbmUgRU5FVENfUE1SX1BTUEVFRF8yNTAwTVx0QklUKDEwKVxuICNkZWZpbmUgRU5FVENfUFNSXHRcdDB4MDAwNCAvKiBSTyAqL1xuLSNkZWZpbmUgRU5FVENfUFNJUE1SXHRcdDB4MDAxOFxuLSNkZWZpbmUgRU5FVENfUFNJUE1SX1NFVF9VUChuKVx0QklUKG4pIC8qIG4gPSBTSSBpbmRleCAqL1xuLSNkZWZpbmUgRU5FVENfUFNJUE1SX1NFVF9NUChuKVx0QklUKChuKSAmIzQzOyAxNilcbiYjNDM7I2RlZmluZSBFTkVUQ19QU0lQTU1SXHRcdDB4MDAxOFxuJiM0MzsjZGVmaW5lICBQU0lQTU1SX1NJX01BQ19VUChuKVx0QklUKG4pIC8qIG4gPSBTSSBpbmRleCAqL1xuJiM0MzsjZGVmaW5lICBQU0lQTU1SX1NJX01BQ19NUChuKVx0QklUKChuKSAmIzQzOyAxNilcbiYjNDM7XG4gI2RlZmluZSBFTkVUQ19QU0lQVk1SXHRcdDB4MDAxY1xuLSNkZWZpbmUgRU5FVENfVkxBTl9QUk9NSVNDX01BUF9BTExcdDB4N1xuLSNkZWZpbmUgRU5FVENfUFNJUFZNUl9TRVRfVlAoc2ltYXApXHQoKHNpbWFwKSBcdTAwMjYgMHg3KVxuLSNkZWZpbmUgRU5FVENfUFNJUFZNUl9TRVRfVlVUQShzaW1hcClcdCgoKHNpbWFwKSBcdTAwMjYgMHg3KSBcdTAwM2NcdTAwM2MgMTYpXG4mIzQzOyNkZWZpbmUgIFBTSVBWTVJfU0lfVkxBTl9QKG4pXHRCSVQobikgLyogbiA9IFNJIGluZGV4ICovXG4mIzQzO1xuICNkZWZpbmUgRU5FVENfUFNJUE1BUjAobilcdCgweDAxMDAgJiM0MzsgKG4pICogMHg4KSAvKiBuID0gU0kgaW5kZXggKi9cbiAjZGVmaW5lIEVORVRDX1BTSVBNQVIxKG4pXHQoMHgwMTA0ICYjNDM7IChuKSAqIDB4OClcbiAjZGVmaW5lIEVORVRDX1BWQ0xDVFJcdFx0MHgwMjA4XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuY1xuaW5kZXggMmQ2ODdiYjhjM2EwNjMuLmE1MDk5MjlmODlmMjVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jXG5AQCAtNDIsMjYgJiM0Mzs0Miw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3BmX2Rlc3Ryb3lfcGNzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuIFx0bHlueF9wY3NfZGVzdHJveShwY3MpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBlbmV0Y19zZXRfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19odyAqaHcsIGNoYXIgc2lfbWFwKVxuLXtcbi1cdHUzMiB2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQ19QU0lQVk1SKTtcbi1cbi1cdHZhbCBcdTAwMjY9IH5FTkVUQ19QU0lQVk1SX1NFVF9WUChFTkVUQ19WTEFOX1BST01JU0NfTUFQX0FMTCk7XG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQ19QU0lQVk1SLCBFTkVUQ19QU0lQVk1SX1NFVF9WUChzaV9tYXApIHwgdmFsKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZW5ldGNfZW5hYmxlX3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgc2lfaWR4KVxuLXtcbi1cdHBmLVx1MDAzZXZsYW5fcHJvbWlzY19zaW1hcCB8PSBCSVQoc2lfaWR4KTtcbi1cdGVuZXRjX3NldF92bGFuX3Byb21pc2MoXHUwMDI2cGYtXHUwMDNlc2ktXHUwMDNlaHcsIHBmLVx1MDAzZXZsYW5fcHJvbWlzY19zaW1hcCk7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIGVuZXRjX2Rpc2FibGVfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBzaV9pZHgpXG4te1xuLVx0cGYtXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwIFx1MDAyNj0gfkJJVChzaV9pZHgpO1xuLVx0ZW5ldGNfc2V0X3ZsYW5fcHJvbWlzYyhcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VodywgcGYtXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwKTtcbi19XG4tXG4gc3RhdGljIHZvaWQgZW5ldGNfc2V0X2lzb2xfdmxhbihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksIHUxNiB2bGFuLCB1OCBxb3MpXG4ge1xuIFx0dTMyIHZhbCA9IDA7XG5AQCAtODAsMzcgJiM0Mzs2MCw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjX2FkZF9tYWNfYWRkcl9lbV9maWx0ZXIoc3RydWN0IGVuZXRjX21hY19maWx0ZXIgKmZpbHRlcixcbiBcdGZpbHRlci1cdTAwM2VtYWNfYWRkcl9jbnQmIzQzOyYjNDM7O1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBlbmV0Y19jbGVhcl9tYWNfaHRfZmx0KHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZHgsIGludCB0eXBlKVxuLXtcbi1cdGJvb2wgZXJyID0gc2ktXHUwMDNlZXJyYXRhIFx1MDAyNiBFTkVUQ19FUlJfVUNNQ1NXUDtcbi1cbi1cdGlmICh0eXBlID09IFVDKSB7XG4tXHRcdGVuZXRjX3BvcnRfd3IoXHUwMDI2c2ktXHUwMDNlaHcsIEVORVRDX1BTSVVNSEZSMChzaV9pZHgsIGVyciksIDApO1xuLVx0XHRlbmV0Y19wb3J0X3dyKFx1MDAyNnNpLVx1MDAzZWh3LCBFTkVUQ19QU0lVTUhGUjEoc2lfaWR4KSwgMCk7XG4tXHR9IGVsc2UgeyAvKiBNQyAqL1xuLVx0XHRlbmV0Y19wb3J0X3dyKFx1MDAyNnNpLVx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjAoc2lfaWR4LCBlcnIpLCAwKTtcbi1cdFx0ZW5ldGNfcG9ydF93cihcdTAwMjZzaS1cdTAwM2VodywgRU5FVENfUFNJTU1IRlIxKHNpX2lkeCksIDApO1xuLVx0fVxuLX1cbi1cbi1zdGF0aWMgdm9pZCBlbmV0Y19zZXRfbWFjX2h0X2ZsdChzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWR4LCBpbnQgdHlwZSxcbi1cdFx0XHRcdCB1bnNpZ25lZCBsb25nIGhhc2gpXG4te1xuLVx0Ym9vbCBlcnIgPSBzaS1cdTAwM2VlcnJhdGEgXHUwMDI2IEVORVRDX0VSUl9VQ01DU1dQO1xuLVxuLVx0aWYgKHR5cGUgPT0gVUMpIHtcbi1cdFx0ZW5ldGNfcG9ydF93cihcdTAwMjZzaS1cdTAwM2VodywgRU5FVENfUFNJVU1IRlIwKHNpX2lkeCwgZXJyKSxcbi1cdFx0XHQgICAgICBsb3dlcl8zMl9iaXRzKGhhc2gpKTtcbi1cdFx0ZW5ldGNfcG9ydF93cihcdTAwMjZzaS1cdTAwM2VodywgRU5FVENfUFNJVU1IRlIxKHNpX2lkeCksXG4tXHRcdFx0ICAgICAgdXBwZXJfMzJfYml0cyhoYXNoKSk7XG4tXHR9IGVsc2UgeyAvKiBNQyAqL1xuLVx0XHRlbmV0Y19wb3J0X3dyKFx1MDAyNnNpLVx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjAoc2lfaWR4LCBlcnIpLFxuLVx0XHRcdCAgICAgIGxvd2VyXzMyX2JpdHMoaGFzaCkpO1xuLVx0XHRlbmV0Y19wb3J0X3dyKFx1MDAyNnNpLVx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjEoc2lfaWR4KSxcbi1cdFx0XHQgICAgICB1cHBlcl8zMl9iaXRzKGhhc2gpKTtcbi1cdH1cbi19XG4tXG4gc3RhdGljIHZvaWQgZW5ldGNfc3luY19tYWNfZmlsdGVycyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIHtcbiBcdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICpmID0gcGYtXHUwMDNlbWFjX2ZpbHRlcjtcbkBAIC0xMjIsMTIgJiM0Mzs3MSwxNiBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zeW5jX21hY19maWx0ZXJzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQUREUl9UWVBFOyBpJiM0MzsmIzQzOywgZiYjNDM7JiM0MzspIHtcbiBcdFx0Ym9vbCBlbSA9IChmLVx1MDAzZW1hY19hZGRyX2NudCA9PSAxKSBcdTAwMjZcdTAwMjYgKGkgPT0gVUMpO1xuIFx0XHRib29sIGNsZWFyID0gIWYtXHUwMDNlbWFjX2FkZHJfY250O1xuJiM0MztcdFx0dTY0IGhhc2g7XG4gXG4gXHRcdGlmIChjbGVhcikge1xuLVx0XHRcdGlmIChpID09IFVDKVxuJiM0MztcdFx0XHRpZiAoaSA9PSBVQykge1xuIFx0XHRcdFx0ZW5ldGNfY2xlYXJfbWFjX2ZsdF9lbnRyeShzaSwgcG9zKTtcbiYjNDM7XHRcdFx0XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7XG4mIzQzO1x0XHRcdH1cbiBcbi1cdFx0XHRlbmV0Y19jbGVhcl9tYWNfaHRfZmx0KHNpLCAwLCBpKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuQEAgLTEzNSw3ICYjNDM7ODgsNyBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zeW5jX21hY19maWx0ZXJzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXHRcdGlmIChlbSkge1xuIFx0XHRcdGludCBlcnI7XG4gXG4tXHRcdFx0ZW5ldGNfY2xlYXJfbWFjX2h0X2ZsdChzaSwgMCwgVUMpO1xuJiM0MztcdFx0XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuIFxuIFx0XHRcdGVyciA9IGVuZXRjX3NldF9tYWNfZmx0X2VudHJ5KHNpLCBwb3MsIGYtXHUwMDNlbWFjX2FkZHIsXG4gXHRcdFx0XHRcdFx0ICAgICAgQklUKDApKTtcbkBAIC0xNDcsMTEgJiM0MzsxMDAsMTUgQEAgc3RhdGljIHZvaWQgZW5ldGNfc3luY19tYWNfZmlsdGVycyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0XHRcdFx0IGVycik7XG4gXHRcdH1cbiBcbiYjNDM7XHRcdGJpdG1hcF90b19hcnI2NChcdTAwMjZoYXNoLCBmLVx1MDAzZW1hY19oYXNoX3RhYmxlLFxuJiM0MztcdFx0XHRcdEVORVRDX01BRERSX0hBU0hfVEJMX1NaKTtcbiBcdFx0LyogaGFzaCB0YWJsZSBmaWx0ZXIsIGNsZWFyIEVNIGZpbHRlciBmb3IgVUMgZW50cmllcyAqL1xuLVx0XHRpZiAoaSA9PSBVQylcbiYjNDM7XHRcdGlmIChpID09IFVDKSB7XG4gXHRcdFx0ZW5ldGNfY2xlYXJfbWFjX2ZsdF9lbnRyeShzaSwgcG9zKTtcbi1cbi1cdFx0ZW5ldGNfc2V0X21hY19odF9mbHQoc2ksIDAsIGksICpmLVx1MDAzZW1hY19oYXNoX3RhYmxlKTtcbiYjNDM7XHRcdFx0ZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCBoYXNoKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzaSwgMCwgaGFzaCk7XG4mIzQzO1x0XHR9XG4gXHR9XG4gfVxuIFxuQEAgLTE1OSwyMSAmIzQzOzExNiwxNyBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wZl9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihwcml2LVx1MDAzZXNpKTtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwcml2LVx1MDAzZXNpLVx1MDAzZWh3O1xuIFx0Ym9vbCB1cHJvbSA9IGZhbHNlLCBtcHJvbSA9IGZhbHNlO1xuIFx0c3RydWN0IGVuZXRjX21hY19maWx0ZXIgKmZpbHRlcjtcbiBcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XG4tXHR1MzIgcHNpcG1yID0gMDtcbiBcdGJvb2wgZW07XG4gXG4gXHRpZiAobmRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BST01JU0MpIHtcbiBcdFx0LyogZW5hYmxlIHByb21pc2MgbW9kZSBmb3IgU0kwIChQRikgKi9cbi1cdFx0cHNpcG1yID0gRU5FVENfUFNJUE1SX1NFVF9VUCgwKSB8IEVORVRDX1BTSVBNUl9TRVRfTVAoMCk7XG4gXHRcdHVwcm9tID0gdHJ1ZTtcbiBcdFx0bXByb20gPSB0cnVlO1xuIFx0fSBlbHNlIGlmIChuZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfQUxMTVVMVEkpIHtcbiBcdFx0LyogZW5hYmxlIG11bHRpIGNhc3QgcHJvbWlzYyBtb2RlIGZvciBTSTAgKFBGKSAqL1xuLVx0XHRwc2lwbXIgPSBFTkVUQ19QU0lQTVJfU0VUX01QKDApO1xuIFx0XHRtcHJvbSA9IHRydWU7XG4gXHR9XG4gXG5AQCAtMjExLDkgJiM0MzsxNjQsOCBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wZl9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdFx0LyogdXBkYXRlIFBGIGVudHJpZXMgKi9cbiBcdFx0ZW5ldGNfc3luY19tYWNfZmlsdGVycyhwZik7XG4gXG4tXHRwc2lwbXIgfD0gZW5ldGNfcG9ydF9yZChodywgRU5FVENfUFNJUE1SKSBcdTAwMjZcbi1cdFx0ICB+KEVORVRDX1BTSVBNUl9TRVRfVVAoMCkgfCBFTkVUQ19QU0lQTVJfU0VUX01QKDApKTtcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BTSVBNUiwgcHNpcG1yKTtcbiYjNDM7XHRlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyhwcml2LVx1MDAzZXNpLCAwLCB1cHJvbSk7XG4mIzQzO1x0ZW5ldGNfc2V0X3NpX21jX3Byb21pc2MocHJpdi1cdTAwM2VzaSwgMCwgbXByb20pO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbmV0Y19zZXRfbG9vcGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZW4pXG5AQCAtNDY5LDEyICYjNDM7NDIxLDExIEBAIHN0YXRpYyB2b2lkIGVuZXRjX2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXG4gXHQvKiBzcGxpdCB1cCBSRlMgZW50cmllcyAqL1xuIFx0ZW5ldGNfcG9ydF9hc3NpZ25fcmZzX2VudHJpZXMocGYtXHUwMDNlc2kpO1xuLVxuIFx0LyogZW5mb3JjZSBWTEFOIHByb21pc2MgbW9kZSBmb3IgYWxsIFNJcyAqL1xuLVx0cGYtXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwID0gRU5FVENfVkxBTl9QUk9NSVNDX01BUF9BTEw7XG4tXHRlbmV0Y19zZXRfdmxhbl9wcm9taXNjKGh3LCBwZi1cdTAwM2V2bGFuX3Byb21pc2Nfc2ltYXApO1xuJiM0MztcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBwZi1cdTAwM2V0b3RhbF92ZnMgJiM0MzsgMTsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRlbmV0Y19zZXRfc2lfdmxhbl9wcm9taXNjKHBmLVx1MDAzZXNpLCBpLCB0cnVlKTtcbiBcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BTSVBNUiwgMCk7XG4mIzQzO1x0ZW5ldGNfcG9ydF93cihodywgRU5FVENfUFNJUE1NUiwgMCk7XG4gXG4gXHQvKiBlbmFibGUgcG9ydCAqL1xuIFx0ZW5ldGNfcG9ydF93cihodywgRU5FVENfUE1SLCBFTkVUQ19QTVJfRU4pO1xuQEAgLTQ5NCwxMiAmIzQzOzQ0NSw5IEBAIHN0YXRpYyBpbnQgZW5ldGNfcGZfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0fVxuIFxuIFx0aWYgKGNoYW5nZWQgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUikge1xuLVx0XHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihwcml2LVx1MDAzZXNpKTtcbiYjNDM7XHRcdGJvb2wgcHJvbWlzYyA9ICEoZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUik7XG4gXG4tXHRcdGlmICghIShmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSKSlcbi1cdFx0XHRlbmV0Y19kaXNhYmxlX3NpX3ZsYW5fcHJvbWlzYyhwZiwgMCk7XG4tXHRcdGVsc2Vcbi1cdFx0XHRlbmV0Y19lbmFibGVfc2lfdmxhbl9wcm9taXNjKHBmLCAwKTtcbiYjNDM7XHRcdGVuZXRjX3NldF9zaV92bGFuX3Byb21pc2MocHJpdi1cdTAwM2VzaSwgMCwgcHJvbWlzYyk7XG4gXHR9XG4gXG4gXHRpZiAoY2hhbmdlZCBcdTAwMjYgTkVUSUZfRl9MT09QQkFDSylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5oXG5pbmRleCAyODViN2U1YzQ4ZmRjNy4uNTZkMjNhOGExMWEwNjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmhcbkBAIC0xNywxMiAmIzQzOzE3LDkgQEAgc3RydWN0IGVuZXRjX3ZmX3N0YXRlIHtcbiB9O1xuIFxuIHN0cnVjdCBlbmV0Y19wb3J0X2NhcHMge1xuLVx0dTMyIGhhbGZfZHVwbGV4OjE7XG4tXHRpbnQgbnVtX3ZzaTtcbiBcdGludCBudW1fbXNpeDtcbiBcdGludCBudW1fcnhfYmRyO1xuIFx0aW50IG51bV90eF9iZHI7XG4tXHRpbnQgbWFjX2ZpbHRlcl9udW07XG4gfTtcbiBcbiBzdHJ1Y3QgZW5ldGNfcGY7XG5AQCAtNDcsNyAmIzQzOzQ0LDYgQEAgc3RydWN0IGVuZXRjX3BmIHtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCBtc2dfdGFzaztcbiBcdGNoYXIgbXNnX2ludF9uYW1lW0VORVRDX0lOVF9OQU1FX01BWF07XG4gXG4tXHRjaGFyIHZsYW5fcHJvbWlzY19zaW1hcDsgLyogYml0bWFwIG9mIFNJcyBpbiBWTEFOIHByb21pc2MgbW9kZSAqL1xuIFx0REVDTEFSRV9CSVRNQVAodmxhbl9odF9maWx0ZXIsIEVORVRDX1ZMQU5fSFRfU0laRSk7XG4gXHRERUNMQVJFX0JJVE1BUChhY3RpdmVfdmxhbnMsIFZMQU5fTl9WSUQpO1xuIFxuQEAgLTYwLDggJiM0Mzs1Niw2IEBAIHN0cnVjdCBlbmV0Y19wZiB7XG4gXG4gXHRzdHJ1Y3QgZW5ldGNfcG9ydF9jYXBzIGNhcHM7XG4gXHRjb25zdCBzdHJ1Y3QgZW5ldGNfcGZfb3BzICpvcHM7XG4tXG4tXHRpbnQgbnVtX21mZTtcdC8qIG51bWJlciBvZiBtYWMgYWRkcmVzcyBmaWx0ZXIgdGFibGUgZW50cmllcyAqL1xuIH07XG4gXG4gI2RlZmluZSBwaHlsaW5rX3RvX2VuZXRjX3BmKGNvbmZpZykgXFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmNcbmluZGV4IDZlNWQyZjg2OTkxNTBiLi5kMzJhMTk1YTA0Yzk3ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jXG5AQCAtMSw1ICYjNDM7MSw1IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wJiM0MzsgT1IgQlNELTMtQ2xhdXNlKVxuLS8qIENvcHlyaWdodCAyMDI0IE5YUCAqL1xuJiM0MzsvKiBDb3B5cmlnaHQgMjAyNC0yMDI2IE5YUCAqL1xuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzbC9lbmV0Y19tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbkBAIC04Nyw2ICYjNDM7ODcsMTEyIEBAIGludCBlbmV0Y19zZXR1cF9tYWNfYWRkcmVzc2VzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3NldHVwX21hY19hZGRyZXNzZXMpO1xuIFxuJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV91Y19wcm9taXNjKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgYm9vbCBwcm9taXNjKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnNpLVx1MDAzZWh3O1xuJiM0MztcdGludCBwc2lwbW1yX29mZjtcbiYjNDM7XHR1MzIgdmFsO1xuJiM0MztcbiYjNDM7XHRpZiAoaXNfZW5ldGNfcmV2MShzaSkpXG4mIzQzO1x0XHRwc2lwbW1yX29mZiA9IEVORVRDX1BTSVBNTVI7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0cHNpcG1tcl9vZmYgPSBFTkVUQzRfUFNJUE1NUjtcbiYjNDM7XG4mIzQzO1x0dmFsID0gZW5ldGNfcG9ydF9yZChodywgcHNpcG1tcl9vZmYpO1xuJiM0MztcbiYjNDM7XHRpZiAocHJvbWlzYylcbiYjNDM7XHRcdHZhbCB8PSBQU0lQTU1SX1NJX01BQ19VUChzaV9pZCk7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0dmFsIFx1MDAyNj0gflBTSVBNTVJfU0lfTUFDX1VQKHNpX2lkKTtcbiYjNDM7XG4mIzQzO1x0ZW5ldGNfcG9ydF93cihodywgcHNpcG1tcl9vZmYsIHZhbCk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX3VjX3Byb21pc2MpO1xuJiM0MztcbiYjNDM7dm9pZCBlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZzaS1cdTAwM2VodztcbiYjNDM7XHRpbnQgcHNpcG1tcl9vZmY7XG4mIzQzO1x0dTMyIHZhbDtcbiYjNDM7XG4mIzQzO1x0aWYgKGlzX2VuZXRjX3JldjEoc2kpKVxuJiM0MztcdFx0cHNpcG1tcl9vZmYgPSBFTkVUQ19QU0lQTU1SO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHBzaXBtbXJfb2ZmID0gRU5FVEM0X1BTSVBNTVI7XG4mIzQzO1xuJiM0MztcdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIHBzaXBtbXJfb2ZmKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHByb21pc2MpXG4mIzQzO1x0XHR2YWwgfD0gUFNJUE1NUl9TSV9NQUNfTVAoc2lfaWQpO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHZhbCBcdTAwMjY9IH5QU0lQTU1SX1NJX01BQ19NUChzaV9pZCk7XG4mIzQzO1xuJiM0MztcdGVuZXRjX3BvcnRfd3IoaHcsIHBzaXBtbXJfb2ZmLCB2YWwpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3NldF9zaV9tY19wcm9taXNjKTtcbiYjNDM7XG4mIzQzO3ZvaWQgZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgdTY0IGhhc2gpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcHNpdW1oZnIwX29mZiwgcHNpdW1oZnIxX29mZjtcbiYjNDM7XHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2c2ktXHUwMDNlaHc7XG4mIzQzO1xuJiM0MztcdGlmIChpc19lbmV0Y19yZXYxKHNpKSkge1xuJiM0MztcdFx0Ym9vbCBlcnIgPSBzaS1cdTAwM2VlcnJhdGEgXHUwMDI2IEVORVRDX0VSUl9VQ01DU1dQO1xuJiM0MztcbiYjNDM7XHRcdHBzaXVtaGZyMF9vZmYgPSBFTkVUQ19QU0lVTUhGUjAoc2lfaWQsIGVycik7XG4mIzQzO1x0XHRwc2l1bWhmcjFfb2ZmID0gRU5FVENfUFNJVU1IRlIxKHNpX2lkKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cHNpdW1oZnIwX29mZiA9IEVORVRDNF9QU0lVTUhGUjAoc2lfaWQpO1xuJiM0MztcdFx0cHNpdW1oZnIxX29mZiA9IEVORVRDNF9QU0lVTUhGUjEoc2lfaWQpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0ZW5ldGNfcG9ydF93cihodywgcHNpdW1oZnIwX29mZiwgbG93ZXJfMzJfYml0cyhoYXNoKSk7XG4mIzQzO1x0ZW5ldGNfcG9ydF93cihodywgcHNpdW1oZnIxX29mZiwgdXBwZXJfMzJfYml0cyhoYXNoKSk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKTtcbiYjNDM7XG4mIzQzO3ZvaWQgZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgdTY0IGhhc2gpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcHNpbW1oZnIwX29mZiwgcHNpbW1oZnIxX29mZjtcbiYjNDM7XHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2c2ktXHUwMDNlaHc7XG4mIzQzO1xuJiM0MztcdGlmIChpc19lbmV0Y19yZXYxKHNpKSkge1xuJiM0MztcdFx0Ym9vbCBlcnIgPSBzaS1cdTAwM2VlcnJhdGEgXHUwMDI2IEVORVRDX0VSUl9VQ01DU1dQO1xuJiM0MztcbiYjNDM7XHRcdHBzaW1taGZyMF9vZmYgPSBFTkVUQ19QU0lNTUhGUjAoc2lfaWQsIGVycik7XG4mIzQzO1x0XHRwc2ltbWhmcjFfb2ZmID0gRU5FVENfUFNJTU1IRlIxKHNpX2lkKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cHNpbW1oZnIwX29mZiA9IEVORVRDNF9QU0lNTUhGUjAoc2lfaWQpO1xuJiM0MztcdFx0cHNpbW1oZnIxX29mZiA9IEVORVRDNF9QU0lNTUhGUjEoc2lfaWQpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0ZW5ldGNfcG9ydF93cihodywgcHNpbW1oZnIwX29mZiwgbG93ZXJfMzJfYml0cyhoYXNoKSk7XG4mIzQzO1x0ZW5ldGNfcG9ydF93cihodywgcHNpbW1oZnIxX29mZiwgdXBwZXJfMzJfYml0cyhoYXNoKSk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKTtcbiYjNDM7XG4mIzQzO3ZvaWQgZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZzaS1cdTAwM2VodztcbiYjNDM7XHRpbnQgcHNpcHZtcl9vZmY7XG4mIzQzO1x0dTMyIHZhbDtcbiYjNDM7XG4mIzQzO1x0aWYgKGlzX2VuZXRjX3JldjEoc2kpKVxuJiM0MztcdFx0cHNpcHZtcl9vZmYgPSBFTkVUQ19QU0lQVk1SO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHBzaXB2bXJfb2ZmID0gRU5FVEM0X1BTSVBWTVI7XG4mIzQzO1xuJiM0MztcdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIHBzaXB2bXJfb2ZmKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHByb21pc2MpXG4mIzQzO1x0XHR2YWwgfD0gUFNJUFZNUl9TSV9WTEFOX1Aoc2lfaWQpO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHZhbCBcdTAwMjY9IH5QU0lQVk1SX1NJX1ZMQU5fUChzaV9pZCk7XG4mIzQzO1xuJiM0MztcdGVuZXRjX3BvcnRfd3IoaHcsIHBzaXB2bXJfb2ZmLCB2YWwpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3NldF9zaV92bGFuX3Byb21pc2MpO1xuJiM0MztcbiB2b2lkIGVuZXRjX3BmX25ldGRldl9zZXR1cChzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgKm5kZXZfb3BzKVxuIHtcbkBAIC0yNzUsNyAmIzQzOzM4MSw4IEBAIHN0YXRpYyBib29sIGVuZXRjX3BvcnRfaGFzX3BjcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0cmV0dXJuIChwZi1cdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSB8fFxuIFx0XHRwZi1cdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggfHxcbiBcdFx0cGYtXHUwMDNlaWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYIHx8XG4tXHRcdHBmLVx1MDAzZWlmX21vZGUgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUkpO1xuJiM0MztcdFx0cGYtXHUwMDNlaWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSSB8fFxuJiM0MztcdFx0cGYtXHUwMDNlaWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpO1xuIH1cbiBcbiBpbnQgZW5ldGNfbWRpb2J1c19jcmVhdGUoc3RydWN0IGVuZXRjX3BmICpwZiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuQEAgLTMxNiwyNSAmIzQzOzQyMyw0MiBAQCBpbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuIHtcbiBcdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBlbmV0Y19zaV9wcml2KHByaXYtXHUwMDNlc2kpO1xuIFx0c3RydWN0IHBoeWxpbmsgKnBoeWxpbms7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBtYWNfY2FwcztcbiBcdGludCBlcnI7XG4gXG4gXHRwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5kZXYgPSBcdTAwMjZwcml2LVx1MDAzZW5kZXYtXHUwMDNlZGV2O1xuIFx0cGYtXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xuLVx0cGYtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRSB8XG4tXHRcdE1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMCB8IE1BQ18yNTAwRkQ7XG4gXG4gXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxuIFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbi1cdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfU0dNSUksXG4tXHRcdCAgcGYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuLVx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgsXG4tXHRcdCAgcGYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuLVx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsXG4tXHRcdCAgcGYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuLVx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJLFxuLVx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbi1cdHBoeV9pbnRlcmZhY2Vfc2V0X3JnbWlpKHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiBcbiYjNDM7XHRtYWNfY2FwcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTtcbiYjNDM7XHRpZiAoIWVuZXRjX2lzX3BzZXVkb19tYWMocHJpdi1cdTAwM2VzaSkpIHtcbiYjNDM7XHRcdG1hY19jYXBzIHw9IE1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDtcbiYjNDM7XG4mIzQzO1x0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLFxuJiM0MztcdFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiYjNDM7XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYLFxuJiM0MztcdFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiYjNDM7XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLFxuJiM0MztcdFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiYjNDM7XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSSxcbiYjNDM7XHRcdFx0ICBwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKCFpc19lbmV0Y19yZXYxKHByaXYtXHUwMDNlc2kpKSB7XG4mIzQzO1x0XHRcdG1hY19jYXBzIHw9IE1BQ181MDAwRkQgfCBNQUNfMTAwMDBGRDtcbiYjNDM7XHRcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUixcbiYjNDM7XHRcdFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRwaHlfaW50ZXJmYWNlX3NldF9yZ21paShwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdG1hY19jYXBzIHw9IE1BQ18xMEZEIHwgTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQgfFxuJiM0MztcdFx0XHQgICAgTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEIHwgTUFDXzIwMDAwRkQgfFxuJiM0MztcdFx0XHQgICAgTUFDXzI1MDAwRkQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gbWFjX2NhcHM7XG4gXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cGYtXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXG4gXHRcdFx0XHQgcGYtXHUwMDNlaWZfbW9kZSwgb3BzKTtcbiBcdGlmIChJU19FUlIocGh5bGluaykpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmhcbmluZGV4IDU3ZDJlMGViZDJiMGJiLi44MjQzY2UwZGU1N2Y2NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oXG5AQCAtMTcsNiAmIzQzOzE3LDExIEBAIHZvaWQgZW5ldGNfc2V0X2RlZmF1bHRfcnNzX2tleShzdHJ1Y3QgZW5ldGNfcGYgKnBmKTtcbiBpbnQgZW5ldGNfdmxhbl9yeF9hZGRfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBfX2JlMTYgcHJvdCwgdTE2IHZpZCk7XG4gaW50IGVuZXRjX3ZsYW5fcnhfZGVsX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgX19iZTE2IHByb3QsIHUxNiB2aWQpO1xuIGludCBlbmV0Y19pbml0X3NyaW92X3Jlc291cmNlcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKTtcbiYjNDM7dm9pZCBlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYyk7XG4mIzQzO3ZvaWQgZW5ldGNfc2V0X3NpX21jX3Byb21pc2Moc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCBib29sIHByb21pc2MpO1xuJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIHU2NCBoYXNoKTtcbiYjNDM7dm9pZCBlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCB1NjQgaGFzaCk7XG4mIzQzO3ZvaWQgZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYyk7XG4gXG4gc3RhdGljIGlubGluZSB1MTYgZW5ldGNfZ2V0X2lwX3JldmlzaW9uKHN0cnVjdCBlbmV0Y19odyAqaHcpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19xb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19xb3MuY1xuaW5kZXggN2IxN2JjYTI0ZjI2MGYuLjJhYTBmY2FhZmNkMjNjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3Fvcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcW9zLmNcbkBAIC0xMTM1LDcgJiM0MzsxMTM1LDYgQEAgc3RhdGljIGludCBlbmV0Y19wc2ZwX3BhcnNlX2Nsc2Zsb3dlcihzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxuIFx0c3RydWN0IGZsb3dfYWN0aW9uX2VudHJ5ICplbnRyeTtcbiBcdHN0cnVjdCBhY3Rpb25fZ2F0ZV9lbnRyeSAqZTtcbiBcdHU4IHNmaV9vdmVyd3JpdGUgPSAwO1xuLVx0aW50IGVudHJpZXNfc2l6ZTtcbiBcdGludCBpLCBlcnI7XG4gXG4gXHRpZiAoZi1cdTAwM2Vjb21tb24uY2hhaW5faW5kZXggXHUwMDNlPSBwcml2LVx1MDAzZXBzZnBfY2FwLm1heF9zdHJlYW1pZCkge1xuQEAgLTEyNDIsOCAmIzQzOzEyNDEsNyBAQCBzdGF0aWMgaW50IGVuZXRjX3BzZnBfcGFyc2VfY2xzZmxvd2VyKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsXG4gXHRcdGdvdG8gZnJlZV9maWx0ZXI7XG4gXHR9XG4gXG4tXHRlbnRyaWVzX3NpemUgPSBzdHJ1Y3Rfc2l6ZShzZ2ksIGVudHJpZXMsIGVudHJ5Zy1cdTAwM2VnYXRlLm51bV9lbnRyaWVzKTtcbi1cdHNnaSA9IGt6YWxsb2MoZW50cmllc19zaXplLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRzZ2kgPSBremFsbG9jX2ZsZXgoKnNnaSwgZW50cmllcywgZW50cnlnLVx1MDAzZWdhdGUubnVtX2VudHJpZXMpO1xuIFx0aWYgKCFzZ2kpIHtcbiBcdFx0ZXJyID0gLUVOT01FTTtcbiBcdFx0Z290byBmcmVlX2ZpbHRlcjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jXG5pbmRleCA5Y2RiMGE0ZDZiYWZiNy4uN2RjYjRhMDI0NmY1MjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmNcbkBAIC0zMTcsNyAmIzQzOzMxNywxNCBAQCBzdGF0aWMgaW50IGVuZXRjX3ZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFxuIFx0ZW5ldGNfZ2V0X3NpX2NhcHMoc2kpO1xuIFxuLVx0bmRldiA9IGFsbG9jX2V0aGVyZGV2X21xKHNpemVvZigqcHJpdiksIEVORVRDX01BWF9OVU1fVFhRUyk7XG4mIzQzO1x0LyogQ3VycmVudGx5LCB0aGUgc3VwcG9ydGVkIFNvQ3MgaGF2ZSBhIG1heCBvZiA2IENQVXMgYW5kIHRoZSBWRnNcbiYjNDM7XHQgKiBoYXZlIGxlc3MgdGhhbiA2IFJYL1RYIHJpbmdzLiBTbyBubyBpc3N1ZXMgZm9yIHRoZXNlIHN1cHBvcnRlZFxuJiM0MztcdCAqIFNvQ3MsIGJ1dCBmb3IgZnV0dXJlIFNvQ3Mgd2hpY2ggaGF2ZSBtb3JlIENQVXMgb3IgbW9yZSBUWC9SWFxuJiM0MztcdCAqIHJpbmdzLCBhbGwgdGhlIHJlbGF0ZWQgbG9naWMgbmVlZHMgdG8gYmUgaW1wcm92ZWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0bmRldiA9IGFsbG9jX2V0aGVyZGV2X21xcyhzaXplb2YoKnByaXYpLFxuJiM0MztcdFx0XHRcdCAgbWluKHNpLVx1MDAzZW51bV90eF9yaW5ncywgRU5FVENfTUFYX05VTV9UWFFTKSxcbiYjNDM7XHRcdFx0XHQgIG1pbihzaS1cdTAwM2VudW1fcnhfcmluZ3MsIEVORVRDX01BWF9OVU1fVFhRUykpO1xuIFx0aWYgKCFuZGV2KSB7XG4gXHRcdGVyciA9IC1FTk9NRU07XG4gXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O25ldGRldiBjcmVhdGlvbiBmYWlsZWRcXG5cJiMzNDspO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZnNsL250bXAuaCBiL2luY2x1ZGUvbGludXgvZnNsL250bXAuaFxuaW5kZXggZDNiNmM0NzZiOTFhMmQuLjc2NGVmMjg5MjYwODVlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9mc2wvbnRtcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2ZzbC9udG1wLmhcbkBAIC03NSw4ICYjNDM7NzUsMTAgQEAgc3RydWN0IG50bXBfdXNlciB7XG4gXHQvKiBOVE1QIHRhYmxlIGJpdG1hcHMgZm9yIHJlc291cmNlIG1hbmFnZW1lbnQgKi9cbiBcdHUzMiBldHRfYml0bWFwX3NpemU7XG4gXHR1MzIgZWN0X2JpdG1hcF9zaXplO1xuJiM0MztcdHUxNiBtYWZ0X251bV9lbnRyaWVzO1xuIFx0dW5zaWduZWQgbG9uZyAqZXR0X2dpZF9iaXRtYXA7IC8qIG9ubHkgdmFsaWQgZm9yIHN3aXRjaCAqL1xuIFx0dW5zaWduZWQgbG9uZyAqZWN0X2dpZF9iaXRtYXA7IC8qIG9ubHkgdmFsaWQgZm9yIHN3aXRjaCAqL1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgKm1hZnRfZWlkX2JpdG1hcDsgLyogb25seSB2YWxpZCBmb3IgRU5FVEMgKi9cbiB9O1xuIFxuIHN0cnVjdCBtYWZ0X2VudHJ5X2RhdGEge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBoYXJkd2FyZS1zcGVjaWZpYyB0byBOWFAgU29Dcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFiNTdlNjg3ZjMzZTA3ODM3OWE4OWUyYjJmZDVjYTNiNDQ3MWUxMjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCA3IDE2OjA2OjUyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaAppbmRleCAwNGE1ZGQ1ZWE2Yzc0Yy4uODgzOWNmYjQ5YmNmZTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oCkBAIC0xLDUgJiM0MzsxLDUgQEAKIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMCYjNDM7IE9SIEJTRC0zLUNsYXVzZSkgKi8KLS8qIENvcHlyaWdodCAyMDE3LTIwMTkgTlhQICovCiYjNDM7LyogQ29weXJpZ2h0IDIwMTctMjAxOSwgMjAyNS0yMDI2IE5YUCAqLwogCiAjaW5jbHVkZSAmbHQ7bGludXgvdGltZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wY2kuaCZndDsKQEAgLTMyNCw4ICYjNDM7MzI0LDYgQEAgc3RydWN0IGVuZXRjX3NpIHsKIAljb25zdCBzdHJ1Y3QgZW5ldGNfZHJ2ZGF0YSAqZHJ2ZGF0YTsKIAljb25zdCBzdHJ1Y3QgZW5ldGNfc2lfb3BzICpvcHM7CiAKLQlzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd29ya3F1ZXVlOwotCXN0cnVjdCB3b3JrX3N0cnVjdCByeF9tb2RlX3Rhc2s7CiAJc3RydWN0IGRlbnRyeSAqZGVidWdmc19yb290OwogCXN0cnVjdCBlbmV0Y19tc2dfc3diZCBtc2c7IC8qIE9ubHkgdmFsaWQgZm9yIFZTSSAqLwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9kZWJ1Z2ZzLmMKaW5kZXggMWIxNTkxZGNlNzNkNGIuLjUwMjkwMzhiZjk5ZmFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2RlYnVnZnMuYwpAQCAtMjgsMTUgJiM0MzsyOCwxNCBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zaG93X3NpX21hY19oYXNoX2ZpbHRlcihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBpKQogCiBzdGF0aWMgaW50IGVuZXRjX21hY19maWx0ZXJfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpCiB7Ci0Jc3RydWN0IGVuZXRjX3NpICpzaSA9IHMtJmd0O3ByaXZhdGU7Ci0Jc3RydWN0IGVuZXRjX2h3ICpodyA9ICZhbXA7c2ktJmd0O2h3OwomIzQzOwlzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihzLSZndDtwcml2YXRlKTsKJiM0MzsJc3RydWN0IGVuZXRjX2h3ICpodyA9ICZhbXA7cGYtJmd0O3NpLSZndDtodzsKJiM0MzsJaW50IG51bV9zaSA9IHBmLSZndDt0b3RhbF92ZnMgJiM0MzsgMTsKIAlzdHJ1Y3QgbWFmdF9lbnRyeV9kYXRhIG1hZnQ7Ci0Jc3RydWN0IGVuZXRjX3BmICpwZjsKLQlpbnQgaSwgZXJyLCBudW1fc2k7Ci0JdTMyIHZhbDsKLQotCXBmID0gZW5ldGNfc2lfcHJpdihzaSk7Ci0JbnVtX3NpID0gcGYtJmd0O2NhcHMubnVtX3ZzaSAmIzQzOyAxOwomIzQzOwlzdHJ1Y3QgbnRtcF91c2VyICp1c2VyOwomIzQzOwl1MzIgdmFsLCBlbnRyeV9pZDsKJiM0MzsJaW50IGVyciA9IDA7CiYjNDM7CWludCBpOwogCiAJdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSVBNTVIpOwogCWZvciAoaSA9IDA7IGkgJmx0OyBudW1fc2k7IGkmIzQzOyYjNDM7KSB7CkBAIC01MCwzMSAmIzQzOzQ5LDM4IEBAIHN0YXRpYyBpbnQgZW5ldGNfbWFjX2ZpbHRlcl9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSkKIAlmb3IgKGkgPSAwOyBpICZsdDsgbnVtX3NpOyBpJiM0MzsmIzQzOykKIAkJZW5ldGNfc2hvd19zaV9tYWNfaGFzaF9maWx0ZXIocywgaSk7CiAKLQlpZiAoIXBmLSZndDtudW1fbWZlKQotCQlyZXR1cm4gMDsKJiM0MzsJdXNlciA9ICZhbXA7cGYtJmd0O3NpLSZndDtudG1wX3VzZXI7CiYjNDM7CXJ0bmxfbG9jaygpOwomIzQzOwomIzQzOwlpZiAoYml0bWFwX2VtcHR5KHVzZXItJmd0O21hZnRfZWlkX2JpdG1hcCwgdXNlci0mZ3Q7bWFmdF9udW1fZW50cmllcykpCiYjNDM7CQlnb3RvIHVubG9ja19ydG5sOwogCiAJLyogTUFDIGFkZHJlc3MgZmlsdGVyIHRhYmxlICovCiAJc2VxX3B1dHMocywgJiMzNDtNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGVcbiYjMzQ7KTsKLQlmb3IgKGkgPSAwOyBpICZsdDsgcGYtJmd0O251bV9tZmU7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CWZvcl9lYWNoX3NldF9iaXQoZW50cnlfaWQsIHVzZXItJmd0O21hZnRfZWlkX2JpdG1hcCwKJiM0MzsJCQkgdXNlci0mZ3Q7bWFmdF9udW1fZW50cmllcykgewogCQltZW1zZXQoJmFtcDttYWZ0LCAwLCBzaXplb2YobWFmdCkpOwotCQllcnIgPSBudG1wX21hZnRfcXVlcnlfZW50cnkoJmFtcDtzaS0mZ3Q7bnRtcF91c2VyLCBpLCAmYW1wO21hZnQpOwomIzQzOwkJZXJyID0gbnRtcF9tYWZ0X3F1ZXJ5X2VudHJ5KHVzZXIsIGVudHJ5X2lkLCAmYW1wO21hZnQpOwogCQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKJiM0MzsJCQlnb3RvIHVubG9ja19ydG5sOwogCi0JCXNlcV9wcmludGYocywgJiMzNDtFbnRyeSAlZCwgTUFDOiAlcE0sIFNJIGJpdG1hcDogMHglMDR4XG4mIzM0OywgaSwKLQkJCSAgIG1hZnQua2V5ZS5tYWNfYWRkciwgbGUxNl90b19jcHUobWFmdC5jZmdlLnNpX2JpdG1hcCkpOwomIzQzOwkJc2VxX3ByaW50ZihzLCAmIzM0O0VudHJ5ICVkLCBNQUM6ICVwTSwgU0kgYml0bWFwOiAweCUwNHhcbiYjMzQ7LAomIzQzOwkJCSAgIGVudHJ5X2lkLCBtYWZ0LmtleWUubWFjX2FkZHIsCiYjNDM7CQkJICAgbGUxNl90b19jcHUobWFmdC5jZmdlLnNpX2JpdG1hcCkpOwogCX0KIAotCXJldHVybiAwOwomIzQzO3VubG9ja19ydG5sOgomIzQzOwlydG5sX3VubG9jaygpOwomIzQzOwomIzQzOwlyZXR1cm4gZXJyOwogfQogREVGSU5FX1NIT1dfQVRUUklCVVRFKGVuZXRjX21hY19maWx0ZXIpOwogCiB2b2lkIGVuZXRjX2NyZWF0ZV9kZWJ1Z2ZzKHN0cnVjdCBlbmV0Y19zaSAqc2kpCiB7Ci0Jc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBzaS0mZ3Q7bmRldjsKIAlzdHJ1Y3QgZGVudHJ5ICpyb290OwogCi0Jcm9vdCA9IGRlYnVnZnNfY3JlYXRlX2RpcihuZXRkZXZfbmFtZShuZGV2KSwgTlVMTCk7CiYjNDM7CXJvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIocGNpX25hbWUoc2ktJmd0O3BkZXYpLCBOVUxMKTsKIAlpZiAoSVNfRVJSKHJvb3QpKQogCQlyZXR1cm47CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaAppbmRleCBmMTg0Mzc1NTZhMGVlMi4uMDkwMjVlN2EyYTNhZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2h3LmgKQEAgLTY5LDggJiM0Mzs2OSw2IEBACiAKIC8qIFBvcnQgU3RhdGlvbiBpbnRlcmZhY2UgcHJvbWlzY3VvdXMgTUFDIG1vZGUgcmVnaXN0ZXIgKi8KICNkZWZpbmUgRU5FVEM0X1BTSVBNTVIJCQkweDIwMAotI2RlZmluZSAgUFNJUE1NUl9TSV9NQUNfVVAoYSkJCUJJVChhKSAvKiBhID0gU0kgaW5kZXggKi8KLSNkZWZpbmUgIFBTSVBNTVJfU0lfTUFDX01QKGEpCQlCSVQoKGEpICYjNDM7IDE2KQogCiAvKiBQb3J0IFN0YXRpb24gaW50ZXJmYWNlIHByb21pc2N1b3VzIFZMQU4gbW9kZSByZWdpc3RlciAqLwogI2RlZmluZSBFTkVUQzRfUFNJUFZNUgkJCTB4MjA0CkBAIC0xMzcsNyAmIzQzOzEzNSw2IEBACiAjZGVmaW5lIEVORVRDNF9QU0lWSEZSMShhKQkJKChhKSAqIDB4ODAgJiM0MzsgMHgyMDY0KQogCiAjZGVmaW5lIEVORVRDNF9QTUNBUFIJCQkweDQwMDQKLSNkZWZpbmUgIFBNQ0FQUl9IRAkJCUJJVCg4KQogI2RlZmluZSAgUE1DQVBSX0ZQCQkJR0VOTUFTSygxMCwgOSkKIAogLyogUG9ydCBjYXBhYmlsaXR5IHJlZ2lzdGVyICovCkBAIC0xNTAsNyAmIzQzOzE0Nyw3IEBACiAjZGVmaW5lICBQQ1JfTDJET1NFCQkJQklUKDQpCiAjZGVmaW5lICBQQ1JfVElNRVJfQ1MJCQlCSVQoOCkKICNkZWZpbmUgIFBDUl9QU1BFRUQJCQlHRU5NQVNLKDI5LCAxNikKLSNkZWZpbmUgIFBDUl9QU1BFRURfVkFMKHNwZWVkKQkJKCgoc3BlZWQpIC8gMTAgLSAxKSAmbHQ7Jmx0OyAxNikKJiM0MzsjZGVmaW5lICBQQ1JfUFNQRUVEX1ZBTChzKQkJRklFTERfUFJFUChQQ1JfUFNQRUVELCAoKHMpIC8gMTAgLSAxKSkKIAogLyogUG9ydCBNQUMgYWRkcmVzcyByZWdpc3RlciAwLzEgKi8KICNkZWZpbmUgRU5FVEM0X1BNQVIwCQkJMHg0MDIwCkBAIC0yMDAsNyAmIzQzOzE5Nyw2IEBACiAjZGVmaW5lICBQTV9DTURfQ0ZHX0NOVF9GUk1fRU4JCUJJVCgxMykKICNkZWZpbmUgIFBNX0NNRF9DRkdfVFhQCQkJQklUKDE1KQogI2RlZmluZSAgUE1fQ01EX0NGR19TRU5EX0lETEUJCUJJVCgxNikKLSNkZWZpbmUgIFBNX0NNRF9DRkdfSERfRkNFTgkJQklUKDE4KQogI2RlZmluZSAgUE1fQ01EX0NGR19TRkQJCQlCSVQoMjEpCiAjZGVmaW5lICBQTV9DTURfQ0ZHX1RYX0ZMVVNICQlCSVQoMjIpCiAjZGVmaW5lICBQTV9DTURfQ0ZHX1RYX0xPV1BfRU4JCUJJVCgyMykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYwppbmRleCA0MzdhMTViYmI0N2JhOC4uZmNmYmFiYjI5ZDIyZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMKQEAgLTIzLDE4ICYjNDM7MjMsMTEgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2dldF9wb3J0X2NhcHMoc3RydWN0IGVuZXRjX3BmICpwZikKIAl1MzIgdmFsOwogCiAJdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X0VDQVBSMSk7Ci0JcGYtJmd0O2NhcHMubnVtX3ZzaSA9ICh2YWwgJmFtcDsgRUNBUFIxX05VTV9WU0kpICZndDsmZ3Q7IDI0OwogCXBmLSZndDtjYXBzLm51bV9tc2l4ID0gKCh2YWwgJmFtcDsgRUNBUFIxX05VTV9NU0lYKSAmZ3Q7Jmd0OyAxMikgJiM0MzsgMTsKIAogCXZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9FQ0FQUjIpOwogCXBmLSZndDtjYXBzLm51bV9yeF9iZHIgPSAodmFsICZhbXA7IEVDQVBSMl9OVU1fUlhfQkRSKSAmZ3Q7Jmd0OyAxNjsKIAlwZi0mZ3Q7Y2Fwcy5udW1fdHhfYmRyID0gdmFsICZhbXA7IEVDQVBSMl9OVU1fVFhfQkRSOwotCi0JdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BNQ0FQUik7Ci0JcGYtJmd0O2NhcHMuaGFsZl9kdXBsZXggPSAodmFsICZhbXA7IFBNQ0FQUl9IRCkgPyAxIDogMDsKLQotCXZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lNQUZDQVBSKTsKLQlwZi0mZ3Q7Y2Fwcy5tYWNfZmlsdGVyX251bSA9IHZhbCAmYW1wOyBQU0lNQUZDQVBSX05VTV9NQUNfQUZURTsKIH0KIAogc3RhdGljIHZvaWQgZW5ldGM0X2dldF9wc2lfaHdfZmVhdHVyZXMoc3RydWN0IGVuZXRjX3NpICpzaSkKQEAgLTc1LDM4ICYjNDM7NjgsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGZfZ2V0X3NpX3ByaW1hcnlfbWFjKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSwKIAlwdXRfdW5hbGlnbmVkX2xlMTYobG93ZXIsIGFkZHIgJiM0MzsgNCk7CiB9CiAKLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfc2lfbWFjX3Byb21pc2Moc3RydWN0IGVuZXRjX2h3ICpodywgaW50IHNpLAotCQkJCQkgYm9vbCB1Y19wcm9taXNjLCBib29sIG1jX3Byb21pc2MpCi17Ci0JdTMyIHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lQTU1SKTsKLQotCWlmICh1Y19wcm9taXNjKQotCQl2YWwgfD0gUFNJUE1NUl9TSV9NQUNfVVAoc2kpOwotCWVsc2UKLQkJdmFsICZhbXA7PSB+UFNJUE1NUl9TSV9NQUNfVVAoc2kpOwotCi0JaWYgKG1jX3Byb21pc2MpCi0JCXZhbCB8PSBQU0lQTU1SX1NJX01BQ19NUChzaSk7Ci0JZWxzZQotCQl2YWwgJmFtcDs9IH5QU0lQTU1SX1NJX01BQ19NUChzaSk7Ci0KLQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJUE1NUiwgdmFsKTsKLX0KLQotc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksCi0JCQkJCSAgICB1NjQgaGFzaCkKLXsKLQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJVU1IRlIwKHNpKSwgbG93ZXJfMzJfYml0cyhoYXNoKSk7Ci0JZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSVVNSEZSMShzaSksIHVwcGVyXzMyX2JpdHMoaGFzaCkpOwotfQotCi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSwKLQkJCQkJICAgIHU2NCBoYXNoKQotewotCWVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lNTUhGUjAoc2kpLCBsb3dlcl8zMl9iaXRzKGhhc2gpKTsKLQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJTU1IRlIxKHNpKSwgdXBwZXJfMzJfYml0cyhoYXNoKSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbG9vcGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZW4pCiB7CiAJc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwpAQCAtMTI0LDM0ICYjNDM7ODUsNDcgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9sb29wYmFjayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgYm9vbCBlbikKIAogc3RhdGljIHZvaWQgZW5ldGM0X3BmX2NsZWFyX21hZnRfZW50cmllcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKQogewotCWludCBpOwomIzQzOwlzdHJ1Y3QgbnRtcF91c2VyICp1c2VyID0gJmFtcDtwZi0mZ3Q7c2ktJmd0O250bXBfdXNlcjsKJiM0MzsJdTMyIGVudHJ5X2lkOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IHBmLSZndDtudW1fbWZlOyBpJiM0MzsmIzQzOykKLQkJbnRtcF9tYWZ0X2RlbGV0ZV9lbnRyeSgmYW1wO3BmLSZndDtzaS0mZ3Q7bnRtcF91c2VyLCBpKTsKLQotCXBmLSZndDtudW1fbWZlID0gMDsKJiM0MzsJZm9yX2VhY2hfc2V0X2JpdChlbnRyeV9pZCwgdXNlci0mZ3Q7bWFmdF9laWRfYml0bWFwLAomIzQzOwkJCSB1c2VyLSZndDttYWZ0X251bV9lbnRyaWVzKSB7CiYjNDM7CQlpZiAoIW50bXBfbWFmdF9kZWxldGVfZW50cnkodXNlciwgZW50cnlfaWQpKQomIzQzOwkJCW50bXBfY2xlYXJfZWlkX2JpdG1hcCh1c2VyLSZndDttYWZ0X2VpZF9iaXRtYXAsIGVudHJ5X2lkKTsKJiM0MzsJfQogfQogCiBzdGF0aWMgaW50IGVuZXRjNF9wZl9hZGRfbWFmdF9lbnRyaWVzKHN0cnVjdCBlbmV0Y19wZiAqcGYsCi0JCQkJICAgICAgc3RydWN0IGVuZXRjX21hY19hZGRyICptYWMsCi0JCQkJICAgICAgaW50IG1hY19jbnQpCiYjNDM7CQkJCSAgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YykKIHsKJiM0MzsJc3RydWN0IG50bXBfdXNlciAqdXNlciA9ICZhbXA7cGYtJmd0O3NpLSZndDtudG1wX3VzZXI7CiYjNDM7CWludCBtYWNfY250ID0gbmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1Yyk7CiAJc3RydWN0IG1hZnRfZW50cnlfZGF0YSBtYWZ0ID0ge307CiYjNDM7CXN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7CiYjNDM7CXUzMiBhdmFpbGFibGVfZW50cmllczsKIAl1MTYgc2lfYml0ID0gQklUKDApOwotCWludCBpLCBlcnI7CiYjNDM7CXUzMiBlbnRyeV9pZDsKJiM0MzsJaW50IGVycjsKJiM0MzsKJiM0MzsJYXZhaWxhYmxlX2VudHJpZXMgPSB1c2VyLSZndDttYWZ0X251bV9lbnRyaWVzIC0KJiM0MzsJCQkgICAgYml0bWFwX3dlaWdodCh1c2VyLSZndDttYWZ0X2VpZF9iaXRtYXAsCiYjNDM7CQkJCQkgIHVzZXItJmd0O21hZnRfbnVtX2VudHJpZXMpOwomIzQzOwomIzQzOwlpZiAobWFjX2NudCAmZ3Q7IGF2YWlsYWJsZV9lbnRyaWVzKQomIzQzOwkJcmV0dXJuIC1FTk9TUEM7CiAKIAltYWZ0LmNmZ2Uuc2lfYml0bWFwID0gY3B1X3RvX2xlMTYoc2lfYml0KTsKLQlmb3IgKGkgPSAwOyBpICZsdDsgbWFjX2NudDsgaSYjNDM7JiM0MzspIHsKLQkJZXRoZXJfYWRkcl9jb3B5KG1hZnQua2V5ZS5tYWNfYWRkciwgbWFjW2ldLmFkZHIpOwotCQllcnIgPSBudG1wX21hZnRfYWRkX2VudHJ5KCZhbXA7cGYtJmd0O3NpLSZndDtudG1wX3VzZXIsIGksICZhbXA7bWFmdCk7CiYjNDM7CW5ldGRldl9od19hZGRyX2xpc3RfZm9yX2VhY2goaGEsIHVjKSB7CiYjNDM7CQllbnRyeV9pZCA9IG50bXBfbG9va3VwX2ZyZWVfZWlkKHVzZXItJmd0O21hZnRfZWlkX2JpdG1hcCwKJiM0MzsJCQkJCQl1c2VyLSZndDttYWZ0X251bV9lbnRyaWVzKTsKJiM0MzsJCWV0aGVyX2FkZHJfY29weShtYWZ0LmtleWUubWFjX2FkZHIsIGhhLSZndDthZGRyKTsKJiM0MzsJCWVyciA9IG50bXBfbWFmdF9hZGRfZW50cnkodXNlciwgZW50cnlfaWQsICZhbXA7bWFmdCk7CiAJCWlmICh1bmxpa2VseShlcnIpKSB7Ci0JCQlwZi0mZ3Q7bnVtX21mZSA9IGk7CiYjNDM7CQkJbnRtcF9jbGVhcl9laWRfYml0bWFwKHVzZXItJmd0O21hZnRfZWlkX2JpdG1hcCwgZW50cnlfaWQpOwogCQkJZ290byBjbGVhcl9tYWZ0X2VudHJpZXM7CiAJCX0KIAl9CiAKLQlwZi0mZ3Q7bnVtX21mZSA9IG1hY19jbnQ7Ci0KIAlyZXR1cm4gMDsKIAogY2xlYXJfbWFmdF9lbnRyaWVzOgpAQCAtMTYwLDk3ICYjNDM7MTM0LDcwIEBAIHN0YXRpYyBpbnQgZW5ldGM0X3BmX2FkZF9tYWZ0X2VudHJpZXMoc3RydWN0IGVuZXRjX3BmICpwZiwKIAlyZXR1cm4gIGVycjsKIH0KIAotc3RhdGljIGludCBlbmV0YzRfcGZfc2V0X3VjX2V4YWN0X2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmKQomIzQzO3N0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfdWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwKJiM0MzsJCQkJCSBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMpCiB7Ci0JaW50IG1heF9udW1fbWZlID0gcGYtJmd0O2NhcHMubWFjX2ZpbHRlcl9udW07Ci0Jc3RydWN0IGVuZXRjX21hY19maWx0ZXIgbWFjX2ZpbHRlciA9IHt9OwotCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGYtJmd0O3NpLSZndDtuZGV2OwotCXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3BmLSZndDtzaS0mZ3Q7aHc7Ci0Jc3RydWN0IGVuZXRjX21hY19hZGRyICptYWNfdGJsOwomIzQzOwlzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqbWFjX2ZpbHRlciA9ICZhbXA7cGYtJmd0O21hY19maWx0ZXJbVUNdOwogCXN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7Ci0JaW50IGkgPSAwLCBlcnI7Ci0JaW50IG1hY19jbnQ7CiYjNDM7CXU2NCBoYXNoOwogCi0JbmV0aWZfYWRkcl9sb2NrX2JoKG5kZXYpOwomIzQzOwllbmV0Y19yZXNldF9tYWNfYWRkcl9maWx0ZXIobWFjX2ZpbHRlcik7CiYjNDM7CW5ldGRldl9od19hZGRyX2xpc3RfZm9yX2VhY2goaGEsIHVjKQomIzQzOwkJZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihtYWNfZmlsdGVyLCBoYS0mZ3Q7YWRkcik7CiYjNDM7CiYjNDM7CWJpdG1hcF90b19hcnI2NCgmYW1wO2hhc2gsIG1hY19maWx0ZXItJmd0O21hY19oYXNoX3RhYmxlLAomIzQzOwkJCUVORVRDX01BRERSX0hBU0hfVEJMX1NaKTsKJiM0MzsJZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHBmLSZndDtzaSwgMCwgaGFzaCk7CiYjNDM7fQogCi0JbWFjX2NudCA9IG5ldGRldl91Y19jb3VudChuZGV2KTsKLQlpZiAoIW1hY19jbnQpIHsKLQkJbmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7CiYjNDM7c3RhdGljIGludCBlbmV0YzRfcGZfc2V0X3VjX2V4YWN0X2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLAomIzQzOwkJCQkJIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwZi0mZ3Q7c2k7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2VtcHR5KHVjKSkgewogCQkvKiBjbGVhciBib3RoIE1BQyBoYXNoIGFuZCBleGFjdCBmaWx0ZXJzICovCi0JCWVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApOwomIzQzOwkJZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTsKIAkJZW5ldGM0X3BmX2NsZWFyX21hZnRfZW50cmllcyhwZik7CiAKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKG1hY19jbnQgJmd0OyBtYXhfbnVtX21mZSkgewotCQllcnIgPSAtRU5PU1BDOwotCQlnb3RvIHVubG9ja19uZXRpZl9hZGRyOwotCX0KLQotCW1hY190YmwgPSBremFsbG9jX29ianMoKm1hY190YmwsIG1hY19jbnQsIEdGUF9BVE9NSUMpOwotCWlmICghbWFjX3RibCkgewotCQllcnIgPSAtRU5PTUVNOwotCQlnb3RvIHVubG9ja19uZXRpZl9hZGRyOwotCX0KLQotCW5ldGRldl9mb3JfZWFjaF91Y19hZGRyKGhhLCBuZGV2KSB7Ci0JCWVuZXRjX2FkZF9tYWNfYWRkcl9odF9maWx0ZXIoJmFtcDttYWNfZmlsdGVyLCBoYS0mZ3Q7YWRkcik7Ci0JCWV0aGVyX2FkZHJfY29weShtYWNfdGJsW2kmIzQzOyYjNDM7XS5hZGRyLCBoYS0mZ3Q7YWRkcik7Ci0JfQotCi0JbmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7Ci0KLQkvKiBTZXQgdGVtcG9yYXJ5IHVuaWNhc3QgaGFzaCBmaWx0ZXJzIGluIGNhc2Ugb2YgUnggbG9zcyB3aGVuCiYjNDM7CS8qIFNldCB0ZW1wb3JhcnkgdW5pY2FzdCBoYXNoIGZpbHRlciBpbiBjYXNlIG9mIFJ4IGxvc3Mgd2hlbgogCSAqIHVwZGF0aW5nIE1BQyBhZGRyZXNzIGZpbHRlciB0YWJsZQogCSAqLwotCWVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsICptYWNfZmlsdGVyLm1hY19oYXNoX3RhYmxlKTsKJiM0MzsJZW5ldGM0X3BmX3NldF91Y19oYXNoX2ZpbHRlcihwZiwgdWMpOwogCWVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpOwogCi0JaWYgKCFlbmV0YzRfcGZfYWRkX21hZnRfZW50cmllcyhwZiwgbWFjX3RibCwgaSkpCi0JCWVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApOwotCi0Ja2ZyZWUobWFjX3RibCk7Ci0KLQlyZXR1cm4gMDsKLQotdW5sb2NrX25ldGlmX2FkZHI6Ci0JbmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7CiYjNDM7CWVyciA9IGVuZXRjNF9wZl9hZGRfbWFmdF9lbnRyaWVzKHBmLCB1Yyk7CiYjNDM7CWlmICghZXJyKSB7CiYjNDM7CQllbmV0Y19yZXNldF9tYWNfYWRkcl9maWx0ZXIoJmFtcDtwZi0mZ3Q7bWFjX2ZpbHRlcltVQ10pOwomIzQzOwkJZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTsKJiM0MzsJfQogCiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tYWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHR5cGUpCiYjNDM7c3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLAomIzQzOwkJCQkJIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYykKIHsKLQlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHBmLSZndDtzaS0mZ3Q7bmRldjsKLQlzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqbWFjX2ZpbHRlcjsKLQlzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gJmFtcDtwZi0mZ3Q7c2ktJmd0O2h3OwomIzQzOwlzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqbWFjX2ZpbHRlciA9ICZhbXA7cGYtJmd0O21hY19maWx0ZXJbTUNdOwogCXN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7CiYjNDM7CXU2NCBoYXNoOwogCi0JbmV0aWZfYWRkcl9sb2NrX2JoKG5kZXYpOwotCWlmICh0eXBlICZhbXA7IEVORVRDX01BQ19GSUxURVJfVFlQRV9VQykgewotCQltYWNfZmlsdGVyID0gJmFtcDtwZi0mZ3Q7bWFjX2ZpbHRlcltVQ107Ci0JCWVuZXRjX3Jlc2V0X21hY19hZGRyX2ZpbHRlcihtYWNfZmlsdGVyKTsKLQkJbmV0ZGV2X2Zvcl9lYWNoX3VjX2FkZHIoaGEsIG5kZXYpCi0JCQllbmV0Y19hZGRfbWFjX2FkZHJfaHRfZmlsdGVyKG1hY19maWx0ZXIsIGhhLSZndDthZGRyKTsKLQotCQllbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKGh3LCAwLAotCQkJCQkJKm1hY19maWx0ZXItJmd0O21hY19oYXNoX3RhYmxlKTsKLQl9CiYjNDM7CWVuZXRjX3Jlc2V0X21hY19hZGRyX2ZpbHRlcihtYWNfZmlsdGVyKTsKJiM0MzsJbmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgbWMpCiYjNDM7CQllbmV0Y19hZGRfbWFjX2FkZHJfaHRfZmlsdGVyKG1hY19maWx0ZXIsIGhhLSZndDthZGRyKTsKIAotCWlmICh0eXBlICZhbXA7IEVORVRDX01BQ19GSUxURVJfVFlQRV9NQykgewotCQltYWNfZmlsdGVyID0gJmFtcDtwZi0mZ3Q7bWFjX2ZpbHRlcltNQ107Ci0JCWVuZXRjX3Jlc2V0X21hY19hZGRyX2ZpbHRlcihtYWNfZmlsdGVyKTsKLQkJbmV0ZGV2X2Zvcl9lYWNoX21jX2FkZHIoaGEsIG5kZXYpCi0JCQllbmV0Y19hZGRfbWFjX2FkZHJfaHRfZmlsdGVyKG1hY19maWx0ZXIsIGhhLSZndDthZGRyKTsKLQotCQllbmV0YzRfcGZfc2V0X3NpX21jX2hhc2hfZmlsdGVyKGh3LCAwLAotCQkJCQkJKm1hY19maWx0ZXItJmd0O21hY19oYXNoX3RhYmxlKTsKLQl9Ci0JbmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7CiYjNDM7CWJpdG1hcF90b19hcnI2NCgmYW1wO2hhc2gsIG1hY19maWx0ZXItJmd0O21hY19oYXNoX3RhYmxlLAomIzQzOwkJCUVORVRDX01BRERSX0hBU0hfVEJMX1NaKTsKJiM0MzsJZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHBmLSZndDtzaSwgMCwgaGFzaCk7CiB9CiAKLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbWFjX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgdHlwZSkKJiM0MztzdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHR5cGUsCiYjNDM7CQkJCSAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLAomIzQzOwkJCQkgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYykKIHsKIAkvKiBDdXJyZW50bHksIHRoZSBNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGUgKE1BRlQpIG9ubHkgaGFzIDQgZW50cmllcywKIAkgKiBhbmQgbXVsdGlwbGUgbXVsdGljYXN0IGFkZHJlc3NlcyBmb3IgZmlsdGVyaW5nIHdpbGwgYmUgY29uZmlndXJlZApAQCAtMjU4LDE1ICYjNDM7MjA1LDE2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbWFjX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgdHlwZSkKIAkgKiB1bmljYXN0IGZpbHRlcmluZy4gSWYgdGhlIG51bWJlciBvZiB1bmljYXN0IGFkZHJlc3NlcyBleGNlZWRzIHRoZQogCSAqIHRhYmxlIGNhcGFjaXR5LCB0aGUgTUFDIGhhc2ggZmlsdGVyIHdpbGwgYmUgdXNlZC4KIAkgKi8KLQlpZiAodHlwZSAmYW1wOyBFTkVUQ19NQUNfRklMVEVSX1RZUEVfVUMgJmFtcDsmYW1wOyBlbmV0YzRfcGZfc2V0X3VjX2V4YWN0X2ZpbHRlcihwZikpIHsKJiM0MzsJaWYgKHR5cGUgJmFtcDsgRU5FVENfTUFDX0ZJTFRFUl9UWVBFX1VDICZhbXA7JmFtcDsKJiM0MzsJICAgIGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHBmLCB1YykpIHsKIAkJLyogRmFsbCBiYWNrIHRvIHRoZSBNQUMgaGFzaCBmaWx0ZXIgKi8KLQkJZW5ldGM0X3BmX3NldF9tYWNfaGFzaF9maWx0ZXIocGYsIEVORVRDX01BQ19GSUxURVJfVFlQRV9VQyk7CiYjNDM7CQllbmV0YzRfcGZfc2V0X3VjX2hhc2hfZmlsdGVyKHBmLCB1Yyk7CiAJCS8qIENsZWFyIHRoZSBvbGQgTUFDIGV4YWN0IGZpbHRlciAqLwogCQllbmV0YzRfcGZfY2xlYXJfbWFmdF9lbnRyaWVzKHBmKTsKIAl9CiAKIAlpZiAodHlwZSAmYW1wOyBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpCi0JCWVuZXRjNF9wZl9zZXRfbWFjX2hhc2hfZmlsdGVyKHBmLCBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpOwomIzQzOwkJZW5ldGM0X3BmX3NldF9tY19oYXNoX2ZpbHRlcihwZiwgbWMpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGVuZXRjX3BmX29wcyBlbmV0YzRfcGZfb3BzID0gewpAQCAtMzA2LDM0ICYjNDM7MjU0LDM1IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24oc3RydWN0IGVuZXRjX3BmICpwZikKIHsKIAlzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gJmFtcDtwZi0mZ3Q7c2ktJmd0O2h3OwogCXUzMiBudW1fcnhfYmRyLCBudW1fdHhfYmRyLCB2YWw7CiYjNDM7CWludCBudW1fdmZzID0gcGYtJmd0O3RvdGFsX3ZmczsKIAl1MzIgdmZfdHhfYmRyLCB2Zl9yeF9iZHI7CiAJaW50IGksIHJ4X3JlbSwgdHhfcmVtOwogCi0JaWYgKHBmLSZndDtjYXBzLm51bV9yeF9iZHIgJmx0OyBFTkVUQ19TSV9NQVhfUklOR19OVU0gJiM0MzsgcGYtJmd0O2NhcHMubnVtX3ZzaSkKLQkJbnVtX3J4X2JkciA9IHBmLSZndDtjYXBzLm51bV9yeF9iZHIgLSBwZi0mZ3Q7Y2Fwcy5udW1fdnNpOwomIzQzOwlpZiAocGYtJmd0O2NhcHMubnVtX3J4X2JkciAmbHQ7IEVORVRDX1NJX01BWF9SSU5HX05VTSAmIzQzOyBudW1fdmZzKQomIzQzOwkJbnVtX3J4X2JkciA9IHBmLSZndDtjYXBzLm51bV9yeF9iZHIgLSBudW1fdmZzOwogCWVsc2UKIAkJbnVtX3J4X2JkciA9IEVORVRDX1NJX01BWF9SSU5HX05VTTsKIAotCWlmIChwZi0mZ3Q7Y2Fwcy5udW1fdHhfYmRyICZsdDsgRU5FVENfU0lfTUFYX1JJTkdfTlVNICYjNDM7IHBmLSZndDtjYXBzLm51bV92c2kpCi0JCW51bV90eF9iZHIgPSBwZi0mZ3Q7Y2Fwcy5udW1fdHhfYmRyIC0gcGYtJmd0O2NhcHMubnVtX3ZzaTsKJiM0MzsJaWYgKHBmLSZndDtjYXBzLm51bV90eF9iZHIgJmx0OyBFTkVUQ19TSV9NQVhfUklOR19OVU0gJiM0MzsgbnVtX3ZmcykKJiM0MzsJCW51bV90eF9iZHIgPSBwZi0mZ3Q7Y2Fwcy5udW1fdHhfYmRyIC0gbnVtX3ZmczsKIAllbHNlCiAJCW51bV90eF9iZHIgPSBFTkVUQ19TSV9NQVhfUklOR19OVU07CiAKIAl2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdChmYWxzZSwgbnVtX3R4X2JkciwgbnVtX3J4X2Jkcik7CiAJZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSUNGR1IwKDApLCB2YWwpOwogCi0JaWYgKCFwZi0mZ3Q7Y2Fwcy5udW1fdnNpKQomIzQzOwlpZiAoIW51bV92ZnMpCiAJCXJldHVybjsKIAogCW51bV9yeF9iZHIgPSBwZi0mZ3Q7Y2Fwcy5udW1fcnhfYmRyIC0gbnVtX3J4X2JkcjsKLQlyeF9yZW0gPSBudW1fcnhfYmRyICUgcGYtJmd0O2NhcHMubnVtX3ZzaTsKLQludW1fcnhfYmRyID0gbnVtX3J4X2JkciAvIHBmLSZndDtjYXBzLm51bV92c2k7CiYjNDM7CXJ4X3JlbSA9IG51bV9yeF9iZHIgJSBudW1fdmZzOwomIzQzOwludW1fcnhfYmRyID0gbnVtX3J4X2JkciAvIG51bV92ZnM7CiAKIAludW1fdHhfYmRyID0gcGYtJmd0O2NhcHMubnVtX3R4X2JkciAtIG51bV90eF9iZHI7Ci0JdHhfcmVtID0gbnVtX3R4X2JkciAlIHBmLSZndDtjYXBzLm51bV92c2k7Ci0JbnVtX3R4X2JkciA9IG51bV90eF9iZHIgLyBwZi0mZ3Q7Y2Fwcy5udW1fdnNpOwomIzQzOwl0eF9yZW0gPSBudW1fdHhfYmRyICUgbnVtX3ZmczsKJiM0MzsJbnVtX3R4X2JkciA9IG51bV90eF9iZHIgLyBudW1fdmZzOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IHBmLSZndDtjYXBzLm51bV92c2k7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBudW1fdmZzOyBpJiM0MzsmIzQzOykgewogCQl2Zl90eF9iZHIgPSAoaSAmbHQ7IHR4X3JlbSkgPyBudW1fdHhfYmRyICYjNDM7IDEgOiBudW1fdHhfYmRyOwogCQl2Zl9yeF9iZHIgPSAoaSAmbHQ7IHJ4X3JlbSkgPyBudW1fcnhfYmRyICYjNDM7IDEgOiBudW1fcnhfYmRyOwogCQl2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdCh0cnVlLCB2Zl90eF9iZHIsIHZmX3J4X2Jkcik7CkBAIC0zNDYsNTMgJiM0MzsyOTUsNzAgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzKHN0cnVjdCBlbmV0Y19wZiAqcGYpCiAJZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbihwZik7CiB9CiAKLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSwgYm9vbCBlbikKLXsKLQl1MzIgdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSVBWTVIpOwotCi0JaWYgKGVuKQotCQl2YWwgfD0gQklUKHNpKTsKLQllbHNlCi0JCXZhbCAmYW1wOz0gfkJJVChzaSk7Ci0KLQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJUFZNUiwgdmFsKTsKLX0KLQotc3RhdGljIHZvaWQgZW5ldGM0X3NldF9kZWZhdWx0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKQotewotCXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3BmLSZndDtzaS0mZ3Q7aHc7Ci0JaW50IG51bV9zaSA9IHBmLSZndDtjYXBzLm51bV92c2kgJiM0MzsgMTsKLQlpbnQgaTsKLQotCS8qIGVuZm9yY2UgVkxBTiBwcm9taXNjdW91cyBtb2RlIGZvciBhbGwgU0lzICovCi0JZm9yIChpID0gMDsgaSAmbHQ7IG51bV9zaTsgaSYjNDM7JiM0MzspCi0JCWVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKGh3LCBpLCB0cnVlKTsKLX0KLQogLyogQWxsb2NhdGUgdGhlIG51bWJlciBvZiBNU0ktWCB2ZWN0b3JzIGZvciBwZXIgU0kuICovCiBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3NpX21zaXhfbnVtKHN0cnVjdCBlbmV0Y19wZiAqcGYpCiB7CiYjNDM7CWludCB2YWxpZF9udW1fc2kgPSBwZi0mZ3Q7dG90YWxfdmZzICYjNDM7IDE7CiAJc3RydWN0IGVuZXRjX2h3ICpodyA9ICZhbXA7cGYtJmd0O3NpLSZndDtodzsKLQlpbnQgaSwgbnVtX21zaXgsIHRvdGFsX3NpOwomIzQzOwlpbnQgaSwgbnVtX21zaXgsIG51bV92c2k7CiAJdTMyIHZhbDsKIAotCXRvdGFsX3NpID0gcGYtJmd0O2NhcHMubnVtX3ZzaSAmIzQzOyAxOwomIzQzOwl2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQzRfRUNBUFIxKTsKJiM0MzsJbnVtX3ZzaSA9IEZJRUxEX0dFVChFQ0FQUjFfTlVNX1ZTSSwgdmFsKTsKJiM0MzsKJiM0MzsJLyogVGhlIFBTSWFDRkdSMltOVU1fTVNJWF0gaW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgTVNJLVggYWxsb2NhdGVkIHRvCiYjNDM7CSAqIHRoZSBTSSBpcyBOVU1fTVNJWCAmIzQzOyAxLCBzbyB0aGUgbWluaW11bSBudW1iZXIgb2YgTVNJLVggYWxsb2NhdGVkIHRvCiYjNDM7CSAqIGVhY2ggU0kgaXMgMS4gVGhlIHRvdGFsIG51bWJlciBvZiBNU0ktWCBhbGxvY2F0ZWQgdG8gUFNJIGFuZCBWU0lzCiYjNDM7CSAqIGNhbm5vdCBleGNlZWQgdGhlIHRvdGFsIG51bWJlciBvZiBNU0ktWCBvd25lZCBieSB0aGlzIEVORVRDLCB3aGljaAomIzQzOwkgKiBpcyBFQ0FQUjFbTlVNX01TSVhdLiBPdGhlcndpc2UsIHdoZW4gbXVsdGlwbGUgRU5FVEMgaW5zdGFuY2VzIGV4aXN0LAomIzQzOwkgKiBpdCB3aWxsIGFmZmVjdCBvdGhlciBFTkVUQ3Mgd2hvc2UgTVNJLVggaW50ZXJydXB0cyBjYW5ub3QgYmUKJiM0MzsJICogZ2VuZXJhdGVkLiBUaGlzIGlzIHNpbWlsYXIgdG8gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3M6IHRoZSBhcnJheQomIzQzOwkgKiBpdHNlbGYgaXMgbm90IGFmZmVjdGVkLCBidXQgYWRqYWNlbnQgYXJyYXlzIHdpbGwgYmUgY29ycnVwdGVkLgomIzQzOwkgKgomIzQzOwkgKiBwZi0mZ3Q7dG90YWxfdmZzIGlzIDAgaWYgQ09ORklHX1BDSV9JT1YgaXMgZGlzYWJsZWQuIElmIHRoZSBoYXJkd2FyZQomIzQzOwkgKiBpdHNlbGYgc3VwcG9ydHMgU1ItSU9WLCB0aGVuIHdoZW4gYWxsb2NhdGluZyB0aGUgbnVtYmVyIG9mIE1TSVhzIHRvCiYjNDM7CSAqIHRoZSBTSSwgaXQgbXVzdCBiZSB0YWtlbiBpbnRvIGFjY291bnQgdGhhdCB0aGUgVlNJIGhhcyBhdCBsZWFzdCAxCiYjNDM7CSAqIE1TSVgsIGFuZCB0aGUgdG90YWwgbnVtYmVyIG9mIE1TSVhzIG9mIGFsbCBTSXMgY2Fubm90IGV4Y2VlZAomIzQzOwkgKiBFQ0FQUjFbTlVNX01TSVhdLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFwZi0mZ3Q7dG90YWxfdmZzICZhbXA7JmFtcDsgbnVtX3ZzaSkgewomIzQzOwkJLyogQmVjYXVzZSBlYWNoIFNJIGhhcyBhdCBsZWFzdCBvbmUgTVNJWCwgYW5kIGZyb20gdGhlIGhhcmR3YXJlCiYjNDM7CQkgKiBwZXJzcGVjdGl2ZSwgcGYtJmd0O2NhcHMubnVtX21zaXggd2lsbCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuCiYjNDM7CQkgKiBudW1fdnNpLiBTbyBudW1fbXNpeCBpcyBhbHdheXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAuCiYjNDM7CQkgKi8KJiM0MzsJCW51bV9tc2l4ID0gcGYtJmd0O2NhcHMubnVtX21zaXggLSBudW1fdnNpIC0gMTsKJiM0MzsJCWlmIChudW1fbXNpeCAmZ3Q7IFBTSUNGR1IyX05VTV9NU0lYKQomIzQzOwkJCW51bV9tc2l4ID0gUFNJQ0ZHUjJfTlVNX01TSVg7CiYjNDM7CQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoMCksIG51bV9tc2l4KTsKIAotCW51bV9tc2l4ID0gcGYtJmd0O2NhcHMubnVtX21zaXggLyB0b3RhbF9zaSAmIzQzOwotCQkgICBwZi0mZ3Q7Y2Fwcy5udW1fbXNpeCAlIHRvdGFsX3NpIC0gMTsKLQl2YWwgPSBudW1fbXNpeCAmYW1wOyBQU0lDRkdSMl9OVU1fTVNJWDsKLQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoMCksIHZhbCk7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgbnVtX3ZzaTsgaSYjNDM7JiM0MzspCiYjNDM7CQkJZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSUNGR1IyKGkgJiM0MzsgMSksIDApOwogCi0JbnVtX21zaXggPSBwZi0mZ3Q7Y2Fwcy5udW1fbXNpeCAvIHRvdGFsX3NpIC0gMTsKLQl2YWwgPSBudW1fbXNpeCAmYW1wOyBQU0lDRkdSMl9OVU1fTVNJWDsKLQlmb3IgKGkgPSAwOyBpICZsdDsgcGYtJmd0O2NhcHMubnVtX3ZzaTsgaSYjNDM7JiM0MzspCi0JCWVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMihpICYjNDM7IDEpLCB2YWwpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIExpa2V3aXNlLCBmcm9tIHRoZSBoYXJkd2FyZSBwZXJzcGVjdGl2ZSBwZi0mZ3Q7Y2Fwcy5udW1fbXNpeCBpcyBhbHdheXMKJiM0MzsJICogZ3JlYXRlciB0aGFuIHZhbGlkX251bV9zaS4gU28gbnVtX21zaXggaXMgYWx3YXlzIGdyZWF0ZXIgdGhhbiBvcgomIzQzOwkgKiBlcXVhbCB0byAwLgomIzQzOwkgKi8KJiM0MzsJbnVtX21zaXggPSBwZi0mZ3Q7Y2Fwcy5udW1fbXNpeCAvIHZhbGlkX251bV9zaSAmIzQzOwomIzQzOwkJICAgcGYtJmd0O2NhcHMubnVtX21zaXggJSB2YWxpZF9udW1fc2kgLSAxOwomIzQzOwlpZiAobnVtX21zaXggJmd0OyBQU0lDRkdSMl9OVU1fTVNJWCkKJiM0MzsJCW51bV9tc2l4ID0gUFNJQ0ZHUjJfTlVNX01TSVg7CiYjNDM7CWVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMigwKSwgbnVtX21zaXgpOwomIzQzOwomIzQzOwludW1fbXNpeCA9IHBmLSZndDtjYXBzLm51bV9tc2l4IC8gdmFsaWRfbnVtX3NpIC0gMTsKJiM0MzsJaWYgKG51bV9tc2l4ICZndDsgUFNJQ0ZHUjJfTlVNX01TSVgpCiYjNDM7CQludW1fbXNpeCA9IFBTSUNGR1IyX05VTV9NU0lYOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgcGYtJmd0O3RvdGFsX3ZmczsgaSYjNDM7JiM0MzspCiYjNDM7CQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoaSAmIzQzOyAxKSwgbnVtX21zaXgpOwogfQogCiBzdGF0aWMgdm9pZCBlbmV0YzRfZW5hYmxlX2FsbF9zaShzdHJ1Y3QgZW5ldGNfcGYgKnBmKQogewogCXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3BmLSZndDtzaS0mZ3Q7aHc7Ci0JaW50IG51bV9zaSA9IHBmLSZndDtjYXBzLm51bV92c2kgJiM0MzsgMTsKJiM0MzsJaW50IG51bV9zaSA9IHBmLSZndDt0b3RhbF92ZnMgJiM0MzsgMTsKIAl1MzIgc2lfYml0bWFwID0gMDsKIAlpbnQgaTsKIApAQCAtNDEyLDcgJiM0MzszNzgsOSBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfY29uZmlndXJlX3BvcnRfc2koc3RydWN0IGVuZXRjX3BmICpwZikKIAkvKiBPdXRlciBWTEFOIHRhZyB3aWxsIGJlIHVzZWQgZm9yIFZMQU4gZmlsdGVyaW5nICovCiAJZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSVZMQU5GTVIsIFBTSVZMQU5GTVJfVlMpOwogCi0JZW5ldGM0X3NldF9kZWZhdWx0X3NpX3ZsYW5fcHJvbWlzYyhwZik7CiYjNDM7CS8qIEVuZm9yY2UgVkxBTiBwcm9taXNjdW91cyBtb2RlIGZvciBhbGwgU0lzICovCiYjNDM7CWZvciAoaW50IGkgPSAwOyBpICZsdDsgcGYtJmd0O3RvdGFsX3ZmcyAmIzQzOyAxOyBpJiM0MzsmIzQzOykKJiM0MzsJCWVuZXRjX3NldF9zaV92bGFuX3Byb21pc2MocGYtJmd0O3NpLCBpLCB0cnVlKTsKIAogCS8qIERpc2FibGUgU0kgTUFDIG11bHRpY2FzdCAmYW1wOyB1bmljYXN0IHByb21pc2N1b3VzICovCiAJZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSVBNTVIsIDApOwpAQCAtNDUwLDE4ICYjNDM7NDE4LDYwIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9jb25maWd1cmVfcG9ydChzdHJ1Y3QgZW5ldGNfcGYgKnBmKQogCWVuZXRjX3NldF9kZWZhdWx0X3Jzc19rZXkocGYpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZW5ldGM0X2dldF9udG1wX2NhcHMoc3RydWN0IGVuZXRjX3NpICpzaSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBudG1wX3VzZXIgKnVzZXIgPSAmYW1wO3NpLSZndDtudG1wX3VzZXI7CiYjNDM7CXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3NpLSZndDtodzsKJiM0MzsJdTMyIHZhbDsKJiM0MzsKJiM0MzsJdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSU1BRkNBUFIpOwomIzQzOwl1c2VyLSZndDttYWZ0X251bV9lbnRyaWVzID0gRklFTERfR0VUKFBTSU1BRkNBUFJfTlVNX01BQ19BRlRFLCB2YWwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGVuZXRjNF9udG1wX2JpdG1hcF9pbml0KHN0cnVjdCBudG1wX3VzZXIgKnVzZXIpCiYjNDM7ewomIzQzOwl1c2VyLSZndDttYWZ0X2VpZF9iaXRtYXAgPSBiaXRtYXBfemFsbG9jKHVzZXItJmd0O21hZnRfbnVtX2VudHJpZXMsCiYjNDM7CQkJCQkgICAgICBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCF1c2VyLSZndDttYWZ0X2VpZF9iaXRtYXApCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGVuZXRjNF9udG1wX2JpdG1hcF9mcmVlKHN0cnVjdCBudG1wX3VzZXIgKnVzZXIpCiYjNDM7ewomIzQzOwliaXRtYXBfZnJlZSh1c2VyLSZndDttYWZ0X2VpZF9iaXRtYXApOwomIzQzOwl1c2VyLSZndDttYWZ0X2VpZF9iaXRtYXAgPSBOVUxMOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgZW5ldGM0X2luaXRfbnRtcF91c2VyKHN0cnVjdCBlbmV0Y19zaSAqc2kpCiB7CiAJc3RydWN0IG50bXBfdXNlciAqdXNlciA9ICZhbXA7c2ktJmd0O250bXBfdXNlcjsKJiM0MzsJaW50IGVycjsKIAogCS8qIEZvciBFTkVUQyA0LjEsIGFsbCB0YWJsZSB2ZXJzaW9ucyBhcmUgMCAqLwogCW1lbXNldCgmYW1wO3VzZXItJmd0O3RibCwgMCwgc2l6ZW9mKHVzZXItJmd0O3RibCkpOwogCi0JcmV0dXJuIGVuZXRjNF9zZXR1cF9jYmRyKHNpKTsKJiM0MzsJZXJyID0gZW5ldGM0X3NldHVwX2NiZHIoc2kpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJZW5ldGM0X2dldF9udG1wX2NhcHMoc2kpOwomIzQzOwllcnIgPSBlbmV0YzRfbnRtcF9iaXRtYXBfaW5pdCh1c2VyKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCWdvdG8gdGVhcmRvd25fY2JkcjsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7CiYjNDM7dGVhcmRvd25fY2JkcjoKJiM0MzsJZW5ldGM0X3RlYXJkb3duX2NiZHIoc2kpOwomIzQzOwomIzQzOwlyZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgdm9pZCBlbmV0YzRfZnJlZV9udG1wX3VzZXIoc3RydWN0IGVuZXRjX3NpICpzaSkKIHsKJiM0MzsJZW5ldGM0X250bXBfYml0bWFwX2ZyZWUoJmFtcDtzaS0mZ3Q7bnRtcF91c2VyKTsKIAllbmV0YzRfdGVhcmRvd25fY2JkcihzaSk7CiB9CiAKQEAgLTQ3OSw3ICYjNDM7NDg5LDcgQEAgc3RhdGljIGludCBlbmV0YzRfcGZfaW5pdChzdHJ1Y3QgZW5ldGNfcGYgKnBmKQogCiAJZXJyID0gZW5ldGM0X2luaXRfbnRtcF91c2VyKHBmLSZndDtzaSk7CiAJaWYgKGVycikgewotCQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gaW5pdCBDQkRSXG4mIzM0Oyk7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gaW5pdCBOVE1QIHVzZXJcbiYjMzQ7KTsKIAkJcmV0dXJuIGVycjsKIAl9CiAKQEAgLTQ5MywxOCAmIzQzOzUwMywxNyBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGZfZnJlZShzdHJ1Y3QgZW5ldGNfcGYgKnBmKQogCWVuZXRjNF9mcmVlX250bXBfdXNlcihwZi0mZ3Q7c2kpOwogfQogCi1zdGF0aWMgdm9pZCBlbmV0YzRfcHNpX2RvX3NldF9yeF9tb2RlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKJiM0MztzdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKJiM0MzsJCQkJIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YywKJiM0MzsJCQkJIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYykKIHsKLQlzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBlbmV0Y19zaSwgcnhfbW9kZV90YXNrKTsKLQlzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihzaSk7Ci0Jc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBzaS0mZ3Q7bmRldjsKLQlzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gJmFtcDtzaS0mZ3Q7aHc7CiYjNDM7CXN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsKJiM0MzsJc3RydWN0IGVuZXRjX3BmICpwZiA9IGVuZXRjX3NpX3ByaXYocHJpdi0mZ3Q7c2kpOwomIzQzOwlzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcHJpdi0mZ3Q7c2k7CiAJYm9vbCB1Y19wcm9taXNjID0gZmFsc2U7CiAJYm9vbCBtY19wcm9taXNjID0gZmFsc2U7CiAJaW50IHR5cGUgPSAwOwogCi0JcnRubF9sb2NrKCk7Ci0KIAlpZiAobmRldi0mZ3Q7ZmxhZ3MgJmFtcDsgSUZGX1BST01JU0MpIHsKIAkJdWNfcHJvbWlzYyA9IHRydWU7CiAJCW1jX3Byb21pc2MgPSB0cnVlOwpAQCAtNTE1LDI4ICYjNDM7NTI0LDIxIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wc2lfZG9fc2V0X3J4X21vZGUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQl0eXBlID0gRU5FVENfTUFDX0ZJTFRFUl9UWVBFX0FMTDsKIAl9CiAKLQllbmV0YzRfcGZfc2V0X3NpX21hY19wcm9taXNjKGh3LCAwLCB1Y19wcm9taXNjLCBtY19wcm9taXNjKTsKJiM0MzsJZW5ldGNfc2V0X3NpX3VjX3Byb21pc2Moc2ksIDAsIHVjX3Byb21pc2MpOwomIzQzOwllbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhzaSwgMCwgbWNfcHJvbWlzYyk7CiAKIAlpZiAodWNfcHJvbWlzYykgewotCQllbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKGh3LCAwLCAwKTsKJiM0MzsJCWVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7CiAJCWVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpOwogCX0KIAogCWlmIChtY19wcm9taXNjKQotCQllbmV0YzRfcGZfc2V0X3NpX21jX2hhc2hfZmlsdGVyKGh3LCAwLCAwKTsKJiM0MzsJCWVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7CiAKIAkvKiBTZXQgbmV3IE1BQyBmaWx0ZXIgKi8KLQllbmV0YzRfcGZfc2V0X21hY19maWx0ZXIocGYsIHR5cGUpOwomIzQzOwllbmV0YzRfcGZfc2V0X21hY19maWx0ZXIocGYsIHR5cGUsIHVjLCBtYyk7CiAKLQlydG5sX3VubG9jaygpOwotfQotCi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCi17Ci0Jc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwotCXN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwcml2LSZndDtzaTsKLQotCXF1ZXVlX3dvcmsoc2ktJmd0O3dvcmtxdWV1ZSwgJmFtcDtzaS0mZ3Q7cnhfbW9kZV90YXNrKTsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgZW5ldGM0X3BmX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKQEAgLTU0NCwxMiAmIzQzOzU0NiwxMSBAQCBzdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiB7CiAJbmV0ZGV2X2ZlYXR1cmVzX3QgY2hhbmdlZCA9IG5kZXYtJmd0O2ZlYXR1cmVzIF4gZmVhdHVyZXM7CiAJc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwotCXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3ByaXYtJmd0O3NpLSZndDtodzsKIAogCWlmIChjaGFuZ2VkICZhbXA7IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUikgewogCQlib29sIHByb21pc2NfZW4gPSAhKGZlYXR1cmVzICZhbXA7IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUik7CiAKLQkJZW5ldGM0X3BmX3NldF9zaV92bGFuX3Byb21pc2MoaHcsIDAsIHByb21pc2NfZW4pOwomIzQzOwkJZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhwcml2LSZndDtzaSwgMCwgcHJvbWlzY19lbik7CiAJfQogCiAJaWYgKGNoYW5nZWQgJmFtcDsgTkVUSUZfRl9MT09QQkFDSykKQEAgLTU2Niw3ICYjNDM7NTY3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlbmV0YzRfbmRldl9vcHMgPSB7CiAJLm5kb19zdGFydF94bWl0CQk9IGVuZXRjX3htaXQsCiAJLm5kb19nZXRfc3RhdHMJCT0gZW5ldGNfZ2V0X3N0YXRzLAogCS5uZG9fc2V0X21hY19hZGRyZXNzCT0gZW5ldGNfcGZfc2V0X21hY19hZGRyLAotCS5uZG9fc2V0X3J4X21vZGUJPSBlbmV0YzRfcGZfc2V0X3J4X21vZGUsCiYjNDM7CS5uZG9fc2V0X3J4X21vZGVfYXN5bmMJPSBlbmV0YzRfcGZfc2V0X3J4X21vZGUsCiAJLm5kb19zZXRfZmVhdHVyZXMJPSBlbmV0YzRfcGZfc2V0X2ZlYXR1cmVzLAogCS5uZG9fdmxhbl9yeF9hZGRfdmlkCT0gZW5ldGNfdmxhbl9yeF9hZGRfdmlkLAogCS5uZG9fdmxhbl9yeF9raWxsX3ZpZAk9IGVuZXRjX3ZsYW5fcnhfZGVsX3ZpZCwKQEAgLTYwMiwxMSAmIzQzOzYwMyw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9tYWNfY29uZmlnKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHVuc2lnbmVkIGludCBtb2RlLAogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDoKIAkJdmFsIHw9IElGTU9ERV9SR01JSTsKLQkJLyogV2UgbmVlZCB0byBlbmFibGUgYXV0by1uZWdvdGlhdGlvbiBmb3IgdGhlIE1BQwotCQkgKiBpZiBpdHMgUkdNSUkgaW50ZXJmYWNlIHN1cHBvcnQgSW4tQmFuZCBzdGF0dXMuCi0JCSAqLwotCQlpZiAocGh5bGlua19hdXRvbmVnX2luYmFuZChtb2RlKSkKLQkJCXZhbCB8PSBQTV9JRl9NT0RFX0VOQTsKIAkJYnJlYWs7CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUk1JSToKIAkJdmFsIHw9IElGTU9ERV9STUlJOwpAQCAtNjE2LDcgJiM0Mzs2MTIsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfbWFjX2NvbmZpZyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLCB1bnNpZ25lZCBpbnQgbW9kZSwKIAkJdmFsIHw9IElGTU9ERV9TR01JSTsKIAkJYnJlYWs7CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6Ci0JY2FzZSBQSFlfSU5URVJGQUNFX01PREVfWEdNSUk6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSToKIAkJdmFsIHw9IElGTU9ERV9YR01JSTsKIAkJYnJlYWs7CkBAIC02NDIsMjYgJiM0Mzs2MzcsMTkgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3NldF9wb3J0X3NwZWVkKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsIGludCBzcGVlZCkKIAl1MzIgb2xkX3NwZWVkID0gcHJpdi0mZ3Q7c3BlZWQ7CiAJdTMyIHZhbDsKIAomIzQzOwkvKiBJZiB0aGUgc3BlZWQgaXMgdW5rbm93biwgdXNlIHRoZSBtaW5pbXVtIHZhbHVlICovCiYjNDM7CWlmIChzcGVlZCA9PSBTUEVFRF9VTktOT1dOKSB7CiYjNDM7CQlzcGVlZCA9IFNQRUVEXzEwOwomIzQzOwkJZGV2X3dhcm4ocHJpdi0mZ3Q7ZGV2LCAmIzM0O1NwZWVkIHVua25vd24sIGRlZmF1bHQgaXMgMTBNYnBzXG4mIzM0Oyk7CiYjNDM7CX0KJiM0MzsKIAlpZiAoc3BlZWQgPT0gb2xkX3NwZWVkKQogCQlyZXR1cm47CiAKLQl2YWwgPSBlbmV0Y19wb3J0X3JkKCZhbXA7cHJpdi0mZ3Q7c2ktJmd0O2h3LCBFTkVUQzRfUENSKTsKLQl2YWwgJmFtcDs9IH5QQ1JfUFNQRUVEOwotCi0Jc3dpdGNoIChzcGVlZCkgewotCWNhc2UgU1BFRURfMTAwOgotCWNhc2UgU1BFRURfMTAwMDoKLQljYXNlIFNQRUVEXzI1MDA6Ci0JY2FzZSBTUEVFRF8xMDAwMDoKLQkJdmFsIHw9IChQQ1JfUFNQRUVEICZhbXA7IFBDUl9QU1BFRURfVkFMKHNwZWVkKSk7Ci0JCWJyZWFrOwotCWNhc2UgU1BFRURfMTA6Ci0JZGVmYXVsdDoKLQkJdmFsIHw9IChQQ1JfUFNQRUVEICZhbXA7IFBDUl9QU1BFRURfVkFMKFNQRUVEXzEwKSk7Ci0JfQotCi0JcHJpdi0mZ3Q7c3BlZWQgPSBzcGVlZDsKJiM0MzsJdmFsID0gZW5ldGNfcG9ydF9yZCgmYW1wO3ByaXYtJmd0O3NpLSZndDtodywgRU5FVEM0X1BDUikgJmFtcDsgKH5QQ1JfUFNQRUVEKTsKJiM0MzsJdmFsIHw9IFBDUl9QU1BFRURfVkFMKHNwZWVkKTsKIAllbmV0Y19wb3J0X3dyKCZhbXA7cHJpdi0mZ3Q7c2ktJmd0O2h3LCBFTkVUQzRfUENSLCB2YWwpOwomIzQzOwlwcml2LSZndDtzcGVlZCA9IHNwZWVkOwogfQogCiBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3JnbWlpX21hYyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgc3BlZWQsIGludCBkdXBsZXgpCkBAIC03MTcsMjIgJiM0Mzs3MDUsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3JtaWlfbWFjKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBzcGVlZCwgaW50IGR1cGxleCkKIAllbmV0Y19wb3J0X21hY193cihzaSwgRU5FVEM0X1BNX0lGX01PREUoMCksIHZhbCk7CiB9CiAKLXN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfaGRfZmxvd19jb250cm9sKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGJvb2wgZW5hYmxlKQotewotCXN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwZi0mZ3Q7c2k7Ci0JdTMyIG9sZF92YWwsIHZhbDsKLQotCWlmICghcGYtJmd0O2NhcHMuaGFsZl9kdXBsZXgpCi0JCXJldHVybjsKLQotCW9sZF92YWwgPSBlbmV0Y19wb3J0X21hY19yZChzaSwgRU5FVEM0X1BNX0NNRF9DRkcoMCkpOwotCXZhbCA9IHUzMl9yZXBsYWNlX2JpdHMob2xkX3ZhbCwgZW5hYmxlID8gMSA6IDAsIFBNX0NNRF9DRkdfSERfRkNFTik7Ci0JaWYgKHZhbCA9PSBvbGRfdmFsKQotCQlyZXR1cm47Ci0KLQllbmV0Y19wb3J0X21hY193cihzaSwgRU5FVEM0X1BNX0NNRF9DRkcoMCksIHZhbCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfcnhfcGF1c2Uoc3RydWN0IGVuZXRjX3BmICpwZiwgYm9vbCByeF9wYXVzZSkKIHsKIAlzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcGYtJmd0O3NpOwpAQCAtOTA4LDEzICYjNDM7ODgwLDExIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wbF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywKIAlzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gcGh5bGlua190b19lbmV0Y19wZihjb25maWcpOwogCXN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwZi0mZ3Q7c2k7CiAJc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdjsKLQlib29sIGhkX2ZjID0gZmFsc2U7CiAKIAlwcml2ID0gbmV0ZGV2X3ByaXYoc2ktJmd0O25kZXYpOwogCWVuZXRjNF9zZXRfcG9ydF9zcGVlZChwcml2LCBzcGVlZCk7CiAKLQlpZiAoIXBoeWxpbmtfYXV0b25lZ19pbmJhbmQobW9kZSkgJmFtcDsmYW1wOwotCSAgICBwaHlfaW50ZXJmYWNlX21vZGVfaXNfcmdtaWkoaW50ZXJmYWNlKSkKJiM0MzsJaWYgKHBoeV9pbnRlcmZhY2VfbW9kZV9pc19yZ21paShpbnRlcmZhY2UpKQogCQllbmV0YzRfc2V0X3JnbWlpX21hYyhwZiwgc3BlZWQsIGR1cGxleCk7CiAKIAlpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJKQpAQCAtOTI2LDE4ICYjNDM7ODk2LDggQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BsX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAogCQkgKi8KIAkJaWYgKHByaXYtJmd0O2FjdGl2ZV9vZmZsb2FkcyAmYW1wOyBFTkVUQ19GX1FCVSkKIAkJCXR4X3BhdXNlID0gZmFsc2U7Ci0JfSBlbHNlIHsgLyogRFVQTEVYX0hBTEYgKi8KLQkJaWYgKHR4X3BhdXNlIHx8IHJ4X3BhdXNlKQotCQkJaGRfZmMgPSB0cnVlOwotCi0JCS8qIEFzIHBlciA4MDIuMyBhbm5leCAzMUIsIFBBVVNFIGZyYW1lcyBhcmUgb25seSBzdXBwb3J0ZWQKLQkJICogd2hlbiB0aGUgbGluayBpcyBjb25maWd1cmVkIGZvciBmdWxsIGR1cGxleCBvcGVyYXRpb24uCi0JCSAqLwotCQl0eF9wYXVzZSA9IGZhbHNlOwotCQlyeF9wYXVzZSA9IGZhbHNlOwogCX0KIAotCWVuZXRjNF9zZXRfaGRfZmxvd19jb250cm9sKHBmLCBoZF9mYyk7CiAJZW5ldGM0X3NldF90eF9wYXVzZShwZiwgcHJpdi0mZ3Q7bnVtX3J4X3JpbmdzLCB0eF9wYXVzZSk7CiAJZW5ldGM0X3NldF9yeF9wYXVzZShwZiwgcnhfcGF1c2UpOwogCWVuZXRjNF9tYWNfdHhfZW5hYmxlKHBmKTsKQEAgLTEwMDksMTkgJiM0Mzs5NjksNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfbGlua19kZWluaXQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdikKIAllbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpOwogfQogCi1zdGF0aWMgaW50IGVuZXRjNF9wc2lfd3FfdGFza19pbml0KHN0cnVjdCBlbmV0Y19zaSAqc2kpCi17Ci0JY2hhciB3cV9uYW1lWzI0XTsKLQotCUlOSVRfV09SSygmYW1wO3NpLSZndDtyeF9tb2RlX3Rhc2ssIGVuZXRjNF9wc2lfZG9fc2V0X3J4X21vZGUpOwotCXNucHJpbnRmKHdxX25hbWUsIHNpemVvZih3cV9uYW1lKSwgJiMzNDtlbmV0Yy0lcyYjMzQ7LCBwY2lfbmFtZShzaS0mZ3Q7cGRldikpOwotCXNpLSZndDt3b3JrcXVldWUgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSh3cV9uYW1lKTsKLQlpZiAoIXNpLSZndDt3b3JrcXVldWUpCi0JCXJldHVybiAtRU5PTUVNOwotCi0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbnQgZW5ldGM0X3BmX25ldGRldl9jcmVhdGUoc3RydWN0IGVuZXRjX3NpICpzaSkKIHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmYW1wO3NpLSZndDtwZGV2LSZndDtkZXY7CkBAIC0xMDYyLDEyICYjNDM7MTAwOSw2IEBAIHN0YXRpYyBpbnQgZW5ldGM0X3BmX25ldGRldl9jcmVhdGUoc3RydWN0IGVuZXRjX3NpICpzaSkKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9saW5rX2luaXQ7CiAKLQllcnIgPSBlbmV0YzRfcHNpX3dxX3Rhc2tfaW5pdChzaSk7Ci0JaWYgKGVycikgewotCQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gaW5pdCB3b3JrcXVldWVcbiYjMzQ7KTsKLQkJZ290byBlcnJfd3FfaW5pdDsKLQl9Ci0KIAllcnIgPSByZWdpc3Rlcl9uZXRkZXYobmRldik7CiAJaWYgKGVycikgewogCQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgbmV0ZGV2XG4mIzM0Oyk7CkBAIC0xMDc3LDggJiM0MzsxMDE4LDYgQEAgc3RhdGljIGludCBlbmV0YzRfcGZfbmV0ZGV2X2NyZWF0ZShzdHJ1Y3QgZW5ldGNfc2kgKnNpKQogCXJldHVybiAwOwogCiBlcnJfcmVnX25ldGRldjoKLQlkZXN0cm95X3dvcmtxdWV1ZShzaS0mZ3Q7d29ya3F1ZXVlKTsKLWVycl93cV9pbml0OgogCWVuZXRjNF9saW5rX2RlaW5pdChwcml2KTsKIGVycl9saW5rX2luaXQ6CiAJZW5ldGNfZnJlZV9tc2l4KHByaXYpOwpAQCAtMTA5Niw4ICYjNDM7MTAzNSw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9uZXRkZXZfZGVzdHJveShzdHJ1Y3QgZW5ldGNfc2kgKnNpKQogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gc2ktJmd0O25kZXY7CiAKIAl1bnJlZ2lzdGVyX25ldGRldihuZGV2KTsKLQljYW5jZWxfd29yaygmYW1wO3NpLSZndDtyeF9tb2RlX3Rhc2spOwotCWRlc3Ryb3lfd29ya3F1ZXVlKHNpLSZndDt3b3JrcXVldWUpOwogCWVuZXRjNF9saW5rX2RlaW5pdChwcml2KTsKIAllbmV0Y19mcmVlX21zaXgocHJpdik7CiAJZnJlZV9uZXRkZXYobmRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYwppbmRleCA3MWYzNzZlZjFiZTFjOS4uMDdiNzgzMmYyNDI3NmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYwpAQCAtMjksNyAmIzQzOzI5LDcgQEAgc3RhdGljIGNvbnN0IHUzMiBlbmV0Y19yeGJkcl9yZWdzW10gPSB7CiB9OwogCiBzdGF0aWMgY29uc3QgdTMyIGVuZXRjX3BvcnRfcmVnc1tdID0gewotCUVORVRDX1BNUiwgRU5FVENfUFNSLCBFTkVUQ19QU0lQTVIsIEVORVRDX1BTSVBNQVIwKDApLAomIzQzOwlFTkVUQ19QTVIsIEVORVRDX1BTUiwgRU5FVENfUFNJUE1NUiwgRU5FVENfUFNJUE1BUjAoMCksCiAJRU5FVENfUFNJUE1BUjEoMCksIEVORVRDX1BUWE1CQVIsIEVORVRDX1BDQVBSMCwgRU5FVENfUENBUFIxLAogCUVORVRDX1BTSUNGR1IwKDApLCBFTkVUQ19QUkZTQ0FQUiwgRU5FVENfUFRDTVNEVVIoMCksCiAJRU5FVENfUE0wX0NNRF9DRkcsIEVORVRDX1BNMF9NQVhGUk0sIEVORVRDX1BNMF9JRl9NT0RFCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oCmluZGV4IGJmOTliNjVkNzU5OGFiLi4xNmRhNzMyZGM1ZGU4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmgKQEAgLTE4MCwxMyAmIzQzOzE4MCwxMyBAQCBlbnVtIGVuZXRjX2Jkcl90eXBlIHtUWCwgUlh9OwogI2RlZmluZSBFTkVUQ19QTVJfUFNQRUVEXzEwMDBNCUJJVCg5KQogI2RlZmluZSBFTkVUQ19QTVJfUFNQRUVEXzI1MDBNCUJJVCgxMCkKICNkZWZpbmUgRU5FVENfUFNSCQkweDAwMDQgLyogUk8gKi8KLSNkZWZpbmUgRU5FVENfUFNJUE1SCQkweDAwMTgKLSNkZWZpbmUgRU5FVENfUFNJUE1SX1NFVF9VUChuKQlCSVQobikgLyogbiA9IFNJIGluZGV4ICovCi0jZGVmaW5lIEVORVRDX1BTSVBNUl9TRVRfTVAobikJQklUKChuKSAmIzQzOyAxNikKJiM0MzsjZGVmaW5lIEVORVRDX1BTSVBNTVIJCTB4MDAxOAomIzQzOyNkZWZpbmUgIFBTSVBNTVJfU0lfTUFDX1VQKG4pCUJJVChuKSAvKiBuID0gU0kgaW5kZXggKi8KJiM0MzsjZGVmaW5lICBQU0lQTU1SX1NJX01BQ19NUChuKQlCSVQoKG4pICYjNDM7IDE2KQomIzQzOwogI2RlZmluZSBFTkVUQ19QU0lQVk1SCQkweDAwMWMKLSNkZWZpbmUgRU5FVENfVkxBTl9QUk9NSVNDX01BUF9BTEwJMHg3Ci0jZGVmaW5lIEVORVRDX1BTSVBWTVJfU0VUX1ZQKHNpbWFwKQkoKHNpbWFwKSAmYW1wOyAweDcpCi0jZGVmaW5lIEVORVRDX1BTSVBWTVJfU0VUX1ZVVEEoc2ltYXApCSgoKHNpbWFwKSAmYW1wOyAweDcpICZsdDsmbHQ7IDE2KQomIzQzOyNkZWZpbmUgIFBTSVBWTVJfU0lfVkxBTl9QKG4pCUJJVChuKSAvKiBuID0gU0kgaW5kZXggKi8KJiM0MzsKICNkZWZpbmUgRU5FVENfUFNJUE1BUjAobikJKDB4MDEwMCAmIzQzOyAobikgKiAweDgpIC8qIG4gPSBTSSBpbmRleCAqLwogI2RlZmluZSBFTkVUQ19QU0lQTUFSMShuKQkoMHgwMTA0ICYjNDM7IChuKSAqIDB4OCkKICNkZWZpbmUgRU5FVENfUFZDTENUUgkJMHgwMjA4CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jCmluZGV4IDJkNjg3YmI4YzNhMDYzLi5hNTA5OTI5Zjg5ZjI1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMKQEAgLTQyLDI2ICYjNDM7NDIsNiBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wZl9kZXN0cm95X3BjcyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcykKIAlseW54X3Bjc19kZXN0cm95KHBjcyk7CiB9CiAKLXN0YXRpYyB2b2lkIGVuZXRjX3NldF92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX2h3ICpodywgY2hhciBzaV9tYXApCi17Ci0JdTMyIHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDX1BTSVBWTVIpOwotCi0JdmFsICZhbXA7PSB+RU5FVENfUFNJUFZNUl9TRVRfVlAoRU5FVENfVkxBTl9QUk9NSVNDX01BUF9BTEwpOwotCWVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BTSVBWTVIsIEVORVRDX1BTSVBWTVJfU0VUX1ZQKHNpX21hcCkgfCB2YWwpOwotfQotCi1zdGF0aWMgdm9pZCBlbmV0Y19lbmFibGVfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBzaV9pZHgpCi17Ci0JcGYtJmd0O3ZsYW5fcHJvbWlzY19zaW1hcCB8PSBCSVQoc2lfaWR4KTsKLQllbmV0Y19zZXRfdmxhbl9wcm9taXNjKCZhbXA7cGYtJmd0O3NpLSZndDtodywgcGYtJmd0O3ZsYW5fcHJvbWlzY19zaW1hcCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGVuZXRjX2Rpc2FibGVfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBzaV9pZHgpCi17Ci0JcGYtJmd0O3ZsYW5fcHJvbWlzY19zaW1hcCAmYW1wOz0gfkJJVChzaV9pZHgpOwotCWVuZXRjX3NldF92bGFuX3Byb21pc2MoJmFtcDtwZi0mZ3Q7c2ktJmd0O2h3LCBwZi0mZ3Q7dmxhbl9wcm9taXNjX3NpbWFwKTsKLX0KLQogc3RhdGljIHZvaWQgZW5ldGNfc2V0X2lzb2xfdmxhbihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksIHUxNiB2bGFuLCB1OCBxb3MpCiB7CiAJdTMyIHZhbCA9IDA7CkBAIC04MCwzNyAmIzQzOzYwLDYgQEAgc3RhdGljIHZvaWQgZW5ldGNfYWRkX21hY19hZGRyX2VtX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqZmlsdGVyLAogCWZpbHRlci0mZ3Q7bWFjX2FkZHJfY250JiM0MzsmIzQzOzsKIH0KIAotc3RhdGljIHZvaWQgZW5ldGNfY2xlYXJfbWFjX2h0X2ZsdChzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWR4LCBpbnQgdHlwZSkKLXsKLQlib29sIGVyciA9IHNpLSZndDtlcnJhdGEgJmFtcDsgRU5FVENfRVJSX1VDTUNTV1A7Ci0KLQlpZiAodHlwZSA9PSBVQykgewotCQllbmV0Y19wb3J0X3dyKCZhbXA7c2ktJmd0O2h3LCBFTkVUQ19QU0lVTUhGUjAoc2lfaWR4LCBlcnIpLCAwKTsKLQkJZW5ldGNfcG9ydF93cigmYW1wO3NpLSZndDtodywgRU5FVENfUFNJVU1IRlIxKHNpX2lkeCksIDApOwotCX0gZWxzZSB7IC8qIE1DICovCi0JCWVuZXRjX3BvcnRfd3IoJmFtcDtzaS0mZ3Q7aHcsIEVORVRDX1BTSU1NSEZSMChzaV9pZHgsIGVyciksIDApOwotCQllbmV0Y19wb3J0X3dyKCZhbXA7c2ktJmd0O2h3LCBFTkVUQ19QU0lNTUhGUjEoc2lfaWR4KSwgMCk7Ci0JfQotfQotCi1zdGF0aWMgdm9pZCBlbmV0Y19zZXRfbWFjX2h0X2ZsdChzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWR4LCBpbnQgdHlwZSwKLQkJCQkgdW5zaWduZWQgbG9uZyBoYXNoKQotewotCWJvb2wgZXJyID0gc2ktJmd0O2VycmF0YSAmYW1wOyBFTkVUQ19FUlJfVUNNQ1NXUDsKLQotCWlmICh0eXBlID09IFVDKSB7Ci0JCWVuZXRjX3BvcnRfd3IoJmFtcDtzaS0mZ3Q7aHcsIEVORVRDX1BTSVVNSEZSMChzaV9pZHgsIGVyciksCi0JCQkgICAgICBsb3dlcl8zMl9iaXRzKGhhc2gpKTsKLQkJZW5ldGNfcG9ydF93cigmYW1wO3NpLSZndDtodywgRU5FVENfUFNJVU1IRlIxKHNpX2lkeCksCi0JCQkgICAgICB1cHBlcl8zMl9iaXRzKGhhc2gpKTsKLQl9IGVsc2UgeyAvKiBNQyAqLwotCQllbmV0Y19wb3J0X3dyKCZhbXA7c2ktJmd0O2h3LCBFTkVUQ19QU0lNTUhGUjAoc2lfaWR4LCBlcnIpLAotCQkJICAgICAgbG93ZXJfMzJfYml0cyhoYXNoKSk7Ci0JCWVuZXRjX3BvcnRfd3IoJmFtcDtzaS0mZ3Q7aHcsIEVORVRDX1BTSU1NSEZSMShzaV9pZHgpLAotCQkJICAgICAgdXBwZXJfMzJfYml0cyhoYXNoKSk7Ci0JfQotfQotCiBzdGF0aWMgdm9pZCBlbmV0Y19zeW5jX21hY19maWx0ZXJzKHN0cnVjdCBlbmV0Y19wZiAqcGYpCiB7CiAJc3RydWN0IGVuZXRjX21hY19maWx0ZXIgKmYgPSBwZi0mZ3Q7bWFjX2ZpbHRlcjsKQEAgLTEyMiwxMiAmIzQzOzcxLDE2IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3N5bmNfbWFjX2ZpbHRlcnMoc3RydWN0IGVuZXRjX3BmICpwZikKIAlmb3IgKGkgPSAwOyBpICZsdDsgTUFERFJfVFlQRTsgaSYjNDM7JiM0MzssIGYmIzQzOyYjNDM7KSB7CiAJCWJvb2wgZW0gPSAoZi0mZ3Q7bWFjX2FkZHJfY250ID09IDEpICZhbXA7JmFtcDsgKGkgPT0gVUMpOwogCQlib29sIGNsZWFyID0gIWYtJmd0O21hY19hZGRyX2NudDsKJiM0MzsJCXU2NCBoYXNoOwogCiAJCWlmIChjbGVhcikgewotCQkJaWYgKGkgPT0gVUMpCiYjNDM7CQkJaWYgKGkgPT0gVUMpIHsKIAkJCQllbmV0Y19jbGVhcl9tYWNfZmx0X2VudHJ5KHNpLCBwb3MpOwomIzQzOwkJCQllbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7CiYjNDM7CQkJfQogCi0JCQllbmV0Y19jbGVhcl9tYWNfaHRfZmx0KHNpLCAwLCBpKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTEzNSw3ICYjNDM7ODgsNyBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zeW5jX21hY19maWx0ZXJzKHN0cnVjdCBlbmV0Y19wZiAqcGYpCiAJCWlmIChlbSkgewogCQkJaW50IGVycjsKIAotCQkJZW5ldGNfY2xlYXJfbWFjX2h0X2ZsdChzaSwgMCwgVUMpOwomIzQzOwkJCWVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7CiAKIAkJCWVyciA9IGVuZXRjX3NldF9tYWNfZmx0X2VudHJ5KHNpLCBwb3MsIGYtJmd0O21hY19hZGRyLAogCQkJCQkJICAgICAgQklUKDApKTsKQEAgLTE0NywxMSAmIzQzOzEwMCwxNSBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zeW5jX21hY19maWx0ZXJzKHN0cnVjdCBlbmV0Y19wZiAqcGYpCiAJCQkJIGVycik7CiAJCX0KIAomIzQzOwkJYml0bWFwX3RvX2FycjY0KCZhbXA7aGFzaCwgZi0mZ3Q7bWFjX2hhc2hfdGFibGUsCiYjNDM7CQkJCUVORVRDX01BRERSX0hBU0hfVEJMX1NaKTsKIAkJLyogaGFzaCB0YWJsZSBmaWx0ZXIsIGNsZWFyIEVNIGZpbHRlciBmb3IgVUMgZW50cmllcyAqLwotCQlpZiAoaSA9PSBVQykKJiM0MzsJCWlmIChpID09IFVDKSB7CiAJCQllbmV0Y19jbGVhcl9tYWNfZmx0X2VudHJ5KHNpLCBwb3MpOwotCi0JCWVuZXRjX3NldF9tYWNfaHRfZmx0KHNpLCAwLCBpLCAqZi0mZ3Q7bWFjX2hhc2hfdGFibGUpOwomIzQzOwkJCWVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzaSwgMCwgaGFzaCk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzaSwgMCwgaGFzaCk7CiYjNDM7CQl9CiAJfQogfQogCkBAIC0xNTksMjEgJiM0MzsxMTYsMTcgQEAgc3RhdGljIHZvaWQgZW5ldGNfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiB7CiAJc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwogCXN0cnVjdCBlbmV0Y19wZiAqcGYgPSBlbmV0Y19zaV9wcml2KHByaXYtJmd0O3NpKTsKLQlzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gJmFtcDtwcml2LSZndDtzaS0mZ3Q7aHc7CiAJYm9vbCB1cHJvbSA9IGZhbHNlLCBtcHJvbSA9IGZhbHNlOwogCXN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICpmaWx0ZXI7CiAJc3RydWN0IG5ldGRldl9od19hZGRyICpoYTsKLQl1MzIgcHNpcG1yID0gMDsKIAlib29sIGVtOwogCiAJaWYgKG5kZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9QUk9NSVNDKSB7CiAJCS8qIGVuYWJsZSBwcm9taXNjIG1vZGUgZm9yIFNJMCAoUEYpICovCi0JCXBzaXBtciA9IEVORVRDX1BTSVBNUl9TRVRfVVAoMCkgfCBFTkVUQ19QU0lQTVJfU0VUX01QKDApOwogCQl1cHJvbSA9IHRydWU7CiAJCW1wcm9tID0gdHJ1ZTsKIAl9IGVsc2UgaWYgKG5kZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9BTExNVUxUSSkgewogCQkvKiBlbmFibGUgbXVsdGkgY2FzdCBwcm9taXNjIG1vZGUgZm9yIFNJMCAoUEYpICovCi0JCXBzaXBtciA9IEVORVRDX1BTSVBNUl9TRVRfTVAoMCk7CiAJCW1wcm9tID0gdHJ1ZTsKIAl9CiAKQEAgLTIxMSw5ICYjNDM7MTY0LDggQEAgc3RhdGljIHZvaWQgZW5ldGNfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiAJCS8qIHVwZGF0ZSBQRiBlbnRyaWVzICovCiAJCWVuZXRjX3N5bmNfbWFjX2ZpbHRlcnMocGYpOwogCi0JcHNpcG1yIHw9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDX1BTSVBNUikgJmFtcDsKLQkJICB+KEVORVRDX1BTSVBNUl9TRVRfVVAoMCkgfCBFTkVUQ19QU0lQTVJfU0VUX01QKDApKTsKLQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQ19QU0lQTVIsIHBzaXBtcik7CiYjNDM7CWVuZXRjX3NldF9zaV91Y19wcm9taXNjKHByaXYtJmd0O3NpLCAwLCB1cHJvbSk7CiYjNDM7CWVuZXRjX3NldF9zaV9tY19wcm9taXNjKHByaXYtJmd0O3NpLCAwLCBtcHJvbSk7CiB9CiAKIHN0YXRpYyB2b2lkIGVuZXRjX3NldF9sb29wYmFjayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgYm9vbCBlbikKQEAgLTQ2OSwxMiAmIzQzOzQyMSwxMSBAQCBzdGF0aWMgdm9pZCBlbmV0Y19jb25maWd1cmVfcG9ydChzdHJ1Y3QgZW5ldGNfcGYgKnBmKQogCiAJLyogc3BsaXQgdXAgUkZTIGVudHJpZXMgKi8KIAllbmV0Y19wb3J0X2Fzc2lnbl9yZnNfZW50cmllcyhwZi0mZ3Q7c2kpOwotCiAJLyogZW5mb3JjZSBWTEFOIHByb21pc2MgbW9kZSBmb3IgYWxsIFNJcyAqLwotCXBmLSZndDt2bGFuX3Byb21pc2Nfc2ltYXAgPSBFTkVUQ19WTEFOX1BST01JU0NfTUFQX0FMTDsKLQllbmV0Y19zZXRfdmxhbl9wcm9taXNjKGh3LCBwZi0mZ3Q7dmxhbl9wcm9taXNjX3NpbWFwKTsKJiM0MzsJZm9yIChpbnQgaSA9IDA7IGkgJmx0OyBwZi0mZ3Q7dG90YWxfdmZzICYjNDM7IDE7IGkmIzQzOyYjNDM7KQomIzQzOwkJZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhwZi0mZ3Q7c2ksIGksIHRydWUpOwogCi0JZW5ldGNfcG9ydF93cihodywgRU5FVENfUFNJUE1SLCAwKTsKJiM0MzsJZW5ldGNfcG9ydF93cihodywgRU5FVENfUFNJUE1NUiwgMCk7CiAKIAkvKiBlbmFibGUgcG9ydCAqLwogCWVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BNUiwgRU5FVENfUE1SX0VOKTsKQEAgLTQ5NCwxMiAmIzQzOzQ0NSw5IEBAIHN0YXRpYyBpbnQgZW5ldGNfcGZfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCX0KIAogCWlmIChjaGFuZ2VkICZhbXA7IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUikgewotCQlzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihwcml2LSZndDtzaSk7CiYjNDM7CQlib29sIHByb21pc2MgPSAhKGZlYXR1cmVzICZhbXA7IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUik7CiAKLQkJaWYgKCEhKGZlYXR1cmVzICZhbXA7IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUikpCi0JCQllbmV0Y19kaXNhYmxlX3NpX3ZsYW5fcHJvbWlzYyhwZiwgMCk7Ci0JCWVsc2UKLQkJCWVuZXRjX2VuYWJsZV9zaV92bGFuX3Byb21pc2MocGYsIDApOwomIzQzOwkJZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhwcml2LSZndDtzaSwgMCwgcHJvbWlzYyk7CiAJfQogCiAJaWYgKGNoYW5nZWQgJmFtcDsgTkVUSUZfRl9MT09QQkFDSykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmgKaW5kZXggMjg1YjdlNWM0OGZkYzcuLjU2ZDIzYThhMTFhMDYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuaApAQCAtMTcsMTIgJiM0MzsxNyw5IEBAIHN0cnVjdCBlbmV0Y192Zl9zdGF0ZSB7CiB9OwogCiBzdHJ1Y3QgZW5ldGNfcG9ydF9jYXBzIHsKLQl1MzIgaGFsZl9kdXBsZXg6MTsKLQlpbnQgbnVtX3ZzaTsKIAlpbnQgbnVtX21zaXg7CiAJaW50IG51bV9yeF9iZHI7CiAJaW50IG51bV90eF9iZHI7Ci0JaW50IG1hY19maWx0ZXJfbnVtOwogfTsKIAogc3RydWN0IGVuZXRjX3BmOwpAQCAtNDcsNyAmIzQzOzQ0LDYgQEAgc3RydWN0IGVuZXRjX3BmIHsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgbXNnX3Rhc2s7CiAJY2hhciBtc2dfaW50X25hbWVbRU5FVENfSU5UX05BTUVfTUFYXTsKIAotCWNoYXIgdmxhbl9wcm9taXNjX3NpbWFwOyAvKiBiaXRtYXAgb2YgU0lzIGluIFZMQU4gcHJvbWlzYyBtb2RlICovCiAJREVDTEFSRV9CSVRNQVAodmxhbl9odF9maWx0ZXIsIEVORVRDX1ZMQU5fSFRfU0laRSk7CiAJREVDTEFSRV9CSVRNQVAoYWN0aXZlX3ZsYW5zLCBWTEFOX05fVklEKTsKIApAQCAtNjAsOCAmIzQzOzU2LDYgQEAgc3RydWN0IGVuZXRjX3BmIHsKIAogCXN0cnVjdCBlbmV0Y19wb3J0X2NhcHMgY2FwczsKIAljb25zdCBzdHJ1Y3QgZW5ldGNfcGZfb3BzICpvcHM7Ci0KLQlpbnQgbnVtX21mZTsJLyogbnVtYmVyIG9mIG1hYyBhZGRyZXNzIGZpbHRlciB0YWJsZSBlbnRyaWVzICovCiB9OwogCiAjZGVmaW5lIHBoeWxpbmtfdG9fZW5ldGNfcGYoY29uZmlnKSBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMKaW5kZXggNmU1ZDJmODY5OTE1MGIuLmQzMmExOTVhMDRjOTdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jCkBAIC0xLDUgJiM0MzsxLDUgQEAKIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMCYjNDM7IE9SIEJTRC0zLUNsYXVzZSkKLS8qIENvcHlyaWdodCAyMDI0IE5YUCAqLwomIzQzOy8qIENvcHlyaWdodCAyMDI0LTIwMjYgTlhQICovCiAKICNpbmNsdWRlICZsdDtsaW51eC9mc2wvZW5ldGNfbWRpby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mX21kaW8uaCZndDsKQEAgLTg3LDYgJiM0Mzs4NywxMTIgQEAgaW50IGVuZXRjX3NldHVwX21hY19hZGRyZXNzZXMoc3RydWN0IGRldmljZV9ub2RlICpucCwgc3RydWN0IGVuZXRjX3BmICpwZikKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3NldHVwX21hY19hZGRyZXNzZXMpOwogCiYjNDM7dm9pZCBlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3NpLSZndDtodzsKJiM0MzsJaW50IHBzaXBtbXJfb2ZmOwomIzQzOwl1MzIgdmFsOwomIzQzOwomIzQzOwlpZiAoaXNfZW5ldGNfcmV2MShzaSkpCiYjNDM7CQlwc2lwbW1yX29mZiA9IEVORVRDX1BTSVBNTVI7CiYjNDM7CWVsc2UKJiM0MzsJCXBzaXBtbXJfb2ZmID0gRU5FVEM0X1BTSVBNTVI7CiYjNDM7CiYjNDM7CXZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIHBzaXBtbXJfb2ZmKTsKJiM0MzsKJiM0MzsJaWYgKHByb21pc2MpCiYjNDM7CQl2YWwgfD0gUFNJUE1NUl9TSV9NQUNfVVAoc2lfaWQpOwomIzQzOwllbHNlCiYjNDM7CQl2YWwgJmFtcDs9IH5QU0lQTU1SX1NJX01BQ19VUChzaV9pZCk7CiYjNDM7CiYjNDM7CWVuZXRjX3BvcnRfd3IoaHcsIHBzaXBtbXJfb2ZmLCB2YWwpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyk7CiYjNDM7CiYjNDM7dm9pZCBlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3NpLSZndDtodzsKJiM0MzsJaW50IHBzaXBtbXJfb2ZmOwomIzQzOwl1MzIgdmFsOwomIzQzOwomIzQzOwlpZiAoaXNfZW5ldGNfcmV2MShzaSkpCiYjNDM7CQlwc2lwbW1yX29mZiA9IEVORVRDX1BTSVBNTVI7CiYjNDM7CWVsc2UKJiM0MzsJCXBzaXBtbXJfb2ZmID0gRU5FVEM0X1BTSVBNTVI7CiYjNDM7CiYjNDM7CXZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIHBzaXBtbXJfb2ZmKTsKJiM0MzsKJiM0MzsJaWYgKHByb21pc2MpCiYjNDM7CQl2YWwgfD0gUFNJUE1NUl9TSV9NQUNfTVAoc2lfaWQpOwomIzQzOwllbHNlCiYjNDM7CQl2YWwgJmFtcDs9IH5QU0lQTU1SX1NJX01BQ19NUChzaV9pZCk7CiYjNDM7CiYjNDM7CWVuZXRjX3BvcnRfd3IoaHcsIHBzaXBtbXJfb2ZmLCB2YWwpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyk7CiYjNDM7CiYjNDM7dm9pZCBlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCB1NjQgaGFzaCkKJiM0Mzt7CiYjNDM7CWludCBwc2l1bWhmcjBfb2ZmLCBwc2l1bWhmcjFfb2ZmOwomIzQzOwlzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gJmFtcDtzaS0mZ3Q7aHc7CiYjNDM7CiYjNDM7CWlmIChpc19lbmV0Y19yZXYxKHNpKSkgewomIzQzOwkJYm9vbCBlcnIgPSBzaS0mZ3Q7ZXJyYXRhICZhbXA7IEVORVRDX0VSUl9VQ01DU1dQOwomIzQzOwomIzQzOwkJcHNpdW1oZnIwX29mZiA9IEVORVRDX1BTSVVNSEZSMChzaV9pZCwgZXJyKTsKJiM0MzsJCXBzaXVtaGZyMV9vZmYgPSBFTkVUQ19QU0lVTUhGUjEoc2lfaWQpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJcHNpdW1oZnIwX29mZiA9IEVORVRDNF9QU0lVTUhGUjAoc2lfaWQpOwomIzQzOwkJcHNpdW1oZnIxX29mZiA9IEVORVRDNF9QU0lVTUhGUjEoc2lfaWQpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWVuZXRjX3BvcnRfd3IoaHcsIHBzaXVtaGZyMF9vZmYsIGxvd2VyXzMyX2JpdHMoaGFzaCkpOwomIzQzOwllbmV0Y19wb3J0X3dyKGh3LCBwc2l1bWhmcjFfb2ZmLCB1cHBlcl8zMl9iaXRzKGhhc2gpKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKTsKJiM0MzsKJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIHU2NCBoYXNoKQomIzQzO3sKJiM0MzsJaW50IHBzaW1taGZyMF9vZmYsIHBzaW1taGZyMV9vZmY7CiYjNDM7CXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3NpLSZndDtodzsKJiM0MzsKJiM0MzsJaWYgKGlzX2VuZXRjX3JldjEoc2kpKSB7CiYjNDM7CQlib29sIGVyciA9IHNpLSZndDtlcnJhdGEgJmFtcDsgRU5FVENfRVJSX1VDTUNTV1A7CiYjNDM7CiYjNDM7CQlwc2ltbWhmcjBfb2ZmID0gRU5FVENfUFNJTU1IRlIwKHNpX2lkLCBlcnIpOwomIzQzOwkJcHNpbW1oZnIxX29mZiA9IEVORVRDX1BTSU1NSEZSMShzaV9pZCk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlwc2ltbWhmcjBfb2ZmID0gRU5FVEM0X1BTSU1NSEZSMChzaV9pZCk7CiYjNDM7CQlwc2ltbWhmcjFfb2ZmID0gRU5FVEM0X1BTSU1NSEZSMShzaV9pZCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZW5ldGNfcG9ydF93cihodywgcHNpbW1oZnIwX29mZiwgbG93ZXJfMzJfYml0cyhoYXNoKSk7CiYjNDM7CWVuZXRjX3BvcnRfd3IoaHcsIHBzaW1taGZyMV9vZmYsIHVwcGVyXzMyX2JpdHMoaGFzaCkpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIpOwomIzQzOwomIzQzO3ZvaWQgZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3NpLSZndDtodzsKJiM0MzsJaW50IHBzaXB2bXJfb2ZmOwomIzQzOwl1MzIgdmFsOwomIzQzOwomIzQzOwlpZiAoaXNfZW5ldGNfcmV2MShzaSkpCiYjNDM7CQlwc2lwdm1yX29mZiA9IEVORVRDX1BTSVBWTVI7CiYjNDM7CWVsc2UKJiM0MzsJCXBzaXB2bXJfb2ZmID0gRU5FVEM0X1BTSVBWTVI7CiYjNDM7CiYjNDM7CXZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIHBzaXB2bXJfb2ZmKTsKJiM0MzsKJiM0MzsJaWYgKHByb21pc2MpCiYjNDM7CQl2YWwgfD0gUFNJUFZNUl9TSV9WTEFOX1Aoc2lfaWQpOwomIzQzOwllbHNlCiYjNDM7CQl2YWwgJmFtcDs9IH5QU0lQVk1SX1NJX1ZMQU5fUChzaV9pZCk7CiYjNDM7CiYjNDM7CWVuZXRjX3BvcnRfd3IoaHcsIHBzaXB2bXJfb2ZmLCB2YWwpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXRfc2lfdmxhbl9wcm9taXNjKTsKJiM0MzsKIHZvaWQgZW5ldGNfcGZfbmV0ZGV2X3NldHVwKHN0cnVjdCBlbmV0Y19zaSAqc2ksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQkJICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzICpuZGV2X29wcykKIHsKQEAgLTI3NSw3ICYjNDM7MzgxLDggQEAgc3RhdGljIGJvb2wgZW5ldGNfcG9ydF9oYXNfcGNzKHN0cnVjdCBlbmV0Y19wZiAqcGYpCiAJcmV0dXJuIChwZi0mZ3Q7aWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkgfHwKIAkJcGYtJmd0O2lmX21vZGUgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCB8fAogCQlwZi0mZ3Q7aWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYIHx8Ci0JCXBmLSZndDtpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJKTsKJiM0MzsJCXBmLSZndDtpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJIHx8CiYjNDM7CQlwZi0mZ3Q7aWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpOwogfQogCiBpbnQgZW5ldGNfbWRpb2J1c19jcmVhdGUoc3RydWN0IGVuZXRjX3BmICpwZiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlKQpAQCAtMzE2LDI1ICYjNDM7NDIzLDQyIEBAIGludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsCiB7CiAJc3RydWN0IGVuZXRjX3BmICpwZiA9IGVuZXRjX3NpX3ByaXYocHJpdi0mZ3Q7c2kpOwogCXN0cnVjdCBwaHlsaW5rICpwaHlsaW5rOwomIzQzOwl1bnNpZ25lZCBsb25nIG1hY19jYXBzOwogCWludCBlcnI7CiAKIAlwZi0mZ3Q7cGh5bGlua19jb25maWcuZGV2ID0gJmFtcDtwcml2LSZndDtuZGV2LSZndDtkZXY7CiAJcGYtJmd0O3BoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjsKLQlwZi0mZ3Q7cGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRSB8Ci0JCU1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMCB8IE1BQ18yNTAwRkQ7CiAKIAlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLAogCQkgIHBmLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7Ci0JX19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSwKLQkJICBwZi0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwotCV9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYLAotCQkgIHBmLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7Ci0JX19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsCi0JCSAgcGYtJmd0O3BoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTsKLQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUksCi0JCSAgcGYtJmd0O3BoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTsKLQlwaHlfaW50ZXJmYWNlX3NldF9yZ21paShwZi0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwogCiYjNDM7CW1hY19jYXBzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFOwomIzQzOwlpZiAoIWVuZXRjX2lzX3BzZXVkb19tYWMocHJpdi0mZ3Q7c2kpKSB7CiYjNDM7CQltYWNfY2FwcyB8PSBNQUNfMTAgfCBNQUNfMTAwIHwgTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQ7CiYjNDM7CiYjNDM7CQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLAomIzQzOwkJCSAgcGYtJmd0O3BoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTsKJiM0MzsJCV9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYLAomIzQzOwkJCSAgcGYtJmd0O3BoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTsKJiM0MzsJCV9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLAomIzQzOwkJCSAgcGYtJmd0O3BoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTsKJiM0MzsJCV9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSSwKJiM0MzsJCQkgIHBmLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CiYjNDM7CQlpZiAoIWlzX2VuZXRjX3JldjEocHJpdi0mZ3Q7c2kpKSB7CiYjNDM7CQkJbWFjX2NhcHMgfD0gTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEOwomIzQzOwkJCV9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIsCiYjNDM7CQkJCSAgcGYtJmd0O3BoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXBoeV9pbnRlcmZhY2Vfc2V0X3JnbWlpKHBmLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQltYWNfY2FwcyB8PSBNQUNfMTBGRCB8IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEIHwKJiM0MzsJCQkgICAgTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEIHwgTUFDXzIwMDAwRkQgfAomIzQzOwkJCSAgICBNQUNfMjUwMDBGRDsKJiM0MzsJfQomIzQzOwomIzQzOwlwZi0mZ3Q7cGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IG1hY19jYXBzOwogCXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZSgmYW1wO3BmLSZndDtwaHlsaW5rX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShub2RlKSwKIAkJCQkgcGYtJmd0O2lmX21vZGUsIG9wcyk7CiAJaWYgKElTX0VSUihwaHlsaW5rKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oCmluZGV4IDU3ZDJlMGViZDJiMGJiLi44MjQzY2UwZGU1N2Y2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaApAQCAtMTcsNiAmIzQzOzE3LDExIEBAIHZvaWQgZW5ldGNfc2V0X2RlZmF1bHRfcnNzX2tleShzdHJ1Y3QgZW5ldGNfcGYgKnBmKTsKIGludCBlbmV0Y192bGFuX3J4X2FkZF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIF9fYmUxNiBwcm90LCB1MTYgdmlkKTsKIGludCBlbmV0Y192bGFuX3J4X2RlbF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIF9fYmUxNiBwcm90LCB1MTYgdmlkKTsKIGludCBlbmV0Y19pbml0X3NyaW92X3Jlc291cmNlcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKTsKJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV91Y19wcm9taXNjKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgYm9vbCBwcm9taXNjKTsKJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV9tY19wcm9taXNjKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgYm9vbCBwcm9taXNjKTsKJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIHU2NCBoYXNoKTsKJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIHU2NCBoYXNoKTsKJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCBib29sIHByb21pc2MpOwogCiBzdGF0aWMgaW5saW5lIHUxNiBlbmV0Y19nZXRfaXBfcmV2aXNpb24oc3RydWN0IGVuZXRjX2h3ICpodykKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19xb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19xb3MuYwppbmRleCA3YjE3YmNhMjRmMjYwZi4uMmFhMGZjYWFmY2QyM2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19xb3MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcW9zLmMKQEAgLTExMzUsNyAmIzQzOzExMzUsNiBAQCBzdGF0aWMgaW50IGVuZXRjX3BzZnBfcGFyc2VfY2xzZmxvd2VyKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsCiAJc3RydWN0IGZsb3dfYWN0aW9uX2VudHJ5ICplbnRyeTsKIAlzdHJ1Y3QgYWN0aW9uX2dhdGVfZW50cnkgKmU7CiAJdTggc2ZpX292ZXJ3cml0ZSA9IDA7Ci0JaW50IGVudHJpZXNfc2l6ZTsKIAlpbnQgaSwgZXJyOwogCiAJaWYgKGYtJmd0O2NvbW1vbi5jaGFpbl9pbmRleCAmZ3Q7PSBwcml2LSZndDtwc2ZwX2NhcC5tYXhfc3RyZWFtaWQpIHsKQEAgLTEyNDIsOCAmIzQzOzEyNDEsNyBAQCBzdGF0aWMgaW50IGVuZXRjX3BzZnBfcGFyc2VfY2xzZmxvd2VyKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsCiAJCWdvdG8gZnJlZV9maWx0ZXI7CiAJfQogCi0JZW50cmllc19zaXplID0gc3RydWN0X3NpemUoc2dpLCBlbnRyaWVzLCBlbnRyeWctJmd0O2dhdGUubnVtX2VudHJpZXMpOwotCXNnaSA9IGt6YWxsb2MoZW50cmllc19zaXplLCBHRlBfS0VSTkVMKTsKJiM0MzsJc2dpID0ga3phbGxvY19mbGV4KCpzZ2ksIGVudHJpZXMsIGVudHJ5Zy0mZ3Q7Z2F0ZS5udW1fZW50cmllcyk7CiAJaWYgKCFzZ2kpIHsKIAkJZXJyID0gLUVOT01FTTsKIAkJZ290byBmcmVlX2ZpbHRlcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmMKaW5kZXggOWNkYjBhNGQ2YmFmYjcuLjdkY2I0YTAyNDZmNTI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYwpAQCAtMzE3LDcgJiM0MzszMTcsMTQgQEAgc3RhdGljIGludCBlbmV0Y192Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAogCWVuZXRjX2dldF9zaV9jYXBzKHNpKTsKIAotCW5kZXYgPSBhbGxvY19ldGhlcmRldl9tcShzaXplb2YoKnByaXYpLCBFTkVUQ19NQVhfTlVNX1RYUVMpOwomIzQzOwkvKiBDdXJyZW50bHksIHRoZSBzdXBwb3J0ZWQgU29DcyBoYXZlIGEgbWF4IG9mIDYgQ1BVcyBhbmQgdGhlIFZGcwomIzQzOwkgKiBoYXZlIGxlc3MgdGhhbiA2IFJYL1RYIHJpbmdzLiBTbyBubyBpc3N1ZXMgZm9yIHRoZXNlIHN1cHBvcnRlZAomIzQzOwkgKiBTb0NzLCBidXQgZm9yIGZ1dHVyZSBTb0NzIHdoaWNoIGhhdmUgbW9yZSBDUFVzIG9yIG1vcmUgVFgvUlgKJiM0MzsJICogcmluZ3MsIGFsbCB0aGUgcmVsYXRlZCBsb2dpYyBuZWVkcyB0byBiZSBpbXByb3ZlZC4KJiM0MzsJICovCiYjNDM7CW5kZXYgPSBhbGxvY19ldGhlcmRldl9tcXMoc2l6ZW9mKCpwcml2KSwKJiM0MzsJCQkJICBtaW4oc2ktJmd0O251bV90eF9yaW5ncywgRU5FVENfTUFYX05VTV9UWFFTKSwKJiM0MzsJCQkJICBtaW4oc2ktJmd0O251bV9yeF9yaW5ncywgRU5FVENfTUFYX05VTV9UWFFTKSk7CiAJaWYgKCFuZGV2KSB7CiAJCWVyciA9IC1FTk9NRU07CiAJCWRldl9lcnIoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7bmV0ZGV2IGNyZWF0aW9uIGZhaWxlZFxuJiMzNDspOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mc2wvbnRtcC5oIGIvaW5jbHVkZS9saW51eC9mc2wvbnRtcC5oCmluZGV4IGQzYjZjNDc2YjkxYTJkLi43NjRlZjI4OTI2MDg1ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9mc2wvbnRtcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZnNsL250bXAuaApAQCAtNzUsOCAmIzQzOzc1LDEwIEBAIHN0cnVjdCBudG1wX3VzZXIgewogCS8qIE5UTVAgdGFibGUgYml0bWFwcyBmb3IgcmVzb3VyY2UgbWFuYWdlbWVudCAqLwogCXUzMiBldHRfYml0bWFwX3NpemU7CiAJdTMyIGVjdF9iaXRtYXBfc2l6ZTsKJiM0MzsJdTE2IG1hZnRfbnVtX2VudHJpZXM7CiAJdW5zaWduZWQgbG9uZyAqZXR0X2dpZF9iaXRtYXA7IC8qIG9ubHkgdmFsaWQgZm9yIHN3aXRjaCAqLwogCXVuc2lnbmVkIGxvbmcgKmVjdF9naWRfYml0bWFwOyAvKiBvbmx5IHZhbGlkIGZvciBzd2l0Y2ggKi8KJiM0MzsJdW5zaWduZWQgbG9uZyAqbWFmdF9laWRfYml0bWFwOyAvKiBvbmx5IHZhbGlkIGZvciBFTkVUQyAqLwogfTsKIAogc3RydWN0IG1hZnRfZW50cnlfZGF0YSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDkxCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnJlZXNjYWxlIEVORVRDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJIGhhdmUgYSBwYXRjaCBmb3IgdGhlIEZyZWVzY2FsZSBFTkVUQyBldGhlcm5ldCBkcml2ZXIuIEl0IHRvdWNoZXMgYSBzaWduaWZpY2FudCBjaHVuayBvZiB0aGUgZHJpdmVyOiBgZW5ldGMuaGAsIGBlbmV0YzRfZGVidWdmcy5jYCwgYGVuZXRjNF9ody5oYCwgYGVuZXRjNF9wZi5jYCwgYW5kIHNvIG9uLCBhbGwgdGhlIHdheSB0aHJvdWdoIHRvIGBudG1wLmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U/JiMzNDsgWWVzLCBpdCBhcHBlYXJzIHRvIGJlLiBNQUMgZmlsdGVyaW5nLCBSWCBtb2RlIHNldHRpbmdzLCBOVE1QIGJpdG1hcCBpbml0aWFsaXphdGlvbiwgYW5kIGxpbmsgdXAgbG9naWMgYXJlIGFsbCBiZWluZyBtb2RpZmllZC4gVGhhdCBzY3JlYW1zIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgbmV0d29yayBkcml2ZXIsIHdoaWNoIHJhaXNlcyBzb21lIHJlZCBmbGFncywgYnV0IGFsc28gcG90ZW50aWFsIHRhcmdldHMgZm9yIHRlc3RpbmcuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGhvdyByZWFjaGFibGUgaXMgdGhpcyBjb2RlPyBUaGUgZHJpdmVyIGlzIGBmcmVlc2NhbGUvZW5ldGNgLCBzbyBpdCYjMzk7cyBhIEZyZWVzY2FsZSAobm93IE5YUCkgRU5FVEMgZHJpdmVyLiBOZXR3b3JrIGRyaXZlcnMgYXJlIG9mdGVuIHRyaWNreSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEdlbmVyYWxseSwgaGFyZHdhcmUtc3BlY2lmaWMgZXRoZXJuZXQgZHJpdmVycyBhcmVuJiMzOTt0IHJlYWNoYWJsZSB1bmxlc3MgdGhlcmUmIzM5O3MgYW4gZW11bGF0b3IuIFRoZSBkcml2ZXImIzM5O3MgaGFyZHdhcmUtZGVwZW5kZW50IG5hdHVyZSBtZWFucyBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIGFjY2Vzc2liaWxpdHkuIFFFTVUgZG9lcyBoYXZlIHNvbWUgc3VwcG9ydCBmb3IgTlhQIGJvYXJkcywgYnV0IGRvZXMgaXQgZW11bGF0ZSBFTkVUQz8gSXQmIzM5O3MgYSBQQ0llIGRldmljZSwgc28gdGhhdCBtaWdodCBjb21wbGljYXRlIHRoaW5ncy4gSSBkb24mIzM5O3QgbmVlZCB0byBkZWZpbml0aXZlbHkga25vdyBpZiBRRU1VIGVtdWxhdGVzIGl0IHBlcmZlY3RseTsgaW5zdGVhZCwgSSBqdXN0IG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGxpa2VseSB0byBiZSByZWFjaGFibGUgaW4gc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMsIHN1Y2ggYXMgR0NFIG9yIGV2ZW4gUUVNVSB3aXRob3V0IHNwZWNpYWxpemVkIGhhcmR3YXJlIGVtdWxhdGlvbi4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zICYjMzQ7Y29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7IFRoaXMgaXMgZXhhY3RseSB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IuIFNvLCBpcyBFTkVUQyBlbXVsYXRlZCBpbiBRRU1VPyBMZXQmIzM5O3MgY2hlY2sgaWYgaXQmIzM5O3MgYSBQQ0kgZGV2aWNlIHdpdGhpbiBRRU1VJiMzOTtzIGZyYW1ld29yay4gU2luY2UgaXQgaXMgYSBQQ0llIGRldmljZSwgaXQmIzM5O3MgbGVzcyBsaWtlbHkgdG8gYmUgZW11bGF0ZWQuIFNlYXJjaGluZyBRRU1VJiMzOTtzIHNvdXJjZSBjb2RlLCBvciBqdXN0IGFzc3VtaW5nIGl0JiMzOTtzIG5vdCBjb21tb25seSBmdXp6ZWQsIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gV2FpdCwgc3l6a2FsbGVyIHByb2JhYmx5IGRvZXNuJiMzOTt0IGhhdmUgYW4gRU5FVEMgZW11bGF0b3IuIExldCYjMzk7cyBjaGVjay4gRG9lcyBzeXprYWxsZXIgaGF2ZSBhIGRlZmluaXRpb24/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5ldGMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg0NzEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLHhnZW5lLWVuZXQueWFtbD04OT1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FwbSx4Z2VuZS1lbmV0LnlhbWwtOTktICAgICAgICBwb3J0LWlkID0gXHUwMDNjMFx1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLHhnZW5lLWVuZXQueWFtbDoxMDA6ICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZtZW5ldGNsayAwXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hcG0seGdlbmUtZW5ldC55YW1sLTEwMS0gICAgICAgIGxvY2FsLW1hYy1hZGRyZXNzID0gWzAwIDAxIDczIDAwIDAwIDAxXTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FwbSx4Z2VuZS1tZGlvLXJnbWlpLnlhbWw9MzY9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hcG0seGdlbmUtbWRpby1yZ21paS55YW1sLTQyLSAgICAgICAgcmVnID0gXHUwMDNjMHgxNzAyMDAwMCAweGQxMDBcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FwbSx4Z2VuZS1tZGlvLXJnbWlpLnlhbWw6NDM6ICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZtZW5ldGNsayAwXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hcG0seGdlbmUtbWRpby1yZ21paS55YW1sLTQ0LVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWw9MTU9ZGVzY3JpcHRpb246IHxcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTM4LSAgICBUaGlzIGlzIGZvdW5kIGluIHRoZSBOWFAgTFMxMDI4QS4gSXQgaXMgYSBQQ0kgZGV2aWNlLCBwYXJ0IG9mIHRoZSBsYXJnZXJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWw6Mzk6ICAgIGVuZXRjIHJvb3QgY29tcGxleC4gQXMgYSByZXN1bHQsIHRoZSBldGhlcm5ldC1zd2l0Y2ggbm9kZSBpcyBhIHN1Yi1ub2RlIG9mXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTQwLSAgICB0aGUgUENJZSByb290IGNvbXBsZXggbm9kZSBhbmQgaXRzIFwmIzM0O3JlZ1wmIzM0OyBwcm9wZXJ0eSBjb25mb3JtcyB0byB0aGUgcGFyZW50XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbC00Mi1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWw6NDM6ICAgIElmIGFueSBleHRlcm5hbCBzd2l0Y2ggcG9ydCBpcyBlbmFibGVkLCB0aGUgZW5ldGMgUEYyIChlbmV0Y19wb3J0Mikgc2hvdWxkXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTQ0LSAgICBiZSBlbmFibGVkIGFzIHdlbGwuIFRoaXMgaXMgYmVjYXVzZSB0aGUgaW50ZXJuYWwgTURJTyBidXMgKGV4cG9zZWQgdGhyb3VnaFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbDo0NTogICAgRUEgQkFSIDApIHVzZWQgdG8gYWNjZXNzIHRoZSBNQUMgUENTIHJlZ2lzdGVycyB0cnVseSBiZWxvbmdzIHRvIHRoZSBlbmV0Y1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbC00Ni0gICAgcG9ydCAyIGFuZCBub3QgdG8gRmVsaXguXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbD05Mj1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTEzOS0gICAgICAgICAgICAgICAgICAgIHJlZyA9IFx1MDAzYzRcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sOjE0MDogICAgICAgICAgICAgICAgICAgIGV0aGVybmV0ID0gXHUwMDNjXHUwMDI2ZW5ldGNfcG9ydDJcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTE0MS0gICAgICAgICAgICAgICAgICAgIHBoeS1tb2RlID0gXCYjMzQ7aW50ZXJuYWxcJiMzNDs7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbC0xNTEtICAgICAgICAgICAgICAgICAgICByZWcgPSBcdTAwM2M1XHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbDoxNTI6ICAgICAgICAgICAgICAgICAgICBldGhlcm5ldCA9IFx1MDAzY1x1MDAyNmVuZXRjX3BvcnQzXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbC0xNTMtICAgICAgICAgICAgICAgICAgICBwaHktbW9kZSA9IFwmIzM0O2ludGVybmFsXCYjMzQ7O1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL254cCxuZXRjLXN3aXRjaC55YW1sPTgxPWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL254cCxuZXRjLXN3aXRjaC55YW1sLTExOS0gICAgICAgICAgICAgICAgICAgIHJlZyA9IFx1MDAzYzNcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9ueHAsbmV0Yy1zd2l0Y2gueWFtbDoxMjA6ICAgICAgICAgICAgICAgICAgICBldGhlcm5ldCA9IFx1MDAzY1x1MDAyNmVuZXRjM1x1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL254cCxuZXRjLXN3aXRjaC55YW1sLTEyMS0gICAgICAgICAgICAgICAgICAgIHBoeS1tb2RlID0gXCYjMzQ7aW50ZXJuYWxcJiMzNDs7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sLTMtLS0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWw6NDokaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sPTk9ZGVzY3JpcHRpb246XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWw6MTA6ICBUaGUgZnNsX2VuZXRjIGRyaXZlciBjYW4gcHJvYmUgb24gdGhlIEludGVncmF0ZWQgRW5kcG9pbnQgUmVnaXN0ZXIgQmxvY2ssXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWwtMTEtICB3aGljaCBwcmVjb25maWd1cmVzIHRoZSBGSUZPIGxpbWl0cyBmb3IgdGhlIEVORVRDIHBvcnRzLlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbD0xOT1wcm9wZXJ0aWVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbC0yMS0gICAgZW51bTpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbDoyMjogICAgICAtIGZzbCxsczEwMjhhLWVuZXRjLWllcmJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbC0yMy1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWw9MzM9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sLTM1LSAgICBlbmRwb2ludC1jb25maWdAZjA4MDAwMDAge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sOjM2OiAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O2ZzbCxsczEwMjhhLWVuZXRjLWllcmJcJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWwtMzctICAgICAgICByZWcgPSBcdTAwM2MweGYwODAwMDAwIDB4MTAwMDBcdTAwM2U7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sLTMtLS0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1tZGlvLnlhbWw6NDokaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sPTIxPXByb3BlcnRpZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sLTI2LSAgICAgICAgICAgICAgLSBwY2kxOTU3LGVlMDFcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbDoyNzogICAgICAgICAgLSBjb25zdDogZnNsLGVuZXRjLW1kaW9cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbC0yOC0gICAgICAtIGl0ZW1zOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbD00ND1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1tZGlvLnlhbWwtNTAtICAgICAgICBtZGlvQDAsMyB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1tZGlvLnlhbWw6NTE6ICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O3BjaTE5NTcsZWUwMVwmIzM0OywgXCYjMzQ7ZnNsLGVuZXRjLW1kaW9cJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1tZGlvLnlhbWwtNTItICAgICAgICAgICAgcmVnID0gXHUwMDNjMHgwMDAzMDAgMCAwIDAgMFx1MDAzZTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sLTMtLS0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sOjQ6JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZnNsLGVuZXRjLnlhbWwjXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbD0yMT1wcm9wZXJ0aWVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLnlhbWwtMjYtICAgICAgICAgICAgICAtIHBjaTE5NTcsZTEwMFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbDoyNzogICAgICAgICAgLSBjb25zdDogZnNsLGVuZXRjXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sLTI4LSAgICAgIC0gZW51bTpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sPTY5PWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLnlhbWwtNzUtICAgICAgICBldGhlcm5ldEAwLDAge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbDo3NjogICAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7cGNpMTk1NyxlMTAwXCYjMzQ7LCBcJiMzNDtmc2wsZW5ldGNcJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sLTc3LSAgICAgICAgICAgIHJlZyA9IFx1MDAzYzB4MDAwMDAwIDAgMCAwIDBcdTAwM2U7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9mc2wscHRwLnlhbWw9MTI9cHJvcGVydGllczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL2ZzbCxwdHAueWFtbC0yMC0gICAgICAgICAgLSBjb25zdDogcGNpMTk1NyxlZTAyXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL2ZzbCxwdHAueWFtbDoyMTogICAgICAgICAgLSBjb25zdDogZnNsLGVuZXRjLXB0cFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9mc2wscHRwLnlhbWwtMjItXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9mc2wscHRwLnlhbWw9MTI5PWFsbE9mOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvZnNsLHB0cC55YW1sLTEzMy0gICAgICAgICAgY29udGFpbnM6XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL2ZzbCxwdHAueWFtbDoxMzQ6ICAgICAgICAgICAgY29uc3Q6IGZzbCxlbmV0Yy1wdHBcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvZnNsLHB0cC55YW1sLTEzNS0gICAgdGhlbjpcbi0tXG5NQUlOVEFJTkVSUz0xMDMyNT1TOlx0TWFpbnRhaW5lZFxuTUFJTlRBSU5FUlM6MTAzMjY6RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjKi55YW1sXG5NQUlOVEFJTkVSUy0xMDMyNy1GOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsbmV0Yy1ibGstY3RybC55YW1sXG5NQUlOVEFJTkVSUzoxMDMyODpGOlx0ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL1xuTUFJTlRBSU5FUlM6MTAzMjk6RjpcdGluY2x1ZGUvbGludXgvZnNsL2VuZXRjX21kaW8uaFxuTUFJTlRBSU5FUlMtMTAzMzAtRjpcdGluY2x1ZGUvbGludXgvZnNsL25ldGNfZ2xvYmFsLmhcbi0tXG5NQUlOVEFJTkVSUz0xMDQzNj1GOlx0ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwcnRjKlxuTUFJTlRBSU5FUlM6MTA0Mzc6RjpcdGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wdHAuY1xuTUFJTlRBSU5FUlMtMTA0MzgtRjpcdGRyaXZlcnMvcHRwL3B0cF9xb3JpcS5jXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2k9MjE1PVx0XHRcdGV0aGNsazogZXRoY2xrIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaS0yMjctXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaToyMjg6XHRcdFx0bWVuZXRjbGs6IG1lbmV0Y2xrIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpLTIyOS1cdFx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDthcG0seGdlbmUtZGV2aWNlLWNsb2NrXCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpLTIzMy1cdFx0XHRcdHJlZy1uYW1lcyA9IFwmIzM0O2Nzci1yZWdcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaToyMzQ6XHRcdFx0XHRjbG9jay1vdXRwdXQtbmFtZXMgPSBcJiMzNDttZW5ldGNsa1wmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpLTIzNS1cdFx0XHR9O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpPTk3MT1cdFx0bWRpbzogbWRpb0AxNzAyMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2ktOTc1LVx0XHRcdHJlZyA9IFx1MDAzYzB4MCAweDE3MDIwMDAwIDB4MCAweGQxMDBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaTo5NzY6XHRcdFx0Y2xvY2tzID0gXHUwMDNjXHUwMDI2bWVuZXRjbGsgMFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpLTk3Ny1cdFx0fTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaT05Nzk9XHRcdG1lbmV0OiBldGhlcm5ldEAxNzAyMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2ktOTg3LVx0XHRcdGRtYS1jb2hlcmVudDtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpOjk4ODpcdFx0XHRjbG9ja3MgPSBcdTAwM2NcdTAwMjZtZW5ldGNsayAwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2ktOTg5LVx0XHRcdC8qIG1hYyBhZGRyZXNzIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIGJvb3Rsb2FkZXIgKi9cbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLWtib3gtYS0yMzAtbHMuZHRzPTMwPVx0XHRwb3dlci1sZWQge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtMzgtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLWtib3gtYS0yMzAtbHMuZHRzOjM5Olx1MDAyNmVuZXRjX21kaW9fcGYzIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtNDAtXHQvKiBCQ001NDE0MCBRU0dNSUkgcXVhZCBQSFkgKi9cbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLWtib3gtYS0yMzAtbHMuZHRzPTUzPVx0cXNnbWlpX3BoeTM6IGV0aGVybmV0LXBoeUAxMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1rYm94LWEtMjMwLWxzLmR0cy01Ny1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHM6NTg6XHUwMDI2ZW5ldGNfcG9ydDIge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1rYm94LWEtMjMwLWxzLmR0cy01OS1cdG52bWVtLWNlbGxzID0gXHUwMDNjXHUwMDI2YmFzZV9tYWNfYWRkcmVzcyAyXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtNjMtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLWtib3gtYS0yMzAtbHMuZHRzOjY0Olx1MDAyNmVuZXRjX3BvcnQzIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtNjUtXHRudm1lbS1jZWxscyA9IFx1MDAzY1x1MDAyNmJhc2VfbWFjX2FkZHJlc3MgM1x1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHM9MTk9LyB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzLTIzLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzOjI0Olx1MDAyNmVuZXRjX21kaW9fcGYzIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIxLmR0cy0yNS1cdC8qIERlbGV0ZSB1bnVzZWQgcGh5IG5vZGUgKi9cbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHM9NDM9XHRcdHZkZGg6IHZkZGgtcmVndWxhdG9yIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHMtNDgtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHM6NDk6XHUwMDI2ZW5ldGNfcG9ydDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzLTUwLVx0c3RhdHVzID0gXCYjMzQ7ZGlzYWJsZWRcJiMzNDs7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzLTU0LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzOjU1Olx1MDAyNmVuZXRjX3BvcnQxIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIxLmR0cy01Ni1cdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZwaHkwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0cz0xNT0vIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMi5kdHMtMTktXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMi5kdHM6MjA6XHUwMDI2ZW5ldGNfbWRpb19wZjMge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzLTIxLVx0cGh5MTogZXRoZXJuZXQtcGh5QDQge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0cy0yNy1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0czoyODpcdTAwMjZlbmV0Y19wb3J0MCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMi5kdHMtMjktXHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMi5kdHMtMzctXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMi5kdHM6Mzg6XHUwMDI2ZW5ldGNfcG9ydDIge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzLTM5LVx0bnZtZW0tY2VsbHMgPSBcdTAwM2NcdTAwMjZiYXNlX21hY19hZGRyZXNzIDJcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzLTQzLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzOjQ0Olx1MDAyNmVuZXRjX3BvcnQzIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0cy00NS1cdG52bWVtLWNlbGxzID0gXHUwMDNjXHUwMDI2YmFzZV9tYWNfYWRkcmVzcyAzXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXI0LmR0cz0xNj0vIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyNC5kdHMtMjAtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyNC5kdHM6MjE6XHUwMDI2ZW5ldGNfbWRpb19wZjMge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjQuZHRzLTIyLVx0cGh5MTogZXRoZXJuZXQtcGh5QDQge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXI0LmR0cz0zNz1cdFx0dmRkaDogdmRkaC1yZWd1bGF0b3Ige1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXI0LmR0cy00Mi1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXI0LmR0czo0MzpcdTAwMjZlbmV0Y19wb3J0MSB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyNC5kdHMtNDQtXHRwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2cGh5MVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjguZHRzPTc5PVx1MDAyNmR1YXJ0MSB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LmR0cy04Mi1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC5kdHM6ODM6XHUwMDI2ZW5ldGNfbWRpb19wZjMge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LmR0cy04NC1cdHBoeTA6IGV0aGVybmV0LXBoeUA1IHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjguZHRzLTkwLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LmR0czo5MTpcdTAwMjZlbmV0Y19wb3J0MCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjguZHRzLTkyLVx0cGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnBoeTBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTEzYmIuZHRzbz0xOT1cdHNsb3QxX3NnbWlpOiBldGhlcm5ldC1waHlAMiB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTEzYmIuZHRzby0yNS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy0xM2JiLmR0c286MjY6XHUwMDI2ZW5ldGNfcG9ydDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTEzYmIuZHRzby0yNy1cdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzbG90MV9zZ21paVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtNjViYi5kdHNvPTE4PVx0c2xvdDFfc2dtaWk6IGV0aGVybmV0LXBoeUAyIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtNjViYi5kdHNvLTI0LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTY1YmIuZHRzbzoyNTpcdTAwMjZlbmV0Y19wb3J0MCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtNjViYi5kdHNvLTI2LVx0cGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnNsb3QxX3NnbWlpXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy04NWJiLmR0c289MTg9XHRzbG90MV9zZ21paTogZXRoZXJuZXQtcGh5QDFjIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtODViYi5kdHNvLTIzLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTg1YmIuZHRzbzoyNDpcdTAwMjZlbmV0Y19wb3J0MCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtODViYi5kdHNvLTI1LVx0cGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnNsb3QxX3NnbWlpXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy04OTliLmR0c289MzE9XHRzbG90MV9zZ21paTM6IGV0aGVybmV0LXBoeUAxZiB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTg5OWIuZHRzby0zNS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy04OTliLmR0c286MzY6XHUwMDI2ZW5ldGNfcG9ydDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTg5OWIuZHRzby0zNy1cdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzbG90MV9zZ21paTBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLmR0cz05Mj1cdG1kaW8tbXV4IHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzLTk0LVx0XHRtdXgtY29udHJvbHMgPSBcdTAwM2NcdTAwMjZtdXggMFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHM6OTU6XHRcdG1kaW8tcGFyZW50LWJ1cyA9IFx1MDAzY1x1MDAyNmVuZXRjX21kaW9fcGYzXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLmR0cy05Ni1cdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHM9MjM0PVx1MDAyNmR1YXJ0MSB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLmR0cy0yMzctXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzOjIzODpcdTAwMjZlbmV0Y19wb3J0MSB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzLTIzOS1cdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZxZHNfcGh5MVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzLTI0My1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHM6MjQ0Olx1MDAyNmVuZXRjX3BvcnQyIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHMtMjQ1LVx0c3RhdHVzID0gXCYjMzQ7b2theVwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzPTM3MT1cdTAwMjZtc2NjX2ZlbGl4X3BvcnQ0IHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHM6MzcyOlx0ZXRoZXJuZXQgPSBcdTAwM2NcdTAwMjZlbmV0Y19wb3J0Mlx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHMtMzczLVx0c3RhdHVzID0gXCYjMzQ7b2theVwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzPTE4PVx0YWxpYXNlcyB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0yNS1cdFx0c3BpMCA9IFx1MDAyNmZzcGk7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjI2Olx0XHRldGhlcm5ldDAgPSBcdTAwMjZlbmV0Y19wb3J0MDtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHM6Mjc6XHRcdGV0aGVybmV0MSA9IFx1MDAyNmVuZXRjX3BvcnQyO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0yOC1cdFx0ZXRoZXJuZXQyID0gXHUwMDI2bXNjY19mZWxpeF9wb3J0MDtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTMzLVx0XHRldGhlcm5ldDcgPSBcdTAwMjZtc2NjX2ZlbGl4X3BvcnQ1O1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0czozNDpcdFx0ZXRoZXJuZXQ4ID0gXHUwMDI2ZW5ldGNfcG9ydDM7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTM1LVx0fTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzPTExOT1cdTAwMjZkdWFydDEge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHMtMTIyLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0czoxMjM6XHUwMDI2ZW5ldGNfbWRpb19wZjMge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0xMjQtXHRzZ21paV9waHkwOiBldGhlcm5ldC1waHlAMiB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cz0xNDE9XHRxc2dtaWlfcGh5MzogZXRoZXJuZXQtcGh5QDEzIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTE0NS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHM6MTQ2Olx1MDAyNmVuZXRjX3BvcnQwIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHMtMTQ3LVx0cGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnNnbWlpX3BoeTBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0xNTItXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjE1MzpcdTAwMjZlbmV0Y19wb3J0MiB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTE1NC1cdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0xNTYtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjE1NzpcdTAwMjZlbmV0Y19wb3J0MyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTE1OC1cdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaT0xNDE9XHRcdHFzZ21paS1yc3RuLWhvZyB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaS0xNDktXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpOjE1MDpcdTAwMjZlbmV0Y19tZGlvX3BmMyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpLTE1MS1cdG1kaW8wX3JnbWlpX3BoeTAwOiBldGhlcm5ldC1waHlAMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaT0xOTM9XHRxc2dtaWlfcGh5NDogZXRoZXJuZXQtcGh5QDFmIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpLTE5Ny1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2k6MTk4Olx1MDAyNmVuZXRjX3BvcnQwIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2ktMTk5LVx0cGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNm1kaW8wX3NnbWlpX3BoeTAzXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2ktMjA0LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaToyMDU6XHUwMDI2ZW5ldGNfcG9ydDEge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaS0yMDYtXHRwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2bWRpbzBfcmdtaWlfcGh5MDBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaS0yMTAtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpOjIxMTpcdTAwMjZlbmV0Y19wb3J0MiB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpLTIxMi1cdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaT0yNDQ9XHUwMDI2bXNjY19mZWxpeF9wb3J0NCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpOjI0NTpcdGV0aGVybmV0ID0gXHUwMDNjXHUwMDI2ZW5ldGNfcG9ydDJcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpLTI0Ni1cdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaT0xMDc0PVx0XHRwY2llQDFmMDAwMDAwMCB7IC8qIEludGVncmF0ZWQgRW5kcG9pbnQgUm9vdCBDb21wbGV4ICovXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTAzLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTA0Olx0XHRcdGVuZXRjX3BvcnQwOiBldGhlcm5ldEAwLDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTA1Olx0XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3BjaTE5NTcsZTEwMFwmIzM0OywgXCYjMzQ7ZnNsLGVuZXRjXCYjMzQ7O1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTA2LVx0XHRcdFx0cmVnID0gXHUwMDNjMHgwMDAwMDAgMCAwIDAgMFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTExMDktXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpOjExMTA6XHRcdFx0ZW5ldGNfcG9ydDE6IGV0aGVybmV0QDAsMSB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpOjExMTE6XHRcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7cGNpMTk1NyxlMTAwXCYjMzQ7LCBcJiMzNDtmc2wsZW5ldGNcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTExMTItXHRcdFx0XHRyZWcgPSBcdTAwM2MweDAwMDEwMCAwIDAgMCAwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTExNS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTExNjpcdFx0XHRlbmV0Y19wb3J0MjogZXRoZXJuZXRAMCwyIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTExNzpcdFx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtwY2kxOTU3LGUxMDBcJiMzNDssIFwmIzM0O2ZzbCxlbmV0Y1wmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTExOC1cdFx0XHRcdHJlZyA9IFx1MDAzYzB4MDAwMjAwIDAgMCAwIDBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaT0xMTIyPVx0XHRcdFx0Zml4ZWQtbGluayB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTI4LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTI5Olx0XHRcdGVuZXRjX21kaW9fcGYzOiBtZGlvQDAsMyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpOjExMzA6XHRcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7cGNpMTk1NyxlZTAxXCYjMzQ7LCBcJiMzNDtmc2wsZW5ldGMtbWRpb1wmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTEzMS1cdFx0XHRcdHJlZyA9IFx1MDAzYzB4MDAwMzAwIDAgMCAwIDBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaT0xMTM2PVx0XHRcdGV0aGVybmV0QDAsNCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpOjExMzc6XHRcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7cGNpMTk1NyxlZTAyXCYjMzQ7LCBcJiMzNDtmc2wsZW5ldGMtcHRwXCYjMzQ7O1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTM4LVx0XHRcdFx0cmVnID0gXHUwMDNjMHgwMDA0MDAgMCAwIDAgMFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTExNzY9XHRcdFx0XHRcdG1zY2NfZmVsaXhfcG9ydDQ6IHBvcnRANCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTc4LVx0XHRcdFx0XHRcdHBoeS1tb2RlID0gXCYjMzQ7aW50ZXJuYWxcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpOjExNzk6XHRcdFx0XHRcdFx0ZXRoZXJuZXQgPSBcdTAwM2NcdTAwMjZlbmV0Y19wb3J0Mlx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTE4MC1cdFx0XHRcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTExODk9XHRcdFx0XHRcdG1zY2NfZmVsaXhfcG9ydDU6IHBvcnRANSB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTkxLVx0XHRcdFx0XHRcdHBoeS1tb2RlID0gXCYjMzQ7aW50ZXJuYWxcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpOjExOTI6XHRcdFx0XHRcdFx0ZXRoZXJuZXQgPSBcdTAwM2NcdTAwMjZlbmV0Y19wb3J0M1x1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTE5My1cdFx0XHRcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTExOTU9XHRcdFx0XHRcdFx0Zml4ZWQtbGluayB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMjAzLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMjA0Olx0XHRcdGVuZXRjX3BvcnQzOiBldGhlcm5ldEAwLDYge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMjA1Olx0XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3BjaTE5NTcsZTEwMFwmIzM0OywgXCYjMzQ7ZnNsLGVuZXRjXCYjMzQ7O1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMjA2LVx0XHRcdFx0cmVnID0gXHUwMDNjMHgwMDA2MDAgMCAwIDAgMFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTEyMjU9XHRcdGllcmJAMWYwODAwMDAwIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTIyNjpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7ZnNsLGxzMTAyOGEtZW5ldGMtaWVyYlwmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTIyNy1cdFx0XHRyZWcgPSBcdTAwM2MweDAxIDB4ZjA4MDAwMDAgMHgwIDB4MTAwMDBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaT0xNDU3PVx0XHRcdG5ldGNfYnVzMDogcGNpZUA0Y2EwMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNDg1LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaToxNDg2Olx0XHRcdFx0ZW5ldGMzOiBldGhlcm5ldEAwLDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNDg3LVx0XHRcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7cGNpMTEzMSxlMTEwXCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k9MTUxMT1cdFx0XHRuZXRjX2J1czE6IHBjaWVANGNiMDAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2ktMTUzNS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k6MTUzNjpcdFx0XHRcdGVuZXRjMDogZXRoZXJuZXRAMCwwIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2ktMTUzNy1cdFx0XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3BjaTExMzEsZTEwMVwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NC5kdHNpPTE1NDg9XHRcdFx0XHRyY2VjQDEsMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNTUyLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaToxNTUzOlx0XHRcdFx0ZW5ldGMxOiBldGhlcm5ldEA4LDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNTU0LVx0XHRcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7cGNpMTEzMSxlMTAxXCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2ktMTU1OC1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k6MTU1OTpcdFx0XHRcdGVuZXRjMjogZXRoZXJuZXRAMTAsMCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NC5kdHNpLTE1NjAtXHRcdFx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtwY2kxMTMxLGUxMDFcJiMzNDs7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHM9MjI9XHRhbGlhc2VzIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzOjIzOlx0XHRldGhlcm5ldDAgPSBcdTAwMjZlbmV0YzM7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0czoyNDpcdFx0ZXRoZXJuZXQxID0gXHUwMDI2ZW5ldGMxO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHM6MjU6XHRcdGV0aGVybmV0MiA9IFx1MDAyNmVuZXRjMjtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzLTI2LVx0XHRpMmMyID0gXHUwMDI2bHBpMmMzO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzPTIwNz1cdG1lbW9yeUA4MDAwMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHMtMjEyLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHM6MjEzOlx1MDAyNmVuZXRjMSB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0cy0yMTQtXHRjbG9ja3MgPSBcdTAwM2NcdTAwMjZzY21pX2NsayBJTVg5NF9DTEtfTUFDNFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0cy0yMjItXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0czoyMjM6XHUwMDI2ZW5ldGMyIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzLTIyNC1cdGNsb2NrcyA9IFx1MDAzY1x1MDAyNnNjbWlfY2xrIElNWDk0X0NMS19NQUM1XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzLTIzMi1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzOjIzMzpcdTAwMjZlbmV0YzMge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHMtMjM0LVx0c3RhdHVzID0gXCYjMzQ7b2theVwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzPTIxPVx0YWxpYXNlcyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzOjIyOlx0XHRldGhlcm5ldDAgPSBcdTAwMjZlbmV0Y19wb3J0MDtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHMtMjMtXHRcdGdwaW8wID0gXHUwMDI2Z3BpbzE7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtYWIyLmR0cz0xNTk9XHRtZW1vcnlAODAwMDAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHMtMTY0LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtYWIyLmR0czoxNjU6XHUwMDI2ZW5ldGNfcG9ydDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtYWIyLmR0cy0xNjYtXHRwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2ZXRocGh5MFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHMtMTY3LVx0cGh5LW1vZGUgPSBcJiMzNDtyZ21paS1pZFwmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHM6MTY4Olx0cGluY3RybC0wID0gXHUwMDNjXHUwMDI2cGluY3RybF9lbmV0YzBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzLTE2OS1cdHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHM9Mzc2PVx0XHRcdElNWDk1X1BBRF9FTkVUMV9NRElPX19ORVRDTUlYX1RPUF9ORVRDX01ESU9cdFx0MHg5MGVcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzLTM3OS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHM6MzgwOlx0cGluY3RybF9lbmV0YzA6IGVuZXRjMGdycCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzLTM4MS1cdFx0ZnNsLHBpbnMgPSBcdTAwM2Ncbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzPTI4PVx0YWxpYXNlcyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzOjI5Olx0XHRldGhlcm5ldDAgPSBcdTAwMjZlbmV0Y19wb3J0MDtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM6MzA6XHRcdGV0aGVybmV0MSA9IFx1MDAyNmVuZXRjX3BvcnQxO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy0zMS1cdFx0Z3BpbzAgPSBcdTAwMjZncGlvMTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzPTI5NT1cdTAwMjZhZGMxIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTI5OS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM6MzAwOlx1MDAyNmVuZXRjX3BvcnQwIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtMzAxLVx0cGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNmV0aHBoeTBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTMwMi1cdHBoeS1tb2RlID0gXCYjMzQ7cmdtaWktaWRcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzOjMwMzpcdHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNnBpbmN0cmxfZW5ldGMwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy0zMDQtXHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTMwNy1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM6MzA4Olx1MDAyNmVuZXRjX3BvcnQxIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtMzA5LVx0cGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNmV0aHBoeTFcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTMxMC1cdHBoeS1tb2RlID0gXCYjMzQ7cmdtaWktaWRcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzOjMxMTpcdHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNnBpbmN0cmxfZW5ldGMxXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy0zMTItXHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzPTYwOT1cdFx0XHRJTVg5NV9QQURfRU5FVDJfTURJT19fTkVUQ01JWF9UT1BfTkVUQ19NRElPXHRcdDB4OTBlXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy02MTItXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzOjYxMzpcdHBpbmN0cmxfZW5ldGMwOiBlbmV0YzBncnAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy02MTQtXHRcdGZzbCxwaW5zID0gXHUwMDNjXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cz02MjY9XHRcdFx0SU1YOTVfUEFEX0VORVQxX1JEM19fTkVUQ01JWF9UT1BfRVRIMF9SR01JSV9SRDNcdFx0MHg1N2Vcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTYyOS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM6NjMwOlx0cGluY3RybF9lbmV0YzE6IGVuZXRjMWdycCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTYzMS1cdFx0ZnNsLHBpbnMgPSBcdTAwM2Ncbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cz0yND1cdGFsaWFzZXMge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM6MjU6XHRcdGV0aGVybmV0MCA9IFx1MDAyNmVuZXRjX3BvcnQwO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM6MjY6XHRcdGV0aGVybmV0MSA9IFx1MDAyNmVuZXRjX3BvcnQxO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHMtMjctXHRcdGdwaW8wID0gXHUwMDI2Z3BpbzE7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM9MjYzPVx1MDAyNmFkYzEge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI2Ny1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzOjI2ODpcdTAwMjZlbmV0Y19wb3J0MCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy0yNjktXHRwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2ZXRocGh5MFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI3MC1cdHBoeS1tb2RlID0gXCYjMzQ7cmdtaWktaWRcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0czoyNzE6XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZwaW5jdHJsX2VuZXRjMFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI3Mi1cdHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI3NS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzOjI3NjpcdTAwMjZlbmV0Y19wb3J0MSB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy0yNzctXHRwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2ZXRocGh5MVx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI3OC1cdHBoeS1tb2RlID0gXCYjMzQ7cmdtaWktaWRcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0czoyNzk6XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZwaW5jdHJsX2VuZXRjMVx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI4MC1cdHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzPTYwNz1cdFx0XHRJTVg5NV9QQURfRU5FVDJfTURJT19fTkVUQ01JWF9UT1BfTkVUQ19NRElPXHRcdDB4OTBlXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHMtNjEwLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM6NjExOlx0cGluY3RybF9lbmV0YzA6IGVuZXRjMGdycCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy02MTItXHRcdGZzbCxwaW5zID0gXHUwMDNjXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM9NjI0PVx0XHRcdElNWDk1X1BBRF9FTkVUMV9SRDNfX05FVENNSVhfVE9QX0VUSDBfUkdNSUlfUkQzXHRcdDB4NTdlXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHMtNjI3LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM6NjI4Olx0cGluY3RybF9lbmV0YzE6IGVuZXRjMWdycCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy02MjktXHRcdGZzbCxwaW5zID0gXHUwMDNjXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0cz0yNT1cdGFsaWFzZXMge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0czoyNjpcdFx0ZXRoZXJuZXQwID0gXHUwMDI2ZW5ldGNfcG9ydDA7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xOXgxOS1ldmsuZHRzLTI3LVx0XHRncGlvMCA9IFx1MDAyNmdwaW8xO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE5eDE5LWV2ay5kdHM9MjM4PVx1MDAyNmFkYzEge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE5eDE5LWV2ay5kdHMtMjQyLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0czoyNDM6XHUwMDI2ZW5ldGNfcG9ydDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0cy0yNDQtXHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE5eDE5LWV2ay5kdHM6MjQ1Olx0cGluY3RybC0wID0gXHUwMDNjXHUwMDI2cGluY3RybF9lbmV0YzBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xOXgxOS1ldmsuZHRzLTI0Ni1cdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZldGhwaHkwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE5eDE5LWV2ay5kdHM9NzEyPVx0XHRcdElNWDk1X1BBRF9FTkVUMV9NRElPX19ORVRDTUlYX1RPUF9ORVRDX01ESU9cdFx0MHg5MGVcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTc3MgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDM2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBFTkVUQyBEcml2ZXImIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgRU5FVEMgZHJpdmVyIOKAkyBpdCYjMzk7cyBOWFAmIzM5O3MgRXRoZXJuZXQgTmV0d29yayBDb250cm9sbGVyLCBmb3VuZCBvbiBzb21lIG9mIHRoZWlyIFN5c3RlbSBvbiBDaGlwcywgbGlrZSB0aGUgTFMxMDI4QSBhbmQgaS5NWDk1LiBUaGUgdGhpbmcgaXMsIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIGEgUENJZSBkZXZpY2UsIGl0JiMzOTtzIGludGVncmF0ZWQgaW50byB0aGUgU29DLCB3aGljaCBtZWFucyBteSB0eXBpY2FsIFFFTVUgYXBwcm9hY2ggbWlnaHQgbm90IHdvcmsuIEZpcnN0IHRob3VnaHQ6IGlzIHRoaXMgZXZlbiByZWFjaGFibGUgaW4gUUVNVT8gQW5kIHRoZSBhbnN3ZXIsIGFzIEkgZXhwZWN0ZWQsIGlzIG5vLiBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgRU5FVEMgZGlyZWN0bHkuCgpTbywgdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBmdXp6YWJpbGl0eS4gQXJlIHRoZXJlIEVORVRDIGZ1enplcnMgb3V0IHRoZXJlLCBvciBpcyB0aGlzIGVzc2VudGlhbGx5IGEgaGFyZHdhcmUgZHJpdmVyIHRoYXQmIzM5O3MgdXN1YWxseSBvbmx5IHRhcmdldGVkIHdpdGggc3BlY2lmaWMgZW11bGF0b3JzPyBJbiBteSBleHBlcmllbmNlLCB0aGVzZSBkcml2ZXJzIGFyZSByYXJlbHkgZnV6emVkICp1bmxlc3MqIHRoZXkmIzM5O3JlIGV4cGxpY2l0bHkgZW11bGF0ZWQsIG9yIHRoZXJl4oCZcyBhIGJlc3Bva2UgZnV6emVyLgoKQnV0IHRoZW4sIEkgbmVlZCB0byBjb25zaWRlciB0aGUgY29uc3RyYWludHMgaW4gdGhlIGluc3RydWN0aW9uczogdGhleSBzYWlkLCAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnPigKYmIzM0OyBhbmQgSSByZW1lbWJlciB0aGUga2V5IHBvaW50IGlzIGFib3V0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXMgRU5FVEMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBRRU1VPyBXZWxsLCB5ZWFoLCB1bmxlc3MgUUVNVSBlbXVsYXRlcyBpdCwgd2hpY2ggaXQgZG9lc24mIzM5O3QuIENhbiBJIGNvbmZpcm0/IEkgY2FuJiMzOTt0IGVhc2lseSBzZWFyY2ggUUVNVSBjb2RlIGhlcmUgZm9yICYjMzQ7ZW5ldGMmIzM0OyB0byBiZSBjZXJ0YWluLgoKSG93ZXZlciwgSSYjMzk7bSBub3cgdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyLiBEb2VzIHN5emthbGxlciBoYXZlIHN1cHBvcnQgZm9yIEVORVRDPyBUaGF0JiMzOTtzIGEgcmVhc29uYWJsZSBwbGFjZSB0byBjaGVjaywgYW5kIGl0IG1pZ2h0IGJlIG15IGJlc3QgYmV0IGZvciBhIHF1aWNrIGFuc3dlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VuZXRjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA1MTcKCQkJCQkJCW91dHB1dDogODMKCQkJCQkJCXRob3VnaHRzOiA4MjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIEVORVRDIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJIHNlZSB0aGUgZ3JlcHBlciB3YXMgbG9va2luZyBmb3IgYGVuZXRjYCB1bmRlciBgbmV0L2AsIGJ1dCB0aGUgcmVsZXZhbnQgY29kZSBpcyBhY3R1YWxseSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2AuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIHRoaXMgY29kZSBpcyBldmVuICpyZWFjaGFibGUqIGZvciBmdXp6aW5nLiBIYXJkd2FyZSBkcml2ZXJzLCBlc3BlY2lhbGx5IHRob3NlIGxpa2UgdGhpcywgYXJlIHR5cGljYWxseSBwcm9ibGVtYXRpYyBpbiBzdGFuZGFyZCBRRU1VIHNldHVwcywgdW5sZXNzIHRoZXJlJiMzOTtzIGFuIGVtdWxhdGVkIFBDSSBkZXZpY2Ugb3Igc2ltaWxhci4KCkxldCBtZSB0aGluay4uLiBpcyBFTkVUQyBlbXVsYXRlZD8gTXkga25vd2xlZGdlIG9mIFFFTVUmIzM5O3Mgc3VwcG9ydGVkIGRldmljZXMgaXMgcHJldHR5IGdvb2QuIEkga25vdyBpdCBoYW5kbGVzIHRoZSBlMTAwMCBmYW1pbHksIFJUTDgxMzksIFZpcnRJTywgVk1YTkVUMywgYW5kIGEgZmV3IG90aGVycy4gSSBuZWVkIHRvIGNoZWNrIHRoZSBQQ0kgSURzIOKAkyBGcmVlc2NhbGUgdXN1YWxseSB1c2VzIDB4MTk1Ny4gWWVzLCBhbmQgdGhlIGRldmljZSBJRHMgaW5jbHVkZSAweGUxMDAsIDB4ZWUwMSwgYW5kIHNvIG9uLiBCdXQgSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhbiBFTkVUQy1zcGVjaWZpYyBlbXVsYXRpb24uIEl0IGlzbiYjMzk7dCBhbW9uZyB0aGUgc3RhbmRhcmQgZW11bGF0ZWQgZGV2aWNlcy4KClRoZSB0ZXh0IGFsc28gbWVudGlvbnMgZW52aXJvbm1lbnRzIGxpa2UgR0NFLiBCYXNlZCBvbiBteSBleHBlcmllbmNlLCBFTkVUQywgYmVpbmcgYSBoYXJkd2FyZS1zcGVjaWZpYyBibG9jaywgaXMgdW5saWtlbHkgdG8gYmUgcmVhY2hhYmxlIGluIEdDRSBlaXRoZXIsIG9yIGluIGEgc3RhbmRhcmQgeDg2IFFFTVUgc2V0dXAuCgpBbHJpZ2h0LCB3aGF0IGFib3V0IGEgcGxhdGZvcm0gZGV2aWNlPyBJcyB0aGVyZSBzb21ldGhpbmcgdGhhdCAqaXNuJiMzOTt0KiBhIFBDSSBkZXZpY2UsIGJ1dCBzdGlsbCBoYXJkd2FyZSBkZXBlbmRlbnQ/IE5vLCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRoYXQgY29kZSB1bnJlYWNoYWJsZSBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uIChsaWtlIGB1c2IgZ2FkZ2V0YCBvciBgbWFjODAyMTFfaHdzaW1gKSBzaG91bGQgYmUgbWFya2VkIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgRU5FVEMgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIGFuIE5YUCBTb0MsIHN1Y2ggYXMgdGhlIExTMTAyOEEgb3IgaS5NWDk1LiBJdCYjMzk7cyBhIHJlYWwgaGFyZHdhcmUgYmxvY2s7IHRoZXJlJiMzOTtzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBsaWtlIHRoZXJlIGlzIGZvciBgbWFjODAyMTFfaHdzaW1gLgoKTGV0JiMzOTtzIGNvbmZpcm0gdGhhdC4gSSBkb24mIzM5O3QgcmVjYWxsIGV2ZXIgc2VlaW5nIGEgYG5ldGRldnNpbWAgb3Igc2ltaWxhciBtb2NrIGZvciBFTkVUQy4gTm8sIGl0JiMzOTtzIGEgcmVhbCBoYXJkd2FyZSBkcml2ZXIuCgpMZXQmIzM5O3MgcmV2aWV3IHRoZSBwcm9tcHQgYWdhaW46ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiAtIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7CgpHaXZlbiB0aGF0IGl0IG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZXRoZXJuZXQgZHJpdmVyIOKAkyBhbmQgaXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZGVzaWduZWQgZm9yIE5YUCBTb0NzIOKAkyBpdCYjMzk7cyBjbGVhcmx5ICpub3QqIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIE5vIHg4NiBRRU1VLCBubyBHQ0UgaW5zdGFuY2UgaXMgZ29pbmcgdG8gYmUgYWJsZSB0byBoaXQgdGhpcyBjb2RlLCBhdCBsZWFzdCBub3Qgd2l0aG91dCBzcGVjaWFsaXplZCBoYXJkd2FyZSBzZXR1cHMgb3IgZXh0cmVtZWx5IHNvcGhpc3RpY2F0ZWQgZW11bGF0aW9uLiBJIHNlZSBubyBgbmV0ZGV2c2ltYCBtb2NrLCBub3IgYSBzaW1pbGFyIHNvZnR3YXJlLWVtdWxhdGVkIGRyaXZlci4gVGhlcmVmb3JlLCBmdXp6aW5nIHRoaXMgY29kZSBpcyBlc3NlbnRpYWxseSBpbXBvc3NpYmxlIGluIHRob3NlIGVudmlyb25tZW50cy4KCkxldCBtZSBkb3VibGUtY2hlY2sgZm9yIHNvbWUgZWRnZSBjYXNlLiBBIFBDSSBzdHViIHBlcmhhcHM/IE5vcGUuIFBDSSBkcml2ZXJzIG5lZWQgdGhlIGFjdHVhbCBoYXJkd2FyZSwgb3IgYW4gZW11bGF0b3IsIHRvIGJlIHByb2JlZC4gV2l0aG91dCB0aGF0LCB0aGUgZHJpdmVyJiMzOTtzIGBwcm9iZWAgZnVuY3Rpb24gd2lsbCAqbmV2ZXIqIGJlIGNhbGxlZC4gVGhpcyBtZWFucyB0aGF0IG5vbmUgb2YgdGhlIG1vZGlmaWVkIGNvZGUg4oCTIGBlbmV0YzRfcGZfc2V0X3J4X21vZGVgLCBgZW5ldGNfcGZfc2V0X3J4X21vZGVgLCBgZW5ldGM0X3BmX3NldF9mZWF0dXJlc2AsIGV0Yy4g4oCTIHdpbGwgYmUgZXhlY3V0ZWQuCgpJJiMzOTttIGNvbmZpZGVudC4gVGhlIGFuYWx5c2lzIGlzIHRoYXQgYmVjYXVzZSBpdCBpcyBhbiBFTkVUQyBkcml2ZXIgc3BlY2lmaWMgdG8gTlhQIGhhcmR3YXJlLCBhbmQgbm90IGVtdWxhdGVkLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUsIGFuZCBzbyBJIHNob3VsZCBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgYW0gZ29pbmcgdG8gd3JpdGUgdGhlIGZvbGxvd2luZyByZWFzb25pbmc6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBoYXJkd2FyZS1zcGVjaWZpYyAoTlhQIFNvQ3MpIGFuZCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEVORVRDIGV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgaGFyZHdhcmUtc3BlY2lmaWMgdG8gTlhQIFNvQ3MuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEVORVRDIGV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgaGFyZHdhcmUtc3BlY2lmaWMgdG8gTlhQIFNvQ3MuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDY6NTQuMTU1NjkzMTY5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg2MzkxMzc2NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBoYXJkd2FyZS1zcGVjaWZpYyB0byBOWFAgU29Dcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA2OjU0LjE1NTY5OTYyOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY1NDQxOTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWI1N2U2ODdmMzNlMDc4Mzc5YTg5ZTJiMmZkNWNhM2I0NDcxZTEyM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCA3IDE2OjA2OjUyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmhcXG5pbmRleCAwNGE1ZGQ1ZWE2Yzc0Yy4uODgzOWNmYjQ5YmNmZTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaFxcbkBAIC0xLDUgKzEsNSBAQFxcbiAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjArIE9SIEJTRC0zLUNsYXVzZSkgKi9cXG4tLyogQ29weXJpZ2h0IDIwMTctMjAxOSBOWFAgKi9cXG4rLyogQ29weXJpZ2h0IDIwMTctMjAxOSwgMjAyNS0yMDI2IE5YUCAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RpbWVyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wY2kuaFxcdTAwM2VcXG5AQCAtMzI0LDggKzMyNCw2IEBAIHN0cnVjdCBlbmV0Y19zaSB7XFxuIFxcdGNvbnN0IHN0cnVjdCBlbmV0Y19kcnZkYXRhICpkcnZkYXRhO1xcbiBcXHRjb25zdCBzdHJ1Y3QgZW5ldGNfc2lfb3BzICpvcHM7XFxuIFxcbi1cXHRzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd29ya3F1ZXVlO1xcbi1cXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcnhfbW9kZV90YXNrO1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3Jvb3Q7XFxuIFxcdHN0cnVjdCBlbmV0Y19tc2dfc3diZCBtc2c7IC8qIE9ubHkgdmFsaWQgZm9yIFZTSSAqL1xcbiB9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfZGVidWdmcy5jXFxuaW5kZXggMWIxNTkxZGNlNzNkNGIuLjUwMjkwMzhiZjk5ZmFhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfZGVidWdmcy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9kZWJ1Z2ZzLmNcXG5AQCAtMjgsMTUgKzI4LDE0IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3Nob3dfc2lfbWFjX2hhc2hfZmlsdGVyKHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGkpXFxuIFxcbiBzdGF0aWMgaW50IGVuZXRjX21hY19maWx0ZXJfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuIHtcXG4tXFx0c3RydWN0IGVuZXRjX3NpICpzaSA9IHMtXFx1MDAzZXByaXZhdGU7XFxuLVxcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcXHUwMDI2c2ktXFx1MDAzZWh3O1xcbitcXHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihzLVxcdTAwM2Vwcml2YXRlKTtcXG4rXFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFxcdTAwMjZwZi1cXHUwMDNlc2ktXFx1MDAzZWh3O1xcbitcXHRpbnQgbnVtX3NpID0gcGYtXFx1MDAzZXRvdGFsX3ZmcyArIDE7XFxuIFxcdHN0cnVjdCBtYWZ0X2VudHJ5X2RhdGEgbWFmdDtcXG4tXFx0c3RydWN0IGVuZXRjX3BmICpwZjtcXG4tXFx0aW50IGksIGVyciwgbnVtX3NpO1xcbi1cXHR1MzIgdmFsO1xcbi1cXG4tXFx0cGYgPSBlbmV0Y19zaV9wcml2KHNpKTtcXG4tXFx0bnVtX3NpID0gcGYtXFx1MDAzZWNhcHMubnVtX3ZzaSArIDE7XFxuK1xcdHN0cnVjdCBudG1wX3VzZXIgKnVzZXI7XFxuK1xcdHUzMiB2YWwsIGVudHJ5X2lkO1xcbitcXHRpbnQgZXJyID0gMDtcXG4rXFx0aW50IGk7XFxuIFxcbiBcXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQzRfUFNJUE1NUik7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudW1fc2k7IGkrKykge1xcbkBAIC01MCwzMSArNDksMzggQEAgc3RhdGljIGludCBlbmV0Y19tYWNfZmlsdGVyX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnVtX3NpOyBpKyspXFxuIFxcdFxcdGVuZXRjX3Nob3dfc2lfbWFjX2hhc2hfZmlsdGVyKHMsIGkpO1xcbiBcXG4tXFx0aWYgKCFwZi1cXHUwMDNlbnVtX21mZSlcXG4tXFx0XFx0cmV0dXJuIDA7XFxuK1xcdHVzZXIgPSBcXHUwMDI2cGYtXFx1MDAzZXNpLVxcdTAwM2VudG1wX3VzZXI7XFxuK1xcdHJ0bmxfbG9jaygpO1xcbitcXG4rXFx0aWYgKGJpdG1hcF9lbXB0eSh1c2VyLVxcdTAwM2VtYWZ0X2VpZF9iaXRtYXAsIHVzZXItXFx1MDAzZW1hZnRfbnVtX2VudHJpZXMpKVxcbitcXHRcXHRnb3RvIHVubG9ja19ydG5sO1xcbiBcXG4gXFx0LyogTUFDIGFkZHJlc3MgZmlsdGVyIHRhYmxlICovXFxuIFxcdHNlcV9wdXRzKHMsIFxcXCJNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGVcXFxcblxcXCIpO1xcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGYtXFx1MDAzZW51bV9tZmU7IGkrKykge1xcbitcXHRmb3JfZWFjaF9zZXRfYml0KGVudHJ5X2lkLCB1c2VyLVxcdTAwM2VtYWZ0X2VpZF9iaXRtYXAsXFxuK1xcdFxcdFxcdCB1c2VyLVxcdTAwM2VtYWZ0X251bV9lbnRyaWVzKSB7XFxuIFxcdFxcdG1lbXNldChcXHUwMDI2bWFmdCwgMCwgc2l6ZW9mKG1hZnQpKTtcXG4tXFx0XFx0ZXJyID0gbnRtcF9tYWZ0X3F1ZXJ5X2VudHJ5KFxcdTAwMjZzaS1cXHUwMDNlbnRtcF91c2VyLCBpLCBcXHUwMDI2bWFmdCk7XFxuK1xcdFxcdGVyciA9IG50bXBfbWFmdF9xdWVyeV9lbnRyeSh1c2VyLCBlbnRyeV9pZCwgXFx1MDAyNm1hZnQpO1xcbiBcXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRcXHRnb3RvIHVubG9ja19ydG5sO1xcbiBcXG4tXFx0XFx0c2VxX3ByaW50ZihzLCBcXFwiRW50cnkgJWQsIE1BQzogJXBNLCBTSSBiaXRtYXA6IDB4JTA0eFxcXFxuXFxcIiwgaSxcXG4tXFx0XFx0XFx0ICAgbWFmdC5rZXllLm1hY19hZGRyLCBsZTE2X3RvX2NwdShtYWZ0LmNmZ2Uuc2lfYml0bWFwKSk7XFxuK1xcdFxcdHNlcV9wcmludGYocywgXFxcIkVudHJ5ICVkLCBNQUM6ICVwTSwgU0kgYml0bWFwOiAweCUwNHhcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgIGVudHJ5X2lkLCBtYWZ0LmtleWUubWFjX2FkZHIsXFxuK1xcdFxcdFxcdCAgIGxlMTZfdG9fY3B1KG1hZnQuY2ZnZS5zaV9iaXRtYXApKTtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0dXJuIDA7XFxuK3VubG9ja19ydG5sOlxcbitcXHRydG5sX3VubG9jaygpO1xcbitcXG4rXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBERUZJTkVfU0hPV19BVFRSSUJVVEUoZW5ldGNfbWFjX2ZpbHRlcik7XFxuIFxcbiB2b2lkIGVuZXRjX2NyZWF0ZV9kZWJ1Z2ZzKHN0cnVjdCBlbmV0Y19zaSAqc2kpXFxuIHtcXG4tXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBzaS1cXHUwMDNlbmRldjtcXG4gXFx0c3RydWN0IGRlbnRyeSAqcm9vdDtcXG4gXFxuLVxcdHJvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIobmV0ZGV2X25hbWUobmRldiksIE5VTEwpO1xcbitcXHRyb290ID0gZGVidWdmc19jcmVhdGVfZGlyKHBjaV9uYW1lKHNpLVxcdTAwM2VwZGV2KSwgTlVMTCk7XFxuIFxcdGlmIChJU19FUlIocm9vdCkpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaFxcbmluZGV4IGYxODQzNzU1NmEwZWUyLi4wOTAyNWU3YTJhM2FlZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2h3LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2h3LmhcXG5AQCAtNjksOCArNjksNiBAQFxcbiBcXG4gLyogUG9ydCBTdGF0aW9uIGludGVyZmFjZSBwcm9taXNjdW91cyBNQUMgbW9kZSByZWdpc3RlciAqL1xcbiAjZGVmaW5lIEVORVRDNF9QU0lQTU1SXFx0XFx0XFx0MHgyMDBcXG4tI2RlZmluZSAgUFNJUE1NUl9TSV9NQUNfVVAoYSlcXHRcXHRCSVQoYSkgLyogYSA9IFNJIGluZGV4ICovXFxuLSNkZWZpbmUgIFBTSVBNTVJfU0lfTUFDX01QKGEpXFx0XFx0QklUKChhKSArIDE2KVxcbiBcXG4gLyogUG9ydCBTdGF0aW9uIGludGVyZmFjZSBwcm9taXNjdW91cyBWTEFOIG1vZGUgcmVnaXN0ZXIgKi9cXG4gI2RlZmluZSBFTkVUQzRfUFNJUFZNUlxcdFxcdFxcdDB4MjA0XFxuQEAgLTEzNyw3ICsxMzUsNiBAQFxcbiAjZGVmaW5lIEVORVRDNF9QU0lWSEZSMShhKVxcdFxcdCgoYSkgKiAweDgwICsgMHgyMDY0KVxcbiBcXG4gI2RlZmluZSBFTkVUQzRfUE1DQVBSXFx0XFx0XFx0MHg0MDA0XFxuLSNkZWZpbmUgIFBNQ0FQUl9IRFxcdFxcdFxcdEJJVCg4KVxcbiAjZGVmaW5lICBQTUNBUFJfRlBcXHRcXHRcXHRHRU5NQVNLKDEwLCA5KVxcbiBcXG4gLyogUG9ydCBjYXBhYmlsaXR5IHJlZ2lzdGVyICovXFxuQEAgLTE1MCw3ICsxNDcsNyBAQFxcbiAjZGVmaW5lICBQQ1JfTDJET1NFXFx0XFx0XFx0QklUKDQpXFxuICNkZWZpbmUgIFBDUl9USU1FUl9DU1xcdFxcdFxcdEJJVCg4KVxcbiAjZGVmaW5lICBQQ1JfUFNQRUVEXFx0XFx0XFx0R0VOTUFTSygyOSwgMTYpXFxuLSNkZWZpbmUgIFBDUl9QU1BFRURfVkFMKHNwZWVkKVxcdFxcdCgoKHNwZWVkKSAvIDEwIC0gMSkgXFx1MDAzY1xcdTAwM2MgMTYpXFxuKyNkZWZpbmUgIFBDUl9QU1BFRURfVkFMKHMpXFx0XFx0RklFTERfUFJFUChQQ1JfUFNQRUVELCAoKHMpIC8gMTAgLSAxKSlcXG4gXFxuIC8qIFBvcnQgTUFDIGFkZHJlc3MgcmVnaXN0ZXIgMC8xICovXFxuICNkZWZpbmUgRU5FVEM0X1BNQVIwXFx0XFx0XFx0MHg0MDIwXFxuQEAgLTIwMCw3ICsxOTcsNiBAQFxcbiAjZGVmaW5lICBQTV9DTURfQ0ZHX0NOVF9GUk1fRU5cXHRcXHRCSVQoMTMpXFxuICNkZWZpbmUgIFBNX0NNRF9DRkdfVFhQXFx0XFx0XFx0QklUKDE1KVxcbiAjZGVmaW5lICBQTV9DTURfQ0ZHX1NFTkRfSURMRVxcdFxcdEJJVCgxNilcXG4tI2RlZmluZSAgUE1fQ01EX0NGR19IRF9GQ0VOXFx0XFx0QklUKDE4KVxcbiAjZGVmaW5lICBQTV9DTURfQ0ZHX1NGRFxcdFxcdFxcdEJJVCgyMSlcXG4gI2RlZmluZSAgUE1fQ01EX0NGR19UWF9GTFVTSFxcdFxcdEJJVCgyMilcXG4gI2RlZmluZSAgUE1fQ01EX0NGR19UWF9MT1dQX0VOXFx0XFx0QklUKDIzKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcXG5pbmRleCA0MzdhMTViYmI0N2JhOC4uZmNmYmFiYjI5ZDIyZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXFxuQEAgLTIzLDE4ICsyMywxMSBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfZ2V0X3BvcnRfY2FwcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbiBcXHR1MzIgdmFsO1xcbiBcXG4gXFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X0VDQVBSMSk7XFxuLVxcdHBmLVxcdTAwM2VjYXBzLm51bV92c2kgPSAodmFsIFxcdTAwMjYgRUNBUFIxX05VTV9WU0kpIFxcdTAwM2VcXHUwMDNlIDI0O1xcbiBcXHRwZi1cXHUwMDNlY2Fwcy5udW1fbXNpeCA9ICgodmFsIFxcdTAwMjYgRUNBUFIxX05VTV9NU0lYKSBcXHUwMDNlXFx1MDAzZSAxMikgKyAxO1xcbiBcXG4gXFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X0VDQVBSMik7XFxuIFxcdHBmLVxcdTAwM2VjYXBzLm51bV9yeF9iZHIgPSAodmFsIFxcdTAwMjYgRUNBUFIyX05VTV9SWF9CRFIpIFxcdTAwM2VcXHUwMDNlIDE2O1xcbiBcXHRwZi1cXHUwMDNlY2Fwcy5udW1fdHhfYmRyID0gdmFsIFxcdTAwMjYgRUNBUFIyX05VTV9UWF9CRFI7XFxuLVxcbi1cXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQzRfUE1DQVBSKTtcXG4tXFx0cGYtXFx1MDAzZWNhcHMuaGFsZl9kdXBsZXggPSAodmFsIFxcdTAwMjYgUE1DQVBSX0hEKSA/IDEgOiAwO1xcbi1cXG4tXFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSU1BRkNBUFIpO1xcbi1cXHRwZi1cXHUwMDNlY2Fwcy5tYWNfZmlsdGVyX251bSA9IHZhbCBcXHUwMDI2IFBTSU1BRkNBUFJfTlVNX01BQ19BRlRFO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBlbmV0YzRfZ2V0X3BzaV9od19mZWF0dXJlcyhzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxcbkBAIC03NSwzOCArNjgsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGZfZ2V0X3NpX3ByaW1hcnlfbWFjKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSxcXG4gXFx0cHV0X3VuYWxpZ25lZF9sZTE2KGxvd2VyLCBhZGRyICsgNCk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfc2lfbWFjX3Byb21pc2Moc3RydWN0IGVuZXRjX2h3ICpodywgaW50IHNpLFxcbi1cXHRcXHRcXHRcXHRcXHQgYm9vbCB1Y19wcm9taXNjLCBib29sIG1jX3Byb21pc2MpXFxuLXtcXG4tXFx0dTMyIHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lQTU1SKTtcXG4tXFxuLVxcdGlmICh1Y19wcm9taXNjKVxcbi1cXHRcXHR2YWwgfD0gUFNJUE1NUl9TSV9NQUNfVVAoc2kpO1xcbi1cXHRlbHNlXFxuLVxcdFxcdHZhbCBcXHUwMDI2PSB+UFNJUE1NUl9TSV9NQUNfVVAoc2kpO1xcbi1cXG4tXFx0aWYgKG1jX3Byb21pc2MpXFxuLVxcdFxcdHZhbCB8PSBQU0lQTU1SX1NJX01BQ19NUChzaSk7XFxuLVxcdGVsc2VcXG4tXFx0XFx0dmFsIFxcdTAwMjY9IH5QU0lQTU1SX1NJX01BQ19NUChzaSk7XFxuLVxcbi1cXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJUE1NUiwgdmFsKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksXFxuLVxcdFxcdFxcdFxcdFxcdCAgICB1NjQgaGFzaClcXG4te1xcbi1cXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJVU1IRlIwKHNpKSwgbG93ZXJfMzJfYml0cyhoYXNoKSk7XFxuLVxcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lVTUhGUjEoc2kpLCB1cHBlcl8zMl9iaXRzKGhhc2gpKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksXFxuLVxcdFxcdFxcdFxcdFxcdCAgICB1NjQgaGFzaClcXG4te1xcbi1cXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJTU1IRlIwKHNpKSwgbG93ZXJfMzJfYml0cyhoYXNoKSk7XFxuLVxcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lNTUhGUjEoc2kpLCB1cHBlcl8zMl9iaXRzKGhhc2gpKTtcXG4tfVxcbi1cXG4gc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9sb29wYmFjayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgYm9vbCBlbilcXG4ge1xcbiBcXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuQEAgLTEyNCwzNCArODUsNDcgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9sb29wYmFjayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgYm9vbCBlbilcXG4gXFxuIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMoc3RydWN0IGVuZXRjX3BmICpwZilcXG4ge1xcbi1cXHRpbnQgaTtcXG4rXFx0c3RydWN0IG50bXBfdXNlciAqdXNlciA9IFxcdTAwMjZwZi1cXHUwMDNlc2ktXFx1MDAzZW50bXBfdXNlcjtcXG4rXFx0dTMyIGVudHJ5X2lkO1xcbiBcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHBmLVxcdTAwM2VudW1fbWZlOyBpKyspXFxuLVxcdFxcdG50bXBfbWFmdF9kZWxldGVfZW50cnkoXFx1MDAyNnBmLVxcdTAwM2VzaS1cXHUwMDNlbnRtcF91c2VyLCBpKTtcXG4tXFxuLVxcdHBmLVxcdTAwM2VudW1fbWZlID0gMDtcXG4rXFx0Zm9yX2VhY2hfc2V0X2JpdChlbnRyeV9pZCwgdXNlci1cXHUwMDNlbWFmdF9laWRfYml0bWFwLFxcbitcXHRcXHRcXHQgdXNlci1cXHUwMDNlbWFmdF9udW1fZW50cmllcykge1xcbitcXHRcXHRpZiAoIW50bXBfbWFmdF9kZWxldGVfZW50cnkodXNlciwgZW50cnlfaWQpKVxcbitcXHRcXHRcXHRudG1wX2NsZWFyX2VpZF9iaXRtYXAodXNlci1cXHUwMDNlbWFmdF9laWRfYml0bWFwLCBlbnRyeV9pZCk7XFxuK1xcdH1cXG4gfVxcbiBcXG4gc3RhdGljIGludCBlbmV0YzRfcGZfYWRkX21hZnRfZW50cmllcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLFxcbi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZW5ldGNfbWFjX2FkZHIgKm1hYyxcXG4tXFx0XFx0XFx0XFx0ICAgICAgaW50IG1hY19jbnQpXFxuK1xcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YylcXG4ge1xcbitcXHRzdHJ1Y3QgbnRtcF91c2VyICp1c2VyID0gXFx1MDAyNnBmLVxcdTAwM2VzaS1cXHUwMDNlbnRtcF91c2VyO1xcbitcXHRpbnQgbWFjX2NudCA9IG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpO1xcbiBcXHRzdHJ1Y3QgbWFmdF9lbnRyeV9kYXRhIG1hZnQgPSB7fTtcXG4rXFx0c3RydWN0IG5ldGRldl9od19hZGRyICpoYTtcXG4rXFx0dTMyIGF2YWlsYWJsZV9lbnRyaWVzO1xcbiBcXHR1MTYgc2lfYml0ID0gQklUKDApO1xcbi1cXHRpbnQgaSwgZXJyO1xcbitcXHR1MzIgZW50cnlfaWQ7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRhdmFpbGFibGVfZW50cmllcyA9IHVzZXItXFx1MDAzZW1hZnRfbnVtX2VudHJpZXMgLVxcbitcXHRcXHRcXHQgICAgYml0bWFwX3dlaWdodCh1c2VyLVxcdTAwM2VtYWZ0X2VpZF9iaXRtYXAsXFxuK1xcdFxcdFxcdFxcdFxcdCAgdXNlci1cXHUwMDNlbWFmdF9udW1fZW50cmllcyk7XFxuK1xcbitcXHRpZiAobWFjX2NudCBcXHUwMDNlIGF2YWlsYWJsZV9lbnRyaWVzKVxcbitcXHRcXHRyZXR1cm4gLUVOT1NQQztcXG4gXFxuIFxcdG1hZnQuY2ZnZS5zaV9iaXRtYXAgPSBjcHVfdG9fbGUxNihzaV9iaXQpO1xcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbWFjX2NudDsgaSsrKSB7XFxuLVxcdFxcdGV0aGVyX2FkZHJfY29weShtYWZ0LmtleWUubWFjX2FkZHIsIG1hY1tpXS5hZGRyKTtcXG4tXFx0XFx0ZXJyID0gbnRtcF9tYWZ0X2FkZF9lbnRyeShcXHUwMDI2cGYtXFx1MDAzZXNpLVxcdTAwM2VudG1wX3VzZXIsIGksIFxcdTAwMjZtYWZ0KTtcXG4rXFx0bmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgdWMpIHtcXG4rXFx0XFx0ZW50cnlfaWQgPSBudG1wX2xvb2t1cF9mcmVlX2VpZCh1c2VyLVxcdTAwM2VtYWZ0X2VpZF9iaXRtYXAsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHVzZXItXFx1MDAzZW1hZnRfbnVtX2VudHJpZXMpO1xcbitcXHRcXHRldGhlcl9hZGRyX2NvcHkobWFmdC5rZXllLm1hY19hZGRyLCBoYS1cXHUwMDNlYWRkcik7XFxuK1xcdFxcdGVyciA9IG50bXBfbWFmdF9hZGRfZW50cnkodXNlciwgZW50cnlfaWQsIFxcdTAwMjZtYWZ0KTtcXG4gXFx0XFx0aWYgKHVubGlrZWx5KGVycikpIHtcXG4tXFx0XFx0XFx0cGYtXFx1MDAzZW51bV9tZmUgPSBpO1xcbitcXHRcXHRcXHRudG1wX2NsZWFyX2VpZF9iaXRtYXAodXNlci1cXHUwMDNlbWFmdF9laWRfYml0bWFwLCBlbnRyeV9pZCk7XFxuIFxcdFxcdFxcdGdvdG8gY2xlYXJfbWFmdF9lbnRyaWVzO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuLVxcdHBmLVxcdTAwM2VudW1fbWZlID0gbWFjX2NudDtcXG4tXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gY2xlYXJfbWFmdF9lbnRyaWVzOlxcbkBAIC0xNjAsOTcgKzEzNCw3MCBAQCBzdGF0aWMgaW50IGVuZXRjNF9wZl9hZGRfbWFmdF9lbnRyaWVzKHN0cnVjdCBlbmV0Y19wZiAqcGYsXFxuIFxcdHJldHVybiAgZXJyO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuK3N0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfdWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZixcXG4rXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YylcXG4ge1xcbi1cXHRpbnQgbWF4X251bV9tZmUgPSBwZi1cXHUwMDNlY2Fwcy5tYWNfZmlsdGVyX251bTtcXG4tXFx0c3RydWN0IGVuZXRjX21hY19maWx0ZXIgbWFjX2ZpbHRlciA9IHt9O1xcbi1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHBmLVxcdTAwM2VzaS1cXHUwMDNlbmRldjtcXG4tXFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFxcdTAwMjZwZi1cXHUwMDNlc2ktXFx1MDAzZWh3O1xcbi1cXHRzdHJ1Y3QgZW5ldGNfbWFjX2FkZHIgKm1hY190Ymw7XFxuK1xcdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICptYWNfZmlsdGVyID0gXFx1MDAyNnBmLVxcdTAwM2VtYWNfZmlsdGVyW1VDXTtcXG4gXFx0c3RydWN0IG5ldGRldl9od19hZGRyICpoYTtcXG4tXFx0aW50IGkgPSAwLCBlcnI7XFxuLVxcdGludCBtYWNfY250O1xcbitcXHR1NjQgaGFzaDtcXG4gXFxuLVxcdG5ldGlmX2FkZHJfbG9ja19iaChuZGV2KTtcXG4rXFx0ZW5ldGNfcmVzZXRfbWFjX2FkZHJfZmlsdGVyKG1hY19maWx0ZXIpO1xcbitcXHRuZXRkZXZfaHdfYWRkcl9saXN0X2Zvcl9lYWNoKGhhLCB1YylcXG4rXFx0XFx0ZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihtYWNfZmlsdGVyLCBoYS1cXHUwMDNlYWRkcik7XFxuK1xcbitcXHRiaXRtYXBfdG9fYXJyNjQoXFx1MDAyNmhhc2gsIG1hY19maWx0ZXItXFx1MDAzZW1hY19oYXNoX3RhYmxlLFxcbitcXHRcXHRcXHRFTkVUQ19NQUREUl9IQVNIX1RCTF9TWik7XFxuK1xcdGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihwZi1cXHUwMDNlc2ksIDAsIGhhc2gpO1xcbit9XFxuIFxcbi1cXHRtYWNfY250ID0gbmV0ZGV2X3VjX2NvdW50KG5kZXYpO1xcbi1cXHRpZiAoIW1hY19jbnQpIHtcXG4tXFx0XFx0bmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7XFxuK3N0YXRpYyBpbnQgZW5ldGM0X3BmX3NldF91Y19leGFjdF9maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZixcXG4rXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YylcXG4re1xcbitcXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcGYtXFx1MDAzZXNpO1xcbitcXHRpbnQgZXJyO1xcbitcXG4rXFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfZW1wdHkodWMpKSB7XFxuIFxcdFxcdC8qIGNsZWFyIGJvdGggTUFDIGhhc2ggYW5kIGV4YWN0IGZpbHRlcnMgKi9cXG4tXFx0XFx0ZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihodywgMCwgMCk7XFxuK1xcdFxcdGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7XFxuIFxcdFxcdGVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpO1xcbiBcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChtYWNfY250IFxcdTAwM2UgbWF4X251bV9tZmUpIHtcXG4tXFx0XFx0ZXJyID0gLUVOT1NQQztcXG4tXFx0XFx0Z290byB1bmxvY2tfbmV0aWZfYWRkcjtcXG4tXFx0fVxcbi1cXG4tXFx0bWFjX3RibCA9IGt6YWxsb2Nfb2JqcygqbWFjX3RibCwgbWFjX2NudCwgR0ZQX0FUT01JQyk7XFxuLVxcdGlmICghbWFjX3RibCkge1xcbi1cXHRcXHRlcnIgPSAtRU5PTUVNO1xcbi1cXHRcXHRnb3RvIHVubG9ja19uZXRpZl9hZGRyO1xcbi1cXHR9XFxuLVxcbi1cXHRuZXRkZXZfZm9yX2VhY2hfdWNfYWRkcihoYSwgbmRldikge1xcbi1cXHRcXHRlbmV0Y19hZGRfbWFjX2FkZHJfaHRfZmlsdGVyKFxcdTAwMjZtYWNfZmlsdGVyLCBoYS1cXHUwMDNlYWRkcik7XFxuLVxcdFxcdGV0aGVyX2FkZHJfY29weShtYWNfdGJsW2krK10uYWRkciwgaGEtXFx1MDAzZWFkZHIpO1xcbi1cXHR9XFxuLVxcbi1cXHRuZXRpZl9hZGRyX3VubG9ja19iaChuZGV2KTtcXG4tXFxuLVxcdC8qIFNldCB0ZW1wb3JhcnkgdW5pY2FzdCBoYXNoIGZpbHRlcnMgaW4gY2FzZSBvZiBSeCBsb3NzIHdoZW5cXG4rXFx0LyogU2V0IHRlbXBvcmFyeSB1bmljYXN0IGhhc2ggZmlsdGVyIGluIGNhc2Ugb2YgUnggbG9zcyB3aGVuXFxuIFxcdCAqIHVwZGF0aW5nIE1BQyBhZGRyZXNzIGZpbHRlciB0YWJsZVxcbiBcXHQgKi9cXG4tXFx0ZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihodywgMCwgKm1hY19maWx0ZXIubWFjX2hhc2hfdGFibGUpO1xcbitcXHRlbmV0YzRfcGZfc2V0X3VjX2hhc2hfZmlsdGVyKHBmLCB1Yyk7XFxuIFxcdGVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpO1xcbiBcXG4tXFx0aWYgKCFlbmV0YzRfcGZfYWRkX21hZnRfZW50cmllcyhwZiwgbWFjX3RibCwgaSkpXFxuLVxcdFxcdGVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApO1xcbi1cXG4tXFx0a2ZyZWUobWFjX3RibCk7XFxuLVxcbi1cXHRyZXR1cm4gMDtcXG4tXFxuLXVubG9ja19uZXRpZl9hZGRyOlxcbi1cXHRuZXRpZl9hZGRyX3VubG9ja19iaChuZGV2KTtcXG4rXFx0ZXJyID0gZW5ldGM0X3BmX2FkZF9tYWZ0X2VudHJpZXMocGYsIHVjKTtcXG4rXFx0aWYgKCFlcnIpIHtcXG4rXFx0XFx0ZW5ldGNfcmVzZXRfbWFjX2FkZHJfZmlsdGVyKFxcdTAwMjZwZi1cXHUwMDNlbWFjX2ZpbHRlcltVQ10pO1xcbitcXHRcXHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xcbitcXHR9XFxuIFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X21hY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgdHlwZSlcXG4rc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLFxcbitcXHRcXHRcXHRcXHRcXHQgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKm1jKVxcbiB7XFxuLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGYtXFx1MDAzZXNpLVxcdTAwM2VuZGV2O1xcbi1cXHRzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqbWFjX2ZpbHRlcjtcXG4tXFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFxcdTAwMjZwZi1cXHUwMDNlc2ktXFx1MDAzZWh3O1xcbitcXHRzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqbWFjX2ZpbHRlciA9IFxcdTAwMjZwZi1cXHUwMDNlbWFjX2ZpbHRlcltNQ107XFxuIFxcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XFxuK1xcdHU2NCBoYXNoO1xcbiBcXG4tXFx0bmV0aWZfYWRkcl9sb2NrX2JoKG5kZXYpO1xcbi1cXHRpZiAodHlwZSBcXHUwMDI2IEVORVRDX01BQ19GSUxURVJfVFlQRV9VQykge1xcbi1cXHRcXHRtYWNfZmlsdGVyID0gXFx1MDAyNnBmLVxcdTAwM2VtYWNfZmlsdGVyW1VDXTtcXG4tXFx0XFx0ZW5ldGNfcmVzZXRfbWFjX2FkZHJfZmlsdGVyKG1hY19maWx0ZXIpO1xcbi1cXHRcXHRuZXRkZXZfZm9yX2VhY2hfdWNfYWRkcihoYSwgbmRldilcXG4tXFx0XFx0XFx0ZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihtYWNfZmlsdGVyLCBoYS1cXHUwMDNlYWRkcik7XFxuLVxcbi1cXHRcXHRlbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKGh3LCAwLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQqbWFjX2ZpbHRlci1cXHUwMDNlbWFjX2hhc2hfdGFibGUpO1xcbi1cXHR9XFxuK1xcdGVuZXRjX3Jlc2V0X21hY19hZGRyX2ZpbHRlcihtYWNfZmlsdGVyKTtcXG4rXFx0bmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgbWMpXFxuK1xcdFxcdGVuZXRjX2FkZF9tYWNfYWRkcl9odF9maWx0ZXIobWFjX2ZpbHRlciwgaGEtXFx1MDAzZWFkZHIpO1xcbiBcXG4tXFx0aWYgKHR5cGUgXFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpIHtcXG4tXFx0XFx0bWFjX2ZpbHRlciA9IFxcdTAwMjZwZi1cXHUwMDNlbWFjX2ZpbHRlcltNQ107XFxuLVxcdFxcdGVuZXRjX3Jlc2V0X21hY19hZGRyX2ZpbHRlcihtYWNfZmlsdGVyKTtcXG4tXFx0XFx0bmV0ZGV2X2Zvcl9lYWNoX21jX2FkZHIoaGEsIG5kZXYpXFxuLVxcdFxcdFxcdGVuZXRjX2FkZF9tYWNfYWRkcl9odF9maWx0ZXIobWFjX2ZpbHRlciwgaGEtXFx1MDAzZWFkZHIpO1xcbi1cXG4tXFx0XFx0ZW5ldGM0X3BmX3NldF9zaV9tY19oYXNoX2ZpbHRlcihodywgMCxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0Km1hY19maWx0ZXItXFx1MDAzZW1hY19oYXNoX3RhYmxlKTtcXG4tXFx0fVxcbi1cXHRuZXRpZl9hZGRyX3VubG9ja19iaChuZGV2KTtcXG4rXFx0Yml0bWFwX3RvX2FycjY0KFxcdTAwMjZoYXNoLCBtYWNfZmlsdGVyLVxcdTAwM2VtYWNfaGFzaF90YWJsZSxcXG4rXFx0XFx0XFx0RU5FVENfTUFERFJfSEFTSF9UQkxfU1opO1xcbitcXHRlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIocGYtXFx1MDAzZXNpLCAwLCBoYXNoKTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tYWNfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCB0eXBlKVxcbitzdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHR5cGUsXFxuK1xcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLFxcbitcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYylcXG4ge1xcbiBcXHQvKiBDdXJyZW50bHksIHRoZSBNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGUgKE1BRlQpIG9ubHkgaGFzIDQgZW50cmllcyxcXG4gXFx0ICogYW5kIG11bHRpcGxlIG11bHRpY2FzdCBhZGRyZXNzZXMgZm9yIGZpbHRlcmluZyB3aWxsIGJlIGNvbmZpZ3VyZWRcXG5AQCAtMjU4LDE1ICsyMDUsMTYgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tYWNfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCB0eXBlKVxcbiBcXHQgKiB1bmljYXN0IGZpbHRlcmluZy4gSWYgdGhlIG51bWJlciBvZiB1bmljYXN0IGFkZHJlc3NlcyBleGNlZWRzIHRoZVxcbiBcXHQgKiB0YWJsZSBjYXBhY2l0eSwgdGhlIE1BQyBoYXNoIGZpbHRlciB3aWxsIGJlIHVzZWQuXFxuIFxcdCAqL1xcbi1cXHRpZiAodHlwZSBcXHUwMDI2IEVORVRDX01BQ19GSUxURVJfVFlQRV9VQyBcXHUwMDI2XFx1MDAyNiBlbmV0YzRfcGZfc2V0X3VjX2V4YWN0X2ZpbHRlcihwZikpIHtcXG4rXFx0aWYgKHR5cGUgXFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfVUMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHBmLCB1YykpIHtcXG4gXFx0XFx0LyogRmFsbCBiYWNrIHRvIHRoZSBNQUMgaGFzaCBmaWx0ZXIgKi9cXG4tXFx0XFx0ZW5ldGM0X3BmX3NldF9tYWNfaGFzaF9maWx0ZXIocGYsIEVORVRDX01BQ19GSUxURVJfVFlQRV9VQyk7XFxuK1xcdFxcdGVuZXRjNF9wZl9zZXRfdWNfaGFzaF9maWx0ZXIocGYsIHVjKTtcXG4gXFx0XFx0LyogQ2xlYXIgdGhlIG9sZCBNQUMgZXhhY3QgZmlsdGVyICovXFxuIFxcdFxcdGVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAodHlwZSBcXHUwMDI2IEVORVRDX01BQ19GSUxURVJfVFlQRV9NQylcXG4tXFx0XFx0ZW5ldGM0X3BmX3NldF9tYWNfaGFzaF9maWx0ZXIocGYsIEVORVRDX01BQ19GSUxURVJfVFlQRV9NQyk7XFxuK1xcdFxcdGVuZXRjNF9wZl9zZXRfbWNfaGFzaF9maWx0ZXIocGYsIG1jKTtcXG4gfVxcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBlbmV0Y19wZl9vcHMgZW5ldGM0X3BmX29wcyA9IHtcXG5AQCAtMzA2LDM0ICsyNTQsMzUgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbihzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbiB7XFxuIFxcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcXHUwMDI2cGYtXFx1MDAzZXNpLVxcdTAwM2VodztcXG4gXFx0dTMyIG51bV9yeF9iZHIsIG51bV90eF9iZHIsIHZhbDtcXG4rXFx0aW50IG51bV92ZnMgPSBwZi1cXHUwMDNldG90YWxfdmZzO1xcbiBcXHR1MzIgdmZfdHhfYmRyLCB2Zl9yeF9iZHI7XFxuIFxcdGludCBpLCByeF9yZW0sIHR4X3JlbTtcXG4gXFxuLVxcdGlmIChwZi1cXHUwMDNlY2Fwcy5udW1fcnhfYmRyIFxcdTAwM2MgRU5FVENfU0lfTUFYX1JJTkdfTlVNICsgcGYtXFx1MDAzZWNhcHMubnVtX3ZzaSlcXG4tXFx0XFx0bnVtX3J4X2JkciA9IHBmLVxcdTAwM2VjYXBzLm51bV9yeF9iZHIgLSBwZi1cXHUwMDNlY2Fwcy5udW1fdnNpO1xcbitcXHRpZiAocGYtXFx1MDAzZWNhcHMubnVtX3J4X2JkciBcXHUwMDNjIEVORVRDX1NJX01BWF9SSU5HX05VTSArIG51bV92ZnMpXFxuK1xcdFxcdG51bV9yeF9iZHIgPSBwZi1cXHUwMDNlY2Fwcy5udW1fcnhfYmRyIC0gbnVtX3ZmcztcXG4gXFx0ZWxzZVxcbiBcXHRcXHRudW1fcnhfYmRyID0gRU5FVENfU0lfTUFYX1JJTkdfTlVNO1xcbiBcXG4tXFx0aWYgKHBmLVxcdTAwM2VjYXBzLm51bV90eF9iZHIgXFx1MDAzYyBFTkVUQ19TSV9NQVhfUklOR19OVU0gKyBwZi1cXHUwMDNlY2Fwcy5udW1fdnNpKVxcbi1cXHRcXHRudW1fdHhfYmRyID0gcGYtXFx1MDAzZWNhcHMubnVtX3R4X2JkciAtIHBmLVxcdTAwM2VjYXBzLm51bV92c2k7XFxuK1xcdGlmIChwZi1cXHUwMDNlY2Fwcy5udW1fdHhfYmRyIFxcdTAwM2MgRU5FVENfU0lfTUFYX1JJTkdfTlVNICsgbnVtX3ZmcylcXG4rXFx0XFx0bnVtX3R4X2JkciA9IHBmLVxcdTAwM2VjYXBzLm51bV90eF9iZHIgLSBudW1fdmZzO1xcbiBcXHRlbHNlXFxuIFxcdFxcdG51bV90eF9iZHIgPSBFTkVUQ19TSV9NQVhfUklOR19OVU07XFxuIFxcbiBcXHR2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdChmYWxzZSwgbnVtX3R4X2JkciwgbnVtX3J4X2Jkcik7XFxuIFxcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMCgwKSwgdmFsKTtcXG4gXFxuLVxcdGlmICghcGYtXFx1MDAzZWNhcHMubnVtX3ZzaSlcXG4rXFx0aWYgKCFudW1fdmZzKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRudW1fcnhfYmRyID0gcGYtXFx1MDAzZWNhcHMubnVtX3J4X2JkciAtIG51bV9yeF9iZHI7XFxuLVxcdHJ4X3JlbSA9IG51bV9yeF9iZHIgJSBwZi1cXHUwMDNlY2Fwcy5udW1fdnNpO1xcbi1cXHRudW1fcnhfYmRyID0gbnVtX3J4X2JkciAvIHBmLVxcdTAwM2VjYXBzLm51bV92c2k7XFxuK1xcdHJ4X3JlbSA9IG51bV9yeF9iZHIgJSBudW1fdmZzO1xcbitcXHRudW1fcnhfYmRyID0gbnVtX3J4X2JkciAvIG51bV92ZnM7XFxuIFxcbiBcXHRudW1fdHhfYmRyID0gcGYtXFx1MDAzZWNhcHMubnVtX3R4X2JkciAtIG51bV90eF9iZHI7XFxuLVxcdHR4X3JlbSA9IG51bV90eF9iZHIgJSBwZi1cXHUwMDNlY2Fwcy5udW1fdnNpO1xcbi1cXHRudW1fdHhfYmRyID0gbnVtX3R4X2JkciAvIHBmLVxcdTAwM2VjYXBzLm51bV92c2k7XFxuK1xcdHR4X3JlbSA9IG51bV90eF9iZHIgJSBudW1fdmZzO1xcbitcXHRudW1fdHhfYmRyID0gbnVtX3R4X2JkciAvIG51bV92ZnM7XFxuIFxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGYtXFx1MDAzZWNhcHMubnVtX3ZzaTsgaSsrKSB7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudW1fdmZzOyBpKyspIHtcXG4gXFx0XFx0dmZfdHhfYmRyID0gKGkgXFx1MDAzYyB0eF9yZW0pID8gbnVtX3R4X2JkciArIDEgOiBudW1fdHhfYmRyO1xcbiBcXHRcXHR2Zl9yeF9iZHIgPSAoaSBcXHUwMDNjIHJ4X3JlbSkgPyBudW1fcnhfYmRyICsgMSA6IG51bV9yeF9iZHI7XFxuIFxcdFxcdHZhbCA9IGVuZXRjNF9wc2ljZmdyMF92YWxfY29uc3RydWN0KHRydWUsIHZmX3R4X2JkciwgdmZfcnhfYmRyKTtcXG5AQCAtMzQ2LDUzICsyOTUsNzAgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuIFxcdGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24ocGYpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksIGJvb2wgZW4pXFxuLXtcXG4tXFx0dTMyIHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lQVk1SKTtcXG4tXFxuLVxcdGlmIChlbilcXG4tXFx0XFx0dmFsIHw9IEJJVChzaSk7XFxuLVxcdGVsc2VcXG4tXFx0XFx0dmFsIFxcdTAwMjY9IH5CSVQoc2kpO1xcbi1cXG4tXFx0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSVBWTVIsIHZhbCk7XFxuLX1cXG4tXFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfZGVmYXVsdF9zaV92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX3BmICpwZilcXG4te1xcbi1cXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXFx1MDAyNnBmLVxcdTAwM2VzaS1cXHUwMDNlaHc7XFxuLVxcdGludCBudW1fc2kgPSBwZi1cXHUwMDNlY2Fwcy5udW1fdnNpICsgMTtcXG4tXFx0aW50IGk7XFxuLVxcbi1cXHQvKiBlbmZvcmNlIFZMQU4gcHJvbWlzY3VvdXMgbW9kZSBmb3IgYWxsIFNJcyAqL1xcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnVtX3NpOyBpKyspXFxuLVxcdFxcdGVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKGh3LCBpLCB0cnVlKTtcXG4tfVxcbi1cXG4gLyogQWxsb2NhdGUgdGhlIG51bWJlciBvZiBNU0ktWCB2ZWN0b3JzIGZvciBwZXIgU0kuICovXFxuIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfc2lfbXNpeF9udW0oc3RydWN0IGVuZXRjX3BmICpwZilcXG4ge1xcbitcXHRpbnQgdmFsaWRfbnVtX3NpID0gcGYtXFx1MDAzZXRvdGFsX3ZmcyArIDE7XFxuIFxcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcXHUwMDI2cGYtXFx1MDAzZXNpLVxcdTAwM2VodztcXG4tXFx0aW50IGksIG51bV9tc2l4LCB0b3RhbF9zaTtcXG4rXFx0aW50IGksIG51bV9tc2l4LCBudW1fdnNpO1xcbiBcXHR1MzIgdmFsO1xcbiBcXG4tXFx0dG90YWxfc2kgPSBwZi1cXHUwMDNlY2Fwcy5udW1fdnNpICsgMTtcXG4rXFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X0VDQVBSMSk7XFxuK1xcdG51bV92c2kgPSBGSUVMRF9HRVQoRUNBUFIxX05VTV9WU0ksIHZhbCk7XFxuK1xcbitcXHQvKiBUaGUgUFNJYUNGR1IyW05VTV9NU0lYXSBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBNU0ktWCBhbGxvY2F0ZWQgdG9cXG4rXFx0ICogdGhlIFNJIGlzIE5VTV9NU0lYICsgMSwgc28gdGhlIG1pbmltdW0gbnVtYmVyIG9mIE1TSS1YIGFsbG9jYXRlZCB0b1xcbitcXHQgKiBlYWNoIFNJIGlzIDEuIFRoZSB0b3RhbCBudW1iZXIgb2YgTVNJLVggYWxsb2NhdGVkIHRvIFBTSSBhbmQgVlNJc1xcbitcXHQgKiBjYW5ub3QgZXhjZWVkIHRoZSB0b3RhbCBudW1iZXIgb2YgTVNJLVggb3duZWQgYnkgdGhpcyBFTkVUQywgd2hpY2hcXG4rXFx0ICogaXMgRUNBUFIxW05VTV9NU0lYXS4gT3RoZXJ3aXNlLCB3aGVuIG11bHRpcGxlIEVORVRDIGluc3RhbmNlcyBleGlzdCxcXG4rXFx0ICogaXQgd2lsbCBhZmZlY3Qgb3RoZXIgRU5FVENzIHdob3NlIE1TSS1YIGludGVycnVwdHMgY2Fubm90IGJlXFxuK1xcdCAqIGdlbmVyYXRlZC4gVGhpcyBpcyBzaW1pbGFyIHRvIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzOiB0aGUgYXJyYXlcXG4rXFx0ICogaXRzZWxmIGlzIG5vdCBhZmZlY3RlZCwgYnV0IGFkamFjZW50IGFycmF5cyB3aWxsIGJlIGNvcnJ1cHRlZC5cXG4rXFx0ICpcXG4rXFx0ICogcGYtXFx1MDAzZXRvdGFsX3ZmcyBpcyAwIGlmIENPTkZJR19QQ0lfSU9WIGlzIGRpc2FibGVkLiBJZiB0aGUgaGFyZHdhcmVcXG4rXFx0ICogaXRzZWxmIHN1cHBvcnRzIFNSLUlPViwgdGhlbiB3aGVuIGFsbG9jYXRpbmcgdGhlIG51bWJlciBvZiBNU0lYcyB0b1xcbitcXHQgKiB0aGUgU0ksIGl0IG11c3QgYmUgdGFrZW4gaW50byBhY2NvdW50IHRoYXQgdGhlIFZTSSBoYXMgYXQgbGVhc3QgMVxcbitcXHQgKiBNU0lYLCBhbmQgdGhlIHRvdGFsIG51bWJlciBvZiBNU0lYcyBvZiBhbGwgU0lzIGNhbm5vdCBleGNlZWRcXG4rXFx0ICogRUNBUFIxW05VTV9NU0lYXS5cXG4rXFx0ICovXFxuK1xcdGlmICghcGYtXFx1MDAzZXRvdGFsX3ZmcyBcXHUwMDI2XFx1MDAyNiBudW1fdnNpKSB7XFxuK1xcdFxcdC8qIEJlY2F1c2UgZWFjaCBTSSBoYXMgYXQgbGVhc3Qgb25lIE1TSVgsIGFuZCBmcm9tIHRoZSBoYXJkd2FyZVxcbitcXHRcXHQgKiBwZXJzcGVjdGl2ZSwgcGYtXFx1MDAzZWNhcHMubnVtX21zaXggd2lsbCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuXFxuK1xcdFxcdCAqIG51bV92c2kuIFNvIG51bV9tc2l4IGlzIGFsd2F5cyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdG51bV9tc2l4ID0gcGYtXFx1MDAzZWNhcHMubnVtX21zaXggLSBudW1fdnNpIC0gMTtcXG4rXFx0XFx0aWYgKG51bV9tc2l4IFxcdTAwM2UgUFNJQ0ZHUjJfTlVNX01TSVgpXFxuK1xcdFxcdFxcdG51bV9tc2l4ID0gUFNJQ0ZHUjJfTlVNX01TSVg7XFxuK1xcdFxcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMigwKSwgbnVtX21zaXgpO1xcbiBcXG4tXFx0bnVtX21zaXggPSBwZi1cXHUwMDNlY2Fwcy5udW1fbXNpeCAvIHRvdGFsX3NpICtcXG4tXFx0XFx0ICAgcGYtXFx1MDAzZWNhcHMubnVtX21zaXggJSB0b3RhbF9zaSAtIDE7XFxuLVxcdHZhbCA9IG51bV9tc2l4IFxcdTAwMjYgUFNJQ0ZHUjJfTlVNX01TSVg7XFxuLVxcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMigwKSwgdmFsKTtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG51bV92c2k7IGkrKylcXG4rXFx0XFx0XFx0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSUNGR1IyKGkgKyAxKSwgMCk7XFxuIFxcbi1cXHRudW1fbXNpeCA9IHBmLVxcdTAwM2VjYXBzLm51bV9tc2l4IC8gdG90YWxfc2kgLSAxO1xcbi1cXHR2YWwgPSBudW1fbXNpeCBcXHUwMDI2IFBTSUNGR1IyX05VTV9NU0lYO1xcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGYtXFx1MDAzZWNhcHMubnVtX3ZzaTsgaSsrKVxcbi1cXHRcXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoaSArIDEpLCB2YWwpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdC8qIExpa2V3aXNlLCBmcm9tIHRoZSBoYXJkd2FyZSBwZXJzcGVjdGl2ZSBwZi1cXHUwMDNlY2Fwcy5udW1fbXNpeCBpcyBhbHdheXNcXG4rXFx0ICogZ3JlYXRlciB0aGFuIHZhbGlkX251bV9zaS4gU28gbnVtX21zaXggaXMgYWx3YXlzIGdyZWF0ZXIgdGhhbiBvclxcbitcXHQgKiBlcXVhbCB0byAwLlxcbitcXHQgKi9cXG4rXFx0bnVtX21zaXggPSBwZi1cXHUwMDNlY2Fwcy5udW1fbXNpeCAvIHZhbGlkX251bV9zaSArXFxuK1xcdFxcdCAgIHBmLVxcdTAwM2VjYXBzLm51bV9tc2l4ICUgdmFsaWRfbnVtX3NpIC0gMTtcXG4rXFx0aWYgKG51bV9tc2l4IFxcdTAwM2UgUFNJQ0ZHUjJfTlVNX01TSVgpXFxuK1xcdFxcdG51bV9tc2l4ID0gUFNJQ0ZHUjJfTlVNX01TSVg7XFxuK1xcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMigwKSwgbnVtX21zaXgpO1xcbitcXG4rXFx0bnVtX21zaXggPSBwZi1cXHUwMDNlY2Fwcy5udW1fbXNpeCAvIHZhbGlkX251bV9zaSAtIDE7XFxuK1xcdGlmIChudW1fbXNpeCBcXHUwMDNlIFBTSUNGR1IyX05VTV9NU0lYKVxcbitcXHRcXHRudW1fbXNpeCA9IFBTSUNGR1IyX05VTV9NU0lYO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHBmLVxcdTAwM2V0b3RhbF92ZnM7IGkrKylcXG4rXFx0XFx0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSUNGR1IyKGkgKyAxKSwgbnVtX21zaXgpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBlbmV0YzRfZW5hYmxlX2FsbF9zaShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbiB7XFxuIFxcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcXHUwMDI2cGYtXFx1MDAzZXNpLVxcdTAwM2VodztcXG4tXFx0aW50IG51bV9zaSA9IHBmLVxcdTAwM2VjYXBzLm51bV92c2kgKyAxO1xcbitcXHRpbnQgbnVtX3NpID0gcGYtXFx1MDAzZXRvdGFsX3ZmcyArIDE7XFxuIFxcdHUzMiBzaV9iaXRtYXAgPSAwO1xcbiBcXHRpbnQgaTtcXG4gXFxuQEAgLTQxMiw3ICszNzgsOSBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfY29uZmlndXJlX3BvcnRfc2koc3RydWN0IGVuZXRjX3BmICpwZilcXG4gXFx0LyogT3V0ZXIgVkxBTiB0YWcgd2lsbCBiZSB1c2VkIGZvciBWTEFOIGZpbHRlcmluZyAqL1xcbiBcXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJVkxBTkZNUiwgUFNJVkxBTkZNUl9WUyk7XFxuIFxcbi1cXHRlbmV0YzRfc2V0X2RlZmF1bHRfc2lfdmxhbl9wcm9taXNjKHBmKTtcXG4rXFx0LyogRW5mb3JjZSBWTEFOIHByb21pc2N1b3VzIG1vZGUgZm9yIGFsbCBTSXMgKi9cXG4rXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBwZi1cXHUwMDNldG90YWxfdmZzICsgMTsgaSsrKVxcbitcXHRcXHRlbmV0Y19zZXRfc2lfdmxhbl9wcm9taXNjKHBmLVxcdTAwM2VzaSwgaSwgdHJ1ZSk7XFxuIFxcbiBcXHQvKiBEaXNhYmxlIFNJIE1BQyBtdWx0aWNhc3QgXFx1MDAyNiB1bmljYXN0IHByb21pc2N1b3VzICovXFxuIFxcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lQTU1SLCAwKTtcXG5AQCAtNDUwLDE4ICs0MTgsNjAgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuIFxcdGVuZXRjX3NldF9kZWZhdWx0X3Jzc19rZXkocGYpO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBlbmV0YzRfZ2V0X250bXBfY2FwcyhzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxcbit7XFxuK1xcdHN0cnVjdCBudG1wX3VzZXIgKnVzZXIgPSBcXHUwMDI2c2ktXFx1MDAzZW50bXBfdXNlcjtcXG4rXFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFxcdTAwMjZzaS1cXHUwMDNlaHc7XFxuK1xcdHUzMiB2YWw7XFxuK1xcbitcXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQzRfUFNJTUFGQ0FQUik7XFxuK1xcdHVzZXItXFx1MDAzZW1hZnRfbnVtX2VudHJpZXMgPSBGSUVMRF9HRVQoUFNJTUFGQ0FQUl9OVU1fTUFDX0FGVEUsIHZhbCk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgZW5ldGM0X250bXBfYml0bWFwX2luaXQoc3RydWN0IG50bXBfdXNlciAqdXNlcilcXG4re1xcbitcXHR1c2VyLVxcdTAwM2VtYWZ0X2VpZF9iaXRtYXAgPSBiaXRtYXBfemFsbG9jKHVzZXItXFx1MDAzZW1hZnRfbnVtX2VudHJpZXMsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIEdGUF9LRVJORUwpO1xcbitcXHRpZiAoIXVzZXItXFx1MDAzZW1hZnRfZWlkX2JpdG1hcClcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgZW5ldGM0X250bXBfYml0bWFwX2ZyZWUoc3RydWN0IG50bXBfdXNlciAqdXNlcilcXG4re1xcbitcXHRiaXRtYXBfZnJlZSh1c2VyLVxcdTAwM2VtYWZ0X2VpZF9iaXRtYXApO1xcbitcXHR1c2VyLVxcdTAwM2VtYWZ0X2VpZF9iaXRtYXAgPSBOVUxMO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGVuZXRjNF9pbml0X250bXBfdXNlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxcbiB7XFxuIFxcdHN0cnVjdCBudG1wX3VzZXIgKnVzZXIgPSBcXHUwMDI2c2ktXFx1MDAzZW50bXBfdXNlcjtcXG4rXFx0aW50IGVycjtcXG4gXFxuIFxcdC8qIEZvciBFTkVUQyA0LjEsIGFsbCB0YWJsZSB2ZXJzaW9ucyBhcmUgMCAqL1xcbiBcXHRtZW1zZXQoXFx1MDAyNnVzZXItXFx1MDAzZXRibCwgMCwgc2l6ZW9mKHVzZXItXFx1MDAzZXRibCkpO1xcbiBcXG4tXFx0cmV0dXJuIGVuZXRjNF9zZXR1cF9jYmRyKHNpKTtcXG4rXFx0ZXJyID0gZW5ldGM0X3NldHVwX2NiZHIoc2kpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0ZW5ldGM0X2dldF9udG1wX2NhcHMoc2kpO1xcbitcXHRlcnIgPSBlbmV0YzRfbnRtcF9iaXRtYXBfaW5pdCh1c2VyKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byB0ZWFyZG93bl9jYmRyO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK1xcbit0ZWFyZG93bl9jYmRyOlxcbitcXHRlbmV0YzRfdGVhcmRvd25fY2JkcihzaSk7XFxuK1xcbitcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBlbmV0YzRfZnJlZV9udG1wX3VzZXIoc3RydWN0IGVuZXRjX3NpICpzaSlcXG4ge1xcbitcXHRlbmV0YzRfbnRtcF9iaXRtYXBfZnJlZShcXHUwMDI2c2ktXFx1MDAzZW50bXBfdXNlcik7XFxuIFxcdGVuZXRjNF90ZWFyZG93bl9jYmRyKHNpKTtcXG4gfVxcbiBcXG5AQCAtNDc5LDcgKzQ4OSw3IEBAIHN0YXRpYyBpbnQgZW5ldGM0X3BmX2luaXQoc3RydWN0IGVuZXRjX3BmICpwZilcXG4gXFxuIFxcdGVyciA9IGVuZXRjNF9pbml0X250bXBfdXNlcihwZi1cXHUwMDNlc2kpO1xcbiBcXHRpZiAoZXJyKSB7XFxuLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGluaXQgQ0JEUlxcXFxuXFxcIik7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGluaXQgTlRNUCB1c2VyXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0fVxcbiBcXG5AQCAtNDkzLDE4ICs1MDMsMTcgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BmX2ZyZWUoc3RydWN0IGVuZXRjX3BmICpwZilcXG4gXFx0ZW5ldGM0X2ZyZWVfbnRtcF91c2VyKHBmLVxcdTAwM2VzaSk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9wc2lfZG9fc2V0X3J4X21vZGUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbitzdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4rXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcXG4rXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYylcXG4ge1xcbi1cXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBlbmV0Y19zaSwgcnhfbW9kZV90YXNrKTtcXG4tXFx0c3RydWN0IGVuZXRjX3BmICpwZiA9IGVuZXRjX3NpX3ByaXYoc2kpO1xcbi1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHNpLVxcdTAwM2VuZGV2O1xcbi1cXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXFx1MDAyNnNpLVxcdTAwM2VodztcXG4rXFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbitcXHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihwcml2LVxcdTAwM2VzaSk7XFxuK1xcdHN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwcml2LVxcdTAwM2VzaTtcXG4gXFx0Ym9vbCB1Y19wcm9taXNjID0gZmFsc2U7XFxuIFxcdGJvb2wgbWNfcHJvbWlzYyA9IGZhbHNlO1xcbiBcXHRpbnQgdHlwZSA9IDA7XFxuIFxcbi1cXHRydG5sX2xvY2soKTtcXG4tXFxuIFxcdGlmIChuZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QUk9NSVNDKSB7XFxuIFxcdFxcdHVjX3Byb21pc2MgPSB0cnVlO1xcbiBcXHRcXHRtY19wcm9taXNjID0gdHJ1ZTtcXG5AQCAtNTE1LDI4ICs1MjQsMjEgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BzaV9kb19zZXRfcnhfbW9kZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdFxcdHR5cGUgPSBFTkVUQ19NQUNfRklMVEVSX1RZUEVfQUxMO1xcbiBcXHR9XFxuIFxcbi1cXHRlbmV0YzRfcGZfc2V0X3NpX21hY19wcm9taXNjKGh3LCAwLCB1Y19wcm9taXNjLCBtY19wcm9taXNjKTtcXG4rXFx0ZW5ldGNfc2V0X3NpX3VjX3Byb21pc2Moc2ksIDAsIHVjX3Byb21pc2MpO1xcbitcXHRlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhzaSwgMCwgbWNfcHJvbWlzYyk7XFxuIFxcbiBcXHRpZiAodWNfcHJvbWlzYykge1xcbi1cXHRcXHRlbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKGh3LCAwLCAwKTtcXG4rXFx0XFx0ZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTtcXG4gXFx0XFx0ZW5ldGM0X3BmX2NsZWFyX21hZnRfZW50cmllcyhwZik7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChtY19wcm9taXNjKVxcbi1cXHRcXHRlbmV0YzRfcGZfc2V0X3NpX21jX2hhc2hfZmlsdGVyKGh3LCAwLCAwKTtcXG4rXFx0XFx0ZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTtcXG4gXFxuIFxcdC8qIFNldCBuZXcgTUFDIGZpbHRlciAqL1xcbi1cXHRlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIocGYsIHR5cGUpO1xcbitcXHRlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIocGYsIHR5cGUsIHVjLCBtYyk7XFxuIFxcbi1cXHRydG5sX3VubG9jaygpO1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLXtcXG4tXFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbi1cXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcHJpdi1cXHUwMDNlc2k7XFxuLVxcbi1cXHRxdWV1ZV93b3JrKHNpLVxcdTAwM2V3b3JrcXVldWUsIFxcdTAwMjZzaS1cXHUwMDNlcnhfbW9kZV90YXNrKTtcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgZW5ldGM0X3BmX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5AQCAtNTQ0LDEyICs1NDYsMTEgQEAgc3RhdGljIGludCBlbmV0YzRfcGZfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiB7XFxuIFxcdG5ldGRldl9mZWF0dXJlc190IGNoYW5nZWQgPSBuZGV2LVxcdTAwM2VmZWF0dXJlcyBeIGZlYXR1cmVzO1xcbiBcXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuLVxcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcXHUwMDI2cHJpdi1cXHUwMDNlc2ktXFx1MDAzZWh3O1xcbiBcXG4gXFx0aWYgKGNoYW5nZWQgXFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19GSUxURVIpIHtcXG4gXFx0XFx0Ym9vbCBwcm9taXNjX2VuID0gIShmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUik7XFxuIFxcbi1cXHRcXHRlbmV0YzRfcGZfc2V0X3NpX3ZsYW5fcHJvbWlzYyhodywgMCwgcHJvbWlzY19lbik7XFxuK1xcdFxcdGVuZXRjX3NldF9zaV92bGFuX3Byb21pc2MocHJpdi1cXHUwMDNlc2ksIDAsIHByb21pc2NfZW4pO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY2hhbmdlZCBcXHUwMDI2IE5FVElGX0ZfTE9PUEJBQ0spXFxuQEAgLTU2Niw3ICs1NjcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVuZXRjNF9uZGV2X29wcyA9IHtcXG4gXFx0Lm5kb19zdGFydF94bWl0XFx0XFx0PSBlbmV0Y194bWl0LFxcbiBcXHQubmRvX2dldF9zdGF0c1xcdFxcdD0gZW5ldGNfZ2V0X3N0YXRzLFxcbiBcXHQubmRvX3NldF9tYWNfYWRkcmVzc1xcdD0gZW5ldGNfcGZfc2V0X21hY19hZGRyLFxcbi1cXHQubmRvX3NldF9yeF9tb2RlXFx0PSBlbmV0YzRfcGZfc2V0X3J4X21vZGUsXFxuK1xcdC5uZG9fc2V0X3J4X21vZGVfYXN5bmNcXHQ9IGVuZXRjNF9wZl9zZXRfcnhfbW9kZSxcXG4gXFx0Lm5kb19zZXRfZmVhdHVyZXNcXHQ9IGVuZXRjNF9wZl9zZXRfZmVhdHVyZXMsXFxuIFxcdC5uZG9fdmxhbl9yeF9hZGRfdmlkXFx0PSBlbmV0Y192bGFuX3J4X2FkZF92aWQsXFxuIFxcdC5uZG9fdmxhbl9yeF9raWxsX3ZpZFxcdD0gZW5ldGNfdmxhbl9yeF9kZWxfdmlkLFxcbkBAIC02MDIsMTEgKzYwMyw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9tYWNfY29uZmlnKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHVuc2lnbmVkIGludCBtb2RlLFxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOlxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOlxcbiBcXHRcXHR2YWwgfD0gSUZNT0RFX1JHTUlJO1xcbi1cXHRcXHQvKiBXZSBuZWVkIHRvIGVuYWJsZSBhdXRvLW5lZ290aWF0aW9uIGZvciB0aGUgTUFDXFxuLVxcdFxcdCAqIGlmIGl0cyBSR01JSSBpbnRlcmZhY2Ugc3VwcG9ydCBJbi1CYW5kIHN0YXR1cy5cXG4tXFx0XFx0ICovXFxuLVxcdFxcdGlmIChwaHlsaW5rX2F1dG9uZWdfaW5iYW5kKG1vZGUpKVxcbi1cXHRcXHRcXHR2YWwgfD0gUE1fSUZfTU9ERV9FTkE7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJOlxcbiBcXHRcXHR2YWwgfD0gSUZNT0RFX1JNSUk7XFxuQEAgLTYxNiw3ICs2MTIsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfbWFjX2NvbmZpZyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG4gXFx0XFx0dmFsIHw9IElGTU9ERV9TR01JSTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSOlxcbi1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9YR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcXG4gXFx0XFx0dmFsIHw9IElGTU9ERV9YR01JSTtcXG4gXFx0XFx0YnJlYWs7XFxuQEAgLTY0MiwyNiArNjM3LDE5IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfcG9ydF9zcGVlZChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBpbnQgc3BlZWQpXFxuIFxcdHUzMiBvbGRfc3BlZWQgPSBwcml2LVxcdTAwM2VzcGVlZDtcXG4gXFx0dTMyIHZhbDtcXG4gXFxuK1xcdC8qIElmIHRoZSBzcGVlZCBpcyB1bmtub3duLCB1c2UgdGhlIG1pbmltdW0gdmFsdWUgKi9cXG4rXFx0aWYgKHNwZWVkID09IFNQRUVEX1VOS05PV04pIHtcXG4rXFx0XFx0c3BlZWQgPSBTUEVFRF8xMDtcXG4rXFx0XFx0ZGV2X3dhcm4ocHJpdi1cXHUwMDNlZGV2LCBcXFwiU3BlZWQgdW5rbm93biwgZGVmYXVsdCBpcyAxME1icHNcXFxcblxcXCIpO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoc3BlZWQgPT0gb2xkX3NwZWVkKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHR2YWwgPSBlbmV0Y19wb3J0X3JkKFxcdTAwMjZwcml2LVxcdTAwM2VzaS1cXHUwMDNlaHcsIEVORVRDNF9QQ1IpO1xcbi1cXHR2YWwgXFx1MDAyNj0gflBDUl9QU1BFRUQ7XFxuLVxcbi1cXHRzd2l0Y2ggKHNwZWVkKSB7XFxuLVxcdGNhc2UgU1BFRURfMTAwOlxcbi1cXHRjYXNlIFNQRUVEXzEwMDA6XFxuLVxcdGNhc2UgU1BFRURfMjUwMDpcXG4tXFx0Y2FzZSBTUEVFRF8xMDAwMDpcXG4tXFx0XFx0dmFsIHw9IChQQ1JfUFNQRUVEIFxcdTAwMjYgUENSX1BTUEVFRF9WQUwoc3BlZWQpKTtcXG4tXFx0XFx0YnJlYWs7XFxuLVxcdGNhc2UgU1BFRURfMTA6XFxuLVxcdGRlZmF1bHQ6XFxuLVxcdFxcdHZhbCB8PSAoUENSX1BTUEVFRCBcXHUwMDI2IFBDUl9QU1BFRURfVkFMKFNQRUVEXzEwKSk7XFxuLVxcdH1cXG4tXFxuLVxcdHByaXYtXFx1MDAzZXNwZWVkID0gc3BlZWQ7XFxuK1xcdHZhbCA9IGVuZXRjX3BvcnRfcmQoXFx1MDAyNnByaXYtXFx1MDAzZXNpLVxcdTAwM2VodywgRU5FVEM0X1BDUikgXFx1MDAyNiAoflBDUl9QU1BFRUQpO1xcbitcXHR2YWwgfD0gUENSX1BTUEVFRF9WQUwoc3BlZWQpO1xcbiBcXHRlbmV0Y19wb3J0X3dyKFxcdTAwMjZwcml2LVxcdTAwM2VzaS1cXHUwMDNlaHcsIEVORVRDNF9QQ1IsIHZhbCk7XFxuK1xcdHByaXYtXFx1MDAzZXNwZWVkID0gc3BlZWQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfcmdtaWlfbWFjKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBzcGVlZCwgaW50IGR1cGxleClcXG5AQCAtNzE3LDIyICs3MDUsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3JtaWlfbWFjKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBzcGVlZCwgaW50IGR1cGxleClcXG4gXFx0ZW5ldGNfcG9ydF9tYWNfd3Ioc2ksIEVORVRDNF9QTV9JRl9NT0RFKDApLCB2YWwpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBlbmV0YzRfc2V0X2hkX2Zsb3dfY29udHJvbChzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBib29sIGVuYWJsZSlcXG4te1xcbi1cXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcGYtXFx1MDAzZXNpO1xcbi1cXHR1MzIgb2xkX3ZhbCwgdmFsO1xcbi1cXG4tXFx0aWYgKCFwZi1cXHUwMDNlY2Fwcy5oYWxmX2R1cGxleClcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXG4tXFx0b2xkX3ZhbCA9IGVuZXRjX3BvcnRfbWFjX3JkKHNpLCBFTkVUQzRfUE1fQ01EX0NGRygwKSk7XFxuLVxcdHZhbCA9IHUzMl9yZXBsYWNlX2JpdHMob2xkX3ZhbCwgZW5hYmxlID8gMSA6IDAsIFBNX0NNRF9DRkdfSERfRkNFTik7XFxuLVxcdGlmICh2YWwgPT0gb2xkX3ZhbClcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXG4tXFx0ZW5ldGNfcG9ydF9tYWNfd3Ioc2ksIEVORVRDNF9QTV9DTURfQ0ZHKDApLCB2YWwpO1xcbi19XFxuLVxcbiBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3J4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGJvb2wgcnhfcGF1c2UpXFxuIHtcXG4gXFx0c3RydWN0IGVuZXRjX3NpICpzaSA9IHBmLVxcdTAwM2VzaTtcXG5AQCAtOTA4LDEzICs4ODAsMTEgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BsX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbiBcXHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gcGh5bGlua190b19lbmV0Y19wZihjb25maWcpO1xcbiBcXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcGYtXFx1MDAzZXNpO1xcbiBcXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2O1xcbi1cXHRib29sIGhkX2ZjID0gZmFsc2U7XFxuIFxcbiBcXHRwcml2ID0gbmV0ZGV2X3ByaXYoc2ktXFx1MDAzZW5kZXYpO1xcbiBcXHRlbmV0YzRfc2V0X3BvcnRfc3BlZWQocHJpdiwgc3BlZWQpO1xcbiBcXG4tXFx0aWYgKCFwaHlsaW5rX2F1dG9uZWdfaW5iYW5kKG1vZGUpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBwaHlfaW50ZXJmYWNlX21vZGVfaXNfcmdtaWkoaW50ZXJmYWNlKSlcXG4rXFx0aWYgKHBoeV9pbnRlcmZhY2VfbW9kZV9pc19yZ21paShpbnRlcmZhY2UpKVxcbiBcXHRcXHRlbmV0YzRfc2V0X3JnbWlpX21hYyhwZiwgc3BlZWQsIGR1cGxleCk7XFxuIFxcbiBcXHRpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJKVxcbkBAIC05MjYsMTggKzg5Niw4IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wbF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmIChwcml2LVxcdTAwM2VhY3RpdmVfb2ZmbG9hZHMgXFx1MDAyNiBFTkVUQ19GX1FCVSlcXG4gXFx0XFx0XFx0dHhfcGF1c2UgPSBmYWxzZTtcXG4tXFx0fSBlbHNlIHsgLyogRFVQTEVYX0hBTEYgKi9cXG4tXFx0XFx0aWYgKHR4X3BhdXNlIHx8IHJ4X3BhdXNlKVxcbi1cXHRcXHRcXHRoZF9mYyA9IHRydWU7XFxuLVxcbi1cXHRcXHQvKiBBcyBwZXIgODAyLjMgYW5uZXggMzFCLCBQQVVTRSBmcmFtZXMgYXJlIG9ubHkgc3VwcG9ydGVkXFxuLVxcdFxcdCAqIHdoZW4gdGhlIGxpbmsgaXMgY29uZmlndXJlZCBmb3IgZnVsbCBkdXBsZXggb3BlcmF0aW9uLlxcbi1cXHRcXHQgKi9cXG4tXFx0XFx0dHhfcGF1c2UgPSBmYWxzZTtcXG4tXFx0XFx0cnhfcGF1c2UgPSBmYWxzZTtcXG4gXFx0fVxcbiBcXG4tXFx0ZW5ldGM0X3NldF9oZF9mbG93X2NvbnRyb2wocGYsIGhkX2ZjKTtcXG4gXFx0ZW5ldGM0X3NldF90eF9wYXVzZShwZiwgcHJpdi1cXHUwMDNlbnVtX3J4X3JpbmdzLCB0eF9wYXVzZSk7XFxuIFxcdGVuZXRjNF9zZXRfcnhfcGF1c2UocGYsIHJ4X3BhdXNlKTtcXG4gXFx0ZW5ldGM0X21hY190eF9lbmFibGUocGYpO1xcbkBAIC0xMDA5LDE5ICs5NjksNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfbGlua19kZWluaXQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdilcXG4gXFx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBlbmV0YzRfcHNpX3dxX3Rhc2tfaW5pdChzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxcbi17XFxuLVxcdGNoYXIgd3FfbmFtZVsyNF07XFxuLVxcbi1cXHRJTklUX1dPUksoXFx1MDAyNnNpLVxcdTAwM2VyeF9tb2RlX3Rhc2ssIGVuZXRjNF9wc2lfZG9fc2V0X3J4X21vZGUpO1xcbi1cXHRzbnByaW50Zih3cV9uYW1lLCBzaXplb2Yod3FfbmFtZSksIFxcXCJlbmV0Yy0lc1xcXCIsIHBjaV9uYW1lKHNpLVxcdTAwM2VwZGV2KSk7XFxuLVxcdHNpLVxcdTAwM2V3b3JrcXVldWUgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSh3cV9uYW1lKTtcXG4tXFx0aWYgKCFzaS1cXHUwMDNld29ya3F1ZXVlKVxcbi1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tXFxuLVxcdHJldHVybiAwO1xcbi19XFxuLVxcbiBzdGF0aWMgaW50IGVuZXRjNF9wZl9uZXRkZXZfY3JlYXRlKHN0cnVjdCBlbmV0Y19zaSAqc2kpXFxuIHtcXG4gXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnNpLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXY7XFxuQEAgLTEwNjIsMTIgKzEwMDksNiBAQCBzdGF0aWMgaW50IGVuZXRjNF9wZl9uZXRkZXZfY3JlYXRlKHN0cnVjdCBlbmV0Y19zaSAqc2kpXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyX2xpbmtfaW5pdDtcXG4gXFxuLVxcdGVyciA9IGVuZXRjNF9wc2lfd3FfdGFza19pbml0KHNpKTtcXG4tXFx0aWYgKGVycikge1xcbi1cXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBpbml0IHdvcmtxdWV1ZVxcXFxuXFxcIik7XFxuLVxcdFxcdGdvdG8gZXJyX3dxX2luaXQ7XFxuLVxcdH1cXG4tXFxuIFxcdGVyciA9IHJlZ2lzdGVyX25ldGRldihuZGV2KTtcXG4gXFx0aWYgKGVycikge1xcbiBcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBuZXRkZXZcXFxcblxcXCIpO1xcbkBAIC0xMDc3LDggKzEwMTgsNiBAQCBzdGF0aWMgaW50IGVuZXRjNF9wZl9uZXRkZXZfY3JlYXRlKHN0cnVjdCBlbmV0Y19zaSAqc2kpXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gZXJyX3JlZ19uZXRkZXY6XFxuLVxcdGRlc3Ryb3lfd29ya3F1ZXVlKHNpLVxcdTAwM2V3b3JrcXVldWUpO1xcbi1lcnJfd3FfaW5pdDpcXG4gXFx0ZW5ldGM0X2xpbmtfZGVpbml0KHByaXYpO1xcbiBlcnJfbGlua19pbml0OlxcbiBcXHRlbmV0Y19mcmVlX21zaXgocHJpdik7XFxuQEAgLTEwOTYsOCArMTAzNSw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9uZXRkZXZfZGVzdHJveShzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHNpLVxcdTAwM2VuZGV2O1xcbiBcXG4gXFx0dW5yZWdpc3Rlcl9uZXRkZXYobmRldik7XFxuLVxcdGNhbmNlbF93b3JrKFxcdTAwMjZzaS1cXHUwMDNlcnhfbW9kZV90YXNrKTtcXG4tXFx0ZGVzdHJveV93b3JrcXVldWUoc2ktXFx1MDAzZXdvcmtxdWV1ZSk7XFxuIFxcdGVuZXRjNF9saW5rX2RlaW5pdChwcml2KTtcXG4gXFx0ZW5ldGNfZnJlZV9tc2l4KHByaXYpO1xcbiBcXHRmcmVlX25ldGRldihuZGV2KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmNcXG5pbmRleCA3MWYzNzZlZjFiZTFjOS4uMDdiNzgzMmYyNDI3NmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmNcXG5AQCAtMjksNyArMjksNyBAQCBzdGF0aWMgY29uc3QgdTMyIGVuZXRjX3J4YmRyX3JlZ3NbXSA9IHtcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCB1MzIgZW5ldGNfcG9ydF9yZWdzW10gPSB7XFxuLVxcdEVORVRDX1BNUiwgRU5FVENfUFNSLCBFTkVUQ19QU0lQTVIsIEVORVRDX1BTSVBNQVIwKDApLFxcbitcXHRFTkVUQ19QTVIsIEVORVRDX1BTUiwgRU5FVENfUFNJUE1NUiwgRU5FVENfUFNJUE1BUjAoMCksXFxuIFxcdEVORVRDX1BTSVBNQVIxKDApLCBFTkVUQ19QVFhNQkFSLCBFTkVUQ19QQ0FQUjAsIEVORVRDX1BDQVBSMSxcXG4gXFx0RU5FVENfUFNJQ0ZHUjAoMCksIEVORVRDX1BSRlNDQVBSLCBFTkVUQ19QVENNU0RVUigwKSxcXG4gXFx0RU5FVENfUE0wX0NNRF9DRkcsIEVORVRDX1BNMF9NQVhGUk0sIEVORVRDX1BNMF9JRl9NT0RFXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmhcXG5pbmRleCBiZjk5YjY1ZDc1OThhYi4uMTZkYTczMmRjNWRlODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfaHcuaFxcbkBAIC0xODAsMTMgKzE4MCwxMyBAQCBlbnVtIGVuZXRjX2Jkcl90eXBlIHtUWCwgUlh9O1xcbiAjZGVmaW5lIEVORVRDX1BNUl9QU1BFRURfMTAwME1cXHRCSVQoOSlcXG4gI2RlZmluZSBFTkVUQ19QTVJfUFNQRUVEXzI1MDBNXFx0QklUKDEwKVxcbiAjZGVmaW5lIEVORVRDX1BTUlxcdFxcdDB4MDAwNCAvKiBSTyAqL1xcbi0jZGVmaW5lIEVORVRDX1BTSVBNUlxcdFxcdDB4MDAxOFxcbi0jZGVmaW5lIEVORVRDX1BTSVBNUl9TRVRfVVAobilcXHRCSVQobikgLyogbiA9IFNJIGluZGV4ICovXFxuLSNkZWZpbmUgRU5FVENfUFNJUE1SX1NFVF9NUChuKVxcdEJJVCgobikgKyAxNilcXG4rI2RlZmluZSBFTkVUQ19QU0lQTU1SXFx0XFx0MHgwMDE4XFxuKyNkZWZpbmUgIFBTSVBNTVJfU0lfTUFDX1VQKG4pXFx0QklUKG4pIC8qIG4gPSBTSSBpbmRleCAqL1xcbisjZGVmaW5lICBQU0lQTU1SX1NJX01BQ19NUChuKVxcdEJJVCgobikgKyAxNilcXG4rXFxuICNkZWZpbmUgRU5FVENfUFNJUFZNUlxcdFxcdDB4MDAxY1xcbi0jZGVmaW5lIEVORVRDX1ZMQU5fUFJPTUlTQ19NQVBfQUxMXFx0MHg3XFxuLSNkZWZpbmUgRU5FVENfUFNJUFZNUl9TRVRfVlAoc2ltYXApXFx0KChzaW1hcCkgXFx1MDAyNiAweDcpXFxuLSNkZWZpbmUgRU5FVENfUFNJUFZNUl9TRVRfVlVUQShzaW1hcClcXHQoKChzaW1hcCkgXFx1MDAyNiAweDcpIFxcdTAwM2NcXHUwMDNjIDE2KVxcbisjZGVmaW5lICBQU0lQVk1SX1NJX1ZMQU5fUChuKVxcdEJJVChuKSAvKiBuID0gU0kgaW5kZXggKi9cXG4rXFxuICNkZWZpbmUgRU5FVENfUFNJUE1BUjAobilcXHQoMHgwMTAwICsgKG4pICogMHg4KSAvKiBuID0gU0kgaW5kZXggKi9cXG4gI2RlZmluZSBFTkVUQ19QU0lQTUFSMShuKVxcdCgweDAxMDQgKyAobikgKiAweDgpXFxuICNkZWZpbmUgRU5FVENfUFZDTENUUlxcdFxcdDB4MDIwOFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jXFxuaW5kZXggMmQ2ODdiYjhjM2EwNjMuLmE1MDk5MjlmODlmMjVmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNcXG5AQCAtNDIsMjYgKzQyLDYgQEAgc3RhdGljIHZvaWQgZW5ldGNfcGZfZGVzdHJveV9wY3Moc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXFxuIFxcdGx5bnhfcGNzX2Rlc3Ryb3kocGNzKTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgZW5ldGNfc2V0X3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBjaGFyIHNpX21hcClcXG4te1xcbi1cXHR1MzIgdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVENfUFNJUFZNUik7XFxuLVxcbi1cXHR2YWwgXFx1MDAyNj0gfkVORVRDX1BTSVBWTVJfU0VUX1ZQKEVORVRDX1ZMQU5fUFJPTUlTQ19NQVBfQUxMKTtcXG4tXFx0ZW5ldGNfcG9ydF93cihodywgRU5FVENfUFNJUFZNUiwgRU5FVENfUFNJUFZNUl9TRVRfVlAoc2lfbWFwKSB8IHZhbCk7XFxuLX1cXG4tXFxuLXN0YXRpYyB2b2lkIGVuZXRjX2VuYWJsZV9zaV92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHNpX2lkeClcXG4te1xcbi1cXHRwZi1cXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwIHw9IEJJVChzaV9pZHgpO1xcbi1cXHRlbmV0Y19zZXRfdmxhbl9wcm9taXNjKFxcdTAwMjZwZi1cXHUwMDNlc2ktXFx1MDAzZWh3LCBwZi1cXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgZW5ldGNfZGlzYWJsZV9zaV92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHNpX2lkeClcXG4te1xcbi1cXHRwZi1cXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwIFxcdTAwMjY9IH5CSVQoc2lfaWR4KTtcXG4tXFx0ZW5ldGNfc2V0X3ZsYW5fcHJvbWlzYyhcXHUwMDI2cGYtXFx1MDAzZXNpLVxcdTAwM2VodywgcGYtXFx1MDAzZXZsYW5fcHJvbWlzY19zaW1hcCk7XFxuLX1cXG4tXFxuIHN0YXRpYyB2b2lkIGVuZXRjX3NldF9pc29sX3ZsYW4oc3RydWN0IGVuZXRjX2h3ICpodywgaW50IHNpLCB1MTYgdmxhbiwgdTggcW9zKVxcbiB7XFxuIFxcdHUzMiB2YWwgPSAwO1xcbkBAIC04MCwzNyArNjAsNiBAQCBzdGF0aWMgdm9pZCBlbmV0Y19hZGRfbWFjX2FkZHJfZW1fZmlsdGVyKHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICpmaWx0ZXIsXFxuIFxcdGZpbHRlci1cXHUwMDNlbWFjX2FkZHJfY250Kys7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIGVuZXRjX2NsZWFyX21hY19odF9mbHQoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkeCwgaW50IHR5cGUpXFxuLXtcXG4tXFx0Ym9vbCBlcnIgPSBzaS1cXHUwMDNlZXJyYXRhIFxcdTAwMjYgRU5FVENfRVJSX1VDTUNTV1A7XFxuLVxcbi1cXHRpZiAodHlwZSA9PSBVQykge1xcbi1cXHRcXHRlbmV0Y19wb3J0X3dyKFxcdTAwMjZzaS1cXHUwMDNlaHcsIEVORVRDX1BTSVVNSEZSMChzaV9pZHgsIGVyciksIDApO1xcbi1cXHRcXHRlbmV0Y19wb3J0X3dyKFxcdTAwMjZzaS1cXHUwMDNlaHcsIEVORVRDX1BTSVVNSEZSMShzaV9pZHgpLCAwKTtcXG4tXFx0fSBlbHNlIHsgLyogTUMgKi9cXG4tXFx0XFx0ZW5ldGNfcG9ydF93cihcXHUwMDI2c2ktXFx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjAoc2lfaWR4LCBlcnIpLCAwKTtcXG4tXFx0XFx0ZW5ldGNfcG9ydF93cihcXHUwMDI2c2ktXFx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjEoc2lfaWR4KSwgMCk7XFxuLVxcdH1cXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgZW5ldGNfc2V0X21hY19odF9mbHQoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkeCwgaW50IHR5cGUsXFxuLVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nIGhhc2gpXFxuLXtcXG4tXFx0Ym9vbCBlcnIgPSBzaS1cXHUwMDNlZXJyYXRhIFxcdTAwMjYgRU5FVENfRVJSX1VDTUNTV1A7XFxuLVxcbi1cXHRpZiAodHlwZSA9PSBVQykge1xcbi1cXHRcXHRlbmV0Y19wb3J0X3dyKFxcdTAwMjZzaS1cXHUwMDNlaHcsIEVORVRDX1BTSVVNSEZSMChzaV9pZHgsIGVyciksXFxuLVxcdFxcdFxcdCAgICAgIGxvd2VyXzMyX2JpdHMoaGFzaCkpO1xcbi1cXHRcXHRlbmV0Y19wb3J0X3dyKFxcdTAwMjZzaS1cXHUwMDNlaHcsIEVORVRDX1BTSVVNSEZSMShzaV9pZHgpLFxcbi1cXHRcXHRcXHQgICAgICB1cHBlcl8zMl9iaXRzKGhhc2gpKTtcXG4tXFx0fSBlbHNlIHsgLyogTUMgKi9cXG4tXFx0XFx0ZW5ldGNfcG9ydF93cihcXHUwMDI2c2ktXFx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjAoc2lfaWR4LCBlcnIpLFxcbi1cXHRcXHRcXHQgICAgICBsb3dlcl8zMl9iaXRzKGhhc2gpKTtcXG4tXFx0XFx0ZW5ldGNfcG9ydF93cihcXHUwMDI2c2ktXFx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjEoc2lfaWR4KSxcXG4tXFx0XFx0XFx0ICAgICAgdXBwZXJfMzJfYml0cyhoYXNoKSk7XFxuLVxcdH1cXG4tfVxcbi1cXG4gc3RhdGljIHZvaWQgZW5ldGNfc3luY19tYWNfZmlsdGVycyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbiB7XFxuIFxcdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICpmID0gcGYtXFx1MDAzZW1hY19maWx0ZXI7XFxuQEAgLTEyMiwxMiArNzEsMTYgQEAgc3RhdGljIHZvaWQgZW5ldGNfc3luY19tYWNfZmlsdGVycyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFERFJfVFlQRTsgaSsrLCBmKyspIHtcXG4gXFx0XFx0Ym9vbCBlbSA9IChmLVxcdTAwM2VtYWNfYWRkcl9jbnQgPT0gMSkgXFx1MDAyNlxcdTAwMjYgKGkgPT0gVUMpO1xcbiBcXHRcXHRib29sIGNsZWFyID0gIWYtXFx1MDAzZW1hY19hZGRyX2NudDtcXG4rXFx0XFx0dTY0IGhhc2g7XFxuIFxcbiBcXHRcXHRpZiAoY2xlYXIpIHtcXG4tXFx0XFx0XFx0aWYgKGkgPT0gVUMpXFxuK1xcdFxcdFxcdGlmIChpID09IFVDKSB7XFxuIFxcdFxcdFxcdFxcdGVuZXRjX2NsZWFyX21hY19mbHRfZW50cnkoc2ksIHBvcyk7XFxuK1xcdFxcdFxcdFxcdGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdGVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7XFxuK1xcdFxcdFxcdH1cXG4gXFxuLVxcdFxcdFxcdGVuZXRjX2NsZWFyX21hY19odF9mbHQoc2ksIDAsIGkpO1xcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0fVxcbiBcXG5AQCAtMTM1LDcgKzg4LDcgQEAgc3RhdGljIHZvaWQgZW5ldGNfc3luY19tYWNfZmlsdGVycyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbiBcXHRcXHRpZiAoZW0pIHtcXG4gXFx0XFx0XFx0aW50IGVycjtcXG4gXFxuLVxcdFxcdFxcdGVuZXRjX2NsZWFyX21hY19odF9mbHQoc2ksIDAsIFVDKTtcXG4rXFx0XFx0XFx0ZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTtcXG4gXFxuIFxcdFxcdFxcdGVyciA9IGVuZXRjX3NldF9tYWNfZmx0X2VudHJ5KHNpLCBwb3MsIGYtXFx1MDAzZW1hY19hZGRyLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBCSVQoMCkpO1xcbkBAIC0xNDcsMTEgKzEwMCwxNSBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zeW5jX21hY19maWx0ZXJzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuIFxcdFxcdFxcdFxcdCBlcnIpO1xcbiBcXHRcXHR9XFxuIFxcbitcXHRcXHRiaXRtYXBfdG9fYXJyNjQoXFx1MDAyNmhhc2gsIGYtXFx1MDAzZW1hY19oYXNoX3RhYmxlLFxcbitcXHRcXHRcXHRcXHRFTkVUQ19NQUREUl9IQVNIX1RCTF9TWik7XFxuIFxcdFxcdC8qIGhhc2ggdGFibGUgZmlsdGVyLCBjbGVhciBFTSBmaWx0ZXIgZm9yIFVDIGVudHJpZXMgKi9cXG4tXFx0XFx0aWYgKGkgPT0gVUMpXFxuK1xcdFxcdGlmIChpID09IFVDKSB7XFxuIFxcdFxcdFxcdGVuZXRjX2NsZWFyX21hY19mbHRfZW50cnkoc2ksIHBvcyk7XFxuLVxcbi1cXHRcXHRlbmV0Y19zZXRfbWFjX2h0X2ZsdChzaSwgMCwgaSwgKmYtXFx1MDAzZW1hY19oYXNoX3RhYmxlKTtcXG4rXFx0XFx0XFx0ZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCBoYXNoKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHNpLCAwLCBoYXNoKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTE1OSwyMSArMTE2LDE3IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3BmX3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4gXFx0c3RydWN0IGVuZXRjX3BmICpwZiA9IGVuZXRjX3NpX3ByaXYocHJpdi1cXHUwMDNlc2kpO1xcbi1cXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXFx1MDAyNnByaXYtXFx1MDAzZXNpLVxcdTAwM2VodztcXG4gXFx0Ym9vbCB1cHJvbSA9IGZhbHNlLCBtcHJvbSA9IGZhbHNlO1xcbiBcXHRzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqZmlsdGVyO1xcbiBcXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xcbi1cXHR1MzIgcHNpcG1yID0gMDtcXG4gXFx0Ym9vbCBlbTtcXG4gXFxuIFxcdGlmIChuZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QUk9NSVNDKSB7XFxuIFxcdFxcdC8qIGVuYWJsZSBwcm9taXNjIG1vZGUgZm9yIFNJMCAoUEYpICovXFxuLVxcdFxcdHBzaXBtciA9IEVORVRDX1BTSVBNUl9TRVRfVVAoMCkgfCBFTkVUQ19QU0lQTVJfU0VUX01QKDApO1xcbiBcXHRcXHR1cHJvbSA9IHRydWU7XFxuIFxcdFxcdG1wcm9tID0gdHJ1ZTtcXG4gXFx0fSBlbHNlIGlmIChuZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9BTExNVUxUSSkge1xcbiBcXHRcXHQvKiBlbmFibGUgbXVsdGkgY2FzdCBwcm9taXNjIG1vZGUgZm9yIFNJMCAoUEYpICovXFxuLVxcdFxcdHBzaXBtciA9IEVORVRDX1BTSVBNUl9TRVRfTVAoMCk7XFxuIFxcdFxcdG1wcm9tID0gdHJ1ZTtcXG4gXFx0fVxcbiBcXG5AQCAtMjExLDkgKzE2NCw4IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3BmX3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiBcXHRcXHQvKiB1cGRhdGUgUEYgZW50cmllcyAqL1xcbiBcXHRcXHRlbmV0Y19zeW5jX21hY19maWx0ZXJzKHBmKTtcXG4gXFxuLVxcdHBzaXBtciB8PSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQ19QU0lQTVIpIFxcdTAwMjZcXG4tXFx0XFx0ICB+KEVORVRDX1BTSVBNUl9TRVRfVVAoMCkgfCBFTkVUQ19QU0lQTVJfU0VUX01QKDApKTtcXG4tXFx0ZW5ldGNfcG9ydF93cihodywgRU5FVENfUFNJUE1SLCBwc2lwbXIpO1xcbitcXHRlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyhwcml2LVxcdTAwM2VzaSwgMCwgdXByb20pO1xcbitcXHRlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhwcml2LVxcdTAwM2VzaSwgMCwgbXByb20pO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBlbmV0Y19zZXRfbG9vcGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZW4pXFxuQEAgLTQ2OSwxMiArNDIxLDExIEBAIHN0YXRpYyB2b2lkIGVuZXRjX2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuIFxcbiBcXHQvKiBzcGxpdCB1cCBSRlMgZW50cmllcyAqL1xcbiBcXHRlbmV0Y19wb3J0X2Fzc2lnbl9yZnNfZW50cmllcyhwZi1cXHUwMDNlc2kpO1xcbi1cXG4gXFx0LyogZW5mb3JjZSBWTEFOIHByb21pc2MgbW9kZSBmb3IgYWxsIFNJcyAqL1xcbi1cXHRwZi1cXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwID0gRU5FVENfVkxBTl9QUk9NSVNDX01BUF9BTEw7XFxuLVxcdGVuZXRjX3NldF92bGFuX3Byb21pc2MoaHcsIHBmLVxcdTAwM2V2bGFuX3Byb21pc2Nfc2ltYXApO1xcbitcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIHBmLVxcdTAwM2V0b3RhbF92ZnMgKyAxOyBpKyspXFxuK1xcdFxcdGVuZXRjX3NldF9zaV92bGFuX3Byb21pc2MocGYtXFx1MDAzZXNpLCBpLCB0cnVlKTtcXG4gXFxuLVxcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BTSVBNUiwgMCk7XFxuK1xcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BTSVBNTVIsIDApO1xcbiBcXG4gXFx0LyogZW5hYmxlIHBvcnQgKi9cXG4gXFx0ZW5ldGNfcG9ydF93cihodywgRU5FVENfUE1SLCBFTkVUQ19QTVJfRU4pO1xcbkBAIC00OTQsMTIgKzQ0NSw5IEBAIHN0YXRpYyBpbnQgZW5ldGNfcGZfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY2hhbmdlZCBcXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUikge1xcbi1cXHRcXHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihwcml2LVxcdTAwM2VzaSk7XFxuK1xcdFxcdGJvb2wgcHJvbWlzYyA9ICEoZmVhdHVyZXMgXFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19GSUxURVIpO1xcbiBcXG4tXFx0XFx0aWYgKCEhKGZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSKSlcXG4tXFx0XFx0XFx0ZW5ldGNfZGlzYWJsZV9zaV92bGFuX3Byb21pc2MocGYsIDApO1xcbi1cXHRcXHRlbHNlXFxuLVxcdFxcdFxcdGVuZXRjX2VuYWJsZV9zaV92bGFuX3Byb21pc2MocGYsIDApO1xcbitcXHRcXHRlbmV0Y19zZXRfc2lfdmxhbl9wcm9taXNjKHByaXYtXFx1MDAzZXNpLCAwLCBwcm9taXNjKTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGNoYW5nZWQgXFx1MDAyNiBORVRJRl9GX0xPT1BCQUNLKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5oXFxuaW5kZXggMjg1YjdlNWM0OGZkYzcuLjU2ZDIzYThhMTFhMDYzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmhcXG5AQCAtMTcsMTIgKzE3LDkgQEAgc3RydWN0IGVuZXRjX3ZmX3N0YXRlIHtcXG4gfTtcXG4gXFxuIHN0cnVjdCBlbmV0Y19wb3J0X2NhcHMge1xcbi1cXHR1MzIgaGFsZl9kdXBsZXg6MTtcXG4tXFx0aW50IG51bV92c2k7XFxuIFxcdGludCBudW1fbXNpeDtcXG4gXFx0aW50IG51bV9yeF9iZHI7XFxuIFxcdGludCBudW1fdHhfYmRyO1xcbi1cXHRpbnQgbWFjX2ZpbHRlcl9udW07XFxuIH07XFxuIFxcbiBzdHJ1Y3QgZW5ldGNfcGY7XFxuQEAgLTQ3LDcgKzQ0LDYgQEAgc3RydWN0IGVuZXRjX3BmIHtcXG4gXFx0c3RydWN0IHdvcmtfc3RydWN0IG1zZ190YXNrO1xcbiBcXHRjaGFyIG1zZ19pbnRfbmFtZVtFTkVUQ19JTlRfTkFNRV9NQVhdO1xcbiBcXG4tXFx0Y2hhciB2bGFuX3Byb21pc2Nfc2ltYXA7IC8qIGJpdG1hcCBvZiBTSXMgaW4gVkxBTiBwcm9taXNjIG1vZGUgKi9cXG4gXFx0REVDTEFSRV9CSVRNQVAodmxhbl9odF9maWx0ZXIsIEVORVRDX1ZMQU5fSFRfU0laRSk7XFxuIFxcdERFQ0xBUkVfQklUTUFQKGFjdGl2ZV92bGFucywgVkxBTl9OX1ZJRCk7XFxuIFxcbkBAIC02MCw4ICs1Niw2IEBAIHN0cnVjdCBlbmV0Y19wZiB7XFxuIFxcbiBcXHRzdHJ1Y3QgZW5ldGNfcG9ydF9jYXBzIGNhcHM7XFxuIFxcdGNvbnN0IHN0cnVjdCBlbmV0Y19wZl9vcHMgKm9wcztcXG4tXFxuLVxcdGludCBudW1fbWZlO1xcdC8qIG51bWJlciBvZiBtYWMgYWRkcmVzcyBmaWx0ZXIgdGFibGUgZW50cmllcyAqL1xcbiB9O1xcbiBcXG4gI2RlZmluZSBwaHlsaW5rX3RvX2VuZXRjX3BmKGNvbmZpZykgXFxcXFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmNcXG5pbmRleCA2ZTVkMmY4Njk5MTUwYi4uZDMyYTE5NWEwNGM5N2UgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jXFxuQEAgLTEsNSArMSw1IEBAXFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMCsgT1IgQlNELTMtQ2xhdXNlKVxcbi0vKiBDb3B5cmlnaHQgMjAyNCBOWFAgKi9cXG4rLyogQ29weXJpZ2h0IDIwMjQtMjAyNiBOWFAgKi9cXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9mc2wvZW5ldGNfbWRpby5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfbWRpby5oXFx1MDAzZVxcbkBAIC04Nyw2ICs4NywxMTIgQEAgaW50IGVuZXRjX3NldHVwX21hY19hZGRyZXNzZXMoc3RydWN0IGRldmljZV9ub2RlICpucCwgc3RydWN0IGVuZXRjX3BmICpwZilcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXR1cF9tYWNfYWRkcmVzc2VzKTtcXG4gXFxuK3ZvaWQgZW5ldGNfc2V0X3NpX3VjX3Byb21pc2Moc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCBib29sIHByb21pc2MpXFxuK3tcXG4rXFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFxcdTAwMjZzaS1cXHUwMDNlaHc7XFxuK1xcdGludCBwc2lwbW1yX29mZjtcXG4rXFx0dTMyIHZhbDtcXG4rXFxuK1xcdGlmIChpc19lbmV0Y19yZXYxKHNpKSlcXG4rXFx0XFx0cHNpcG1tcl9vZmYgPSBFTkVUQ19QU0lQTU1SO1xcbitcXHRlbHNlXFxuK1xcdFxcdHBzaXBtbXJfb2ZmID0gRU5FVEM0X1BTSVBNTVI7XFxuK1xcbitcXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBwc2lwbW1yX29mZik7XFxuK1xcbitcXHRpZiAocHJvbWlzYylcXG4rXFx0XFx0dmFsIHw9IFBTSVBNTVJfU0lfTUFDX1VQKHNpX2lkKTtcXG4rXFx0ZWxzZVxcbitcXHRcXHR2YWwgXFx1MDAyNj0gflBTSVBNTVJfU0lfTUFDX1VQKHNpX2lkKTtcXG4rXFxuK1xcdGVuZXRjX3BvcnRfd3IoaHcsIHBzaXBtbXJfb2ZmLCB2YWwpO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3NldF9zaV91Y19wcm9taXNjKTtcXG4rXFxuK3ZvaWQgZW5ldGNfc2V0X3NpX21jX3Byb21pc2Moc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCBib29sIHByb21pc2MpXFxuK3tcXG4rXFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFxcdTAwMjZzaS1cXHUwMDNlaHc7XFxuK1xcdGludCBwc2lwbW1yX29mZjtcXG4rXFx0dTMyIHZhbDtcXG4rXFxuK1xcdGlmIChpc19lbmV0Y19yZXYxKHNpKSlcXG4rXFx0XFx0cHNpcG1tcl9vZmYgPSBFTkVUQ19QU0lQTU1SO1xcbitcXHRlbHNlXFxuK1xcdFxcdHBzaXBtbXJfb2ZmID0gRU5FVEM0X1BTSVBNTVI7XFxuK1xcbitcXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBwc2lwbW1yX29mZik7XFxuK1xcbitcXHRpZiAocHJvbWlzYylcXG4rXFx0XFx0dmFsIHw9IFBTSVBNTVJfU0lfTUFDX01QKHNpX2lkKTtcXG4rXFx0ZWxzZVxcbitcXHRcXHR2YWwgXFx1MDAyNj0gflBTSVBNTVJfU0lfTUFDX01QKHNpX2lkKTtcXG4rXFxuK1xcdGVuZXRjX3BvcnRfd3IoaHcsIHBzaXBtbXJfb2ZmLCB2YWwpO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3NldF9zaV9tY19wcm9taXNjKTtcXG4rXFxuK3ZvaWQgZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgdTY0IGhhc2gpXFxuK3tcXG4rXFx0aW50IHBzaXVtaGZyMF9vZmYsIHBzaXVtaGZyMV9vZmY7XFxuK1xcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcXHUwMDI2c2ktXFx1MDAzZWh3O1xcbitcXG4rXFx0aWYgKGlzX2VuZXRjX3JldjEoc2kpKSB7XFxuK1xcdFxcdGJvb2wgZXJyID0gc2ktXFx1MDAzZWVycmF0YSBcXHUwMDI2IEVORVRDX0VSUl9VQ01DU1dQO1xcbitcXG4rXFx0XFx0cHNpdW1oZnIwX29mZiA9IEVORVRDX1BTSVVNSEZSMChzaV9pZCwgZXJyKTtcXG4rXFx0XFx0cHNpdW1oZnIxX29mZiA9IEVORVRDX1BTSVVNSEZSMShzaV9pZCk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHBzaXVtaGZyMF9vZmYgPSBFTkVUQzRfUFNJVU1IRlIwKHNpX2lkKTtcXG4rXFx0XFx0cHNpdW1oZnIxX29mZiA9IEVORVRDNF9QU0lVTUhGUjEoc2lfaWQpO1xcbitcXHR9XFxuK1xcbitcXHRlbmV0Y19wb3J0X3dyKGh3LCBwc2l1bWhmcjBfb2ZmLCBsb3dlcl8zMl9iaXRzKGhhc2gpKTtcXG4rXFx0ZW5ldGNfcG9ydF93cihodywgcHNpdW1oZnIxX29mZiwgdXBwZXJfMzJfYml0cyhoYXNoKSk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKTtcXG4rXFxuK3ZvaWQgZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgdTY0IGhhc2gpXFxuK3tcXG4rXFx0aW50IHBzaW1taGZyMF9vZmYsIHBzaW1taGZyMV9vZmY7XFxuK1xcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcXHUwMDI2c2ktXFx1MDAzZWh3O1xcbitcXG4rXFx0aWYgKGlzX2VuZXRjX3JldjEoc2kpKSB7XFxuK1xcdFxcdGJvb2wgZXJyID0gc2ktXFx1MDAzZWVycmF0YSBcXHUwMDI2IEVORVRDX0VSUl9VQ01DU1dQO1xcbitcXG4rXFx0XFx0cHNpbW1oZnIwX29mZiA9IEVORVRDX1BTSU1NSEZSMChzaV9pZCwgZXJyKTtcXG4rXFx0XFx0cHNpbW1oZnIxX29mZiA9IEVORVRDX1BTSU1NSEZSMShzaV9pZCk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHBzaW1taGZyMF9vZmYgPSBFTkVUQzRfUFNJTU1IRlIwKHNpX2lkKTtcXG4rXFx0XFx0cHNpbW1oZnIxX29mZiA9IEVORVRDNF9QU0lNTUhGUjEoc2lfaWQpO1xcbitcXHR9XFxuK1xcbitcXHRlbmV0Y19wb3J0X3dyKGh3LCBwc2ltbWhmcjBfb2ZmLCBsb3dlcl8zMl9iaXRzKGhhc2gpKTtcXG4rXFx0ZW5ldGNfcG9ydF93cihodywgcHNpbW1oZnIxX29mZiwgdXBwZXJfMzJfYml0cyhoYXNoKSk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKTtcXG4rXFxuK3ZvaWQgZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYylcXG4re1xcbitcXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXFx1MDAyNnNpLVxcdTAwM2VodztcXG4rXFx0aW50IHBzaXB2bXJfb2ZmO1xcbitcXHR1MzIgdmFsO1xcbitcXG4rXFx0aWYgKGlzX2VuZXRjX3JldjEoc2kpKVxcbitcXHRcXHRwc2lwdm1yX29mZiA9IEVORVRDX1BTSVBWTVI7XFxuK1xcdGVsc2VcXG4rXFx0XFx0cHNpcHZtcl9vZmYgPSBFTkVUQzRfUFNJUFZNUjtcXG4rXFxuK1xcdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIHBzaXB2bXJfb2ZmKTtcXG4rXFxuK1xcdGlmIChwcm9taXNjKVxcbitcXHRcXHR2YWwgfD0gUFNJUFZNUl9TSV9WTEFOX1Aoc2lfaWQpO1xcbitcXHRlbHNlXFxuK1xcdFxcdHZhbCBcXHUwMDI2PSB+UFNJUFZNUl9TSV9WTEFOX1Aoc2lfaWQpO1xcbitcXG4rXFx0ZW5ldGNfcG9ydF93cihodywgcHNpcHZtcl9vZmYsIHZhbCk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyk7XFxuK1xcbiB2b2lkIGVuZXRjX3BmX25ldGRldl9zZXR1cChzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzICpuZGV2X29wcylcXG4ge1xcbkBAIC0yNzUsNyArMzgxLDggQEAgc3RhdGljIGJvb2wgZW5ldGNfcG9ydF9oYXNfcGNzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuIFxcdHJldHVybiAocGYtXFx1MDAzZWlmX21vZGUgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJIHx8XFxuIFxcdFxcdHBmLVxcdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggfHxcXG4gXFx0XFx0cGYtXFx1MDAzZWlmX21vZGUgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCB8fFxcbi1cXHRcXHRwZi1cXHUwMDNlaWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSSk7XFxuK1xcdFxcdHBmLVxcdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJIHx8XFxuK1xcdFxcdHBmLVxcdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUik7XFxuIH1cXG4gXFxuIGludCBlbmV0Y19tZGlvYnVzX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXFxuQEAgLTMxNiwyNSArNDIzLDQyIEBAIGludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuIHtcXG4gXFx0c3RydWN0IGVuZXRjX3BmICpwZiA9IGVuZXRjX3NpX3ByaXYocHJpdi1cXHUwMDNlc2kpO1xcbiBcXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcXG4rXFx0dW5zaWduZWQgbG9uZyBtYWNfY2FwcztcXG4gXFx0aW50IGVycjtcXG4gXFxuIFxcdHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5kZXYgPSBcXHUwMDI2cHJpdi1cXHUwMDNlbmRldi1cXHUwMDNlZGV2O1xcbiBcXHRwZi1cXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xcbi1cXHRwZi1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRSB8XFxuLVxcdFxcdE1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMCB8IE1BQ18yNTAwRkQ7XFxuIFxcbiBcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbiBcXHRcXHQgIHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuLVxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfU0dNSUksXFxuLVxcdFxcdCAgcGYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4tXFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgsXFxuLVxcdFxcdCAgcGYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4tXFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsXFxuLVxcdFxcdCAgcGYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4tXFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJLFxcbi1cXHRcXHQgIHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuLVxcdHBoeV9pbnRlcmZhY2Vfc2V0X3JnbWlpKHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuIFxcbitcXHRtYWNfY2FwcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTtcXG4rXFx0aWYgKCFlbmV0Y19pc19wc2V1ZG9fbWFjKHByaXYtXFx1MDAzZXNpKSkge1xcbitcXHRcXHRtYWNfY2FwcyB8PSBNQUNfMTAgfCBNQUNfMTAwIHwgTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQ7XFxuK1xcbitcXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLFxcbitcXHRcXHRcXHQgIHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuK1xcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYLFxcbitcXHRcXHRcXHQgIHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuK1xcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLFxcbitcXHRcXHRcXHQgIHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuK1xcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSSxcXG4rXFx0XFx0XFx0ICBwZi1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbitcXG4rXFx0XFx0aWYgKCFpc19lbmV0Y19yZXYxKHByaXYtXFx1MDAzZXNpKSkge1xcbitcXHRcXHRcXHRtYWNfY2FwcyB8PSBNQUNfNTAwMEZEIHwgTUFDXzEwMDAwRkQ7XFxuK1xcdFxcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIsXFxuK1xcdFxcdFxcdFxcdCAgcGYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cGh5X2ludGVyZmFjZV9zZXRfcmdtaWkocGYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0bWFjX2NhcHMgfD0gTUFDXzEwRkQgfCBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRCB8XFxuK1xcdFxcdFxcdCAgICBNQUNfNTAwMEZEIHwgTUFDXzEwMDAwRkQgfCBNQUNfMjAwMDBGRCB8XFxuK1xcdFxcdFxcdCAgICBNQUNfMjUwMDBGRDtcXG4rXFx0fVxcbitcXG4rXFx0cGYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBtYWNfY2FwcztcXG4gXFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwZi1cXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXFxuIFxcdFxcdFxcdFxcdCBwZi1cXHUwMDNlaWZfbW9kZSwgb3BzKTtcXG4gXFx0aWYgKElTX0VSUihwaHlsaW5rKSkge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmhcXG5pbmRleCA1N2QyZTBlYmQyYjBiYi4uODI0M2NlMGRlNTdmNjQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oXFxuQEAgLTE3LDYgKzE3LDExIEBAIHZvaWQgZW5ldGNfc2V0X2RlZmF1bHRfcnNzX2tleShzdHJ1Y3QgZW5ldGNfcGYgKnBmKTtcXG4gaW50IGVuZXRjX3ZsYW5fcnhfYWRkX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgX19iZTE2IHByb3QsIHUxNiB2aWQpO1xcbiBpbnQgZW5ldGNfdmxhbl9yeF9kZWxfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBfX2JlMTYgcHJvdCwgdTE2IHZpZCk7XFxuIGludCBlbmV0Y19pbml0X3NyaW92X3Jlc291cmNlcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKTtcXG4rdm9pZCBlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYyk7XFxuK3ZvaWQgZW5ldGNfc2V0X3NpX21jX3Byb21pc2Moc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCBib29sIHByb21pc2MpO1xcbit2b2lkIGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIHU2NCBoYXNoKTtcXG4rdm9pZCBlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCB1NjQgaGFzaCk7XFxuK3ZvaWQgZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYyk7XFxuIFxcbiBzdGF0aWMgaW5saW5lIHUxNiBlbmV0Y19nZXRfaXBfcmV2aXNpb24oc3RydWN0IGVuZXRjX2h3ICpodylcXG4ge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcW9zLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcW9zLmNcXG5pbmRleCA3YjE3YmNhMjRmMjYwZi4uMmFhMGZjYWFmY2QyM2MgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3Fvcy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3Fvcy5jXFxuQEAgLTExMzUsNyArMTEzNSw2IEBAIHN0YXRpYyBpbnQgZW5ldGNfcHNmcF9wYXJzZV9jbHNmbG93ZXIoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdixcXG4gXFx0c3RydWN0IGZsb3dfYWN0aW9uX2VudHJ5ICplbnRyeTtcXG4gXFx0c3RydWN0IGFjdGlvbl9nYXRlX2VudHJ5ICplO1xcbiBcXHR1OCBzZmlfb3ZlcndyaXRlID0gMDtcXG4tXFx0aW50IGVudHJpZXNfc2l6ZTtcXG4gXFx0aW50IGksIGVycjtcXG4gXFxuIFxcdGlmIChmLVxcdTAwM2Vjb21tb24uY2hhaW5faW5kZXggXFx1MDAzZT0gcHJpdi1cXHUwMDNlcHNmcF9jYXAubWF4X3N0cmVhbWlkKSB7XFxuQEAgLTEyNDIsOCArMTI0MSw3IEBAIHN0YXRpYyBpbnQgZW5ldGNfcHNmcF9wYXJzZV9jbHNmbG93ZXIoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdixcXG4gXFx0XFx0Z290byBmcmVlX2ZpbHRlcjtcXG4gXFx0fVxcbiBcXG4tXFx0ZW50cmllc19zaXplID0gc3RydWN0X3NpemUoc2dpLCBlbnRyaWVzLCBlbnRyeWctXFx1MDAzZWdhdGUubnVtX2VudHJpZXMpO1xcbi1cXHRzZ2kgPSBremFsbG9jKGVudHJpZXNfc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuK1xcdHNnaSA9IGt6YWxsb2NfZmxleCgqc2dpLCBlbnRyaWVzLCBlbnRyeWctXFx1MDAzZWdhdGUubnVtX2VudHJpZXMpO1xcbiBcXHRpZiAoIXNnaSkge1xcbiBcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiBcXHRcXHRnb3RvIGZyZWVfZmlsdGVyO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jXFxuaW5kZXggOWNkYjBhNGQ2YmFmYjcuLjdkY2I0YTAyNDZmNTI4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmNcXG5AQCAtMzE3LDcgKzMxNywxNCBAQCBzdGF0aWMgaW50IGVuZXRjX3ZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiBcXG4gXFx0ZW5ldGNfZ2V0X3NpX2NhcHMoc2kpO1xcbiBcXG4tXFx0bmRldiA9IGFsbG9jX2V0aGVyZGV2X21xKHNpemVvZigqcHJpdiksIEVORVRDX01BWF9OVU1fVFhRUyk7XFxuK1xcdC8qIEN1cnJlbnRseSwgdGhlIHN1cHBvcnRlZCBTb0NzIGhhdmUgYSBtYXggb2YgNiBDUFVzIGFuZCB0aGUgVkZzXFxuK1xcdCAqIGhhdmUgbGVzcyB0aGFuIDYgUlgvVFggcmluZ3MuIFNvIG5vIGlzc3VlcyBmb3IgdGhlc2Ugc3VwcG9ydGVkXFxuK1xcdCAqIFNvQ3MsIGJ1dCBmb3IgZnV0dXJlIFNvQ3Mgd2hpY2ggaGF2ZSBtb3JlIENQVXMgb3IgbW9yZSBUWC9SWFxcbitcXHQgKiByaW5ncywgYWxsIHRoZSByZWxhdGVkIGxvZ2ljIG5lZWRzIHRvIGJlIGltcHJvdmVkLlxcbitcXHQgKi9cXG4rXFx0bmRldiA9IGFsbG9jX2V0aGVyZGV2X21xcyhzaXplb2YoKnByaXYpLFxcbitcXHRcXHRcXHRcXHQgIG1pbihzaS1cXHUwMDNlbnVtX3R4X3JpbmdzLCBFTkVUQ19NQVhfTlVNX1RYUVMpLFxcbitcXHRcXHRcXHRcXHQgIG1pbihzaS1cXHUwMDNlbnVtX3J4X3JpbmdzLCBFTkVUQ19NQVhfTlVNX1RYUVMpKTtcXG4gXFx0aWYgKCFuZGV2KSB7XFxuIFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIm5ldGRldiBjcmVhdGlvbiBmYWlsZWRcXFxcblxcXCIpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzbC9udG1wLmggYi9pbmNsdWRlL2xpbnV4L2ZzbC9udG1wLmhcXG5pbmRleCBkM2I2YzQ3NmI5MWEyZC4uNzY0ZWYyODkyNjA4NWUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9mc2wvbnRtcC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9mc2wvbnRtcC5oXFxuQEAgLTc1LDggKzc1LDEwIEBAIHN0cnVjdCBudG1wX3VzZXIge1xcbiBcXHQvKiBOVE1QIHRhYmxlIGJpdG1hcHMgZm9yIHJlc291cmNlIG1hbmFnZW1lbnQgKi9cXG4gXFx0dTMyIGV0dF9iaXRtYXBfc2l6ZTtcXG4gXFx0dTMyIGVjdF9iaXRtYXBfc2l6ZTtcXG4rXFx0dTE2IG1hZnRfbnVtX2VudHJpZXM7XFxuIFxcdHVuc2lnbmVkIGxvbmcgKmV0dF9naWRfYml0bWFwOyAvKiBvbmx5IHZhbGlkIGZvciBzd2l0Y2ggKi9cXG4gXFx0dW5zaWduZWQgbG9uZyAqZWN0X2dpZF9iaXRtYXA7IC8qIG9ubHkgdmFsaWQgZm9yIHN3aXRjaCAqL1xcbitcXHR1bnNpZ25lZCBsb25nICptYWZ0X2VpZF9iaXRtYXA7IC8qIG9ubHkgdmFsaWQgZm9yIEVORVRDICovXFxuIH07XFxuIFxcbiBzdHJ1Y3QgbWFmdF9lbnRyeV9kYXRhIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDY6NTUuMDIyMjc2MTQ2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzc3MjU0NTgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBFTkVUQyBldGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGhhcmR3YXJlLXNwZWNpZmljIHRvIE5YUCBTb0NzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhYjU3ZTY4N2YzM2UwNzgzNzlhODllMmIyZmQ1Y2EzYjQ0NzFlMTIzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNjowNjo1MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmhcbmluZGV4IDA0YTVkZDVlYTZjNzRjLi44ODM5Y2ZiNDliY2ZlOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaFxuQEAgLTEsNSArMSw1IEBAXG4gLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wKyBPUiBCU0QtMy1DbGF1c2UpICovXG4tLyogQ29weXJpZ2h0IDIwMTctMjAxOSBOWFAgKi9cbisvKiBDb3B5cmlnaHQgMjAxNy0yMDE5LCAyMDI1LTIwMjYgTlhQICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdGltZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BjaS5oXHUwMDNlXG5AQCAtMzI0LDggKzMyNCw2IEBAIHN0cnVjdCBlbmV0Y19zaSB7XG4gXHRjb25zdCBzdHJ1Y3QgZW5ldGNfZHJ2ZGF0YSAqZHJ2ZGF0YTtcbiBcdGNvbnN0IHN0cnVjdCBlbmV0Y19zaV9vcHMgKm9wcztcbiBcbi1cdHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3b3JrcXVldWU7XG4tXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcnhfbW9kZV90YXNrO1xuIFx0c3RydWN0IGRlbnRyeSAqZGVidWdmc19yb290O1xuIFx0c3RydWN0IGVuZXRjX21zZ19zd2JkIG1zZzsgLyogT25seSB2YWxpZCBmb3IgVlNJICovXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfZGVidWdmcy5jXG5pbmRleCAxYjE1OTFkY2U3M2Q0Yi4uNTAyOTAzOGJmOTlmYWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2RlYnVnZnMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9kZWJ1Z2ZzLmNcbkBAIC0yOCwxNSArMjgsMTQgQEAgc3RhdGljIHZvaWQgZW5ldGNfc2hvd19zaV9tYWNfaGFzaF9maWx0ZXIoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgaSlcbiBcbiBzdGF0aWMgaW50IGVuZXRjX21hY19maWx0ZXJfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG4ge1xuLVx0c3RydWN0IGVuZXRjX3NpICpzaSA9IHMtXHUwMDNlcHJpdmF0ZTtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZzaS1cdTAwM2VodztcbitcdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBlbmV0Y19zaV9wcml2KHMtXHUwMDNlcHJpdmF0ZSk7XG4rXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2cGYtXHUwMDNlc2ktXHUwMDNlaHc7XG4rXHRpbnQgbnVtX3NpID0gcGYtXHUwMDNldG90YWxfdmZzICsgMTtcbiBcdHN0cnVjdCBtYWZ0X2VudHJ5X2RhdGEgbWFmdDtcbi1cdHN0cnVjdCBlbmV0Y19wZiAqcGY7XG4tXHRpbnQgaSwgZXJyLCBudW1fc2k7XG4tXHR1MzIgdmFsO1xuLVxuLVx0cGYgPSBlbmV0Y19zaV9wcml2KHNpKTtcbi1cdG51bV9zaSA9IHBmLVx1MDAzZWNhcHMubnVtX3ZzaSArIDE7XG4rXHRzdHJ1Y3QgbnRtcF91c2VyICp1c2VyO1xuK1x0dTMyIHZhbCwgZW50cnlfaWQ7XG4rXHRpbnQgZXJyID0gMDtcbitcdGludCBpO1xuIFxuIFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSVBNTVIpO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3NpOyBpKyspIHtcbkBAIC01MCwzMSArNDksMzggQEAgc3RhdGljIGludCBlbmV0Y19tYWNfZmlsdGVyX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3NpOyBpKyspXG4gXHRcdGVuZXRjX3Nob3dfc2lfbWFjX2hhc2hfZmlsdGVyKHMsIGkpO1xuIFxuLVx0aWYgKCFwZi1cdTAwM2VudW1fbWZlKVxuLVx0XHRyZXR1cm4gMDtcbitcdHVzZXIgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VudG1wX3VzZXI7XG4rXHRydG5sX2xvY2soKTtcbitcbitcdGlmIChiaXRtYXBfZW1wdHkodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAsIHVzZXItXHUwMDNlbWFmdF9udW1fZW50cmllcykpXG4rXHRcdGdvdG8gdW5sb2NrX3J0bmw7XG4gXG4gXHQvKiBNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGUgKi9cbiBcdHNlcV9wdXRzKHMsIFwiTUFDIGFkZHJlc3MgZmlsdGVyIHRhYmxlXFxuXCIpO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNlbnVtX21mZTsgaSsrKSB7XG4rXHRmb3JfZWFjaF9zZXRfYml0KGVudHJ5X2lkLCB1c2VyLVx1MDAzZW1hZnRfZWlkX2JpdG1hcCxcbitcdFx0XHQgdXNlci1cdTAwM2VtYWZ0X251bV9lbnRyaWVzKSB7XG4gXHRcdG1lbXNldChcdTAwMjZtYWZ0LCAwLCBzaXplb2YobWFmdCkpO1xuLVx0XHRlcnIgPSBudG1wX21hZnRfcXVlcnlfZW50cnkoXHUwMDI2c2ktXHUwMDNlbnRtcF91c2VyLCBpLCBcdTAwMjZtYWZ0KTtcbitcdFx0ZXJyID0gbnRtcF9tYWZ0X3F1ZXJ5X2VudHJ5KHVzZXIsIGVudHJ5X2lkLCBcdTAwMjZtYWZ0KTtcbiBcdFx0aWYgKGVycilcbi1cdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHRcdGdvdG8gdW5sb2NrX3J0bmw7XG4gXG4tXHRcdHNlcV9wcmludGYocywgXCJFbnRyeSAlZCwgTUFDOiAlcE0sIFNJIGJpdG1hcDogMHglMDR4XFxuXCIsIGksXG4tXHRcdFx0ICAgbWFmdC5rZXllLm1hY19hZGRyLCBsZTE2X3RvX2NwdShtYWZ0LmNmZ2Uuc2lfYml0bWFwKSk7XG4rXHRcdHNlcV9wcmludGYocywgXCJFbnRyeSAlZCwgTUFDOiAlcE0sIFNJIGJpdG1hcDogMHglMDR4XFxuXCIsXG4rXHRcdFx0ICAgZW50cnlfaWQsIG1hZnQua2V5ZS5tYWNfYWRkcixcbitcdFx0XHQgICBsZTE2X3RvX2NwdShtYWZ0LmNmZ2Uuc2lfYml0bWFwKSk7XG4gXHR9XG4gXG4tXHRyZXR1cm4gMDtcbit1bmxvY2tfcnRubDpcbitcdHJ0bmxfdW5sb2NrKCk7XG4rXG4rXHRyZXR1cm4gZXJyO1xuIH1cbiBERUZJTkVfU0hPV19BVFRSSUJVVEUoZW5ldGNfbWFjX2ZpbHRlcik7XG4gXG4gdm9pZCBlbmV0Y19jcmVhdGVfZGVidWdmcyhzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxuIHtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gc2ktXHUwMDNlbmRldjtcbiBcdHN0cnVjdCBkZW50cnkgKnJvb3Q7XG4gXG4tXHRyb290ID0gZGVidWdmc19jcmVhdGVfZGlyKG5ldGRldl9uYW1lKG5kZXYpLCBOVUxMKTtcbitcdHJvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIocGNpX25hbWUoc2ktXHUwMDNlcGRldiksIE5VTEwpO1xuIFx0aWYgKElTX0VSUihyb290KSlcbiBcdFx0cmV0dXJuO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaFxuaW5kZXggZjE4NDM3NTU2YTBlZTIuLjA5MDI1ZTdhMmEzYWVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9ody5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2h3LmhcbkBAIC02OSw4ICs2OSw2IEBAXG4gXG4gLyogUG9ydCBTdGF0aW9uIGludGVyZmFjZSBwcm9taXNjdW91cyBNQUMgbW9kZSByZWdpc3RlciAqL1xuICNkZWZpbmUgRU5FVEM0X1BTSVBNTVJcdFx0XHQweDIwMFxuLSNkZWZpbmUgIFBTSVBNTVJfU0lfTUFDX1VQKGEpXHRcdEJJVChhKSAvKiBhID0gU0kgaW5kZXggKi9cbi0jZGVmaW5lICBQU0lQTU1SX1NJX01BQ19NUChhKVx0XHRCSVQoKGEpICsgMTYpXG4gXG4gLyogUG9ydCBTdGF0aW9uIGludGVyZmFjZSBwcm9taXNjdW91cyBWTEFOIG1vZGUgcmVnaXN0ZXIgKi9cbiAjZGVmaW5lIEVORVRDNF9QU0lQVk1SXHRcdFx0MHgyMDRcbkBAIC0xMzcsNyArMTM1LDYgQEBcbiAjZGVmaW5lIEVORVRDNF9QU0lWSEZSMShhKVx0XHQoKGEpICogMHg4MCArIDB4MjA2NClcbiBcbiAjZGVmaW5lIEVORVRDNF9QTUNBUFJcdFx0XHQweDQwMDRcbi0jZGVmaW5lICBQTUNBUFJfSERcdFx0XHRCSVQoOClcbiAjZGVmaW5lICBQTUNBUFJfRlBcdFx0XHRHRU5NQVNLKDEwLCA5KVxuIFxuIC8qIFBvcnQgY2FwYWJpbGl0eSByZWdpc3RlciAqL1xuQEAgLTE1MCw3ICsxNDcsNyBAQFxuICNkZWZpbmUgIFBDUl9MMkRPU0VcdFx0XHRCSVQoNClcbiAjZGVmaW5lICBQQ1JfVElNRVJfQ1NcdFx0XHRCSVQoOClcbiAjZGVmaW5lICBQQ1JfUFNQRUVEXHRcdFx0R0VOTUFTSygyOSwgMTYpXG4tI2RlZmluZSAgUENSX1BTUEVFRF9WQUwoc3BlZWQpXHRcdCgoKHNwZWVkKSAvIDEwIC0gMSkgXHUwMDNjXHUwMDNjIDE2KVxuKyNkZWZpbmUgIFBDUl9QU1BFRURfVkFMKHMpXHRcdEZJRUxEX1BSRVAoUENSX1BTUEVFRCwgKChzKSAvIDEwIC0gMSkpXG4gXG4gLyogUG9ydCBNQUMgYWRkcmVzcyByZWdpc3RlciAwLzEgKi9cbiAjZGVmaW5lIEVORVRDNF9QTUFSMFx0XHRcdDB4NDAyMFxuQEAgLTIwMCw3ICsxOTcsNiBAQFxuICNkZWZpbmUgIFBNX0NNRF9DRkdfQ05UX0ZSTV9FTlx0XHRCSVQoMTMpXG4gI2RlZmluZSAgUE1fQ01EX0NGR19UWFBcdFx0XHRCSVQoMTUpXG4gI2RlZmluZSAgUE1fQ01EX0NGR19TRU5EX0lETEVcdFx0QklUKDE2KVxuLSNkZWZpbmUgIFBNX0NNRF9DRkdfSERfRkNFTlx0XHRCSVQoMTgpXG4gI2RlZmluZSAgUE1fQ01EX0NGR19TRkRcdFx0XHRCSVQoMjEpXG4gI2RlZmluZSAgUE1fQ01EX0NGR19UWF9GTFVTSFx0XHRCSVQoMjIpXG4gI2RlZmluZSAgUE1fQ01EX0NGR19UWF9MT1dQX0VOXHRcdEJJVCgyMylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcbmluZGV4IDQzN2ExNWJiYjQ3YmE4Li5mY2ZiYWJiMjlkMjJlNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXG5AQCAtMjMsMTggKzIzLDExIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9nZXRfcG9ydF9jYXBzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXHR1MzIgdmFsO1xuIFxuIFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X0VDQVBSMSk7XG4tXHRwZi1cdTAwM2VjYXBzLm51bV92c2kgPSAodmFsIFx1MDAyNiBFQ0FQUjFfTlVNX1ZTSSkgXHUwMDNlXHUwMDNlIDI0O1xuIFx0cGYtXHUwMDNlY2Fwcy5udW1fbXNpeCA9ICgodmFsIFx1MDAyNiBFQ0FQUjFfTlVNX01TSVgpIFx1MDAzZVx1MDAzZSAxMikgKyAxO1xuIFxuIFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X0VDQVBSMik7XG4gXHRwZi1cdTAwM2VjYXBzLm51bV9yeF9iZHIgPSAodmFsIFx1MDAyNiBFQ0FQUjJfTlVNX1JYX0JEUikgXHUwMDNlXHUwMDNlIDE2O1xuIFx0cGYtXHUwMDNlY2Fwcy5udW1fdHhfYmRyID0gdmFsIFx1MDAyNiBFQ0FQUjJfTlVNX1RYX0JEUjtcbi1cbi1cdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QTUNBUFIpO1xuLVx0cGYtXHUwMDNlY2Fwcy5oYWxmX2R1cGxleCA9ICh2YWwgXHUwMDI2IFBNQ0FQUl9IRCkgPyAxIDogMDtcbi1cbi1cdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lNQUZDQVBSKTtcbi1cdHBmLVx1MDAzZWNhcHMubWFjX2ZpbHRlcl9udW0gPSB2YWwgXHUwMDI2IFBTSU1BRkNBUFJfTlVNX01BQ19BRlRFO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbmV0YzRfZ2V0X3BzaV9od19mZWF0dXJlcyhzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxuQEAgLTc1LDM4ICs2OCw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9nZXRfc2lfcHJpbWFyeV9tYWMoc3RydWN0IGVuZXRjX2h3ICpodywgaW50IHNpLFxuIFx0cHV0X3VuYWxpZ25lZF9sZTE2KGxvd2VyLCBhZGRyICsgNCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfc2lfbWFjX3Byb21pc2Moc3RydWN0IGVuZXRjX2h3ICpodywgaW50IHNpLFxuLVx0XHRcdFx0XHQgYm9vbCB1Y19wcm9taXNjLCBib29sIG1jX3Byb21pc2MpXG4te1xuLVx0dTMyIHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lQTU1SKTtcbi1cbi1cdGlmICh1Y19wcm9taXNjKVxuLVx0XHR2YWwgfD0gUFNJUE1NUl9TSV9NQUNfVVAoc2kpO1xuLVx0ZWxzZVxuLVx0XHR2YWwgXHUwMDI2PSB+UFNJUE1NUl9TSV9NQUNfVVAoc2kpO1xuLVxuLVx0aWYgKG1jX3Byb21pc2MpXG4tXHRcdHZhbCB8PSBQU0lQTU1SX1NJX01BQ19NUChzaSk7XG4tXHRlbHNlXG4tXHRcdHZhbCBcdTAwMjY9IH5QU0lQTU1SX1NJX01BQ19NUChzaSk7XG4tXG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJUE1NUiwgdmFsKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksXG4tXHRcdFx0XHRcdCAgICB1NjQgaGFzaClcbi17XG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJVU1IRlIwKHNpKSwgbG93ZXJfMzJfYml0cyhoYXNoKSk7XG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJVU1IRlIxKHNpKSwgdXBwZXJfMzJfYml0cyhoYXNoKSk7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfc2lfbWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX2h3ICpodywgaW50IHNpLFxuLVx0XHRcdFx0XHQgICAgdTY0IGhhc2gpXG4te1xuLVx0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSU1NSEZSMChzaSksIGxvd2VyXzMyX2JpdHMoaGFzaCkpO1xuLVx0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSU1NSEZSMShzaSksIHVwcGVyXzMyX2JpdHMoaGFzaCkpO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X2xvb3BiYWNrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBib29sIGVuKVxuIHtcbiBcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbkBAIC0xMjQsMzQgKzg1LDQ3IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbG9vcGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZW4pXG4gXG4gc3RhdGljIHZvaWQgZW5ldGM0X3BmX2NsZWFyX21hZnRfZW50cmllcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIHtcbi1cdGludCBpO1xuK1x0c3RydWN0IG50bXBfdXNlciAqdXNlciA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZW50bXBfdXNlcjtcbitcdHUzMiBlbnRyeV9pZDtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBmLVx1MDAzZW51bV9tZmU7IGkrKylcbi1cdFx0bnRtcF9tYWZ0X2RlbGV0ZV9lbnRyeShcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VudG1wX3VzZXIsIGkpO1xuLVxuLVx0cGYtXHUwMDNlbnVtX21mZSA9IDA7XG4rXHRmb3JfZWFjaF9zZXRfYml0KGVudHJ5X2lkLCB1c2VyLVx1MDAzZW1hZnRfZWlkX2JpdG1hcCxcbitcdFx0XHQgdXNlci1cdTAwM2VtYWZ0X251bV9lbnRyaWVzKSB7XG4rXHRcdGlmICghbnRtcF9tYWZ0X2RlbGV0ZV9lbnRyeSh1c2VyLCBlbnRyeV9pZCkpXG4rXHRcdFx0bnRtcF9jbGVhcl9laWRfYml0bWFwKHVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwLCBlbnRyeV9pZCk7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyBpbnQgZW5ldGM0X3BmX2FkZF9tYWZ0X2VudHJpZXMoc3RydWN0IGVuZXRjX3BmICpwZixcbi1cdFx0XHRcdCAgICAgIHN0cnVjdCBlbmV0Y19tYWNfYWRkciAqbWFjLFxuLVx0XHRcdFx0ICAgICAgaW50IG1hY19jbnQpXG4rXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMpXG4ge1xuK1x0c3RydWN0IG50bXBfdXNlciAqdXNlciA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZW50bXBfdXNlcjtcbitcdGludCBtYWNfY250ID0gbmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1Yyk7XG4gXHRzdHJ1Y3QgbWFmdF9lbnRyeV9kYXRhIG1hZnQgPSB7fTtcbitcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XG4rXHR1MzIgYXZhaWxhYmxlX2VudHJpZXM7XG4gXHR1MTYgc2lfYml0ID0gQklUKDApO1xuLVx0aW50IGksIGVycjtcbitcdHUzMiBlbnRyeV9pZDtcbitcdGludCBlcnI7XG4rXG4rXHRhdmFpbGFibGVfZW50cmllcyA9IHVzZXItXHUwMDNlbWFmdF9udW1fZW50cmllcyAtXG4rXHRcdFx0ICAgIGJpdG1hcF93ZWlnaHQodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAsXG4rXHRcdFx0XHRcdCAgdXNlci1cdTAwM2VtYWZ0X251bV9lbnRyaWVzKTtcbitcbitcdGlmIChtYWNfY250IFx1MDAzZSBhdmFpbGFibGVfZW50cmllcylcbitcdFx0cmV0dXJuIC1FTk9TUEM7XG4gXG4gXHRtYWZ0LmNmZ2Uuc2lfYml0bWFwID0gY3B1X3RvX2xlMTYoc2lfYml0KTtcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG1hY19jbnQ7IGkrKykge1xuLVx0XHRldGhlcl9hZGRyX2NvcHkobWFmdC5rZXllLm1hY19hZGRyLCBtYWNbaV0uYWRkcik7XG4tXHRcdGVyciA9IG50bXBfbWFmdF9hZGRfZW50cnkoXHUwMDI2cGYtXHUwMDNlc2ktXHUwMDNlbnRtcF91c2VyLCBpLCBcdTAwMjZtYWZ0KTtcbitcdG5ldGRldl9od19hZGRyX2xpc3RfZm9yX2VhY2goaGEsIHVjKSB7XG4rXHRcdGVudHJ5X2lkID0gbnRtcF9sb29rdXBfZnJlZV9laWQodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAsXG4rXHRcdFx0XHRcdFx0dXNlci1cdTAwM2VtYWZ0X251bV9lbnRyaWVzKTtcbitcdFx0ZXRoZXJfYWRkcl9jb3B5KG1hZnQua2V5ZS5tYWNfYWRkciwgaGEtXHUwMDNlYWRkcik7XG4rXHRcdGVyciA9IG50bXBfbWFmdF9hZGRfZW50cnkodXNlciwgZW50cnlfaWQsIFx1MDAyNm1hZnQpO1xuIFx0XHRpZiAodW5saWtlbHkoZXJyKSkge1xuLVx0XHRcdHBmLVx1MDAzZW51bV9tZmUgPSBpO1xuK1x0XHRcdG50bXBfY2xlYXJfZWlkX2JpdG1hcCh1c2VyLVx1MDAzZW1hZnRfZWlkX2JpdG1hcCwgZW50cnlfaWQpO1xuIFx0XHRcdGdvdG8gY2xlYXJfbWFmdF9lbnRyaWVzO1xuIFx0XHR9XG4gXHR9XG4gXG4tXHRwZi1cdTAwM2VudW1fbWZlID0gbWFjX2NudDtcbi1cbiBcdHJldHVybiAwO1xuIFxuIGNsZWFyX21hZnRfZW50cmllczpcbkBAIC0xNjAsOTcgKzEzNCw3MCBAQCBzdGF0aWMgaW50IGVuZXRjNF9wZl9hZGRfbWFmdF9lbnRyaWVzKHN0cnVjdCBlbmV0Y19wZiAqcGYsXG4gXHRyZXR1cm4gIGVycjtcbiB9XG4gXG4tc3RhdGljIGludCBlbmV0YzRfcGZfc2V0X3VjX2V4YWN0X2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuK3N0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfdWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZixcbitcdFx0XHRcdFx0IHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YylcbiB7XG4tXHRpbnQgbWF4X251bV9tZmUgPSBwZi1cdTAwM2VjYXBzLm1hY19maWx0ZXJfbnVtO1xuLVx0c3RydWN0IGVuZXRjX21hY19maWx0ZXIgbWFjX2ZpbHRlciA9IHt9O1xuLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBwZi1cdTAwM2VzaS1cdTAwM2VuZGV2O1xuLVx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZWh3O1xuLVx0c3RydWN0IGVuZXRjX21hY19hZGRyICptYWNfdGJsO1xuK1x0c3RydWN0IGVuZXRjX21hY19maWx0ZXIgKm1hY19maWx0ZXIgPSBcdTAwMjZwZi1cdTAwM2VtYWNfZmlsdGVyW1VDXTtcbiBcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XG4tXHRpbnQgaSA9IDAsIGVycjtcbi1cdGludCBtYWNfY250O1xuK1x0dTY0IGhhc2g7XG4gXG4tXHRuZXRpZl9hZGRyX2xvY2tfYmgobmRldik7XG4rXHRlbmV0Y19yZXNldF9tYWNfYWRkcl9maWx0ZXIobWFjX2ZpbHRlcik7XG4rXHRuZXRkZXZfaHdfYWRkcl9saXN0X2Zvcl9lYWNoKGhhLCB1YylcbitcdFx0ZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihtYWNfZmlsdGVyLCBoYS1cdTAwM2VhZGRyKTtcbitcbitcdGJpdG1hcF90b19hcnI2NChcdTAwMjZoYXNoLCBtYWNfZmlsdGVyLVx1MDAzZW1hY19oYXNoX3RhYmxlLFxuK1x0XHRcdEVORVRDX01BRERSX0hBU0hfVEJMX1NaKTtcbitcdGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihwZi1cdTAwM2VzaSwgMCwgaGFzaCk7XG4rfVxuIFxuLVx0bWFjX2NudCA9IG5ldGRldl91Y19jb3VudChuZGV2KTtcbi1cdGlmICghbWFjX2NudCkge1xuLVx0XHRuZXRpZl9hZGRyX3VubG9ja19iaChuZGV2KTtcbitzdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYsXG4rXHRcdFx0XHRcdCBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMpXG4re1xuK1x0c3RydWN0IGVuZXRjX3NpICpzaSA9IHBmLVx1MDAzZXNpO1xuK1x0aW50IGVycjtcbitcbitcdGlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2VtcHR5KHVjKSkge1xuIFx0XHQvKiBjbGVhciBib3RoIE1BQyBoYXNoIGFuZCBleGFjdCBmaWx0ZXJzICovXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApO1xuK1x0XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuIFx0XHRlbmV0YzRfcGZfY2xlYXJfbWFmdF9lbnRyaWVzKHBmKTtcbiBcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHRpZiAobWFjX2NudCBcdTAwM2UgbWF4X251bV9tZmUpIHtcbi1cdFx0ZXJyID0gLUVOT1NQQztcbi1cdFx0Z290byB1bmxvY2tfbmV0aWZfYWRkcjtcbi1cdH1cbi1cbi1cdG1hY190YmwgPSBremFsbG9jX29ianMoKm1hY190YmwsIG1hY19jbnQsIEdGUF9BVE9NSUMpO1xuLVx0aWYgKCFtYWNfdGJsKSB7XG4tXHRcdGVyciA9IC1FTk9NRU07XG4tXHRcdGdvdG8gdW5sb2NrX25ldGlmX2FkZHI7XG4tXHR9XG4tXG4tXHRuZXRkZXZfZm9yX2VhY2hfdWNfYWRkcihoYSwgbmRldikge1xuLVx0XHRlbmV0Y19hZGRfbWFjX2FkZHJfaHRfZmlsdGVyKFx1MDAyNm1hY19maWx0ZXIsIGhhLVx1MDAzZWFkZHIpO1xuLVx0XHRldGhlcl9hZGRyX2NvcHkobWFjX3RibFtpKytdLmFkZHIsIGhhLVx1MDAzZWFkZHIpO1xuLVx0fVxuLVxuLVx0bmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7XG4tXG4tXHQvKiBTZXQgdGVtcG9yYXJ5IHVuaWNhc3QgaGFzaCBmaWx0ZXJzIGluIGNhc2Ugb2YgUnggbG9zcyB3aGVuXG4rXHQvKiBTZXQgdGVtcG9yYXJ5IHVuaWNhc3QgaGFzaCBmaWx0ZXIgaW4gY2FzZSBvZiBSeCBsb3NzIHdoZW5cbiBcdCAqIHVwZGF0aW5nIE1BQyBhZGRyZXNzIGZpbHRlciB0YWJsZVxuIFx0ICovXG4tXHRlbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKGh3LCAwLCAqbWFjX2ZpbHRlci5tYWNfaGFzaF90YWJsZSk7XG4rXHRlbmV0YzRfcGZfc2V0X3VjX2hhc2hfZmlsdGVyKHBmLCB1Yyk7XG4gXHRlbmV0YzRfcGZfY2xlYXJfbWFmdF9lbnRyaWVzKHBmKTtcbiBcbi1cdGlmICghZW5ldGM0X3BmX2FkZF9tYWZ0X2VudHJpZXMocGYsIG1hY190YmwsIGkpKVxuLVx0XHRlbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKGh3LCAwLCAwKTtcbi1cbi1cdGtmcmVlKG1hY190YmwpO1xuLVxuLVx0cmV0dXJuIDA7XG4tXG4tdW5sb2NrX25ldGlmX2FkZHI6XG4tXHRuZXRpZl9hZGRyX3VubG9ja19iaChuZGV2KTtcbitcdGVyciA9IGVuZXRjNF9wZl9hZGRfbWFmdF9lbnRyaWVzKHBmLCB1Yyk7XG4rXHRpZiAoIWVycikge1xuK1x0XHRlbmV0Y19yZXNldF9tYWNfYWRkcl9maWx0ZXIoXHUwMDI2cGYtXHUwMDNlbWFjX2ZpbHRlcltVQ10pO1xuK1x0XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuK1x0fVxuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tYWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHR5cGUpXG4rc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLFxuK1x0XHRcdFx0XHQgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKm1jKVxuIHtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGYtXHUwMDNlc2ktXHUwMDNlbmRldjtcbi1cdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICptYWNfZmlsdGVyO1xuLVx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZWh3O1xuK1x0c3RydWN0IGVuZXRjX21hY19maWx0ZXIgKm1hY19maWx0ZXIgPSBcdTAwMjZwZi1cdTAwM2VtYWNfZmlsdGVyW01DXTtcbiBcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XG4rXHR1NjQgaGFzaDtcbiBcbi1cdG5ldGlmX2FkZHJfbG9ja19iaChuZGV2KTtcbi1cdGlmICh0eXBlIFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfVUMpIHtcbi1cdFx0bWFjX2ZpbHRlciA9IFx1MDAyNnBmLVx1MDAzZW1hY19maWx0ZXJbVUNdO1xuLVx0XHRlbmV0Y19yZXNldF9tYWNfYWRkcl9maWx0ZXIobWFjX2ZpbHRlcik7XG4tXHRcdG5ldGRldl9mb3JfZWFjaF91Y19hZGRyKGhhLCBuZGV2KVxuLVx0XHRcdGVuZXRjX2FkZF9tYWNfYWRkcl9odF9maWx0ZXIobWFjX2ZpbHRlciwgaGEtXHUwMDNlYWRkcik7XG4tXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsXG4tXHRcdFx0XHRcdFx0Km1hY19maWx0ZXItXHUwMDNlbWFjX2hhc2hfdGFibGUpO1xuLVx0fVxuK1x0ZW5ldGNfcmVzZXRfbWFjX2FkZHJfZmlsdGVyKG1hY19maWx0ZXIpO1xuK1x0bmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgbWMpXG4rXHRcdGVuZXRjX2FkZF9tYWNfYWRkcl9odF9maWx0ZXIobWFjX2ZpbHRlciwgaGEtXHUwMDNlYWRkcik7XG4gXG4tXHRpZiAodHlwZSBcdTAwMjYgRU5FVENfTUFDX0ZJTFRFUl9UWVBFX01DKSB7XG4tXHRcdG1hY19maWx0ZXIgPSBcdTAwMjZwZi1cdTAwM2VtYWNfZmlsdGVyW01DXTtcbi1cdFx0ZW5ldGNfcmVzZXRfbWFjX2FkZHJfZmlsdGVyKG1hY19maWx0ZXIpO1xuLVx0XHRuZXRkZXZfZm9yX2VhY2hfbWNfYWRkcihoYSwgbmRldilcbi1cdFx0XHRlbmV0Y19hZGRfbWFjX2FkZHJfaHRfZmlsdGVyKG1hY19maWx0ZXIsIGhhLVx1MDAzZWFkZHIpO1xuLVxuLVx0XHRlbmV0YzRfcGZfc2V0X3NpX21jX2hhc2hfZmlsdGVyKGh3LCAwLFxuLVx0XHRcdFx0XHRcdCptYWNfZmlsdGVyLVx1MDAzZW1hY19oYXNoX3RhYmxlKTtcbi1cdH1cbi1cdG5ldGlmX2FkZHJfdW5sb2NrX2JoKG5kZXYpO1xuK1x0Yml0bWFwX3RvX2FycjY0KFx1MDAyNmhhc2gsIG1hY19maWx0ZXItXHUwMDNlbWFjX2hhc2hfdGFibGUsXG4rXHRcdFx0RU5FVENfTUFERFJfSEFTSF9UQkxfU1opO1xuK1x0ZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHBmLVx1MDAzZXNpLCAwLCBoYXNoKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tYWNfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCB0eXBlKVxuK3N0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbWFjX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgdHlwZSxcbitcdFx0XHRcdCAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLFxuK1x0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqbWMpXG4ge1xuIFx0LyogQ3VycmVudGx5LCB0aGUgTUFDIGFkZHJlc3MgZmlsdGVyIHRhYmxlIChNQUZUKSBvbmx5IGhhcyA0IGVudHJpZXMsXG4gXHQgKiBhbmQgbXVsdGlwbGUgbXVsdGljYXN0IGFkZHJlc3NlcyBmb3IgZmlsdGVyaW5nIHdpbGwgYmUgY29uZmlndXJlZFxuQEAgLTI1OCwxNSArMjA1LDE2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbWFjX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgdHlwZSlcbiBcdCAqIHVuaWNhc3QgZmlsdGVyaW5nLiBJZiB0aGUgbnVtYmVyIG9mIHVuaWNhc3QgYWRkcmVzc2VzIGV4Y2VlZHMgdGhlXG4gXHQgKiB0YWJsZSBjYXBhY2l0eSwgdGhlIE1BQyBoYXNoIGZpbHRlciB3aWxsIGJlIHVzZWQuXG4gXHQgKi9cbi1cdGlmICh0eXBlIFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfVUMgXHUwMDI2XHUwMDI2IGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHBmKSkge1xuK1x0aWYgKHR5cGUgXHUwMDI2IEVORVRDX01BQ19GSUxURVJfVFlQRV9VQyBcdTAwMjZcdTAwMjZcbitcdCAgICBlbmV0YzRfcGZfc2V0X3VjX2V4YWN0X2ZpbHRlcihwZiwgdWMpKSB7XG4gXHRcdC8qIEZhbGwgYmFjayB0byB0aGUgTUFDIGhhc2ggZmlsdGVyICovXG4tXHRcdGVuZXRjNF9wZl9zZXRfbWFjX2hhc2hfZmlsdGVyKHBmLCBFTkVUQ19NQUNfRklMVEVSX1RZUEVfVUMpO1xuK1x0XHRlbmV0YzRfcGZfc2V0X3VjX2hhc2hfZmlsdGVyKHBmLCB1Yyk7XG4gXHRcdC8qIENsZWFyIHRoZSBvbGQgTUFDIGV4YWN0IGZpbHRlciAqL1xuIFx0XHRlbmV0YzRfcGZfY2xlYXJfbWFmdF9lbnRyaWVzKHBmKTtcbiBcdH1cbiBcbiBcdGlmICh0eXBlIFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpXG4tXHRcdGVuZXRjNF9wZl9zZXRfbWFjX2hhc2hfZmlsdGVyKHBmLCBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpO1xuK1x0XHRlbmV0YzRfcGZfc2V0X21jX2hhc2hfZmlsdGVyKHBmLCBtYyk7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZW5ldGNfcGZfb3BzIGVuZXRjNF9wZl9vcHMgPSB7XG5AQCAtMzA2LDM0ICsyNTQsMzUgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbihzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIHtcbiBcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VodztcbiBcdHUzMiBudW1fcnhfYmRyLCBudW1fdHhfYmRyLCB2YWw7XG4rXHRpbnQgbnVtX3ZmcyA9IHBmLVx1MDAzZXRvdGFsX3ZmcztcbiBcdHUzMiB2Zl90eF9iZHIsIHZmX3J4X2JkcjtcbiBcdGludCBpLCByeF9yZW0sIHR4X3JlbTtcbiBcbi1cdGlmIChwZi1cdTAwM2VjYXBzLm51bV9yeF9iZHIgXHUwMDNjIEVORVRDX1NJX01BWF9SSU5HX05VTSArIHBmLVx1MDAzZWNhcHMubnVtX3ZzaSlcbi1cdFx0bnVtX3J4X2JkciA9IHBmLVx1MDAzZWNhcHMubnVtX3J4X2JkciAtIHBmLVx1MDAzZWNhcHMubnVtX3ZzaTtcbitcdGlmIChwZi1cdTAwM2VjYXBzLm51bV9yeF9iZHIgXHUwMDNjIEVORVRDX1NJX01BWF9SSU5HX05VTSArIG51bV92ZnMpXG4rXHRcdG51bV9yeF9iZHIgPSBwZi1cdTAwM2VjYXBzLm51bV9yeF9iZHIgLSBudW1fdmZzO1xuIFx0ZWxzZVxuIFx0XHRudW1fcnhfYmRyID0gRU5FVENfU0lfTUFYX1JJTkdfTlVNO1xuIFxuLVx0aWYgKHBmLVx1MDAzZWNhcHMubnVtX3R4X2JkciBcdTAwM2MgRU5FVENfU0lfTUFYX1JJTkdfTlVNICsgcGYtXHUwMDNlY2Fwcy5udW1fdnNpKVxuLVx0XHRudW1fdHhfYmRyID0gcGYtXHUwMDNlY2Fwcy5udW1fdHhfYmRyIC0gcGYtXHUwMDNlY2Fwcy5udW1fdnNpO1xuK1x0aWYgKHBmLVx1MDAzZWNhcHMubnVtX3R4X2JkciBcdTAwM2MgRU5FVENfU0lfTUFYX1JJTkdfTlVNICsgbnVtX3ZmcylcbitcdFx0bnVtX3R4X2JkciA9IHBmLVx1MDAzZWNhcHMubnVtX3R4X2JkciAtIG51bV92ZnM7XG4gXHRlbHNlXG4gXHRcdG51bV90eF9iZHIgPSBFTkVUQ19TSV9NQVhfUklOR19OVU07XG4gXG4gXHR2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdChmYWxzZSwgbnVtX3R4X2JkciwgbnVtX3J4X2Jkcik7XG4gXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjAoMCksIHZhbCk7XG4gXG4tXHRpZiAoIXBmLVx1MDAzZWNhcHMubnVtX3ZzaSlcbitcdGlmICghbnVtX3ZmcylcbiBcdFx0cmV0dXJuO1xuIFxuIFx0bnVtX3J4X2JkciA9IHBmLVx1MDAzZWNhcHMubnVtX3J4X2JkciAtIG51bV9yeF9iZHI7XG4tXHRyeF9yZW0gPSBudW1fcnhfYmRyICUgcGYtXHUwMDNlY2Fwcy5udW1fdnNpO1xuLVx0bnVtX3J4X2JkciA9IG51bV9yeF9iZHIgLyBwZi1cdTAwM2VjYXBzLm51bV92c2k7XG4rXHRyeF9yZW0gPSBudW1fcnhfYmRyICUgbnVtX3ZmcztcbitcdG51bV9yeF9iZHIgPSBudW1fcnhfYmRyIC8gbnVtX3ZmcztcbiBcbiBcdG51bV90eF9iZHIgPSBwZi1cdTAwM2VjYXBzLm51bV90eF9iZHIgLSBudW1fdHhfYmRyO1xuLVx0dHhfcmVtID0gbnVtX3R4X2JkciAlIHBmLVx1MDAzZWNhcHMubnVtX3ZzaTtcbi1cdG51bV90eF9iZHIgPSBudW1fdHhfYmRyIC8gcGYtXHUwMDNlY2Fwcy5udW1fdnNpO1xuK1x0dHhfcmVtID0gbnVtX3R4X2JkciAlIG51bV92ZnM7XG4rXHRudW1fdHhfYmRyID0gbnVtX3R4X2JkciAvIG51bV92ZnM7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZi1cdTAwM2VjYXBzLm51bV92c2k7IGkrKykge1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3ZmczsgaSsrKSB7XG4gXHRcdHZmX3R4X2JkciA9IChpIFx1MDAzYyB0eF9yZW0pID8gbnVtX3R4X2JkciArIDEgOiBudW1fdHhfYmRyO1xuIFx0XHR2Zl9yeF9iZHIgPSAoaSBcdTAwM2MgcnhfcmVtKSA/IG51bV9yeF9iZHIgKyAxIDogbnVtX3J4X2JkcjtcbiBcdFx0dmFsID0gZW5ldGM0X3BzaWNmZ3IwX3ZhbF9jb25zdHJ1Y3QodHJ1ZSwgdmZfdHhfYmRyLCB2Zl9yeF9iZHIpO1xuQEAgLTM0Niw1MyArMjk1LDcwIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5ncyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0ZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbihwZik7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSwgYm9vbCBlbilcbi17XG4tXHR1MzIgdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSVBWTVIpO1xuLVxuLVx0aWYgKGVuKVxuLVx0XHR2YWwgfD0gQklUKHNpKTtcbi1cdGVsc2Vcbi1cdFx0dmFsIFx1MDAyNj0gfkJJVChzaSk7XG4tXG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJUFZNUiwgdmFsKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZW5ldGM0X3NldF9kZWZhdWx0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuLXtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2Vodztcbi1cdGludCBudW1fc2kgPSBwZi1cdTAwM2VjYXBzLm51bV92c2kgKyAxO1xuLVx0aW50IGk7XG4tXG4tXHQvKiBlbmZvcmNlIFZMQU4gcHJvbWlzY3VvdXMgbW9kZSBmb3IgYWxsIFNJcyAqL1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3NpOyBpKyspXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKGh3LCBpLCB0cnVlKTtcbi19XG4tXG4gLyogQWxsb2NhdGUgdGhlIG51bWJlciBvZiBNU0ktWCB2ZWN0b3JzIGZvciBwZXIgU0kuICovXG4gc3RhdGljIHZvaWQgZW5ldGM0X3NldF9zaV9tc2l4X251bShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIHtcbitcdGludCB2YWxpZF9udW1fc2kgPSBwZi1cdTAwM2V0b3RhbF92ZnMgKyAxO1xuIFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZWh3O1xuLVx0aW50IGksIG51bV9tc2l4LCB0b3RhbF9zaTtcbitcdGludCBpLCBudW1fbXNpeCwgbnVtX3ZzaTtcbiBcdHUzMiB2YWw7XG4gXG4tXHR0b3RhbF9zaSA9IHBmLVx1MDAzZWNhcHMubnVtX3ZzaSArIDE7XG4rXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQzRfRUNBUFIxKTtcbitcdG51bV92c2kgPSBGSUVMRF9HRVQoRUNBUFIxX05VTV9WU0ksIHZhbCk7XG4rXG4rXHQvKiBUaGUgUFNJYUNGR1IyW05VTV9NU0lYXSBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBNU0ktWCBhbGxvY2F0ZWQgdG9cbitcdCAqIHRoZSBTSSBpcyBOVU1fTVNJWCArIDEsIHNvIHRoZSBtaW5pbXVtIG51bWJlciBvZiBNU0ktWCBhbGxvY2F0ZWQgdG9cbitcdCAqIGVhY2ggU0kgaXMgMS4gVGhlIHRvdGFsIG51bWJlciBvZiBNU0ktWCBhbGxvY2F0ZWQgdG8gUFNJIGFuZCBWU0lzXG4rXHQgKiBjYW5ub3QgZXhjZWVkIHRoZSB0b3RhbCBudW1iZXIgb2YgTVNJLVggb3duZWQgYnkgdGhpcyBFTkVUQywgd2hpY2hcbitcdCAqIGlzIEVDQVBSMVtOVU1fTVNJWF0uIE90aGVyd2lzZSwgd2hlbiBtdWx0aXBsZSBFTkVUQyBpbnN0YW5jZXMgZXhpc3QsXG4rXHQgKiBpdCB3aWxsIGFmZmVjdCBvdGhlciBFTkVUQ3Mgd2hvc2UgTVNJLVggaW50ZXJydXB0cyBjYW5ub3QgYmVcbitcdCAqIGdlbmVyYXRlZC4gVGhpcyBpcyBzaW1pbGFyIHRvIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzOiB0aGUgYXJyYXlcbitcdCAqIGl0c2VsZiBpcyBub3QgYWZmZWN0ZWQsIGJ1dCBhZGphY2VudCBhcnJheXMgd2lsbCBiZSBjb3JydXB0ZWQuXG4rXHQgKlxuK1x0ICogcGYtXHUwMDNldG90YWxfdmZzIGlzIDAgaWYgQ09ORklHX1BDSV9JT1YgaXMgZGlzYWJsZWQuIElmIHRoZSBoYXJkd2FyZVxuK1x0ICogaXRzZWxmIHN1cHBvcnRzIFNSLUlPViwgdGhlbiB3aGVuIGFsbG9jYXRpbmcgdGhlIG51bWJlciBvZiBNU0lYcyB0b1xuK1x0ICogdGhlIFNJLCBpdCBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudCB0aGF0IHRoZSBWU0kgaGFzIGF0IGxlYXN0IDFcbitcdCAqIE1TSVgsIGFuZCB0aGUgdG90YWwgbnVtYmVyIG9mIE1TSVhzIG9mIGFsbCBTSXMgY2Fubm90IGV4Y2VlZFxuK1x0ICogRUNBUFIxW05VTV9NU0lYXS5cbitcdCAqL1xuK1x0aWYgKCFwZi1cdTAwM2V0b3RhbF92ZnMgXHUwMDI2XHUwMDI2IG51bV92c2kpIHtcbitcdFx0LyogQmVjYXVzZSBlYWNoIFNJIGhhcyBhdCBsZWFzdCBvbmUgTVNJWCwgYW5kIGZyb20gdGhlIGhhcmR3YXJlXG4rXHRcdCAqIHBlcnNwZWN0aXZlLCBwZi1cdTAwM2VjYXBzLm51bV9tc2l4IHdpbGwgYWx3YXlzIGJlIGdyZWF0ZXIgdGhhblxuK1x0XHQgKiBudW1fdnNpLiBTbyBudW1fbXNpeCBpcyBhbHdheXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAuXG4rXHRcdCAqL1xuK1x0XHRudW1fbXNpeCA9IHBmLVx1MDAzZWNhcHMubnVtX21zaXggLSBudW1fdnNpIC0gMTtcbitcdFx0aWYgKG51bV9tc2l4IFx1MDAzZSBQU0lDRkdSMl9OVU1fTVNJWClcbitcdFx0XHRudW1fbXNpeCA9IFBTSUNGR1IyX05VTV9NU0lYO1xuK1x0XHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoMCksIG51bV9tc2l4KTtcbiBcbi1cdG51bV9tc2l4ID0gcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAvIHRvdGFsX3NpICtcbi1cdFx0ICAgcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAlIHRvdGFsX3NpIC0gMTtcbi1cdHZhbCA9IG51bV9tc2l4IFx1MDAyNiBQU0lDRkdSMl9OVU1fTVNJWDtcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMigwKSwgdmFsKTtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3ZzaTsgaSsrKVxuK1x0XHRcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMihpICsgMSksIDApO1xuIFxuLVx0bnVtX21zaXggPSBwZi1cdTAwM2VjYXBzLm51bV9tc2l4IC8gdG90YWxfc2kgLSAxO1xuLVx0dmFsID0gbnVtX21zaXggXHUwMDI2IFBTSUNGR1IyX05VTV9NU0lYO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNlY2Fwcy5udW1fdnNpOyBpKyspXG4tXHRcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMihpICsgMSksIHZhbCk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdC8qIExpa2V3aXNlLCBmcm9tIHRoZSBoYXJkd2FyZSBwZXJzcGVjdGl2ZSBwZi1cdTAwM2VjYXBzLm51bV9tc2l4IGlzIGFsd2F5c1xuK1x0ICogZ3JlYXRlciB0aGFuIHZhbGlkX251bV9zaS4gU28gbnVtX21zaXggaXMgYWx3YXlzIGdyZWF0ZXIgdGhhbiBvclxuK1x0ICogZXF1YWwgdG8gMC5cbitcdCAqL1xuK1x0bnVtX21zaXggPSBwZi1cdTAwM2VjYXBzLm51bV9tc2l4IC8gdmFsaWRfbnVtX3NpICtcbitcdFx0ICAgcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAlIHZhbGlkX251bV9zaSAtIDE7XG4rXHRpZiAobnVtX21zaXggXHUwMDNlIFBTSUNGR1IyX05VTV9NU0lYKVxuK1x0XHRudW1fbXNpeCA9IFBTSUNGR1IyX05VTV9NU0lYO1xuK1x0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSUNGR1IyKDApLCBudW1fbXNpeCk7XG4rXG4rXHRudW1fbXNpeCA9IHBmLVx1MDAzZWNhcHMubnVtX21zaXggLyB2YWxpZF9udW1fc2kgLSAxO1xuK1x0aWYgKG51bV9tc2l4IFx1MDAzZSBQU0lDRkdSMl9OVU1fTVNJWClcbitcdFx0bnVtX21zaXggPSBQU0lDRkdSMl9OVU1fTVNJWDtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBmLVx1MDAzZXRvdGFsX3ZmczsgaSsrKVxuK1x0XHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoaSArIDEpLCBudW1fbXNpeCk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGVuZXRjNF9lbmFibGVfYWxsX3NpKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4ge1xuIFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZWh3O1xuLVx0aW50IG51bV9zaSA9IHBmLVx1MDAzZWNhcHMubnVtX3ZzaSArIDE7XG4rXHRpbnQgbnVtX3NpID0gcGYtXHUwMDNldG90YWxfdmZzICsgMTtcbiBcdHUzMiBzaV9iaXRtYXAgPSAwO1xuIFx0aW50IGk7XG4gXG5AQCAtNDEyLDcgKzM3OCw5IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9jb25maWd1cmVfcG9ydF9zaShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0LyogT3V0ZXIgVkxBTiB0YWcgd2lsbCBiZSB1c2VkIGZvciBWTEFOIGZpbHRlcmluZyAqL1xuIFx0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSVZMQU5GTVIsIFBTSVZMQU5GTVJfVlMpO1xuIFxuLVx0ZW5ldGM0X3NldF9kZWZhdWx0X3NpX3ZsYW5fcHJvbWlzYyhwZik7XG4rXHQvKiBFbmZvcmNlIFZMQU4gcHJvbWlzY3VvdXMgbW9kZSBmb3IgYWxsIFNJcyAqL1xuK1x0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIHBmLVx1MDAzZXRvdGFsX3ZmcyArIDE7IGkrKylcbitcdFx0ZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhwZi1cdTAwM2VzaSwgaSwgdHJ1ZSk7XG4gXG4gXHQvKiBEaXNhYmxlIFNJIE1BQyBtdWx0aWNhc3QgXHUwMDI2IHVuaWNhc3QgcHJvbWlzY3VvdXMgKi9cbiBcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lQTU1SLCAwKTtcbkBAIC00NTAsMTggKzQxOCw2MCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfY29uZmlndXJlX3BvcnQoc3RydWN0IGVuZXRjX3BmICpwZilcbiBcdGVuZXRjX3NldF9kZWZhdWx0X3Jzc19rZXkocGYpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBlbmV0YzRfZ2V0X250bXBfY2FwcyhzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxuK3tcbitcdHN0cnVjdCBudG1wX3VzZXIgKnVzZXIgPSBcdTAwMjZzaS1cdTAwM2VudG1wX3VzZXI7XG4rXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2c2ktXHUwMDNlaHc7XG4rXHR1MzIgdmFsO1xuK1xuK1x0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSU1BRkNBUFIpO1xuK1x0dXNlci1cdTAwM2VtYWZ0X251bV9lbnRyaWVzID0gRklFTERfR0VUKFBTSU1BRkNBUFJfTlVNX01BQ19BRlRFLCB2YWwpO1xuK31cbitcbitzdGF0aWMgaW50IGVuZXRjNF9udG1wX2JpdG1hcF9pbml0KHN0cnVjdCBudG1wX3VzZXIgKnVzZXIpXG4re1xuK1x0dXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAgPSBiaXRtYXBfemFsbG9jKHVzZXItXHUwMDNlbWFmdF9udW1fZW50cmllcyxcbitcdFx0XHRcdFx0ICAgICAgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIXVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgdm9pZCBlbmV0YzRfbnRtcF9iaXRtYXBfZnJlZShzdHJ1Y3QgbnRtcF91c2VyICp1c2VyKVxuK3tcbitcdGJpdG1hcF9mcmVlKHVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwKTtcbitcdHVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwID0gTlVMTDtcbit9XG4rXG4gc3RhdGljIGludCBlbmV0YzRfaW5pdF9udG1wX3VzZXIoc3RydWN0IGVuZXRjX3NpICpzaSlcbiB7XG4gXHRzdHJ1Y3QgbnRtcF91c2VyICp1c2VyID0gXHUwMDI2c2ktXHUwMDNlbnRtcF91c2VyO1xuK1x0aW50IGVycjtcbiBcbiBcdC8qIEZvciBFTkVUQyA0LjEsIGFsbCB0YWJsZSB2ZXJzaW9ucyBhcmUgMCAqL1xuIFx0bWVtc2V0KFx1MDAyNnVzZXItXHUwMDNldGJsLCAwLCBzaXplb2YodXNlci1cdTAwM2V0YmwpKTtcbiBcbi1cdHJldHVybiBlbmV0YzRfc2V0dXBfY2JkcihzaSk7XG4rXHRlcnIgPSBlbmV0YzRfc2V0dXBfY2JkcihzaSk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0ZW5ldGM0X2dldF9udG1wX2NhcHMoc2kpO1xuK1x0ZXJyID0gZW5ldGM0X250bXBfYml0bWFwX2luaXQodXNlcik7XG4rXHRpZiAoZXJyKVxuK1x0XHRnb3RvIHRlYXJkb3duX2NiZHI7XG4rXG4rXHRyZXR1cm4gMDtcbitcbit0ZWFyZG93bl9jYmRyOlxuK1x0ZW5ldGM0X3RlYXJkb3duX2NiZHIoc2kpO1xuK1xuK1x0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW5ldGM0X2ZyZWVfbnRtcF91c2VyKHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4ge1xuK1x0ZW5ldGM0X250bXBfYml0bWFwX2ZyZWUoXHUwMDI2c2ktXHUwMDNlbnRtcF91c2VyKTtcbiBcdGVuZXRjNF90ZWFyZG93bl9jYmRyKHNpKTtcbiB9XG4gXG5AQCAtNDc5LDcgKzQ4OSw3IEBAIHN0YXRpYyBpbnQgZW5ldGM0X3BmX2luaXQoc3RydWN0IGVuZXRjX3BmICpwZilcbiBcbiBcdGVyciA9IGVuZXRjNF9pbml0X250bXBfdXNlcihwZi1cdTAwM2VzaSk7XG4gXHRpZiAoZXJyKSB7XG4tXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byBpbml0IENCRFJcXG5cIik7XG4rXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byBpbml0IE5UTVAgdXNlclxcblwiKTtcbiBcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcbkBAIC00OTMsMTggKzUwMywxNyBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGZfZnJlZShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0ZW5ldGM0X2ZyZWVfbnRtcF91c2VyKHBmLVx1MDAzZXNpKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BzaV9kb19zZXRfcnhfbW9kZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4rc3RhdGljIGludCBlbmV0YzRfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4rXHRcdFx0XHQgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLFxuK1x0XHRcdFx0IHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYylcbiB7XG4tXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBlbmV0Y19zaSwgcnhfbW9kZV90YXNrKTtcbi1cdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBlbmV0Y19zaV9wcml2KHNpKTtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gc2ktXHUwMDNlbmRldjtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZzaS1cdTAwM2VodztcbitcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbitcdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBlbmV0Y19zaV9wcml2KHByaXYtXHUwMDNlc2kpO1xuK1x0c3RydWN0IGVuZXRjX3NpICpzaSA9IHByaXYtXHUwMDNlc2k7XG4gXHRib29sIHVjX3Byb21pc2MgPSBmYWxzZTtcbiBcdGJvb2wgbWNfcHJvbWlzYyA9IGZhbHNlO1xuIFx0aW50IHR5cGUgPSAwO1xuIFxuLVx0cnRubF9sb2NrKCk7XG4tXG4gXHRpZiAobmRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BST01JU0MpIHtcbiBcdFx0dWNfcHJvbWlzYyA9IHRydWU7XG4gXHRcdG1jX3Byb21pc2MgPSB0cnVlO1xuQEAgLTUxNSwyOCArNTI0LDIxIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wc2lfZG9fc2V0X3J4X21vZGUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHR0eXBlID0gRU5FVENfTUFDX0ZJTFRFUl9UWVBFX0FMTDtcbiBcdH1cbiBcbi1cdGVuZXRjNF9wZl9zZXRfc2lfbWFjX3Byb21pc2MoaHcsIDAsIHVjX3Byb21pc2MsIG1jX3Byb21pc2MpO1xuK1x0ZW5ldGNfc2V0X3NpX3VjX3Byb21pc2Moc2ksIDAsIHVjX3Byb21pc2MpO1xuK1x0ZW5ldGNfc2V0X3NpX21jX3Byb21pc2Moc2ksIDAsIG1jX3Byb21pc2MpO1xuIFxuIFx0aWYgKHVjX3Byb21pc2MpIHtcbi1cdFx0ZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihodywgMCwgMCk7XG4rXHRcdGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7XG4gXHRcdGVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpO1xuIFx0fVxuIFxuIFx0aWYgKG1jX3Byb21pc2MpXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfbWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApO1xuK1x0XHRlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuIFxuIFx0LyogU2V0IG5ldyBNQUMgZmlsdGVyICovXG4tXHRlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIocGYsIHR5cGUpO1xuK1x0ZW5ldGM0X3BmX3NldF9tYWNfZmlsdGVyKHBmLCB0eXBlLCB1YywgbWMpO1xuIFxuLVx0cnRubF91bmxvY2soKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLXtcbi1cdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbi1cdHN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwcml2LVx1MDAzZXNpO1xuLVxuLVx0cXVldWVfd29yayhzaS1cdTAwM2V3b3JrcXVldWUsIFx1MDAyNnNpLVx1MDAzZXJ4X21vZGVfdGFzayk7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBlbmV0YzRfcGZfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuQEAgLTU0NCwxMiArNTQ2LDExIEBAIHN0YXRpYyBpbnQgZW5ldGM0X3BmX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiB7XG4gXHRuZXRkZXZfZmVhdHVyZXNfdCBjaGFuZ2VkID0gbmRldi1cdTAwM2VmZWF0dXJlcyBeIGZlYXR1cmVzO1xuIFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuLVx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnByaXYtXHUwMDNlc2ktXHUwMDNlaHc7XG4gXG4gXHRpZiAoY2hhbmdlZCBcdTAwMjYgTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSKSB7XG4gXHRcdGJvb2wgcHJvbWlzY19lbiA9ICEoZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUik7XG4gXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKGh3LCAwLCBwcm9taXNjX2VuKTtcbitcdFx0ZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhwcml2LVx1MDAzZXNpLCAwLCBwcm9taXNjX2VuKTtcbiBcdH1cbiBcbiBcdGlmIChjaGFuZ2VkIFx1MDAyNiBORVRJRl9GX0xPT1BCQUNLKVxuQEAgLTU2Niw3ICs1NjcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVuZXRjNF9uZGV2X29wcyA9IHtcbiBcdC5uZG9fc3RhcnRfeG1pdFx0XHQ9IGVuZXRjX3htaXQsXG4gXHQubmRvX2dldF9zdGF0c1x0XHQ9IGVuZXRjX2dldF9zdGF0cyxcbiBcdC5uZG9fc2V0X21hY19hZGRyZXNzXHQ9IGVuZXRjX3BmX3NldF9tYWNfYWRkcixcbi1cdC5uZG9fc2V0X3J4X21vZGVcdD0gZW5ldGM0X3BmX3NldF9yeF9tb2RlLFxuK1x0Lm5kb19zZXRfcnhfbW9kZV9hc3luY1x0PSBlbmV0YzRfcGZfc2V0X3J4X21vZGUsXG4gXHQubmRvX3NldF9mZWF0dXJlc1x0PSBlbmV0YzRfcGZfc2V0X2ZlYXR1cmVzLFxuIFx0Lm5kb192bGFuX3J4X2FkZF92aWRcdD0gZW5ldGNfdmxhbl9yeF9hZGRfdmlkLFxuIFx0Lm5kb192bGFuX3J4X2tpbGxfdmlkXHQ9IGVuZXRjX3ZsYW5fcnhfZGVsX3ZpZCxcbkBAIC02MDIsMTEgKzYwMyw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9tYWNfY29uZmlnKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHVuc2lnbmVkIGludCBtb2RlLFxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQ6XG4gXHRcdHZhbCB8PSBJRk1PREVfUkdNSUk7XG4tXHRcdC8qIFdlIG5lZWQgdG8gZW5hYmxlIGF1dG8tbmVnb3RpYXRpb24gZm9yIHRoZSBNQUNcbi1cdFx0ICogaWYgaXRzIFJHTUlJIGludGVyZmFjZSBzdXBwb3J0IEluLUJhbmQgc3RhdHVzLlxuLVx0XHQgKi9cbi1cdFx0aWYgKHBoeWxpbmtfYXV0b25lZ19pbmJhbmQobW9kZSkpXG4tXHRcdFx0dmFsIHw9IFBNX0lGX01PREVfRU5BO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk6XG4gXHRcdHZhbCB8PSBJRk1PREVfUk1JSTtcbkBAIC02MTYsNyArNjEyLDYgQEAgc3RhdGljIHZvaWQgZW5ldGM0X21hY19jb25maWcoc3RydWN0IGVuZXRjX3BmICpwZiwgdW5zaWduZWQgaW50IG1vZGUsXG4gXHRcdHZhbCB8PSBJRk1PREVfU0dNSUk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XG4tXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9YR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUk6XG4gXHRcdHZhbCB8PSBJRk1PREVfWEdNSUk7XG4gXHRcdGJyZWFrO1xuQEAgLTY0MiwyNiArNjM3LDE5IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfcG9ydF9zcGVlZChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBpbnQgc3BlZWQpXG4gXHR1MzIgb2xkX3NwZWVkID0gcHJpdi1cdTAwM2VzcGVlZDtcbiBcdHUzMiB2YWw7XG4gXG4rXHQvKiBJZiB0aGUgc3BlZWQgaXMgdW5rbm93biwgdXNlIHRoZSBtaW5pbXVtIHZhbHVlICovXG4rXHRpZiAoc3BlZWQgPT0gU1BFRURfVU5LTk9XTikge1xuK1x0XHRzcGVlZCA9IFNQRUVEXzEwO1xuK1x0XHRkZXZfd2Fybihwcml2LVx1MDAzZWRldiwgXCJTcGVlZCB1bmtub3duLCBkZWZhdWx0IGlzIDEwTWJwc1xcblwiKTtcbitcdH1cbitcbiBcdGlmIChzcGVlZCA9PSBvbGRfc3BlZWQpXG4gXHRcdHJldHVybjtcbiBcbi1cdHZhbCA9IGVuZXRjX3BvcnRfcmQoXHUwMDI2cHJpdi1cdTAwM2VzaS1cdTAwM2VodywgRU5FVEM0X1BDUik7XG4tXHR2YWwgXHUwMDI2PSB+UENSX1BTUEVFRDtcbi1cbi1cdHN3aXRjaCAoc3BlZWQpIHtcbi1cdGNhc2UgU1BFRURfMTAwOlxuLVx0Y2FzZSBTUEVFRF8xMDAwOlxuLVx0Y2FzZSBTUEVFRF8yNTAwOlxuLVx0Y2FzZSBTUEVFRF8xMDAwMDpcbi1cdFx0dmFsIHw9IChQQ1JfUFNQRUVEIFx1MDAyNiBQQ1JfUFNQRUVEX1ZBTChzcGVlZCkpO1xuLVx0XHRicmVhaztcbi1cdGNhc2UgU1BFRURfMTA6XG4tXHRkZWZhdWx0OlxuLVx0XHR2YWwgfD0gKFBDUl9QU1BFRUQgXHUwMDI2IFBDUl9QU1BFRURfVkFMKFNQRUVEXzEwKSk7XG4tXHR9XG4tXG4tXHRwcml2LVx1MDAzZXNwZWVkID0gc3BlZWQ7XG4rXHR2YWwgPSBlbmV0Y19wb3J0X3JkKFx1MDAyNnByaXYtXHUwMDNlc2ktXHUwMDNlaHcsIEVORVRDNF9QQ1IpIFx1MDAyNiAoflBDUl9QU1BFRUQpO1xuK1x0dmFsIHw9IFBDUl9QU1BFRURfVkFMKHNwZWVkKTtcbiBcdGVuZXRjX3BvcnRfd3IoXHUwMDI2cHJpdi1cdTAwM2VzaS1cdTAwM2VodywgRU5FVEM0X1BDUiwgdmFsKTtcbitcdHByaXYtXHUwMDNlc3BlZWQgPSBzcGVlZDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW5ldGM0X3NldF9yZ21paV9tYWMoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHNwZWVkLCBpbnQgZHVwbGV4KVxuQEAgLTcxNywyMiArNzA1LDYgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3NldF9ybWlpX21hYyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgc3BlZWQsIGludCBkdXBsZXgpXG4gXHRlbmV0Y19wb3J0X21hY193cihzaSwgRU5FVEM0X1BNX0lGX01PREUoMCksIHZhbCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfaGRfZmxvd19jb250cm9sKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGJvb2wgZW5hYmxlKVxuLXtcbi1cdHN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwZi1cdTAwM2VzaTtcbi1cdHUzMiBvbGRfdmFsLCB2YWw7XG4tXG4tXHRpZiAoIXBmLVx1MDAzZWNhcHMuaGFsZl9kdXBsZXgpXG4tXHRcdHJldHVybjtcbi1cbi1cdG9sZF92YWwgPSBlbmV0Y19wb3J0X21hY19yZChzaSwgRU5FVEM0X1BNX0NNRF9DRkcoMCkpO1xuLVx0dmFsID0gdTMyX3JlcGxhY2VfYml0cyhvbGRfdmFsLCBlbmFibGUgPyAxIDogMCwgUE1fQ01EX0NGR19IRF9GQ0VOKTtcbi1cdGlmICh2YWwgPT0gb2xkX3ZhbClcbi1cdFx0cmV0dXJuO1xuLVxuLVx0ZW5ldGNfcG9ydF9tYWNfd3Ioc2ksIEVORVRDNF9QTV9DTURfQ0ZHKDApLCB2YWwpO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3J4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGJvb2wgcnhfcGF1c2UpXG4ge1xuIFx0c3RydWN0IGVuZXRjX3NpICpzaSA9IHBmLVx1MDAzZXNpO1xuQEAgLTkwOCwxMyArODgwLDExIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wbF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBwaHlsaW5rX3RvX2VuZXRjX3BmKGNvbmZpZyk7XG4gXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcGYtXHUwMDNlc2k7XG4gXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2O1xuLVx0Ym9vbCBoZF9mYyA9IGZhbHNlO1xuIFxuIFx0cHJpdiA9IG5ldGRldl9wcml2KHNpLVx1MDAzZW5kZXYpO1xuIFx0ZW5ldGM0X3NldF9wb3J0X3NwZWVkKHByaXYsIHNwZWVkKTtcbiBcbi1cdGlmICghcGh5bGlua19hdXRvbmVnX2luYmFuZChtb2RlKSBcdTAwMjZcdTAwMjZcbi1cdCAgICBwaHlfaW50ZXJmYWNlX21vZGVfaXNfcmdtaWkoaW50ZXJmYWNlKSlcbitcdGlmIChwaHlfaW50ZXJmYWNlX21vZGVfaXNfcmdtaWkoaW50ZXJmYWNlKSlcbiBcdFx0ZW5ldGM0X3NldF9yZ21paV9tYWMocGYsIHNwZWVkLCBkdXBsZXgpO1xuIFxuIFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUk1JSSlcbkBAIC05MjYsMTggKzg5Niw4IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wbF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcdFx0ICovXG4gXHRcdGlmIChwcml2LVx1MDAzZWFjdGl2ZV9vZmZsb2FkcyBcdTAwMjYgRU5FVENfRl9RQlUpXG4gXHRcdFx0dHhfcGF1c2UgPSBmYWxzZTtcbi1cdH0gZWxzZSB7IC8qIERVUExFWF9IQUxGICovXG4tXHRcdGlmICh0eF9wYXVzZSB8fCByeF9wYXVzZSlcbi1cdFx0XHRoZF9mYyA9IHRydWU7XG4tXG4tXHRcdC8qIEFzIHBlciA4MDIuMyBhbm5leCAzMUIsIFBBVVNFIGZyYW1lcyBhcmUgb25seSBzdXBwb3J0ZWRcbi1cdFx0ICogd2hlbiB0aGUgbGluayBpcyBjb25maWd1cmVkIGZvciBmdWxsIGR1cGxleCBvcGVyYXRpb24uXG4tXHRcdCAqL1xuLVx0XHR0eF9wYXVzZSA9IGZhbHNlO1xuLVx0XHRyeF9wYXVzZSA9IGZhbHNlO1xuIFx0fVxuIFxuLVx0ZW5ldGM0X3NldF9oZF9mbG93X2NvbnRyb2wocGYsIGhkX2ZjKTtcbiBcdGVuZXRjNF9zZXRfdHhfcGF1c2UocGYsIHByaXYtXHUwMDNlbnVtX3J4X3JpbmdzLCB0eF9wYXVzZSk7XG4gXHRlbmV0YzRfc2V0X3J4X3BhdXNlKHBmLCByeF9wYXVzZSk7XG4gXHRlbmV0YzRfbWFjX3R4X2VuYWJsZShwZik7XG5AQCAtMTAwOSwxOSArOTY5LDYgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2xpbmtfZGVpbml0KHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYpXG4gXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGVuZXRjNF9wc2lfd3FfdGFza19pbml0KHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4te1xuLVx0Y2hhciB3cV9uYW1lWzI0XTtcbi1cbi1cdElOSVRfV09SSyhcdTAwMjZzaS1cdTAwM2VyeF9tb2RlX3Rhc2ssIGVuZXRjNF9wc2lfZG9fc2V0X3J4X21vZGUpO1xuLVx0c25wcmludGYod3FfbmFtZSwgc2l6ZW9mKHdxX25hbWUpLCBcImVuZXRjLSVzXCIsIHBjaV9uYW1lKHNpLVx1MDAzZXBkZXYpKTtcbi1cdHNpLVx1MDAzZXdvcmtxdWV1ZSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKHdxX25hbWUpO1xuLVx0aWYgKCFzaS1cdTAwM2V3b3JrcXVldWUpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuLVxuIHN0YXRpYyBpbnQgZW5ldGM0X3BmX25ldGRldl9jcmVhdGUoc3RydWN0IGVuZXRjX3NpICpzaSlcbiB7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZzaS1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbkBAIC0xMDYyLDEyICsxMDA5LDYgQEAgc3RhdGljIGludCBlbmV0YzRfcGZfbmV0ZGV2X2NyZWF0ZShzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJfbGlua19pbml0O1xuIFxuLVx0ZXJyID0gZW5ldGM0X3BzaV93cV90YXNrX2luaXQoc2kpO1xuLVx0aWYgKGVycikge1xuLVx0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gaW5pdCB3b3JrcXVldWVcXG5cIik7XG4tXHRcdGdvdG8gZXJyX3dxX2luaXQ7XG4tXHR9XG4tXG4gXHRlcnIgPSByZWdpc3Rlcl9uZXRkZXYobmRldik7XG4gXHRpZiAoZXJyKSB7XG4gXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byByZWdpc3RlciBuZXRkZXZcXG5cIik7XG5AQCAtMTA3Nyw4ICsxMDE4LDYgQEAgc3RhdGljIGludCBlbmV0YzRfcGZfbmV0ZGV2X2NyZWF0ZShzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyX3JlZ19uZXRkZXY6XG4tXHRkZXN0cm95X3dvcmtxdWV1ZShzaS1cdTAwM2V3b3JrcXVldWUpO1xuLWVycl93cV9pbml0OlxuIFx0ZW5ldGM0X2xpbmtfZGVpbml0KHByaXYpO1xuIGVycl9saW5rX2luaXQ6XG4gXHRlbmV0Y19mcmVlX21zaXgocHJpdik7XG5AQCAtMTA5Niw4ICsxMDM1LDYgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BmX25ldGRldl9kZXN0cm95KHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHNpLVx1MDAzZW5kZXY7XG4gXG4gXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcbi1cdGNhbmNlbF93b3JrKFx1MDAyNnNpLVx1MDAzZXJ4X21vZGVfdGFzayk7XG4tXHRkZXN0cm95X3dvcmtxdWV1ZShzaS1cdTAwM2V3b3JrcXVldWUpO1xuIFx0ZW5ldGM0X2xpbmtfZGVpbml0KHByaXYpO1xuIFx0ZW5ldGNfZnJlZV9tc2l4KHByaXYpO1xuIFx0ZnJlZV9uZXRkZXYobmRldik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmNcbmluZGV4IDcxZjM3NmVmMWJlMWM5Li4wN2I3ODMyZjI0Mjc2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmNcbkBAIC0yOSw3ICsyOSw3IEBAIHN0YXRpYyBjb25zdCB1MzIgZW5ldGNfcnhiZHJfcmVnc1tdID0ge1xuIH07XG4gXG4gc3RhdGljIGNvbnN0IHUzMiBlbmV0Y19wb3J0X3JlZ3NbXSA9IHtcbi1cdEVORVRDX1BNUiwgRU5FVENfUFNSLCBFTkVUQ19QU0lQTVIsIEVORVRDX1BTSVBNQVIwKDApLFxuK1x0RU5FVENfUE1SLCBFTkVUQ19QU1IsIEVORVRDX1BTSVBNTVIsIEVORVRDX1BTSVBNQVIwKDApLFxuIFx0RU5FVENfUFNJUE1BUjEoMCksIEVORVRDX1BUWE1CQVIsIEVORVRDX1BDQVBSMCwgRU5FVENfUENBUFIxLFxuIFx0RU5FVENfUFNJQ0ZHUjAoMCksIEVORVRDX1BSRlNDQVBSLCBFTkVUQ19QVENNU0RVUigwKSxcbiBcdEVORVRDX1BNMF9DTURfQ0ZHLCBFTkVUQ19QTTBfTUFYRlJNLCBFTkVUQ19QTTBfSUZfTU9ERVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmhcbmluZGV4IGJmOTliNjVkNzU5OGFiLi4xNmRhNzMyZGM1ZGU4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfaHcuaFxuQEAgLTE4MCwxMyArMTgwLDEzIEBAIGVudW0gZW5ldGNfYmRyX3R5cGUge1RYLCBSWH07XG4gI2RlZmluZSBFTkVUQ19QTVJfUFNQRUVEXzEwMDBNXHRCSVQoOSlcbiAjZGVmaW5lIEVORVRDX1BNUl9QU1BFRURfMjUwME1cdEJJVCgxMClcbiAjZGVmaW5lIEVORVRDX1BTUlx0XHQweDAwMDQgLyogUk8gKi9cbi0jZGVmaW5lIEVORVRDX1BTSVBNUlx0XHQweDAwMThcbi0jZGVmaW5lIEVORVRDX1BTSVBNUl9TRVRfVVAobilcdEJJVChuKSAvKiBuID0gU0kgaW5kZXggKi9cbi0jZGVmaW5lIEVORVRDX1BTSVBNUl9TRVRfTVAobilcdEJJVCgobikgKyAxNilcbisjZGVmaW5lIEVORVRDX1BTSVBNTVJcdFx0MHgwMDE4XG4rI2RlZmluZSAgUFNJUE1NUl9TSV9NQUNfVVAobilcdEJJVChuKSAvKiBuID0gU0kgaW5kZXggKi9cbisjZGVmaW5lICBQU0lQTU1SX1NJX01BQ19NUChuKVx0QklUKChuKSArIDE2KVxuK1xuICNkZWZpbmUgRU5FVENfUFNJUFZNUlx0XHQweDAwMWNcbi0jZGVmaW5lIEVORVRDX1ZMQU5fUFJPTUlTQ19NQVBfQUxMXHQweDdcbi0jZGVmaW5lIEVORVRDX1BTSVBWTVJfU0VUX1ZQKHNpbWFwKVx0KChzaW1hcCkgXHUwMDI2IDB4Nylcbi0jZGVmaW5lIEVORVRDX1BTSVBWTVJfU0VUX1ZVVEEoc2ltYXApXHQoKChzaW1hcCkgXHUwMDI2IDB4NykgXHUwMDNjXHUwMDNjIDE2KVxuKyNkZWZpbmUgIFBTSVBWTVJfU0lfVkxBTl9QKG4pXHRCSVQobikgLyogbiA9IFNJIGluZGV4ICovXG4rXG4gI2RlZmluZSBFTkVUQ19QU0lQTUFSMChuKVx0KDB4MDEwMCArIChuKSAqIDB4OCkgLyogbiA9IFNJIGluZGV4ICovXG4gI2RlZmluZSBFTkVUQ19QU0lQTUFSMShuKVx0KDB4MDEwNCArIChuKSAqIDB4OClcbiAjZGVmaW5lIEVORVRDX1BWQ0xDVFJcdFx0MHgwMjA4XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuY1xuaW5kZXggMmQ2ODdiYjhjM2EwNjMuLmE1MDk5MjlmODlmMjVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jXG5AQCAtNDIsMjYgKzQyLDYgQEAgc3RhdGljIHZvaWQgZW5ldGNfcGZfZGVzdHJveV9wY3Moc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG4gXHRseW54X3Bjc19kZXN0cm95KHBjcyk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGVuZXRjX3NldF92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX2h3ICpodywgY2hhciBzaV9tYXApXG4te1xuLVx0dTMyIHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDX1BTSVBWTVIpO1xuLVxuLVx0dmFsIFx1MDAyNj0gfkVORVRDX1BTSVBWTVJfU0VUX1ZQKEVORVRDX1ZMQU5fUFJPTUlTQ19NQVBfQUxMKTtcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BTSVBWTVIsIEVORVRDX1BTSVBWTVJfU0VUX1ZQKHNpX21hcCkgfCB2YWwpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBlbmV0Y19lbmFibGVfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBzaV9pZHgpXG4te1xuLVx0cGYtXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwIHw9IEJJVChzaV9pZHgpO1xuLVx0ZW5ldGNfc2V0X3ZsYW5fcHJvbWlzYyhcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VodywgcGYtXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZW5ldGNfZGlzYWJsZV9zaV92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHNpX2lkeClcbi17XG4tXHRwZi1cdTAwM2V2bGFuX3Byb21pc2Nfc2ltYXAgXHUwMDI2PSB+QklUKHNpX2lkeCk7XG4tXHRlbmV0Y19zZXRfdmxhbl9wcm9taXNjKFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZWh3LCBwZi1cdTAwM2V2bGFuX3Byb21pc2Nfc2ltYXApO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBlbmV0Y19zZXRfaXNvbF92bGFuKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSwgdTE2IHZsYW4sIHU4IHFvcylcbiB7XG4gXHR1MzIgdmFsID0gMDtcbkBAIC04MCwzNyArNjAsNiBAQCBzdGF0aWMgdm9pZCBlbmV0Y19hZGRfbWFjX2FkZHJfZW1fZmlsdGVyKHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICpmaWx0ZXIsXG4gXHRmaWx0ZXItXHUwMDNlbWFjX2FkZHJfY250Kys7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGVuZXRjX2NsZWFyX21hY19odF9mbHQoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkeCwgaW50IHR5cGUpXG4te1xuLVx0Ym9vbCBlcnIgPSBzaS1cdTAwM2VlcnJhdGEgXHUwMDI2IEVORVRDX0VSUl9VQ01DU1dQO1xuLVxuLVx0aWYgKHR5cGUgPT0gVUMpIHtcbi1cdFx0ZW5ldGNfcG9ydF93cihcdTAwMjZzaS1cdTAwM2VodywgRU5FVENfUFNJVU1IRlIwKHNpX2lkeCwgZXJyKSwgMCk7XG4tXHRcdGVuZXRjX3BvcnRfd3IoXHUwMDI2c2ktXHUwMDNlaHcsIEVORVRDX1BTSVVNSEZSMShzaV9pZHgpLCAwKTtcbi1cdH0gZWxzZSB7IC8qIE1DICovXG4tXHRcdGVuZXRjX3BvcnRfd3IoXHUwMDI2c2ktXHUwMDNlaHcsIEVORVRDX1BTSU1NSEZSMChzaV9pZHgsIGVyciksIDApO1xuLVx0XHRlbmV0Y19wb3J0X3dyKFx1MDAyNnNpLVx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjEoc2lfaWR4KSwgMCk7XG4tXHR9XG4tfVxuLVxuLXN0YXRpYyB2b2lkIGVuZXRjX3NldF9tYWNfaHRfZmx0KHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZHgsIGludCB0eXBlLFxuLVx0XHRcdFx0IHVuc2lnbmVkIGxvbmcgaGFzaClcbi17XG4tXHRib29sIGVyciA9IHNpLVx1MDAzZWVycmF0YSBcdTAwMjYgRU5FVENfRVJSX1VDTUNTV1A7XG4tXG4tXHRpZiAodHlwZSA9PSBVQykge1xuLVx0XHRlbmV0Y19wb3J0X3dyKFx1MDAyNnNpLVx1MDAzZWh3LCBFTkVUQ19QU0lVTUhGUjAoc2lfaWR4LCBlcnIpLFxuLVx0XHRcdCAgICAgIGxvd2VyXzMyX2JpdHMoaGFzaCkpO1xuLVx0XHRlbmV0Y19wb3J0X3dyKFx1MDAyNnNpLVx1MDAzZWh3LCBFTkVUQ19QU0lVTUhGUjEoc2lfaWR4KSxcbi1cdFx0XHQgICAgICB1cHBlcl8zMl9iaXRzKGhhc2gpKTtcbi1cdH0gZWxzZSB7IC8qIE1DICovXG4tXHRcdGVuZXRjX3BvcnRfd3IoXHUwMDI2c2ktXHUwMDNlaHcsIEVORVRDX1BTSU1NSEZSMChzaV9pZHgsIGVyciksXG4tXHRcdFx0ICAgICAgbG93ZXJfMzJfYml0cyhoYXNoKSk7XG4tXHRcdGVuZXRjX3BvcnRfd3IoXHUwMDI2c2ktXHUwMDNlaHcsIEVORVRDX1BTSU1NSEZSMShzaV9pZHgpLFxuLVx0XHRcdCAgICAgIHVwcGVyXzMyX2JpdHMoaGFzaCkpO1xuLVx0fVxuLX1cbi1cbiBzdGF0aWMgdm9pZCBlbmV0Y19zeW5jX21hY19maWx0ZXJzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4ge1xuIFx0c3RydWN0IGVuZXRjX21hY19maWx0ZXIgKmYgPSBwZi1cdTAwM2VtYWNfZmlsdGVyO1xuQEAgLTEyMiwxMiArNzEsMTYgQEAgc3RhdGljIHZvaWQgZW5ldGNfc3luY19tYWNfZmlsdGVycyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFERFJfVFlQRTsgaSsrLCBmKyspIHtcbiBcdFx0Ym9vbCBlbSA9IChmLVx1MDAzZW1hY19hZGRyX2NudCA9PSAxKSBcdTAwMjZcdTAwMjYgKGkgPT0gVUMpO1xuIFx0XHRib29sIGNsZWFyID0gIWYtXHUwMDNlbWFjX2FkZHJfY250O1xuK1x0XHR1NjQgaGFzaDtcbiBcbiBcdFx0aWYgKGNsZWFyKSB7XG4tXHRcdFx0aWYgKGkgPT0gVUMpXG4rXHRcdFx0aWYgKGkgPT0gVUMpIHtcbiBcdFx0XHRcdGVuZXRjX2NsZWFyX21hY19mbHRfZW50cnkoc2ksIHBvcyk7XG4rXHRcdFx0XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuK1x0XHRcdH1cbiBcbi1cdFx0XHRlbmV0Y19jbGVhcl9tYWNfaHRfZmx0KHNpLCAwLCBpKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuQEAgLTEzNSw3ICs4OCw3IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3N5bmNfbWFjX2ZpbHRlcnMoc3RydWN0IGVuZXRjX3BmICpwZilcbiBcdFx0aWYgKGVtKSB7XG4gXHRcdFx0aW50IGVycjtcbiBcbi1cdFx0XHRlbmV0Y19jbGVhcl9tYWNfaHRfZmx0KHNpLCAwLCBVQyk7XG4rXHRcdFx0ZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTtcbiBcbiBcdFx0XHRlcnIgPSBlbmV0Y19zZXRfbWFjX2ZsdF9lbnRyeShzaSwgcG9zLCBmLVx1MDAzZW1hY19hZGRyLFxuIFx0XHRcdFx0XHRcdCAgICAgIEJJVCgwKSk7XG5AQCAtMTQ3LDExICsxMDAsMTUgQEAgc3RhdGljIHZvaWQgZW5ldGNfc3luY19tYWNfZmlsdGVycyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0XHRcdFx0IGVycik7XG4gXHRcdH1cbiBcbitcdFx0Yml0bWFwX3RvX2FycjY0KFx1MDAyNmhhc2gsIGYtXHUwMDNlbWFjX2hhc2hfdGFibGUsXG4rXHRcdFx0XHRFTkVUQ19NQUREUl9IQVNIX1RCTF9TWik7XG4gXHRcdC8qIGhhc2ggdGFibGUgZmlsdGVyLCBjbGVhciBFTSBmaWx0ZXIgZm9yIFVDIGVudHJpZXMgKi9cbi1cdFx0aWYgKGkgPT0gVUMpXG4rXHRcdGlmIChpID09IFVDKSB7XG4gXHRcdFx0ZW5ldGNfY2xlYXJfbWFjX2ZsdF9lbnRyeShzaSwgcG9zKTtcbi1cbi1cdFx0ZW5ldGNfc2V0X21hY19odF9mbHQoc2ksIDAsIGksICpmLVx1MDAzZW1hY19oYXNoX3RhYmxlKTtcbitcdFx0XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIGhhc2gpO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdGVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzaSwgMCwgaGFzaCk7XG4rXHRcdH1cbiBcdH1cbiB9XG4gXG5AQCAtMTU5LDIxICsxMTYsMTcgQEAgc3RhdGljIHZvaWQgZW5ldGNfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuIFx0c3RydWN0IGVuZXRjX3BmICpwZiA9IGVuZXRjX3NpX3ByaXYocHJpdi1cdTAwM2VzaSk7XG4tXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2cHJpdi1cdTAwM2VzaS1cdTAwM2VodztcbiBcdGJvb2wgdXByb20gPSBmYWxzZSwgbXByb20gPSBmYWxzZTtcbiBcdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICpmaWx0ZXI7XG4gXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xuLVx0dTMyIHBzaXBtciA9IDA7XG4gXHRib29sIGVtO1xuIFxuIFx0aWYgKG5kZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9QUk9NSVNDKSB7XG4gXHRcdC8qIGVuYWJsZSBwcm9taXNjIG1vZGUgZm9yIFNJMCAoUEYpICovXG4tXHRcdHBzaXBtciA9IEVORVRDX1BTSVBNUl9TRVRfVVAoMCkgfCBFTkVUQ19QU0lQTVJfU0VUX01QKDApO1xuIFx0XHR1cHJvbSA9IHRydWU7XG4gXHRcdG1wcm9tID0gdHJ1ZTtcbiBcdH0gZWxzZSBpZiAobmRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0FMTE1VTFRJKSB7XG4gXHRcdC8qIGVuYWJsZSBtdWx0aSBjYXN0IHByb21pc2MgbW9kZSBmb3IgU0kwIChQRikgKi9cbi1cdFx0cHNpcG1yID0gRU5FVENfUFNJUE1SX1NFVF9NUCgwKTtcbiBcdFx0bXByb20gPSB0cnVlO1xuIFx0fVxuIFxuQEAgLTIxMSw5ICsxNjQsOCBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wZl9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdFx0LyogdXBkYXRlIFBGIGVudHJpZXMgKi9cbiBcdFx0ZW5ldGNfc3luY19tYWNfZmlsdGVycyhwZik7XG4gXG4tXHRwc2lwbXIgfD0gZW5ldGNfcG9ydF9yZChodywgRU5FVENfUFNJUE1SKSBcdTAwMjZcbi1cdFx0ICB+KEVORVRDX1BTSVBNUl9TRVRfVVAoMCkgfCBFTkVUQ19QU0lQTVJfU0VUX01QKDApKTtcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BTSVBNUiwgcHNpcG1yKTtcbitcdGVuZXRjX3NldF9zaV91Y19wcm9taXNjKHByaXYtXHUwMDNlc2ksIDAsIHVwcm9tKTtcbitcdGVuZXRjX3NldF9zaV9tY19wcm9taXNjKHByaXYtXHUwMDNlc2ksIDAsIG1wcm9tKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW5ldGNfc2V0X2xvb3BiYWNrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBib29sIGVuKVxuQEAgLTQ2OSwxMiArNDIxLDExIEBAIHN0YXRpYyB2b2lkIGVuZXRjX2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXG4gXHQvKiBzcGxpdCB1cCBSRlMgZW50cmllcyAqL1xuIFx0ZW5ldGNfcG9ydF9hc3NpZ25fcmZzX2VudHJpZXMocGYtXHUwMDNlc2kpO1xuLVxuIFx0LyogZW5mb3JjZSBWTEFOIHByb21pc2MgbW9kZSBmb3IgYWxsIFNJcyAqL1xuLVx0cGYtXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwID0gRU5FVENfVkxBTl9QUk9NSVNDX01BUF9BTEw7XG4tXHRlbmV0Y19zZXRfdmxhbl9wcm9taXNjKGh3LCBwZi1cdTAwM2V2bGFuX3Byb21pc2Nfc2ltYXApO1xuK1x0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIHBmLVx1MDAzZXRvdGFsX3ZmcyArIDE7IGkrKylcbitcdFx0ZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhwZi1cdTAwM2VzaSwgaSwgdHJ1ZSk7XG4gXG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQ19QU0lQTVIsIDApO1xuK1x0ZW5ldGNfcG9ydF93cihodywgRU5FVENfUFNJUE1NUiwgMCk7XG4gXG4gXHQvKiBlbmFibGUgcG9ydCAqL1xuIFx0ZW5ldGNfcG9ydF93cihodywgRU5FVENfUE1SLCBFTkVUQ19QTVJfRU4pO1xuQEAgLTQ5NCwxMiArNDQ1LDkgQEAgc3RhdGljIGludCBlbmV0Y19wZl9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHR9XG4gXG4gXHRpZiAoY2hhbmdlZCBcdTAwMjYgTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSKSB7XG4tXHRcdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBlbmV0Y19zaV9wcml2KHByaXYtXHUwMDNlc2kpO1xuK1x0XHRib29sIHByb21pc2MgPSAhKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19GSUxURVIpO1xuIFxuLVx0XHRpZiAoISEoZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUikpXG4tXHRcdFx0ZW5ldGNfZGlzYWJsZV9zaV92bGFuX3Byb21pc2MocGYsIDApO1xuLVx0XHRlbHNlXG4tXHRcdFx0ZW5ldGNfZW5hYmxlX3NpX3ZsYW5fcHJvbWlzYyhwZiwgMCk7XG4rXHRcdGVuZXRjX3NldF9zaV92bGFuX3Byb21pc2MocHJpdi1cdTAwM2VzaSwgMCwgcHJvbWlzYyk7XG4gXHR9XG4gXG4gXHRpZiAoY2hhbmdlZCBcdTAwMjYgTkVUSUZfRl9MT09QQkFDSylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5oXG5pbmRleCAyODViN2U1YzQ4ZmRjNy4uNTZkMjNhOGExMWEwNjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmhcbkBAIC0xNywxMiArMTcsOSBAQCBzdHJ1Y3QgZW5ldGNfdmZfc3RhdGUge1xuIH07XG4gXG4gc3RydWN0IGVuZXRjX3BvcnRfY2FwcyB7XG4tXHR1MzIgaGFsZl9kdXBsZXg6MTtcbi1cdGludCBudW1fdnNpO1xuIFx0aW50IG51bV9tc2l4O1xuIFx0aW50IG51bV9yeF9iZHI7XG4gXHRpbnQgbnVtX3R4X2Jkcjtcbi1cdGludCBtYWNfZmlsdGVyX251bTtcbiB9O1xuIFxuIHN0cnVjdCBlbmV0Y19wZjtcbkBAIC00Nyw3ICs0NCw2IEBAIHN0cnVjdCBlbmV0Y19wZiB7XG4gXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgbXNnX3Rhc2s7XG4gXHRjaGFyIG1zZ19pbnRfbmFtZVtFTkVUQ19JTlRfTkFNRV9NQVhdO1xuIFxuLVx0Y2hhciB2bGFuX3Byb21pc2Nfc2ltYXA7IC8qIGJpdG1hcCBvZiBTSXMgaW4gVkxBTiBwcm9taXNjIG1vZGUgKi9cbiBcdERFQ0xBUkVfQklUTUFQKHZsYW5faHRfZmlsdGVyLCBFTkVUQ19WTEFOX0hUX1NJWkUpO1xuIFx0REVDTEFSRV9CSVRNQVAoYWN0aXZlX3ZsYW5zLCBWTEFOX05fVklEKTtcbiBcbkBAIC02MCw4ICs1Niw2IEBAIHN0cnVjdCBlbmV0Y19wZiB7XG4gXG4gXHRzdHJ1Y3QgZW5ldGNfcG9ydF9jYXBzIGNhcHM7XG4gXHRjb25zdCBzdHJ1Y3QgZW5ldGNfcGZfb3BzICpvcHM7XG4tXG4tXHRpbnQgbnVtX21mZTtcdC8qIG51bWJlciBvZiBtYWMgYWRkcmVzcyBmaWx0ZXIgdGFibGUgZW50cmllcyAqL1xuIH07XG4gXG4gI2RlZmluZSBwaHlsaW5rX3RvX2VuZXRjX3BmKGNvbmZpZykgXFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmNcbmluZGV4IDZlNWQyZjg2OTkxNTBiLi5kMzJhMTk1YTA0Yzk3ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jXG5AQCAtMSw1ICsxLDUgQEBcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjArIE9SIEJTRC0zLUNsYXVzZSlcbi0vKiBDb3B5cmlnaHQgMjAyNCBOWFAgKi9cbisvKiBDb3B5cmlnaHQgMjAyNC0yMDI2IE5YUCAqL1xuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzbC9lbmV0Y19tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbkBAIC04Nyw2ICs4NywxMTIgQEAgaW50IGVuZXRjX3NldHVwX21hY19hZGRyZXNzZXMoc3RydWN0IGRldmljZV9ub2RlICpucCwgc3RydWN0IGVuZXRjX3BmICpwZilcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0dXBfbWFjX2FkZHJlc3Nlcyk7XG4gXG4rdm9pZCBlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYylcbit7XG4rXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2c2ktXHUwMDNlaHc7XG4rXHRpbnQgcHNpcG1tcl9vZmY7XG4rXHR1MzIgdmFsO1xuK1xuK1x0aWYgKGlzX2VuZXRjX3JldjEoc2kpKVxuK1x0XHRwc2lwbW1yX29mZiA9IEVORVRDX1BTSVBNTVI7XG4rXHRlbHNlXG4rXHRcdHBzaXBtbXJfb2ZmID0gRU5FVEM0X1BTSVBNTVI7XG4rXG4rXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBwc2lwbW1yX29mZik7XG4rXG4rXHRpZiAocHJvbWlzYylcbitcdFx0dmFsIHw9IFBTSVBNTVJfU0lfTUFDX1VQKHNpX2lkKTtcbitcdGVsc2VcbitcdFx0dmFsIFx1MDAyNj0gflBTSVBNTVJfU0lfTUFDX1VQKHNpX2lkKTtcbitcbitcdGVuZXRjX3BvcnRfd3IoaHcsIHBzaXBtbXJfb2ZmLCB2YWwpO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyk7XG4rXG4rdm9pZCBlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYylcbit7XG4rXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2c2ktXHUwMDNlaHc7XG4rXHRpbnQgcHNpcG1tcl9vZmY7XG4rXHR1MzIgdmFsO1xuK1xuK1x0aWYgKGlzX2VuZXRjX3JldjEoc2kpKVxuK1x0XHRwc2lwbW1yX29mZiA9IEVORVRDX1BTSVBNTVI7XG4rXHRlbHNlXG4rXHRcdHBzaXBtbXJfb2ZmID0gRU5FVEM0X1BTSVBNTVI7XG4rXG4rXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBwc2lwbW1yX29mZik7XG4rXG4rXHRpZiAocHJvbWlzYylcbitcdFx0dmFsIHw9IFBTSVBNTVJfU0lfTUFDX01QKHNpX2lkKTtcbitcdGVsc2VcbitcdFx0dmFsIFx1MDAyNj0gflBTSVBNTVJfU0lfTUFDX01QKHNpX2lkKTtcbitcbitcdGVuZXRjX3BvcnRfd3IoaHcsIHBzaXBtbXJfb2ZmLCB2YWwpO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyk7XG4rXG4rdm9pZCBlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCB1NjQgaGFzaClcbit7XG4rXHRpbnQgcHNpdW1oZnIwX29mZiwgcHNpdW1oZnIxX29mZjtcbitcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZzaS1cdTAwM2VodztcbitcbitcdGlmIChpc19lbmV0Y19yZXYxKHNpKSkge1xuK1x0XHRib29sIGVyciA9IHNpLVx1MDAzZWVycmF0YSBcdTAwMjYgRU5FVENfRVJSX1VDTUNTV1A7XG4rXG4rXHRcdHBzaXVtaGZyMF9vZmYgPSBFTkVUQ19QU0lVTUhGUjAoc2lfaWQsIGVycik7XG4rXHRcdHBzaXVtaGZyMV9vZmYgPSBFTkVUQ19QU0lVTUhGUjEoc2lfaWQpO1xuK1x0fSBlbHNlIHtcbitcdFx0cHNpdW1oZnIwX29mZiA9IEVORVRDNF9QU0lVTUhGUjAoc2lfaWQpO1xuK1x0XHRwc2l1bWhmcjFfb2ZmID0gRU5FVEM0X1BTSVVNSEZSMShzaV9pZCk7XG4rXHR9XG4rXG4rXHRlbmV0Y19wb3J0X3dyKGh3LCBwc2l1bWhmcjBfb2ZmLCBsb3dlcl8zMl9iaXRzKGhhc2gpKTtcbitcdGVuZXRjX3BvcnRfd3IoaHcsIHBzaXVtaGZyMV9vZmYsIHVwcGVyXzMyX2JpdHMoaGFzaCkpO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIpO1xuK1xuK3ZvaWQgZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgdTY0IGhhc2gpXG4re1xuK1x0aW50IHBzaW1taGZyMF9vZmYsIHBzaW1taGZyMV9vZmY7XG4rXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2c2ktXHUwMDNlaHc7XG4rXG4rXHRpZiAoaXNfZW5ldGNfcmV2MShzaSkpIHtcbitcdFx0Ym9vbCBlcnIgPSBzaS1cdTAwM2VlcnJhdGEgXHUwMDI2IEVORVRDX0VSUl9VQ01DU1dQO1xuK1xuK1x0XHRwc2ltbWhmcjBfb2ZmID0gRU5FVENfUFNJTU1IRlIwKHNpX2lkLCBlcnIpO1xuK1x0XHRwc2ltbWhmcjFfb2ZmID0gRU5FVENfUFNJTU1IRlIxKHNpX2lkKTtcbitcdH0gZWxzZSB7XG4rXHRcdHBzaW1taGZyMF9vZmYgPSBFTkVUQzRfUFNJTU1IRlIwKHNpX2lkKTtcbitcdFx0cHNpbW1oZnIxX29mZiA9IEVORVRDNF9QU0lNTUhGUjEoc2lfaWQpO1xuK1x0fVxuK1xuK1x0ZW5ldGNfcG9ydF93cihodywgcHNpbW1oZnIwX29mZiwgbG93ZXJfMzJfYml0cyhoYXNoKSk7XG4rXHRlbmV0Y19wb3J0X3dyKGh3LCBwc2ltbWhmcjFfb2ZmLCB1cHBlcl8zMl9iaXRzKGhhc2gpKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKTtcbitcbit2b2lkIGVuZXRjX3NldF9zaV92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCBib29sIHByb21pc2MpXG4re1xuK1x0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnNpLVx1MDAzZWh3O1xuK1x0aW50IHBzaXB2bXJfb2ZmO1xuK1x0dTMyIHZhbDtcbitcbitcdGlmIChpc19lbmV0Y19yZXYxKHNpKSlcbitcdFx0cHNpcHZtcl9vZmYgPSBFTkVUQ19QU0lQVk1SO1xuK1x0ZWxzZVxuK1x0XHRwc2lwdm1yX29mZiA9IEVORVRDNF9QU0lQVk1SO1xuK1xuK1x0dmFsID0gZW5ldGNfcG9ydF9yZChodywgcHNpcHZtcl9vZmYpO1xuK1xuK1x0aWYgKHByb21pc2MpXG4rXHRcdHZhbCB8PSBQU0lQVk1SX1NJX1ZMQU5fUChzaV9pZCk7XG4rXHRlbHNlXG4rXHRcdHZhbCBcdTAwMjY9IH5QU0lQVk1SX1NJX1ZMQU5fUChzaV9pZCk7XG4rXG4rXHRlbmV0Y19wb3J0X3dyKGh3LCBwc2lwdm1yX29mZiwgdmFsKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyk7XG4rXG4gdm9pZCBlbmV0Y19wZl9uZXRkZXZfc2V0dXAoc3RydWN0IGVuZXRjX3NpICpzaSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdFx0ICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzICpuZGV2X29wcylcbiB7XG5AQCAtMjc1LDcgKzM4MSw4IEBAIHN0YXRpYyBib29sIGVuZXRjX3BvcnRfaGFzX3BjcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0cmV0dXJuIChwZi1cdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSB8fFxuIFx0XHRwZi1cdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggfHxcbiBcdFx0cGYtXHUwMDNlaWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYIHx8XG4tXHRcdHBmLVx1MDAzZWlmX21vZGUgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUkpO1xuK1x0XHRwZi1cdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJIHx8XG4rXHRcdHBmLVx1MDAzZWlmX21vZGUgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSKTtcbiB9XG4gXG4gaW50IGVuZXRjX21kaW9idXNfY3JlYXRlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbkBAIC0zMTYsMjUgKzQyMyw0MiBAQCBpbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuIHtcbiBcdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBlbmV0Y19zaV9wcml2KHByaXYtXHUwMDNlc2kpO1xuIFx0c3RydWN0IHBoeWxpbmsgKnBoeWxpbms7XG4rXHR1bnNpZ25lZCBsb25nIG1hY19jYXBzO1xuIFx0aW50IGVycjtcbiBcbiBcdHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFx1MDAyNnByaXYtXHUwMDNlbmRldi1cdTAwM2VkZXY7XG4gXHRwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XG4tXHRwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFIHxcbi1cdFx0TUFDXzEwIHwgTUFDXzEwMCB8IE1BQ18xMDAwIHwgTUFDXzI1MDBGRDtcbiBcbiBcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4gXHRcdCAgcGYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuLVx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSxcbi1cdFx0ICBwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4tXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCxcbi1cdFx0ICBwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4tXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcbi1cdFx0ICBwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4tXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUksXG4tXHRcdCAgcGYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuLVx0cGh5X2ludGVyZmFjZV9zZXRfcmdtaWkocGYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuIFxuK1x0bWFjX2NhcHMgPSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0U7XG4rXHRpZiAoIWVuZXRjX2lzX3BzZXVkb19tYWMocHJpdi1cdTAwM2VzaSkpIHtcbitcdFx0bWFjX2NhcHMgfD0gTUFDXzEwIHwgTUFDXzEwMCB8IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEO1xuK1xuK1x0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLFxuK1x0XHRcdCAgcGYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuK1x0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCxcbitcdFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbitcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsXG4rXHRcdFx0ICBwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4rXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSSxcbitcdFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbitcbitcdFx0aWYgKCFpc19lbmV0Y19yZXYxKHByaXYtXHUwMDNlc2kpKSB7XG4rXHRcdFx0bWFjX2NhcHMgfD0gTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEO1xuK1x0XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIsXG4rXHRcdFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbitcdFx0fVxuK1xuK1x0XHRwaHlfaW50ZXJmYWNlX3NldF9yZ21paShwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4rXHR9IGVsc2Uge1xuK1x0XHRtYWNfY2FwcyB8PSBNQUNfMTBGRCB8IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEIHxcbitcdFx0XHQgICAgTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEIHwgTUFDXzIwMDAwRkQgfFxuK1x0XHRcdCAgICBNQUNfMjUwMDBGRDtcbitcdH1cbitcbitcdHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBtYWNfY2FwcztcbiBcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShub2RlKSxcbiBcdFx0XHRcdCBwZi1cdTAwM2VpZl9tb2RlLCBvcHMpO1xuIFx0aWYgKElTX0VSUihwaHlsaW5rKSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaFxuaW5kZXggNTdkMmUwZWJkMmIwYmIuLjgyNDNjZTBkZTU3ZjY0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmhcbkBAIC0xNyw2ICsxNywxMSBAQCB2b2lkIGVuZXRjX3NldF9kZWZhdWx0X3Jzc19rZXkoc3RydWN0IGVuZXRjX3BmICpwZik7XG4gaW50IGVuZXRjX3ZsYW5fcnhfYWRkX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgX19iZTE2IHByb3QsIHUxNiB2aWQpO1xuIGludCBlbmV0Y192bGFuX3J4X2RlbF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIF9fYmUxNiBwcm90LCB1MTYgdmlkKTtcbiBpbnQgZW5ldGNfaW5pdF9zcmlvdl9yZXNvdXJjZXMoc3RydWN0IGVuZXRjX3BmICpwZik7XG4rdm9pZCBlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYyk7XG4rdm9pZCBlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYyk7XG4rdm9pZCBlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCB1NjQgaGFzaCk7XG4rdm9pZCBlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCB1NjQgaGFzaCk7XG4rdm9pZCBlbmV0Y19zZXRfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgYm9vbCBwcm9taXNjKTtcbiBcbiBzdGF0aWMgaW5saW5lIHUxNiBlbmV0Y19nZXRfaXBfcmV2aXNpb24oc3RydWN0IGVuZXRjX2h3ICpodylcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3Fvcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3Fvcy5jXG5pbmRleCA3YjE3YmNhMjRmMjYwZi4uMmFhMGZjYWFmY2QyM2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcW9zLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19xb3MuY1xuQEAgLTExMzUsNyArMTEzNSw2IEBAIHN0YXRpYyBpbnQgZW5ldGNfcHNmcF9wYXJzZV9jbHNmbG93ZXIoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBmbG93X2FjdGlvbl9lbnRyeSAqZW50cnk7XG4gXHRzdHJ1Y3QgYWN0aW9uX2dhdGVfZW50cnkgKmU7XG4gXHR1OCBzZmlfb3ZlcndyaXRlID0gMDtcbi1cdGludCBlbnRyaWVzX3NpemU7XG4gXHRpbnQgaSwgZXJyO1xuIFxuIFx0aWYgKGYtXHUwMDNlY29tbW9uLmNoYWluX2luZGV4IFx1MDAzZT0gcHJpdi1cdTAwM2Vwc2ZwX2NhcC5tYXhfc3RyZWFtaWQpIHtcbkBAIC0xMjQyLDggKzEyNDEsNyBAQCBzdGF0aWMgaW50IGVuZXRjX3BzZnBfcGFyc2VfY2xzZmxvd2VyKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsXG4gXHRcdGdvdG8gZnJlZV9maWx0ZXI7XG4gXHR9XG4gXG4tXHRlbnRyaWVzX3NpemUgPSBzdHJ1Y3Rfc2l6ZShzZ2ksIGVudHJpZXMsIGVudHJ5Zy1cdTAwM2VnYXRlLm51bV9lbnRyaWVzKTtcbi1cdHNnaSA9IGt6YWxsb2MoZW50cmllc19zaXplLCBHRlBfS0VSTkVMKTtcbitcdHNnaSA9IGt6YWxsb2NfZmxleCgqc2dpLCBlbnRyaWVzLCBlbnRyeWctXHUwMDNlZ2F0ZS5udW1fZW50cmllcyk7XG4gXHRpZiAoIXNnaSkge1xuIFx0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIGZyZWVfZmlsdGVyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmNcbmluZGV4IDljZGIwYTRkNmJhZmI3Li43ZGNiNGEwMjQ2ZjUyOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuY1xuQEAgLTMxNyw3ICszMTcsMTQgQEAgc3RhdGljIGludCBlbmV0Y192Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcbiBcdGVuZXRjX2dldF9zaV9jYXBzKHNpKTtcbiBcbi1cdG5kZXYgPSBhbGxvY19ldGhlcmRldl9tcShzaXplb2YoKnByaXYpLCBFTkVUQ19NQVhfTlVNX1RYUVMpO1xuK1x0LyogQ3VycmVudGx5LCB0aGUgc3VwcG9ydGVkIFNvQ3MgaGF2ZSBhIG1heCBvZiA2IENQVXMgYW5kIHRoZSBWRnNcbitcdCAqIGhhdmUgbGVzcyB0aGFuIDYgUlgvVFggcmluZ3MuIFNvIG5vIGlzc3VlcyBmb3IgdGhlc2Ugc3VwcG9ydGVkXG4rXHQgKiBTb0NzLCBidXQgZm9yIGZ1dHVyZSBTb0NzIHdoaWNoIGhhdmUgbW9yZSBDUFVzIG9yIG1vcmUgVFgvUlhcbitcdCAqIHJpbmdzLCBhbGwgdGhlIHJlbGF0ZWQgbG9naWMgbmVlZHMgdG8gYmUgaW1wcm92ZWQuXG4rXHQgKi9cbitcdG5kZXYgPSBhbGxvY19ldGhlcmRldl9tcXMoc2l6ZW9mKCpwcml2KSxcbitcdFx0XHRcdCAgbWluKHNpLVx1MDAzZW51bV90eF9yaW5ncywgRU5FVENfTUFYX05VTV9UWFFTKSxcbitcdFx0XHRcdCAgbWluKHNpLVx1MDAzZW51bV9yeF9yaW5ncywgRU5FVENfTUFYX05VTV9UWFFTKSk7XG4gXHRpZiAoIW5kZXYpIHtcbiBcdFx0ZXJyID0gLUVOT01FTTtcbiBcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCJuZXRkZXYgY3JlYXRpb24gZmFpbGVkXFxuXCIpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZnNsL250bXAuaCBiL2luY2x1ZGUvbGludXgvZnNsL250bXAuaFxuaW5kZXggZDNiNmM0NzZiOTFhMmQuLjc2NGVmMjg5MjYwODVlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9mc2wvbnRtcC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2ZzbC9udG1wLmhcbkBAIC03NSw4ICs3NSwxMCBAQCBzdHJ1Y3QgbnRtcF91c2VyIHtcbiBcdC8qIE5UTVAgdGFibGUgYml0bWFwcyBmb3IgcmVzb3VyY2UgbWFuYWdlbWVudCAqL1xuIFx0dTMyIGV0dF9iaXRtYXBfc2l6ZTtcbiBcdHUzMiBlY3RfYml0bWFwX3NpemU7XG4rXHR1MTYgbWFmdF9udW1fZW50cmllcztcbiBcdHVuc2lnbmVkIGxvbmcgKmV0dF9naWRfYml0bWFwOyAvKiBvbmx5IHZhbGlkIGZvciBzd2l0Y2ggKi9cbiBcdHVuc2lnbmVkIGxvbmcgKmVjdF9naWRfYml0bWFwOyAvKiBvbmx5IHZhbGlkIGZvciBzd2l0Y2ggKi9cbitcdHVuc2lnbmVkIGxvbmcgKm1hZnRfZWlkX2JpdG1hcDsgLyogb25seSB2YWxpZCBmb3IgRU5FVEMgKi9cbiB9O1xuIFxuIHN0cnVjdCBtYWZ0X2VudHJ5X2RhdGEge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDY6NTUuMDIyMjc4Nzc2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU0OTM1MDgyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZyZWVzY2FsZSBFTkVUQyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJIGhhdmUgYSBwYXRjaCBmb3IgdGhlIEZyZWVzY2FsZSBFTkVUQyBldGhlcm5ldCBkcml2ZXIuIEl0IHRvdWNoZXMgYSBzaWduaWZpY2FudCBjaHVuayBvZiB0aGUgZHJpdmVyOiBgZW5ldGMuaGAsIGBlbmV0YzRfZGVidWdmcy5jYCwgYGVuZXRjNF9ody5oYCwgYGVuZXRjNF9wZi5jYCwgYW5kIHNvIG9uLCBhbGwgdGhlIHdheSB0aHJvdWdoIHRvIGBudG1wLmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJJcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U/XCIgWWVzLCBpdCBhcHBlYXJzIHRvIGJlLiBNQUMgZmlsdGVyaW5nLCBSWCBtb2RlIHNldHRpbmdzLCBOVE1QIGJpdG1hcCBpbml0aWFsaXphdGlvbiwgYW5kIGxpbmsgdXAgbG9naWMgYXJlIGFsbCBiZWluZyBtb2RpZmllZC4gVGhhdCBzY3JlYW1zIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgbmV0d29yayBkcml2ZXIsIHdoaWNoIHJhaXNlcyBzb21lIHJlZCBmbGFncywgYnV0IGFsc28gcG90ZW50aWFsIHRhcmdldHMgZm9yIHRlc3RpbmcuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogaG93IHJlYWNoYWJsZSBpcyB0aGlzIGNvZGU/IFRoZSBkcml2ZXIgaXMgYGZyZWVzY2FsZS9lbmV0Y2AsIHNvIGl0J3MgYSBGcmVlc2NhbGUgKG5vdyBOWFApIEVORVRDIGRyaXZlci4gTmV0d29yayBkcml2ZXJzIGFyZSBvZnRlbiB0cmlja3kgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBHZW5lcmFsbHksIGhhcmR3YXJlLXNwZWNpZmljIGV0aGVybmV0IGRyaXZlcnMgYXJlbid0IHJlYWNoYWJsZSB1bmxlc3MgdGhlcmUncyBhbiBlbXVsYXRvci4gVGhlIGRyaXZlcidzIGhhcmR3YXJlLWRlcGVuZGVudCBuYXR1cmUgbWVhbnMgSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBhY2Nlc3NpYmlsaXR5LiBRRU1VIGRvZXMgaGF2ZSBzb21lIHN1cHBvcnQgZm9yIE5YUCBib2FyZHMsIGJ1dCBkb2VzIGl0IGVtdWxhdGUgRU5FVEM/IEl0J3MgYSBQQ0llIGRldmljZSwgc28gdGhhdCBtaWdodCBjb21wbGljYXRlIHRoaW5ncy4gSSBkb24ndCBuZWVkIHRvIGRlZmluaXRpdmVseSBrbm93IGlmIFFFTVUgZW11bGF0ZXMgaXQgcGVyZmVjdGx5OyBpbnN0ZWFkLCBJIGp1c3QgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgbGlrZWx5IHRvIGJlIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cywgc3VjaCBhcyBHQ0Ugb3IgZXZlbiBRRU1VIHdpdGhvdXQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgZW11bGF0aW9uLlxuXG5UaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBcImNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIiBUaGlzIGlzIGV4YWN0bHkgd2hhdCBJJ20gbG9va2luZyBmb3IuIFNvLCBpcyBFTkVUQyBlbXVsYXRlZCBpbiBRRU1VPyBMZXQncyBjaGVjayBpZiBpdCdzIGEgUENJIGRldmljZSB3aXRoaW4gUUVNVSdzIGZyYW1ld29yay4gU2luY2UgaXQgaXMgYSBQQ0llIGRldmljZSwgaXQncyBsZXNzIGxpa2VseSB0byBiZSBlbXVsYXRlZC4gU2VhcmNoaW5nIFFFTVUncyBzb3VyY2UgY29kZSwgb3IganVzdCBhc3N1bWluZyBpdCdzIG5vdCBjb21tb25seSBmdXp6ZWQsIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gV2FpdCwgc3l6a2FsbGVyIHByb2JhYmx5IGRvZXNuJ3QgaGF2ZSBhbiBFTkVUQyBlbXVsYXRvci4gTGV0J3MgY2hlY2suIERvZXMgc3l6a2FsbGVyIGhhdmUgYSBkZWZpbml0aW9uP1xuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA5MSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA3OjAzLjU3MTYzMjA5NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjk4OTkxNTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVuZXRjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg0NzEgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLHhnZW5lLWVuZXQueWFtbD04OT1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLHhnZW5lLWVuZXQueWFtbC05OS0gICAgICAgIHBvcnQtaWQgPSBcXHUwMDNjMFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hcG0seGdlbmUtZW5ldC55YW1sOjEwMDogICAgICAgIGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2bWVuZXRjbGsgMFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hcG0seGdlbmUtZW5ldC55YW1sLTEwMS0gICAgICAgIGxvY2FsLW1hYy1hZGRyZXNzID0gWzAwIDAxIDczIDAwIDAwIDAxXTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLHhnZW5lLW1kaW8tcmdtaWkueWFtbD0zNj1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLHhnZW5lLW1kaW8tcmdtaWkueWFtbC00Mi0gICAgICAgIHJlZyA9IFxcdTAwM2MweDE3MDIwMDAwIDB4ZDEwMFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hcG0seGdlbmUtbWRpby1yZ21paS55YW1sOjQzOiAgICAgICAgY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZtZW5ldGNsayAwXFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FwbSx4Z2VuZS1tZGlvLXJnbWlpLnlhbWwtNDQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sPTE1PWRlc2NyaXB0aW9uOiB8XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTM4LSAgICBUaGlzIGlzIGZvdW5kIGluIHRoZSBOWFAgTFMxMDI4QS4gSXQgaXMgYSBQQ0kgZGV2aWNlLCBwYXJ0IG9mIHRoZSBsYXJnZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sOjM5OiAgICBlbmV0YyByb290IGNvbXBsZXguIEFzIGEgcmVzdWx0LCB0aGUgZXRoZXJuZXQtc3dpdGNoIG5vZGUgaXMgYSBzdWItbm9kZSBvZlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWwtNDAtICAgIHRoZSBQQ0llIHJvb3QgY29tcGxleCBub2RlIGFuZCBpdHMgXFxcInJlZ1xcXCIgcHJvcGVydHkgY29uZm9ybXMgdG8gdGhlIHBhcmVudFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbC00Mi1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sOjQzOiAgICBJZiBhbnkgZXh0ZXJuYWwgc3dpdGNoIHBvcnQgaXMgZW5hYmxlZCwgdGhlIGVuZXRjIFBGMiAoZW5ldGNfcG9ydDIpIHNob3VsZFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWwtNDQtICAgIGJlIGVuYWJsZWQgYXMgd2VsbC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBpbnRlcm5hbCBNRElPIGJ1cyAoZXhwb3NlZCB0aHJvdWdoXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbDo0NTogICAgRUEgQkFSIDApIHVzZWQgdG8gYWNjZXNzIHRoZSBNQUMgUENTIHJlZ2lzdGVycyB0cnVseSBiZWxvbmdzIHRvIHRoZSBlbmV0Y1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWwtNDYtICAgIHBvcnQgMiBhbmQgbm90IHRvIEZlbGl4Llxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbD05Mj1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWwtMTM5LSAgICAgICAgICAgICAgICAgICAgcmVnID0gXFx1MDAzYzRcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWw6MTQwOiAgICAgICAgICAgICAgICAgICAgZXRoZXJuZXQgPSBcXHUwMDNjXFx1MDAyNmVuZXRjX3BvcnQyXFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTE0MS0gICAgICAgICAgICAgICAgICAgIHBoeS1tb2RlID0gXFxcImludGVybmFsXFxcIjtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWwtMTUxLSAgICAgICAgICAgICAgICAgICAgcmVnID0gXFx1MDAzYzVcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWw6MTUyOiAgICAgICAgICAgICAgICAgICAgZXRoZXJuZXQgPSBcXHUwMDNjXFx1MDAyNmVuZXRjX3BvcnQzXFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTE1My0gICAgICAgICAgICAgICAgICAgIHBoeS1tb2RlID0gXFxcImludGVybmFsXFxcIjtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL254cCxuZXRjLXN3aXRjaC55YW1sPTgxPWV4YW1wbGVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbnhwLG5ldGMtc3dpdGNoLnlhbWwtMTE5LSAgICAgICAgICAgICAgICAgICAgcmVnID0gXFx1MDAzYzNcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL254cCxuZXRjLXN3aXRjaC55YW1sOjEyMDogICAgICAgICAgICAgICAgICAgIGV0aGVybmV0ID0gXFx1MDAzY1xcdTAwMjZlbmV0YzNcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL254cCxuZXRjLXN3aXRjaC55YW1sLTEyMS0gICAgICAgICAgICAgICAgICAgIHBoeS1tb2RlID0gXFxcImludGVybmFsXFxcIjtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbC0zLS0tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWw9OT1kZXNjcmlwdGlvbjpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWw6MTA6ICBUaGUgZnNsX2VuZXRjIGRyaXZlciBjYW4gcHJvYmUgb24gdGhlIEludGVncmF0ZWQgRW5kcG9pbnQgUmVnaXN0ZXIgQmxvY2ssXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sLTExLSAgd2hpY2ggcHJlY29uZmlndXJlcyB0aGUgRklGTyBsaW1pdHMgZm9yIHRoZSBFTkVUQyBwb3J0cy5cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbD0xOT1wcm9wZXJ0aWVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sLTIxLSAgICBlbnVtOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbDoyMjogICAgICAtIGZzbCxsczEwMjhhLWVuZXRjLWllcmJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWwtMjMtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWw9MzM9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWwtMzUtICAgIGVuZHBvaW50LWNvbmZpZ0BmMDgwMDAwMCB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sOjM2OiAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJmc2wsbHMxMDI4YS1lbmV0Yy1pZXJiXFxcIjtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWwtMzctICAgICAgICByZWcgPSBcXHUwMDNjMHhmMDgwMDAwMCAweDEwMDAwXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbC0zLS0tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2ZzbCxlbmV0Yy1tZGlvLnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1tZGlvLnlhbWw9MjE9cHJvcGVydGllczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbC0yNi0gICAgICAgICAgICAgIC0gcGNpMTk1NyxlZTAxXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sOjI3OiAgICAgICAgICAtIGNvbnN0OiBmc2wsZW5ldGMtbWRpb1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbC0yOC0gICAgICAtIGl0ZW1zOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sPTQ0PWV4YW1wbGVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sLTUwLSAgICAgICAgbWRpb0AwLDMge1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbDo1MTogICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcInBjaTE5NTcsZWUwMVxcXCIsIFxcXCJmc2wsZW5ldGMtbWRpb1xcXCI7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sLTUyLSAgICAgICAgICAgIHJlZyA9IFxcdTAwM2MweDAwMDMwMCAwIDAgMCAwXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLnlhbWwtMy0tLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sOjQ6JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZnNsLGVuZXRjLnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbC01LSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbD0yMT1wcm9wZXJ0aWVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbC0yNi0gICAgICAgICAgICAgIC0gcGNpMTk1NyxlMTAwXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbDoyNzogICAgICAgICAgLSBjb25zdDogZnNsLGVuZXRjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbC0yOC0gICAgICAtIGVudW06XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sPTY5PWV4YW1wbGVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbC03NS0gICAgICAgIGV0aGVybmV0QDAsMCB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbDo3NjogICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcInBjaTE5NTcsZTEwMFxcXCIsIFxcXCJmc2wsZW5ldGNcXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLnlhbWwtNzctICAgICAgICAgICAgcmVnID0gXFx1MDAzYzB4MDAwMDAwIDAgMCAwIDBcXHUwMDNlO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9mc2wscHRwLnlhbWw9MTI9cHJvcGVydGllczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvZnNsLHB0cC55YW1sLTIwLSAgICAgICAgICAtIGNvbnN0OiBwY2kxOTU3LGVlMDJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL2ZzbCxwdHAueWFtbDoyMTogICAgICAgICAgLSBjb25zdDogZnNsLGVuZXRjLXB0cFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvZnNsLHB0cC55YW1sLTIyLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9mc2wscHRwLnlhbWw9MTI5PWFsbE9mOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9mc2wscHRwLnlhbWwtMTMzLSAgICAgICAgICBjb250YWluczpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL2ZzbCxwdHAueWFtbDoxMzQ6ICAgICAgICAgICAgY29uc3Q6IGZzbCxlbmV0Yy1wdHBcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL2ZzbCxwdHAueWFtbC0xMzUtICAgIHRoZW46XFxuLS1cXG5NQUlOVEFJTkVSUz0xMDMyNT1TOlxcdE1haW50YWluZWRcXG5NQUlOVEFJTkVSUzoxMDMyNjpGOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjKi55YW1sXFxuTUFJTlRBSU5FUlMtMTAzMjctRjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxuZXRjLWJsay1jdHJsLnlhbWxcXG5NQUlOVEFJTkVSUzoxMDMyODpGOlxcdGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9cXG5NQUlOVEFJTkVSUzoxMDMyOTpGOlxcdGluY2x1ZGUvbGludXgvZnNsL2VuZXRjX21kaW8uaFxcbk1BSU5UQUlORVJTLTEwMzMwLUY6XFx0aW5jbHVkZS9saW51eC9mc2wvbmV0Y19nbG9iYWwuaFxcbi0tXFxuTUFJTlRBSU5FUlM9MTA0MzY9RjpcXHRkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBydGMqXFxuTUFJTlRBSU5FUlM6MTA0Mzc6RjpcXHRkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcHRwLmNcXG5NQUlOVEFJTkVSUy0xMDQzOC1GOlxcdGRyaXZlcnMvcHRwL3B0cF9xb3JpcS5jXFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaT0yMTU9XFx0XFx0XFx0ZXRoY2xrOiBldGhjbGsge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2ktMjI3LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpOjIyODpcXHRcXHRcXHRtZW5ldGNsazogbWVuZXRjbGsge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpLTIyOS1cXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcImFwbSx4Z2VuZS1kZXZpY2UtY2xvY2tcXFwiO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2ktMjMzLVxcdFxcdFxcdFxcdHJlZy1uYW1lcyA9IFxcXCJjc3ItcmVnXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaToyMzQ6XFx0XFx0XFx0XFx0Y2xvY2stb3V0cHV0LW5hbWVzID0gXFxcIm1lbmV0Y2xrXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaS0yMzUtXFx0XFx0XFx0fTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpPTk3MT1cXHRcXHRtZGlvOiBtZGlvQDE3MDIwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpLTk3NS1cXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwIDB4MTcwMjAwMDAgMHgwIDB4ZDEwMFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2k6OTc2OlxcdFxcdFxcdGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2bWVuZXRjbGsgMFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2ktOTc3LVxcdFxcdH07XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaT05Nzk9XFx0XFx0bWVuZXQ6IGV0aGVybmV0QDE3MDIwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpLTk4Ny1cXHRcXHRcXHRkbWEtY29oZXJlbnQ7XFxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2k6OTg4OlxcdFxcdFxcdGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2bWVuZXRjbGsgMFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2ktOTg5LVxcdFxcdFxcdC8qIG1hYyBhZGRyZXNzIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIGJvb3Rsb2FkZXIgKi9cXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHM9MzA9XFx0XFx0cG93ZXItbGVkIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtMzgtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1rYm94LWEtMjMwLWxzLmR0czozOTpcXHUwMDI2ZW5ldGNfbWRpb19wZjMge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtNDAtXFx0LyogQkNNNTQxNDAgUVNHTUlJIHF1YWQgUEhZICovXFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLWtib3gtYS0yMzAtbHMuZHRzPTUzPVxcdHFzZ21paV9waHkzOiBldGhlcm5ldC1waHlAMTAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1rYm94LWEtMjMwLWxzLmR0cy01Ny1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLWtib3gtYS0yMzAtbHMuZHRzOjU4OlxcdTAwMjZlbmV0Y19wb3J0MiB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1rYm94LWEtMjMwLWxzLmR0cy01OS1cXHRudm1lbS1jZWxscyA9IFxcdTAwM2NcXHUwMDI2YmFzZV9tYWNfYWRkcmVzcyAyXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtNjMtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1rYm94LWEtMjMwLWxzLmR0czo2NDpcXHUwMDI2ZW5ldGNfcG9ydDMge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtNjUtXFx0bnZtZW0tY2VsbHMgPSBcXHUwMDNjXFx1MDAyNmJhc2VfbWFjX2FkZHJlc3MgM1xcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHM9MTk9LyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHMtMjMtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzOjI0OlxcdTAwMjZlbmV0Y19tZGlvX3BmMyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzLTI1LVxcdC8qIERlbGV0ZSB1bnVzZWQgcGh5IG5vZGUgKi9cXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIxLmR0cz00Mz1cXHRcXHR2ZGRoOiB2ZGRoLXJlZ3VsYXRvciB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHMtNDgtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzOjQ5OlxcdTAwMjZlbmV0Y19wb3J0MCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzLTUwLVxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHMtNTQtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzOjU1OlxcdTAwMjZlbmV0Y19wb3J0MSB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzLTU2LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnBoeTBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzPTE1PS8ge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzLTE5LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0czoyMDpcXHUwMDI2ZW5ldGNfbWRpb19wZjMge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0cy0yMS1cXHRwaHkxOiBldGhlcm5ldC1waHlANCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMi5kdHMtMjctXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzOjI4OlxcdTAwMjZlbmV0Y19wb3J0MCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzLTI5LVxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMi5kdHMtMzctXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzOjM4OlxcdTAwMjZlbmV0Y19wb3J0MiB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzLTM5LVxcdG52bWVtLWNlbGxzID0gXFx1MDAzY1xcdTAwMjZiYXNlX21hY19hZGRyZXNzIDJcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzLTQzLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0czo0NDpcXHUwMDI2ZW5ldGNfcG9ydDMge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0cy00NS1cXHRudm1lbS1jZWxscyA9IFxcdTAwM2NcXHUwMDI2YmFzZV9tYWNfYWRkcmVzcyAzXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXI0LmR0cz0xNj0vIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXI0LmR0cy0yMC1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyNC5kdHM6MjE6XFx1MDAyNmVuZXRjX21kaW9fcGYzIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyNC5kdHMtMjItXFx0cGh5MTogZXRoZXJuZXQtcGh5QDQge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjQuZHRzPTM3PVxcdFxcdHZkZGg6IHZkZGgtcmVndWxhdG9yIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXI0LmR0cy00Mi1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyNC5kdHM6NDM6XFx1MDAyNmVuZXRjX3BvcnQxIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyNC5kdHMtNDQtXFx0cGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2cGh5MVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjguZHRzPTc5PVxcdTAwMjZkdWFydDEge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LmR0cy04Mi1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjguZHRzOjgzOlxcdTAwMjZlbmV0Y19tZGlvX3BmMyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LmR0cy04NC1cXHRwaHkwOiBldGhlcm5ldC1waHlANSB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjguZHRzLTkwLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC5kdHM6OTE6XFx1MDAyNmVuZXRjX3BvcnQwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjguZHRzLTkyLVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnBoeTBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTEzYmIuZHRzbz0xOT1cXHRzbG90MV9zZ21paTogZXRoZXJuZXQtcGh5QDIge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTEzYmIuZHRzby0yNS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtMTNiYi5kdHNvOjI2OlxcdTAwMjZlbmV0Y19wb3J0MCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTEzYmIuZHRzby0yNy1cXHRwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZzbG90MV9zZ21paVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtNjViYi5kdHNvPTE4PVxcdHNsb3QxX3NnbWlpOiBldGhlcm5ldC1waHlAMiB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtNjViYi5kdHNvLTI0LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy02NWJiLmR0c286MjU6XFx1MDAyNmVuZXRjX3BvcnQwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtNjViYi5kdHNvLTI2LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnNsb3QxX3NnbWlpXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy04NWJiLmR0c289MTg9XFx0c2xvdDFfc2dtaWk6IGV0aGVybmV0LXBoeUAxYyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtODViYi5kdHNvLTIzLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy04NWJiLmR0c286MjQ6XFx1MDAyNmVuZXRjX3BvcnQwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtODViYi5kdHNvLTI1LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnNsb3QxX3NnbWlpXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy04OTliLmR0c289MzE9XFx0c2xvdDFfc2dtaWkzOiBldGhlcm5ldC1waHlAMWYge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTg5OWIuZHRzby0zNS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtODk5Yi5kdHNvOjM2OlxcdTAwMjZlbmV0Y19wb3J0MCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTg5OWIuZHRzby0zNy1cXHRwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZzbG90MV9zZ21paTBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLmR0cz05Mj1cXHRtZGlvLW11eCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzLTk0LVxcdFxcdG11eC1jb250cm9scyA9IFxcdTAwM2NcXHUwMDI2bXV4IDBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHM6OTU6XFx0XFx0bWRpby1wYXJlbnQtYnVzID0gXFx1MDAzY1xcdTAwMjZlbmV0Y19tZGlvX3BmM1xcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLmR0cy05Ni1cXHRcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHM9MjM0PVxcdTAwMjZkdWFydDEge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLmR0cy0yMzctXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLmR0czoyMzg6XFx1MDAyNmVuZXRjX3BvcnQxIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzLTIzOS1cXHRwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZxZHNfcGh5MVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzLTI0My1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzOjI0NDpcXHUwMDI2ZW5ldGNfcG9ydDIge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHMtMjQ1LVxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHM9MzcxPVxcdTAwMjZtc2NjX2ZlbGl4X3BvcnQ0IHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzOjM3MjpcXHRldGhlcm5ldCA9IFxcdTAwM2NcXHUwMDI2ZW5ldGNfcG9ydDJcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHMtMzczLVxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHM9MTg9XFx0YWxpYXNlcyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTI1LVxcdFxcdHNwaTAgPSBcXHUwMDI2ZnNwaTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjI2OlxcdFxcdGV0aGVybmV0MCA9IFxcdTAwMjZlbmV0Y19wb3J0MDtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjI3OlxcdFxcdGV0aGVybmV0MSA9IFxcdTAwMjZlbmV0Y19wb3J0MjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTI4LVxcdFxcdGV0aGVybmV0MiA9IFxcdTAwMjZtc2NjX2ZlbGl4X3BvcnQwO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0zMy1cXHRcXHRldGhlcm5ldDcgPSBcXHUwMDI2bXNjY19mZWxpeF9wb3J0NTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjM0OlxcdFxcdGV0aGVybmV0OCA9IFxcdTAwMjZlbmV0Y19wb3J0MztcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTM1LVxcdH07XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzPTExOT1cXHUwMDI2ZHVhcnQxIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHMtMTIyLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHM6MTIzOlxcdTAwMjZlbmV0Y19tZGlvX3BmMyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0xMjQtXFx0c2dtaWlfcGh5MDogZXRoZXJuZXQtcGh5QDIge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cz0xNDE9XFx0cXNnbWlpX3BoeTM6IGV0aGVybmV0LXBoeUAxMyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTE0NS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjE0NjpcXHUwMDI2ZW5ldGNfcG9ydDAge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHMtMTQ3LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnNnbWlpX3BoeTBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0xNTItXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0czoxNTM6XFx1MDAyNmVuZXRjX3BvcnQyIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTE1NC1cXHRzdGF0dXMgPSBcXFwib2theVxcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTE1Ni1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjE1NzpcXHUwMDI2ZW5ldGNfcG9ydDMge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHMtMTU4LVxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2k9MTQxPVxcdFxcdHFzZ21paS1yc3RuLWhvZyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpLTE0OS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpOjE1MDpcXHUwMDI2ZW5ldGNfbWRpb19wZjMge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2ktMTUxLVxcdG1kaW8wX3JnbWlpX3BoeTAwOiBldGhlcm5ldC1waHlAMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpPTE5Mz1cXHRxc2dtaWlfcGh5NDogZXRoZXJuZXQtcGh5QDFmIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2ktMTk3LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2k6MTk4OlxcdTAwMjZlbmV0Y19wb3J0MCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaS0xOTktXFx0cGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2bWRpbzBfc2dtaWlfcGh5MDNcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaS0yMDQtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaToyMDU6XFx1MDAyNmVuZXRjX3BvcnQxIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpLTIwNi1cXHRwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZtZGlvMF9yZ21paV9waHkwMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpLTIxMC1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpOjIxMTpcXHUwMDI2ZW5ldGNfcG9ydDIge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2ktMjEyLVxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2k9MjQ0PVxcdTAwMjZtc2NjX2ZlbGl4X3BvcnQ0IHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpOjI0NTpcXHRldGhlcm5ldCA9IFxcdTAwM2NcXHUwMDI2ZW5ldGNfcG9ydDJcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2ktMjQ2LVxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k9MTA3ND1cXHRcXHRwY2llQDFmMDAwMDAwMCB7IC8qIEludGVncmF0ZWQgRW5kcG9pbnQgUm9vdCBDb21wbGV4ICovXFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTExMDMtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTA0OlxcdFxcdFxcdGVuZXRjX3BvcnQwOiBldGhlcm5ldEAwLDAge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTEwNTpcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcInBjaTE5NTcsZTEwMFxcXCIsIFxcXCJmc2wsZW5ldGNcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTEwNi1cXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwMDAwMDAgMCAwIDAgMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTExMDktXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTEwOlxcdFxcdFxcdGVuZXRjX3BvcnQxOiBldGhlcm5ldEAwLDEge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTExMTpcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcInBjaTE5NTcsZTEwMFxcXCIsIFxcXCJmc2wsZW5ldGNcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTExMi1cXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwMDAxMDAgMCAwIDAgMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTExMTUtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTE2OlxcdFxcdFxcdGVuZXRjX3BvcnQyOiBldGhlcm5ldEAwLDIge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTExNzpcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcInBjaTE5NTcsZTEwMFxcXCIsIFxcXCJmc2wsZW5ldGNcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTExOC1cXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwMDAyMDAgMCAwIDAgMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTExMjI9XFx0XFx0XFx0XFx0Zml4ZWQtbGluayB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTExMjgtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTI5OlxcdFxcdFxcdGVuZXRjX21kaW9fcGYzOiBtZGlvQDAsMyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTMwOlxcdFxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwicGNpMTk1NyxlZTAxXFxcIiwgXFxcImZzbCxlbmV0Yy1tZGlvXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTExMzEtXFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4MDAwMzAwIDAgMCAwIDBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaT0xMTM2PVxcdFxcdFxcdGV0aGVybmV0QDAsNCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTM3OlxcdFxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwicGNpMTk1NyxlZTAyXFxcIiwgXFxcImZzbCxlbmV0Yy1wdHBcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTEzOC1cXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwMDA0MDAgMCAwIDAgMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTExNzY9XFx0XFx0XFx0XFx0XFx0bXNjY19mZWxpeF9wb3J0NDogcG9ydEA0IHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTE3OC1cXHRcXHRcXHRcXHRcXHRcXHRwaHktbW9kZSA9IFxcXCJpbnRlcm5hbFxcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTc5OlxcdFxcdFxcdFxcdFxcdFxcdGV0aGVybmV0ID0gXFx1MDAzY1xcdTAwMjZlbmV0Y19wb3J0MlxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTgwLVxcdFxcdFxcdFxcdFxcdFxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTExODk9XFx0XFx0XFx0XFx0XFx0bXNjY19mZWxpeF9wb3J0NTogcG9ydEA1IHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTE5MS1cXHRcXHRcXHRcXHRcXHRcXHRwaHktbW9kZSA9IFxcXCJpbnRlcm5hbFxcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTkyOlxcdFxcdFxcdFxcdFxcdFxcdGV0aGVybmV0ID0gXFx1MDAzY1xcdTAwMjZlbmV0Y19wb3J0M1xcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTkzLVxcdFxcdFxcdFxcdFxcdFxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTExOTU9XFx0XFx0XFx0XFx0XFx0XFx0Zml4ZWQtbGluayB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTEyMDMtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMjA0OlxcdFxcdFxcdGVuZXRjX3BvcnQzOiBldGhlcm5ldEAwLDYge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTIwNTpcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcInBjaTE5NTcsZTEwMFxcXCIsIFxcXCJmc2wsZW5ldGNcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTIwNi1cXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwMDA2MDAgMCAwIDAgMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTEyMjU9XFx0XFx0aWVyYkAxZjA4MDAwMDAge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTIyNjpcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcImZzbCxsczEwMjhhLWVuZXRjLWllcmJcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTIyNy1cXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwMSAweGYwODAwMDAwIDB4MCAweDEwMDAwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k9MTQ1Nz1cXHRcXHRcXHRuZXRjX2J1czA6IHBjaWVANGNhMDAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNDg1LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k6MTQ4NjpcXHRcXHRcXHRcXHRlbmV0YzM6IGV0aGVybmV0QDAsMCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNDg3LVxcdFxcdFxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwicGNpMTEzMSxlMTEwXFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k9MTUxMT1cXHRcXHRcXHRuZXRjX2J1czE6IHBjaWVANGNiMDAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNTM1LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k6MTUzNjpcXHRcXHRcXHRcXHRlbmV0YzA6IGV0aGVybmV0QDAsMCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNTM3LVxcdFxcdFxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwicGNpMTEzMSxlMTAxXFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k9MTU0OD1cXHRcXHRcXHRcXHRyY2VjQDEsMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NC5kdHNpLTE1NTItXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaToxNTUzOlxcdFxcdFxcdFxcdGVuZXRjMTogZXRoZXJuZXRAOCwwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NC5kdHNpLTE1NTQtXFx0XFx0XFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJwY2kxMTMxLGUxMDFcXFwiO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNTU4LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k6MTU1OTpcXHRcXHRcXHRcXHRlbmV0YzI6IGV0aGVybmV0QDEwLDAge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2ktMTU2MC1cXHRcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcInBjaTExMzEsZTEwMVxcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0cz0yMj1cXHRhbGlhc2VzIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0czoyMzpcXHRcXHRldGhlcm5ldDAgPSBcXHUwMDI2ZW5ldGMzO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzOjI0OlxcdFxcdGV0aGVybmV0MSA9IFxcdTAwMjZlbmV0YzE7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHM6MjU6XFx0XFx0ZXRoZXJuZXQyID0gXFx1MDAyNmVuZXRjMjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0cy0yNi1cXHRcXHRpMmMyID0gXFx1MDAyNmxwaTJjMztcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzPTIwNz1cXHRtZW1vcnlAODAwMDAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHMtMjEyLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzOjIxMzpcXHUwMDI2ZW5ldGMxIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0cy0yMTQtXFx0Y2xvY2tzID0gXFx1MDAzY1xcdTAwMjZzY21pX2NsayBJTVg5NF9DTEtfTUFDNFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0cy0yMjItXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHM6MjIzOlxcdTAwMjZlbmV0YzIge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzLTIyNC1cXHRjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNnNjbWlfY2xrIElNWDk0X0NMS19NQUM1XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzLTIzMi1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0czoyMzM6XFx1MDAyNmVuZXRjMyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHMtMjM0LVxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHM9MjE9XFx0YWxpYXNlcyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtYWIyLmR0czoyMjpcXHRcXHRldGhlcm5ldDAgPSBcXHUwMDI2ZW5ldGNfcG9ydDA7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtYWIyLmR0cy0yMy1cXHRcXHRncGlvMCA9IFxcdTAwMjZncGlvMTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHM9MTU5PVxcdG1lbW9yeUA4MDAwMDAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzLTE2NC1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzOjE2NTpcXHUwMDI2ZW5ldGNfcG9ydDAge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHMtMTY2LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNmV0aHBoeTBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHMtMTY3LVxcdHBoeS1tb2RlID0gXFxcInJnbWlpLWlkXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzOjE2ODpcXHRwaW5jdHJsLTAgPSBcXHUwMDNjXFx1MDAyNnBpbmN0cmxfZW5ldGMwXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzLTE2OS1cXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtYWIyLmR0cz0zNzY9XFx0XFx0XFx0SU1YOTVfUEFEX0VORVQxX01ESU9fX05FVENNSVhfVE9QX05FVENfTURJT1xcdFxcdDB4OTBlXFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzLTM3OS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzOjM4MDpcXHRwaW5jdHJsX2VuZXRjMDogZW5ldGMwZ3JwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzLTM4MS1cXHRcXHRmc2wscGlucyA9IFxcdTAwM2NcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM9Mjg9XFx0YWxpYXNlcyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0czoyOTpcXHRcXHRldGhlcm5ldDAgPSBcXHUwMDI2ZW5ldGNfcG9ydDA7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0czozMDpcXHRcXHRldGhlcm5ldDEgPSBcXHUwMDI2ZW5ldGNfcG9ydDE7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy0zMS1cXHRcXHRncGlvMCA9IFxcdTAwMjZncGlvMTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM9Mjk1PVxcdTAwMjZhZGMxIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtMjk5LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM6MzAwOlxcdTAwMjZlbmV0Y19wb3J0MCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy0zMDEtXFx0cGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2ZXRocGh5MFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy0zMDItXFx0cGh5LW1vZGUgPSBcXFwicmdtaWktaWRcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM6MzAzOlxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2cGluY3RybF9lbmV0YzBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtMzA0LVxcdHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTMwNy1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzOjMwODpcXHUwMDI2ZW5ldGNfcG9ydDEge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtMzA5LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNmV0aHBoeTFcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtMzEwLVxcdHBoeS1tb2RlID0gXFxcInJnbWlpLWlkXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzOjMxMTpcXHRwaW5jdHJsLTAgPSBcXHUwMDNjXFx1MDAyNnBpbmN0cmxfZW5ldGMxXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTMxMi1cXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cz02MDk9XFx0XFx0XFx0SU1YOTVfUEFEX0VORVQyX01ESU9fX05FVENNSVhfVE9QX05FVENfTURJT1xcdFxcdDB4OTBlXFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTYxMi1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzOjYxMzpcXHRwaW5jdHJsX2VuZXRjMDogZW5ldGMwZ3JwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTYxNC1cXHRcXHRmc2wscGlucyA9IFxcdTAwM2NcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM9NjI2PVxcdFxcdFxcdElNWDk1X1BBRF9FTkVUMV9SRDNfX05FVENNSVhfVE9QX0VUSDBfUkdNSUlfUkQzXFx0XFx0MHg1N2VcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtNjI5LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM6NjMwOlxcdHBpbmN0cmxfZW5ldGMxOiBlbmV0YzFncnAge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtNjMxLVxcdFxcdGZzbCxwaW5zID0gXFx1MDAzY1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM9MjQ9XFx0YWxpYXNlcyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM6MjU6XFx0XFx0ZXRoZXJuZXQwID0gXFx1MDAyNmVuZXRjX3BvcnQwO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzOjI2OlxcdFxcdGV0aGVybmV0MSA9IFxcdTAwMjZlbmV0Y19wb3J0MTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy0yNy1cXHRcXHRncGlvMCA9IFxcdTAwMjZncGlvMTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzPTI2Mz1cXHUwMDI2YWRjMSB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy0yNjctXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM6MjY4OlxcdTAwMjZlbmV0Y19wb3J0MCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHMtMjY5LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNmV0aHBoeTBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI3MC1cXHRwaHktbW9kZSA9IFxcXCJyZ21paS1pZFxcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM6MjcxOlxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2cGluY3RybF9lbmV0YzBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI3Mi1cXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHMtMjc1LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzOjI3NjpcXHUwMDI2ZW5ldGNfcG9ydDEge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI3Ny1cXHRwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZldGhwaHkxXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy0yNzgtXFx0cGh5LW1vZGUgPSBcXFwicmdtaWktaWRcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzOjI3OTpcXHRwaW5jdHJsLTAgPSBcXHUwMDNjXFx1MDAyNnBpbmN0cmxfZW5ldGMxXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy0yODAtXFx0cGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzPTYwNz1cXHRcXHRcXHRJTVg5NV9QQURfRU5FVDJfTURJT19fTkVUQ01JWF9UT1BfTkVUQ19NRElPXFx0XFx0MHg5MGVcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTYxMC1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0czo2MTE6XFx0cGluY3RybF9lbmV0YzA6IGVuZXRjMGdycCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHMtNjEyLVxcdFxcdGZzbCxwaW5zID0gXFx1MDAzY1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM9NjI0PVxcdFxcdFxcdElNWDk1X1BBRF9FTkVUMV9SRDNfX05FVENNSVhfVE9QX0VUSDBfUkdNSUlfUkQzXFx0XFx0MHg1N2VcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTYyNy1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0czo2Mjg6XFx0cGluY3RybF9lbmV0YzE6IGVuZXRjMWdycCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHMtNjI5LVxcdFxcdGZzbCxwaW5zID0gXFx1MDAzY1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0cz0yNT1cXHRhbGlhc2VzIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xOXgxOS1ldmsuZHRzOjI2OlxcdFxcdGV0aGVybmV0MCA9IFxcdTAwMjZlbmV0Y19wb3J0MDtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xOXgxOS1ldmsuZHRzLTI3LVxcdFxcdGdwaW8wID0gXFx1MDAyNmdwaW8xO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0cz0yMzg9XFx1MDAyNmFkYzEge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0cy0yNDItXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0czoyNDM6XFx1MDAyNmVuZXRjX3BvcnQwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xOXgxOS1ldmsuZHRzLTI0NC1cXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE5eDE5LWV2ay5kdHM6MjQ1OlxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2cGluY3RybF9lbmV0YzBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE5eDE5LWV2ay5kdHMtMjQ2LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNmV0aHBoeTBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0cz03MTI9XFx0XFx0XFx0SU1YOTVfUEFEX0VORVQxX01ESU9fX05FVENNSVhfVE9QX05FVENfTURJT1xcdFxcdDB4OTBlXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6MTAuODcwNjI5NDE5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU2NTk1NDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBFTkVUQyBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgRU5FVEMgZHJpdmVyIOKAkyBpdCdzIE5YUCdzIEV0aGVybmV0IE5ldHdvcmsgQ29udHJvbGxlciwgZm91bmQgb24gc29tZSBvZiB0aGVpciBTeXN0ZW0gb24gQ2hpcHMsIGxpa2UgdGhlIExTMTAyOEEgYW5kIGkuTVg5NS4gVGhlIHRoaW5nIGlzLCBldmVuIHRob3VnaCBpdCdzIGEgUENJZSBkZXZpY2UsIGl0J3MgaW50ZWdyYXRlZCBpbnRvIHRoZSBTb0MsIHdoaWNoIG1lYW5zIG15IHR5cGljYWwgUUVNVSBhcHByb2FjaCBtaWdodCBub3Qgd29yay4gRmlyc3QgdGhvdWdodDogaXMgdGhpcyBldmVuIHJlYWNoYWJsZSBpbiBRRU1VPyBBbmQgdGhlIGFuc3dlciwgYXMgSSBleHBlY3RlZCwgaXMgbm8uIFFFTVUgZG9lc24ndCBlbXVsYXRlIEVORVRDIGRpcmVjdGx5LlxuXG5TbywgdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBmdXp6YWJpbGl0eS4gQXJlIHRoZXJlIEVORVRDIGZ1enplcnMgb3V0IHRoZXJlLCBvciBpcyB0aGlzIGVzc2VudGlhbGx5IGEgaGFyZHdhcmUgZHJpdmVyIHRoYXQncyB1c3VhbGx5IG9ubHkgdGFyZ2V0ZWQgd2l0aCBzcGVjaWZpYyBlbXVsYXRvcnM/IEluIG15IGV4cGVyaWVuY2UsIHRoZXNlIGRyaXZlcnMgYXJlIHJhcmVseSBmdXp6ZWQgKnVubGVzcyogdGhleSdyZSBleHBsaWNpdGx5IGVtdWxhdGVkLCBvciB0aGVyZeKAmXMgYSBiZXNwb2tlIGZ1enplci5cblxuQnV0IHRoZW4sIEkgbmVlZCB0byBjb25zaWRlciB0aGUgY29uc3RyYWludHMgaW4gdGhlIGluc3RydWN0aW9uczogdGhleSBzYWlkLCBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnPigKZcIiBhbmQgSSByZW1lbWJlciB0aGUga2V5IHBvaW50IGlzIGFib3V0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXMgRU5FVEMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBRRU1VPyBXZWxsLCB5ZWFoLCB1bmxlc3MgUUVNVSBlbXVsYXRlcyBpdCwgd2hpY2ggaXQgZG9lc24ndC4gQ2FuIEkgY29uZmlybT8gSSBjYW4ndCBlYXNpbHkgc2VhcmNoIFFFTVUgY29kZSBoZXJlIGZvciBcImVuZXRjXCIgdG8gYmUgY2VydGFpbi5cblxuSG93ZXZlciwgSSdtIG5vdyB0aGlua2luZyBhYm91dCBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIGhhdmUgc3VwcG9ydCBmb3IgRU5FVEM/IFRoYXQncyBhIHJlYXNvbmFibGUgcGxhY2UgdG8gY2hlY2ssIGFuZCBpdCBtaWdodCBiZSBteSBiZXN0IGJldCBmb3IgYSBxdWljayBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NzcyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA3OjE5LjQzNjU4NzMyOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTI5Njg5OTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVuZXRjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA3OjE5LjY0OTU2OTA5OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMTQ1MjA5Mjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBFTkVUQyBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoZSBncmVwcGVyIHdhcyBsb29raW5nIGZvciBgZW5ldGNgIHVuZGVyIGBuZXQvYCwgYnV0IHRoZSByZWxldmFudCBjb2RlIGlzIGFjdHVhbGx5IGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uLCBhcyBhbHdheXMsIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGlzIGV2ZW4gKnJlYWNoYWJsZSogZm9yIGZ1enppbmcuIEhhcmR3YXJlIGRyaXZlcnMsIGVzcGVjaWFsbHkgdGhvc2UgbGlrZSB0aGlzLCBhcmUgdHlwaWNhbGx5IHByb2JsZW1hdGljIGluIHN0YW5kYXJkIFFFTVUgc2V0dXBzLCB1bmxlc3MgdGhlcmUncyBhbiBlbXVsYXRlZCBQQ0kgZGV2aWNlIG9yIHNpbWlsYXIuXG5cbkxldCBtZSB0aGluay4uLiBpcyBFTkVUQyBlbXVsYXRlZD8gTXkga25vd2xlZGdlIG9mIFFFTVUncyBzdXBwb3J0ZWQgZGV2aWNlcyBpcyBwcmV0dHkgZ29vZC4gSSBrbm93IGl0IGhhbmRsZXMgdGhlIGUxMDAwIGZhbWlseSwgUlRMODEzOSwgVmlydElPLCBWTVhORVQzLCBhbmQgYSBmZXcgb3RoZXJzLiBJIG5lZWQgdG8gY2hlY2sgdGhlIFBDSSBJRHMg4oCTIEZyZWVzY2FsZSB1c3VhbGx5IHVzZXMgMHgxOTU3LiBZZXMsIGFuZCB0aGUgZGV2aWNlIElEcyBpbmNsdWRlIDB4ZTEwMCwgMHhlZTAxLCBhbmQgc28gb24uIEJ1dCBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYW4gRU5FVEMtc3BlY2lmaWMgZW11bGF0aW9uLiBJdCBpc24ndCBhbW9uZyB0aGUgc3RhbmRhcmQgZW11bGF0ZWQgZGV2aWNlcy5cblxuVGhlIHRleHQgYWxzbyBtZW50aW9ucyBlbnZpcm9ubWVudHMgbGlrZSBHQ0UuIEJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIEVORVRDLCBiZWluZyBhIGhhcmR3YXJlLXNwZWNpZmljIGJsb2NrLCBpcyB1bmxpa2VseSB0byBiZSByZWFjaGFibGUgaW4gR0NFIGVpdGhlciwgb3IgaW4gYSBzdGFuZGFyZCB4ODYgUUVNVSBzZXR1cC5cblxuQWxyaWdodCwgd2hhdCBhYm91dCBhIHBsYXRmb3JtIGRldmljZT8gSXMgdGhlcmUgc29tZXRoaW5nIHRoYXQgKmlzbid0KiBhIFBDSSBkZXZpY2UsIGJ1dCBzdGlsbCBoYXJkd2FyZSBkZXBlbmRlbnQ/IE5vLCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRoYXQgY29kZSB1bnJlYWNoYWJsZSBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uIChsaWtlIGB1c2IgZ2FkZ2V0YCBvciBgbWFjODAyMTFfaHdzaW1gKSBzaG91bGQgYmUgbWFya2VkIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgRU5FVEMgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIGFuIE5YUCBTb0MsIHN1Y2ggYXMgdGhlIExTMTAyOEEgb3IgaS5NWDk1LiBJdCdzIGEgcmVhbCBoYXJkd2FyZSBibG9jazsgdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gbGlrZSB0aGVyZSBpcyBmb3IgYG1hYzgwMjExX2h3c2ltYC5cblxuTGV0J3MgY29uZmlybSB0aGF0LiBJIGRvbid0IHJlY2FsbCBldmVyIHNlZWluZyBhIGBuZXRkZXZzaW1gIG9yIHNpbWlsYXIgbW9jayBmb3IgRU5FVEMuIE5vLCBpdCdzIGEgcmVhbCBoYXJkd2FyZSBkcml2ZXIuXG5cbkxldCdzIHJldmlldyB0aGUgcHJvbXB0IGFnYWluOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi4gLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cIlxuXG5HaXZlbiB0aGF0IGl0IG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZXRoZXJuZXQgZHJpdmVyIOKAkyBhbmQgaXQncyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBkZXNpZ25lZCBmb3IgTlhQIFNvQ3Mg4oCTIGl0J3MgY2xlYXJseSAqbm90KiByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBObyB4ODYgUUVNVSwgbm8gR0NFIGluc3RhbmNlIGlzIGdvaW5nIHRvIGJlIGFibGUgdG8gaGl0IHRoaXMgY29kZSwgYXQgbGVhc3Qgbm90IHdpdGhvdXQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgc2V0dXBzIG9yIGV4dHJlbWVseSBzb3BoaXN0aWNhdGVkIGVtdWxhdGlvbi4gSSBzZWUgbm8gYG5ldGRldnNpbWAgbW9jaywgbm9yIGEgc2ltaWxhciBzb2Z0d2FyZS1lbXVsYXRlZCBkcml2ZXIuIFRoZXJlZm9yZSwgZnV6emluZyB0aGlzIGNvZGUgaXMgZXNzZW50aWFsbHkgaW1wb3NzaWJsZSBpbiB0aG9zZSBlbnZpcm9ubWVudHMuXG5cbkxldCBtZSBkb3VibGUtY2hlY2sgZm9yIHNvbWUgZWRnZSBjYXNlLiBBIFBDSSBzdHViIHBlcmhhcHM/IE5vcGUuIFBDSSBkcml2ZXJzIG5lZWQgdGhlIGFjdHVhbCBoYXJkd2FyZSwgb3IgYW4gZW11bGF0b3IsIHRvIGJlIHByb2JlZC4gV2l0aG91dCB0aGF0LCB0aGUgZHJpdmVyJ3MgYHByb2JlYCBmdW5jdGlvbiB3aWxsICpuZXZlciogYmUgY2FsbGVkLiBUaGlzIG1lYW5zIHRoYXQgbm9uZSBvZiB0aGUgbW9kaWZpZWQgY29kZSDigJMgYGVuZXRjNF9wZl9zZXRfcnhfbW9kZWAsIGBlbmV0Y19wZl9zZXRfcnhfbW9kZWAsIGBlbmV0YzRfcGZfc2V0X2ZlYXR1cmVzYCwgZXRjLiDigJMgd2lsbCBiZSBleGVjdXRlZC5cblxuSSdtIGNvbmZpZGVudC4gVGhlIGFuYWx5c2lzIGlzIHRoYXQgYmVjYXVzZSBpdCBpcyBhbiBFTkVUQyBkcml2ZXIgc3BlY2lmaWMgdG8gTlhQIGhhcmR3YXJlLCBhbmQgbm90IGVtdWxhdGVkLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUsIGFuZCBzbyBJIHNob3VsZCBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgYW0gZ29pbmcgdG8gd3JpdGUgdGhlIGZvbGxvd2luZyByZWFzb25pbmc6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBoYXJkd2FyZS1zcGVjaWZpYyAoTlhQIFNvQ3MpIGFuZCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNTE3LCJPdXRwdXRUb2tlbnMiOjgzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA3OjMyLjc5NDc4MDk4MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBFTkVUQyBldGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGhhcmR3YXJlLXNwZWNpZmljIHRvIE5YUCBTb0NzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBFTkVUQyBldGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGhhcmR3YXJlLXNwZWNpZmljIHRvIE5YUCBTb0NzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbkl6m[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-07 15:40:40 +0000 UTC FinishedAt: 2026-07-07 16:07:34 +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+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBoYXJkd2FyZS1zcGVjaWZpYyB0byBOWFAgU29Dcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhYjU3ZTY4N2YzM2UwNzgzNzlhODllMmIyZmQ1Y2EzYjQ0NzFlMTIzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNjowNjo1MiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oXG5pbmRleCAwNGE1ZGQ1ZWE2Yzc0Yy4uODgzOWNmYjQ5YmNmZTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmhcbkBAIC0xLDUgJiM0MzsxLDUgQEBcbiAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAmIzQzOyBPUiBCU0QtMy1DbGF1c2UpICovXG4tLyogQ29weXJpZ2h0IDIwMTctMjAxOSBOWFAgKi9cbiYjNDM7LyogQ29weXJpZ2h0IDIwMTctMjAxOSwgMjAyNS0yMDI2IE5YUCAqL1xuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3RpbWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wY2kuaFx1MDAzZVxuQEAgLTMyNCw4ICYjNDM7MzI0LDYgQEAgc3RydWN0IGVuZXRjX3NpIHtcbiBcdGNvbnN0IHN0cnVjdCBlbmV0Y19kcnZkYXRhICpkcnZkYXRhO1xuIFx0Y29uc3Qgc3RydWN0IGVuZXRjX3NpX29wcyAqb3BzO1xuIFxuLVx0c3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndvcmtxdWV1ZTtcbi1cdHN0cnVjdCB3b3JrX3N0cnVjdCByeF9tb2RlX3Rhc2s7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3Jvb3Q7XG4gXHRzdHJ1Y3QgZW5ldGNfbXNnX3N3YmQgbXNnOyAvKiBPbmx5IHZhbGlkIGZvciBWU0kgKi9cbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9kZWJ1Z2ZzLmNcbmluZGV4IDFiMTU5MWRjZTczZDRiLi41MDI5MDM4YmY5OWZhYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfZGVidWdmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2RlYnVnZnMuY1xuQEAgLTI4LDE1ICYjNDM7MjgsMTQgQEAgc3RhdGljIHZvaWQgZW5ldGNfc2hvd19zaV9tYWNfaGFzaF9maWx0ZXIoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgaSlcbiBcbiBzdGF0aWMgaW50IGVuZXRjX21hY19maWx0ZXJfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG4ge1xuLVx0c3RydWN0IGVuZXRjX3NpICpzaSA9IHMtXHUwMDNlcHJpdmF0ZTtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZzaS1cdTAwM2VodztcbiYjNDM7XHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihzLVx1MDAzZXByaXZhdGUpO1xuJiM0MztcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VodztcbiYjNDM7XHRpbnQgbnVtX3NpID0gcGYtXHUwMDNldG90YWxfdmZzICYjNDM7IDE7XG4gXHRzdHJ1Y3QgbWFmdF9lbnRyeV9kYXRhIG1hZnQ7XG4tXHRzdHJ1Y3QgZW5ldGNfcGYgKnBmO1xuLVx0aW50IGksIGVyciwgbnVtX3NpO1xuLVx0dTMyIHZhbDtcbi1cbi1cdHBmID0gZW5ldGNfc2lfcHJpdihzaSk7XG4tXHRudW1fc2kgPSBwZi1cdTAwM2VjYXBzLm51bV92c2kgJiM0MzsgMTtcbiYjNDM7XHRzdHJ1Y3QgbnRtcF91c2VyICp1c2VyO1xuJiM0MztcdHUzMiB2YWwsIGVudHJ5X2lkO1xuJiM0MztcdGludCBlcnIgPSAwO1xuJiM0MztcdGludCBpO1xuIFxuIFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSVBNTVIpO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3NpOyBpJiM0MzsmIzQzOykge1xuQEAgLTUwLDMxICYjNDM7NDksMzggQEAgc3RhdGljIGludCBlbmV0Y19tYWNfZmlsdGVyX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3NpOyBpJiM0MzsmIzQzOylcbiBcdFx0ZW5ldGNfc2hvd19zaV9tYWNfaGFzaF9maWx0ZXIocywgaSk7XG4gXG4tXHRpZiAoIXBmLVx1MDAzZW51bV9tZmUpXG4tXHRcdHJldHVybiAwO1xuJiM0MztcdHVzZXIgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VudG1wX3VzZXI7XG4mIzQzO1x0cnRubF9sb2NrKCk7XG4mIzQzO1xuJiM0MztcdGlmIChiaXRtYXBfZW1wdHkodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAsIHVzZXItXHUwMDNlbWFmdF9udW1fZW50cmllcykpXG4mIzQzO1x0XHRnb3RvIHVubG9ja19ydG5sO1xuIFxuIFx0LyogTUFDIGFkZHJlc3MgZmlsdGVyIHRhYmxlICovXG4gXHRzZXFfcHV0cyhzLCBcJiMzNDtNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGVcXG5cJiMzNDspO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNlbnVtX21mZTsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRmb3JfZWFjaF9zZXRfYml0KGVudHJ5X2lkLCB1c2VyLVx1MDAzZW1hZnRfZWlkX2JpdG1hcCxcbiYjNDM7XHRcdFx0IHVzZXItXHUwMDNlbWFmdF9udW1fZW50cmllcykge1xuIFx0XHRtZW1zZXQoXHUwMDI2bWFmdCwgMCwgc2l6ZW9mKG1hZnQpKTtcbi1cdFx0ZXJyID0gbnRtcF9tYWZ0X3F1ZXJ5X2VudHJ5KFx1MDAyNnNpLVx1MDAzZW50bXBfdXNlciwgaSwgXHUwMDI2bWFmdCk7XG4mIzQzO1x0XHRlcnIgPSBudG1wX21hZnRfcXVlcnlfZW50cnkodXNlciwgZW50cnlfaWQsIFx1MDAyNm1hZnQpO1xuIFx0XHRpZiAoZXJyKVxuLVx0XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0XHRcdGdvdG8gdW5sb2NrX3J0bmw7XG4gXG4tXHRcdHNlcV9wcmludGYocywgXCYjMzQ7RW50cnkgJWQsIE1BQzogJXBNLCBTSSBiaXRtYXA6IDB4JTA0eFxcblwmIzM0OywgaSxcbi1cdFx0XHQgICBtYWZ0LmtleWUubWFjX2FkZHIsIGxlMTZfdG9fY3B1KG1hZnQuY2ZnZS5zaV9iaXRtYXApKTtcbiYjNDM7XHRcdHNlcV9wcmludGYocywgXCYjMzQ7RW50cnkgJWQsIE1BQzogJXBNLCBTSSBiaXRtYXA6IDB4JTA0eFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgZW50cnlfaWQsIG1hZnQua2V5ZS5tYWNfYWRkcixcbiYjNDM7XHRcdFx0ICAgbGUxNl90b19jcHUobWFmdC5jZmdlLnNpX2JpdG1hcCkpO1xuIFx0fVxuIFxuLVx0cmV0dXJuIDA7XG4mIzQzO3VubG9ja19ydG5sOlxuJiM0MztcdHJ0bmxfdW5sb2NrKCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBlcnI7XG4gfVxuIERFRklORV9TSE9XX0FUVFJJQlVURShlbmV0Y19tYWNfZmlsdGVyKTtcbiBcbiB2b2lkIGVuZXRjX2NyZWF0ZV9kZWJ1Z2ZzKHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4ge1xuLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBzaS1cdTAwM2VuZGV2O1xuIFx0c3RydWN0IGRlbnRyeSAqcm9vdDtcbiBcbi1cdHJvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIobmV0ZGV2X25hbWUobmRldiksIE5VTEwpO1xuJiM0MztcdHJvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIocGNpX25hbWUoc2ktXHUwMDNlcGRldiksIE5VTEwpO1xuIFx0aWYgKElTX0VSUihyb290KSlcbiBcdFx0cmV0dXJuO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaFxuaW5kZXggZjE4NDM3NTU2YTBlZTIuLjA5MDI1ZTdhMmEzYWVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9ody5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2h3LmhcbkBAIC02OSw4ICYjNDM7NjksNiBAQFxuIFxuIC8qIFBvcnQgU3RhdGlvbiBpbnRlcmZhY2UgcHJvbWlzY3VvdXMgTUFDIG1vZGUgcmVnaXN0ZXIgKi9cbiAjZGVmaW5lIEVORVRDNF9QU0lQTU1SXHRcdFx0MHgyMDBcbi0jZGVmaW5lICBQU0lQTU1SX1NJX01BQ19VUChhKVx0XHRCSVQoYSkgLyogYSA9IFNJIGluZGV4ICovXG4tI2RlZmluZSAgUFNJUE1NUl9TSV9NQUNfTVAoYSlcdFx0QklUKChhKSAmIzQzOyAxNilcbiBcbiAvKiBQb3J0IFN0YXRpb24gaW50ZXJmYWNlIHByb21pc2N1b3VzIFZMQU4gbW9kZSByZWdpc3RlciAqL1xuICNkZWZpbmUgRU5FVEM0X1BTSVBWTVJcdFx0XHQweDIwNFxuQEAgLTEzNyw3ICYjNDM7MTM1LDYgQEBcbiAjZGVmaW5lIEVORVRDNF9QU0lWSEZSMShhKVx0XHQoKGEpICogMHg4MCAmIzQzOyAweDIwNjQpXG4gXG4gI2RlZmluZSBFTkVUQzRfUE1DQVBSXHRcdFx0MHg0MDA0XG4tI2RlZmluZSAgUE1DQVBSX0hEXHRcdFx0QklUKDgpXG4gI2RlZmluZSAgUE1DQVBSX0ZQXHRcdFx0R0VOTUFTSygxMCwgOSlcbiBcbiAvKiBQb3J0IGNhcGFiaWxpdHkgcmVnaXN0ZXIgKi9cbkBAIC0xNTAsNyAmIzQzOzE0Nyw3IEBAXG4gI2RlZmluZSAgUENSX0wyRE9TRVx0XHRcdEJJVCg0KVxuICNkZWZpbmUgIFBDUl9USU1FUl9DU1x0XHRcdEJJVCg4KVxuICNkZWZpbmUgIFBDUl9QU1BFRURcdFx0XHRHRU5NQVNLKDI5LCAxNilcbi0jZGVmaW5lICBQQ1JfUFNQRUVEX1ZBTChzcGVlZClcdFx0KCgoc3BlZWQpIC8gMTAgLSAxKSBcdTAwM2NcdTAwM2MgMTYpXG4mIzQzOyNkZWZpbmUgIFBDUl9QU1BFRURfVkFMKHMpXHRcdEZJRUxEX1BSRVAoUENSX1BTUEVFRCwgKChzKSAvIDEwIC0gMSkpXG4gXG4gLyogUG9ydCBNQUMgYWRkcmVzcyByZWdpc3RlciAwLzEgKi9cbiAjZGVmaW5lIEVORVRDNF9QTUFSMFx0XHRcdDB4NDAyMFxuQEAgLTIwMCw3ICYjNDM7MTk3LDYgQEBcbiAjZGVmaW5lICBQTV9DTURfQ0ZHX0NOVF9GUk1fRU5cdFx0QklUKDEzKVxuICNkZWZpbmUgIFBNX0NNRF9DRkdfVFhQXHRcdFx0QklUKDE1KVxuICNkZWZpbmUgIFBNX0NNRF9DRkdfU0VORF9JRExFXHRcdEJJVCgxNilcbi0jZGVmaW5lICBQTV9DTURfQ0ZHX0hEX0ZDRU5cdFx0QklUKDE4KVxuICNkZWZpbmUgIFBNX0NNRF9DRkdfU0ZEXHRcdFx0QklUKDIxKVxuICNkZWZpbmUgIFBNX0NNRF9DRkdfVFhfRkxVU0hcdFx0QklUKDIyKVxuICNkZWZpbmUgIFBNX0NNRF9DRkdfVFhfTE9XUF9FTlx0XHRCSVQoMjMpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXG5pbmRleCA0MzdhMTViYmI0N2JhOC4uZmNmYmFiYjI5ZDIyZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY1xuQEAgLTIzLDE4ICYjNDM7MjMsMTEgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2dldF9wb3J0X2NhcHMoc3RydWN0IGVuZXRjX3BmICpwZilcbiBcdHUzMiB2YWw7XG4gXG4gXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQzRfRUNBUFIxKTtcbi1cdHBmLVx1MDAzZWNhcHMubnVtX3ZzaSA9ICh2YWwgXHUwMDI2IEVDQVBSMV9OVU1fVlNJKSBcdTAwM2VcdTAwM2UgMjQ7XG4gXHRwZi1cdTAwM2VjYXBzLm51bV9tc2l4ID0gKCh2YWwgXHUwMDI2IEVDQVBSMV9OVU1fTVNJWCkgXHUwMDNlXHUwMDNlIDEyKSAmIzQzOyAxO1xuIFxuIFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X0VDQVBSMik7XG4gXHRwZi1cdTAwM2VjYXBzLm51bV9yeF9iZHIgPSAodmFsIFx1MDAyNiBFQ0FQUjJfTlVNX1JYX0JEUikgXHUwMDNlXHUwMDNlIDE2O1xuIFx0cGYtXHUwMDNlY2Fwcy5udW1fdHhfYmRyID0gdmFsIFx1MDAyNiBFQ0FQUjJfTlVNX1RYX0JEUjtcbi1cbi1cdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QTUNBUFIpO1xuLVx0cGYtXHUwMDNlY2Fwcy5oYWxmX2R1cGxleCA9ICh2YWwgXHUwMDI2IFBNQ0FQUl9IRCkgPyAxIDogMDtcbi1cbi1cdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lNQUZDQVBSKTtcbi1cdHBmLVx1MDAzZWNhcHMubWFjX2ZpbHRlcl9udW0gPSB2YWwgXHUwMDI2IFBTSU1BRkNBUFJfTlVNX01BQ19BRlRFO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbmV0YzRfZ2V0X3BzaV9od19mZWF0dXJlcyhzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxuQEAgLTc1LDM4ICYjNDM7NjgsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGZfZ2V0X3NpX3ByaW1hcnlfbWFjKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSxcbiBcdHB1dF91bmFsaWduZWRfbGUxNihsb3dlciwgYWRkciAmIzQzOyA0KTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9zaV9tYWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksXG4tXHRcdFx0XHRcdCBib29sIHVjX3Byb21pc2MsIGJvb2wgbWNfcHJvbWlzYylcbi17XG4tXHR1MzIgdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSVBNTVIpO1xuLVxuLVx0aWYgKHVjX3Byb21pc2MpXG4tXHRcdHZhbCB8PSBQU0lQTU1SX1NJX01BQ19VUChzaSk7XG4tXHRlbHNlXG4tXHRcdHZhbCBcdTAwMjY9IH5QU0lQTU1SX1NJX01BQ19VUChzaSk7XG4tXG4tXHRpZiAobWNfcHJvbWlzYylcbi1cdFx0dmFsIHw9IFBTSVBNTVJfU0lfTUFDX01QKHNpKTtcbi1cdGVsc2Vcbi1cdFx0dmFsIFx1MDAyNj0gflBTSVBNTVJfU0lfTUFDX01QKHNpKTtcbi1cbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lQTU1SLCB2YWwpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSxcbi1cdFx0XHRcdFx0ICAgIHU2NCBoYXNoKVxuLXtcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lVTUhGUjAoc2kpLCBsb3dlcl8zMl9iaXRzKGhhc2gpKTtcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lVTUhGUjEoc2kpLCB1cHBlcl8zMl9iaXRzKGhhc2gpKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksXG4tXHRcdFx0XHRcdCAgICB1NjQgaGFzaClcbi17XG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJTU1IRlIwKHNpKSwgbG93ZXJfMzJfYml0cyhoYXNoKSk7XG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJTU1IRlIxKHNpKSwgdXBwZXJfMzJfYml0cyhoYXNoKSk7XG4tfVxuLVxuIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbG9vcGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZW4pXG4ge1xuIFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTEyNCwzNCAmIzQzOzg1LDQ3IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbG9vcGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZW4pXG4gXG4gc3RhdGljIHZvaWQgZW5ldGM0X3BmX2NsZWFyX21hZnRfZW50cmllcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIHtcbi1cdGludCBpO1xuJiM0MztcdHN0cnVjdCBudG1wX3VzZXIgKnVzZXIgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VudG1wX3VzZXI7XG4mIzQzO1x0dTMyIGVudHJ5X2lkO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNlbnVtX21mZTsgaSYjNDM7JiM0MzspXG4tXHRcdG50bXBfbWFmdF9kZWxldGVfZW50cnkoXHUwMDI2cGYtXHUwMDNlc2ktXHUwMDNlbnRtcF91c2VyLCBpKTtcbi1cbi1cdHBmLVx1MDAzZW51bV9tZmUgPSAwO1xuJiM0MztcdGZvcl9lYWNoX3NldF9iaXQoZW50cnlfaWQsIHVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwLFxuJiM0MztcdFx0XHQgdXNlci1cdTAwM2VtYWZ0X251bV9lbnRyaWVzKSB7XG4mIzQzO1x0XHRpZiAoIW50bXBfbWFmdF9kZWxldGVfZW50cnkodXNlciwgZW50cnlfaWQpKVxuJiM0MztcdFx0XHRudG1wX2NsZWFyX2VpZF9iaXRtYXAodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAsIGVudHJ5X2lkKTtcbiYjNDM7XHR9XG4gfVxuIFxuIHN0YXRpYyBpbnQgZW5ldGM0X3BmX2FkZF9tYWZ0X2VudHJpZXMoc3RydWN0IGVuZXRjX3BmICpwZixcbi1cdFx0XHRcdCAgICAgIHN0cnVjdCBlbmV0Y19tYWNfYWRkciAqbWFjLFxuLVx0XHRcdFx0ICAgICAgaW50IG1hY19jbnQpXG4mIzQzO1x0XHRcdFx0ICAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgbnRtcF91c2VyICp1c2VyID0gXHUwMDI2cGYtXHUwMDNlc2ktXHUwMDNlbnRtcF91c2VyO1xuJiM0MztcdGludCBtYWNfY250ID0gbmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1Yyk7XG4gXHRzdHJ1Y3QgbWFmdF9lbnRyeV9kYXRhIG1hZnQgPSB7fTtcbiYjNDM7XHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xuJiM0MztcdHUzMiBhdmFpbGFibGVfZW50cmllcztcbiBcdHUxNiBzaV9iaXQgPSBCSVQoMCk7XG4tXHRpbnQgaSwgZXJyO1xuJiM0MztcdHUzMiBlbnRyeV9pZDtcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRhdmFpbGFibGVfZW50cmllcyA9IHVzZXItXHUwMDNlbWFmdF9udW1fZW50cmllcyAtXG4mIzQzO1x0XHRcdCAgICBiaXRtYXBfd2VpZ2h0KHVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwLFxuJiM0MztcdFx0XHRcdFx0ICB1c2VyLVx1MDAzZW1hZnRfbnVtX2VudHJpZXMpO1xuJiM0MztcbiYjNDM7XHRpZiAobWFjX2NudCBcdTAwM2UgYXZhaWxhYmxlX2VudHJpZXMpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT1NQQztcbiBcbiBcdG1hZnQuY2ZnZS5zaV9iaXRtYXAgPSBjcHVfdG9fbGUxNihzaV9iaXQpO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbWFjX2NudDsgaSYjNDM7JiM0MzspIHtcbi1cdFx0ZXRoZXJfYWRkcl9jb3B5KG1hZnQua2V5ZS5tYWNfYWRkciwgbWFjW2ldLmFkZHIpO1xuLVx0XHRlcnIgPSBudG1wX21hZnRfYWRkX2VudHJ5KFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZW50bXBfdXNlciwgaSwgXHUwMDI2bWFmdCk7XG4mIzQzO1x0bmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgdWMpIHtcbiYjNDM7XHRcdGVudHJ5X2lkID0gbnRtcF9sb29rdXBfZnJlZV9laWQodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAsXG4mIzQzO1x0XHRcdFx0XHRcdHVzZXItXHUwMDNlbWFmdF9udW1fZW50cmllcyk7XG4mIzQzO1x0XHRldGhlcl9hZGRyX2NvcHkobWFmdC5rZXllLm1hY19hZGRyLCBoYS1cdTAwM2VhZGRyKTtcbiYjNDM7XHRcdGVyciA9IG50bXBfbWFmdF9hZGRfZW50cnkodXNlciwgZW50cnlfaWQsIFx1MDAyNm1hZnQpO1xuIFx0XHRpZiAodW5saWtlbHkoZXJyKSkge1xuLVx0XHRcdHBmLVx1MDAzZW51bV9tZmUgPSBpO1xuJiM0MztcdFx0XHRudG1wX2NsZWFyX2VpZF9iaXRtYXAodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAsIGVudHJ5X2lkKTtcbiBcdFx0XHRnb3RvIGNsZWFyX21hZnRfZW50cmllcztcbiBcdFx0fVxuIFx0fVxuIFxuLVx0cGYtXHUwMDNlbnVtX21mZSA9IG1hY19jbnQ7XG4tXG4gXHRyZXR1cm4gMDtcbiBcbiBjbGVhcl9tYWZ0X2VudHJpZXM6XG5AQCAtMTYwLDk3ICYjNDM7MTM0LDcwIEBAIHN0YXRpYyBpbnQgZW5ldGM0X3BmX2FkZF9tYWZ0X2VudHJpZXMoc3RydWN0IGVuZXRjX3BmICpwZixcbiBcdHJldHVybiAgZXJyO1xuIH1cbiBcbi1zdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4mIzQzO3N0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfdWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZixcbiYjNDM7XHRcdFx0XHRcdCBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMpXG4ge1xuLVx0aW50IG1heF9udW1fbWZlID0gcGYtXHUwMDNlY2Fwcy5tYWNfZmlsdGVyX251bTtcbi1cdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyIG1hY19maWx0ZXIgPSB7fTtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGYtXHUwMDNlc2ktXHUwMDNlbmRldjtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2Vodztcbi1cdHN0cnVjdCBlbmV0Y19tYWNfYWRkciAqbWFjX3RibDtcbiYjNDM7XHRzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqbWFjX2ZpbHRlciA9IFx1MDAyNnBmLVx1MDAzZW1hY19maWx0ZXJbVUNdO1xuIFx0c3RydWN0IG5ldGRldl9od19hZGRyICpoYTtcbi1cdGludCBpID0gMCwgZXJyO1xuLVx0aW50IG1hY19jbnQ7XG4mIzQzO1x0dTY0IGhhc2g7XG4gXG4tXHRuZXRpZl9hZGRyX2xvY2tfYmgobmRldik7XG4mIzQzO1x0ZW5ldGNfcmVzZXRfbWFjX2FkZHJfZmlsdGVyKG1hY19maWx0ZXIpO1xuJiM0MztcdG5ldGRldl9od19hZGRyX2xpc3RfZm9yX2VhY2goaGEsIHVjKVxuJiM0MztcdFx0ZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihtYWNfZmlsdGVyLCBoYS1cdTAwM2VhZGRyKTtcbiYjNDM7XG4mIzQzO1x0Yml0bWFwX3RvX2FycjY0KFx1MDAyNmhhc2gsIG1hY19maWx0ZXItXHUwMDNlbWFjX2hhc2hfdGFibGUsXG4mIzQzO1x0XHRcdEVORVRDX01BRERSX0hBU0hfVEJMX1NaKTtcbiYjNDM7XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIocGYtXHUwMDNlc2ksIDAsIGhhc2gpO1xuJiM0Mzt9XG4gXG4tXHRtYWNfY250ID0gbmV0ZGV2X3VjX2NvdW50KG5kZXYpO1xuLVx0aWYgKCFtYWNfY250KSB7XG4tXHRcdG5ldGlmX2FkZHJfdW5sb2NrX2JoKG5kZXYpO1xuJiM0MztzdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYsXG4mIzQzO1x0XHRcdFx0XHQgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGVuZXRjX3NpICpzaSA9IHBmLVx1MDAzZXNpO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2VtcHR5KHVjKSkge1xuIFx0XHQvKiBjbGVhciBib3RoIE1BQyBoYXNoIGFuZCBleGFjdCBmaWx0ZXJzICovXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApO1xuJiM0MztcdFx0ZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTtcbiBcdFx0ZW5ldGM0X3BmX2NsZWFyX21hZnRfZW50cmllcyhwZik7XG4gXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuLVx0aWYgKG1hY19jbnQgXHUwMDNlIG1heF9udW1fbWZlKSB7XG4tXHRcdGVyciA9IC1FTk9TUEM7XG4tXHRcdGdvdG8gdW5sb2NrX25ldGlmX2FkZHI7XG4tXHR9XG4tXG4tXHRtYWNfdGJsID0ga3phbGxvY19vYmpzKCptYWNfdGJsLCBtYWNfY250LCBHRlBfQVRPTUlDKTtcbi1cdGlmICghbWFjX3RibCkge1xuLVx0XHRlcnIgPSAtRU5PTUVNO1xuLVx0XHRnb3RvIHVubG9ja19uZXRpZl9hZGRyO1xuLVx0fVxuLVxuLVx0bmV0ZGV2X2Zvcl9lYWNoX3VjX2FkZHIoaGEsIG5kZXYpIHtcbi1cdFx0ZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihcdTAwMjZtYWNfZmlsdGVyLCBoYS1cdTAwM2VhZGRyKTtcbi1cdFx0ZXRoZXJfYWRkcl9jb3B5KG1hY190YmxbaSYjNDM7JiM0MztdLmFkZHIsIGhhLVx1MDAzZWFkZHIpO1xuLVx0fVxuLVxuLVx0bmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7XG4tXG4tXHQvKiBTZXQgdGVtcG9yYXJ5IHVuaWNhc3QgaGFzaCBmaWx0ZXJzIGluIGNhc2Ugb2YgUnggbG9zcyB3aGVuXG4mIzQzO1x0LyogU2V0IHRlbXBvcmFyeSB1bmljYXN0IGhhc2ggZmlsdGVyIGluIGNhc2Ugb2YgUnggbG9zcyB3aGVuXG4gXHQgKiB1cGRhdGluZyBNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGVcbiBcdCAqL1xuLVx0ZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihodywgMCwgKm1hY19maWx0ZXIubWFjX2hhc2hfdGFibGUpO1xuJiM0MztcdGVuZXRjNF9wZl9zZXRfdWNfaGFzaF9maWx0ZXIocGYsIHVjKTtcbiBcdGVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpO1xuIFxuLVx0aWYgKCFlbmV0YzRfcGZfYWRkX21hZnRfZW50cmllcyhwZiwgbWFjX3RibCwgaSkpXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApO1xuLVxuLVx0a2ZyZWUobWFjX3RibCk7XG4tXG4tXHRyZXR1cm4gMDtcbi1cbi11bmxvY2tfbmV0aWZfYWRkcjpcbi1cdG5ldGlmX2FkZHJfdW5sb2NrX2JoKG5kZXYpO1xuJiM0MztcdGVyciA9IGVuZXRjNF9wZl9hZGRfbWFmdF9lbnRyaWVzKHBmLCB1Yyk7XG4mIzQzO1x0aWYgKCFlcnIpIHtcbiYjNDM7XHRcdGVuZXRjX3Jlc2V0X21hY19hZGRyX2ZpbHRlcihcdTAwMjZwZi1cdTAwM2VtYWNfZmlsdGVyW1VDXSk7XG4mIzQzO1x0XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuJiM0MztcdH1cbiBcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbWFjX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCB0eXBlKVxuJiM0MztzdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X21jX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYsXG4mIzQzO1x0XHRcdFx0XHQgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKm1jKVxuIHtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGYtXHUwMDNlc2ktXHUwMDNlbmRldjtcbi1cdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICptYWNfZmlsdGVyO1xuLVx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZWh3O1xuJiM0MztcdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICptYWNfZmlsdGVyID0gXHUwMDI2cGYtXHUwMDNlbWFjX2ZpbHRlcltNQ107XG4gXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xuJiM0MztcdHU2NCBoYXNoO1xuIFxuLVx0bmV0aWZfYWRkcl9sb2NrX2JoKG5kZXYpO1xuLVx0aWYgKHR5cGUgXHUwMDI2IEVORVRDX01BQ19GSUxURVJfVFlQRV9VQykge1xuLVx0XHRtYWNfZmlsdGVyID0gXHUwMDI2cGYtXHUwMDNlbWFjX2ZpbHRlcltVQ107XG4tXHRcdGVuZXRjX3Jlc2V0X21hY19hZGRyX2ZpbHRlcihtYWNfZmlsdGVyKTtcbi1cdFx0bmV0ZGV2X2Zvcl9lYWNoX3VjX2FkZHIoaGEsIG5kZXYpXG4tXHRcdFx0ZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihtYWNfZmlsdGVyLCBoYS1cdTAwM2VhZGRyKTtcbi1cbi1cdFx0ZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihodywgMCxcbi1cdFx0XHRcdFx0XHQqbWFjX2ZpbHRlci1cdTAwM2VtYWNfaGFzaF90YWJsZSk7XG4tXHR9XG4mIzQzO1x0ZW5ldGNfcmVzZXRfbWFjX2FkZHJfZmlsdGVyKG1hY19maWx0ZXIpO1xuJiM0MztcdG5ldGRldl9od19hZGRyX2xpc3RfZm9yX2VhY2goaGEsIG1jKVxuJiM0MztcdFx0ZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihtYWNfZmlsdGVyLCBoYS1cdTAwM2VhZGRyKTtcbiBcbi1cdGlmICh0eXBlIFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpIHtcbi1cdFx0bWFjX2ZpbHRlciA9IFx1MDAyNnBmLVx1MDAzZW1hY19maWx0ZXJbTUNdO1xuLVx0XHRlbmV0Y19yZXNldF9tYWNfYWRkcl9maWx0ZXIobWFjX2ZpbHRlcik7XG4tXHRcdG5ldGRldl9mb3JfZWFjaF9tY19hZGRyKGhhLCBuZGV2KVxuLVx0XHRcdGVuZXRjX2FkZF9tYWNfYWRkcl9odF9maWx0ZXIobWFjX2ZpbHRlciwgaGEtXHUwMDNlYWRkcik7XG4tXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfbWNfaGFzaF9maWx0ZXIoaHcsIDAsXG4tXHRcdFx0XHRcdFx0Km1hY19maWx0ZXItXHUwMDNlbWFjX2hhc2hfdGFibGUpO1xuLVx0fVxuLVx0bmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7XG4mIzQzO1x0Yml0bWFwX3RvX2FycjY0KFx1MDAyNmhhc2gsIG1hY19maWx0ZXItXHUwMDNlbWFjX2hhc2hfdGFibGUsXG4mIzQzO1x0XHRcdEVORVRDX01BRERSX0hBU0hfVEJMX1NaKTtcbiYjNDM7XHRlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIocGYtXHUwMDNlc2ksIDAsIGhhc2gpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHR5cGUpXG4mIzQzO3N0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbWFjX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgdHlwZSxcbiYjNDM7XHRcdFx0XHQgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcbiYjNDM7XHRcdFx0XHQgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYylcbiB7XG4gXHQvKiBDdXJyZW50bHksIHRoZSBNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGUgKE1BRlQpIG9ubHkgaGFzIDQgZW50cmllcyxcbiBcdCAqIGFuZCBtdWx0aXBsZSBtdWx0aWNhc3QgYWRkcmVzc2VzIGZvciBmaWx0ZXJpbmcgd2lsbCBiZSBjb25maWd1cmVkXG5AQCAtMjU4LDE1ICYjNDM7MjA1LDE2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbWFjX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgdHlwZSlcbiBcdCAqIHVuaWNhc3QgZmlsdGVyaW5nLiBJZiB0aGUgbnVtYmVyIG9mIHVuaWNhc3QgYWRkcmVzc2VzIGV4Y2VlZHMgdGhlXG4gXHQgKiB0YWJsZSBjYXBhY2l0eSwgdGhlIE1BQyBoYXNoIGZpbHRlciB3aWxsIGJlIHVzZWQuXG4gXHQgKi9cbi1cdGlmICh0eXBlIFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfVUMgXHUwMDI2XHUwMDI2IGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHBmKSkge1xuJiM0MztcdGlmICh0eXBlIFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfVUMgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHBmLCB1YykpIHtcbiBcdFx0LyogRmFsbCBiYWNrIHRvIHRoZSBNQUMgaGFzaCBmaWx0ZXIgKi9cbi1cdFx0ZW5ldGM0X3BmX3NldF9tYWNfaGFzaF9maWx0ZXIocGYsIEVORVRDX01BQ19GSUxURVJfVFlQRV9VQyk7XG4mIzQzO1x0XHRlbmV0YzRfcGZfc2V0X3VjX2hhc2hfZmlsdGVyKHBmLCB1Yyk7XG4gXHRcdC8qIENsZWFyIHRoZSBvbGQgTUFDIGV4YWN0IGZpbHRlciAqL1xuIFx0XHRlbmV0YzRfcGZfY2xlYXJfbWFmdF9lbnRyaWVzKHBmKTtcbiBcdH1cbiBcbiBcdGlmICh0eXBlIFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpXG4tXHRcdGVuZXRjNF9wZl9zZXRfbWFjX2hhc2hfZmlsdGVyKHBmLCBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpO1xuJiM0MztcdFx0ZW5ldGM0X3BmX3NldF9tY19oYXNoX2ZpbHRlcihwZiwgbWMpO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGVuZXRjX3BmX29wcyBlbmV0YzRfcGZfb3BzID0ge1xuQEAgLTMwNiwzNCAmIzQzOzI1NCwzNSBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4ge1xuIFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZWh3O1xuIFx0dTMyIG51bV9yeF9iZHIsIG51bV90eF9iZHIsIHZhbDtcbiYjNDM7XHRpbnQgbnVtX3ZmcyA9IHBmLVx1MDAzZXRvdGFsX3ZmcztcbiBcdHUzMiB2Zl90eF9iZHIsIHZmX3J4X2JkcjtcbiBcdGludCBpLCByeF9yZW0sIHR4X3JlbTtcbiBcbi1cdGlmIChwZi1cdTAwM2VjYXBzLm51bV9yeF9iZHIgXHUwMDNjIEVORVRDX1NJX01BWF9SSU5HX05VTSAmIzQzOyBwZi1cdTAwM2VjYXBzLm51bV92c2kpXG4tXHRcdG51bV9yeF9iZHIgPSBwZi1cdTAwM2VjYXBzLm51bV9yeF9iZHIgLSBwZi1cdTAwM2VjYXBzLm51bV92c2k7XG4mIzQzO1x0aWYgKHBmLVx1MDAzZWNhcHMubnVtX3J4X2JkciBcdTAwM2MgRU5FVENfU0lfTUFYX1JJTkdfTlVNICYjNDM7IG51bV92ZnMpXG4mIzQzO1x0XHRudW1fcnhfYmRyID0gcGYtXHUwMDNlY2Fwcy5udW1fcnhfYmRyIC0gbnVtX3ZmcztcbiBcdGVsc2VcbiBcdFx0bnVtX3J4X2JkciA9IEVORVRDX1NJX01BWF9SSU5HX05VTTtcbiBcbi1cdGlmIChwZi1cdTAwM2VjYXBzLm51bV90eF9iZHIgXHUwMDNjIEVORVRDX1NJX01BWF9SSU5HX05VTSAmIzQzOyBwZi1cdTAwM2VjYXBzLm51bV92c2kpXG4tXHRcdG51bV90eF9iZHIgPSBwZi1cdTAwM2VjYXBzLm51bV90eF9iZHIgLSBwZi1cdTAwM2VjYXBzLm51bV92c2k7XG4mIzQzO1x0aWYgKHBmLVx1MDAzZWNhcHMubnVtX3R4X2JkciBcdTAwM2MgRU5FVENfU0lfTUFYX1JJTkdfTlVNICYjNDM7IG51bV92ZnMpXG4mIzQzO1x0XHRudW1fdHhfYmRyID0gcGYtXHUwMDNlY2Fwcy5udW1fdHhfYmRyIC0gbnVtX3ZmcztcbiBcdGVsc2VcbiBcdFx0bnVtX3R4X2JkciA9IEVORVRDX1NJX01BWF9SSU5HX05VTTtcbiBcbiBcdHZhbCA9IGVuZXRjNF9wc2ljZmdyMF92YWxfY29uc3RydWN0KGZhbHNlLCBudW1fdHhfYmRyLCBudW1fcnhfYmRyKTtcbiBcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMCgwKSwgdmFsKTtcbiBcbi1cdGlmICghcGYtXHUwMDNlY2Fwcy5udW1fdnNpKVxuJiM0MztcdGlmICghbnVtX3ZmcylcbiBcdFx0cmV0dXJuO1xuIFxuIFx0bnVtX3J4X2JkciA9IHBmLVx1MDAzZWNhcHMubnVtX3J4X2JkciAtIG51bV9yeF9iZHI7XG4tXHRyeF9yZW0gPSBudW1fcnhfYmRyICUgcGYtXHUwMDNlY2Fwcy5udW1fdnNpO1xuLVx0bnVtX3J4X2JkciA9IG51bV9yeF9iZHIgLyBwZi1cdTAwM2VjYXBzLm51bV92c2k7XG4mIzQzO1x0cnhfcmVtID0gbnVtX3J4X2JkciAlIG51bV92ZnM7XG4mIzQzO1x0bnVtX3J4X2JkciA9IG51bV9yeF9iZHIgLyBudW1fdmZzO1xuIFxuIFx0bnVtX3R4X2JkciA9IHBmLVx1MDAzZWNhcHMubnVtX3R4X2JkciAtIG51bV90eF9iZHI7XG4tXHR0eF9yZW0gPSBudW1fdHhfYmRyICUgcGYtXHUwMDNlY2Fwcy5udW1fdnNpO1xuLVx0bnVtX3R4X2JkciA9IG51bV90eF9iZHIgLyBwZi1cdTAwM2VjYXBzLm51bV92c2k7XG4mIzQzO1x0dHhfcmVtID0gbnVtX3R4X2JkciAlIG51bV92ZnM7XG4mIzQzO1x0bnVtX3R4X2JkciA9IG51bV90eF9iZHIgLyBudW1fdmZzO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNlY2Fwcy5udW1fdnNpOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV92ZnM7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHZmX3R4X2JkciA9IChpIFx1MDAzYyB0eF9yZW0pID8gbnVtX3R4X2JkciAmIzQzOyAxIDogbnVtX3R4X2JkcjtcbiBcdFx0dmZfcnhfYmRyID0gKGkgXHUwMDNjIHJ4X3JlbSkgPyBudW1fcnhfYmRyICYjNDM7IDEgOiBudW1fcnhfYmRyO1xuIFx0XHR2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdCh0cnVlLCB2Zl90eF9iZHIsIHZmX3J4X2Jkcik7XG5AQCAtMzQ2LDUzICYjNDM7Mjk1LDcwIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5ncyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0ZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbihwZik7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSwgYm9vbCBlbilcbi17XG4tXHR1MzIgdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSVBWTVIpO1xuLVxuLVx0aWYgKGVuKVxuLVx0XHR2YWwgfD0gQklUKHNpKTtcbi1cdGVsc2Vcbi1cdFx0dmFsIFx1MDAyNj0gfkJJVChzaSk7XG4tXG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJUFZNUiwgdmFsKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZW5ldGM0X3NldF9kZWZhdWx0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuLXtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2Vodztcbi1cdGludCBudW1fc2kgPSBwZi1cdTAwM2VjYXBzLm51bV92c2kgJiM0MzsgMTtcbi1cdGludCBpO1xuLVxuLVx0LyogZW5mb3JjZSBWTEFOIHByb21pc2N1b3VzIG1vZGUgZm9yIGFsbCBTSXMgKi9cbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV9zaTsgaSYjNDM7JiM0MzspXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKGh3LCBpLCB0cnVlKTtcbi19XG4tXG4gLyogQWxsb2NhdGUgdGhlIG51bWJlciBvZiBNU0ktWCB2ZWN0b3JzIGZvciBwZXIgU0kuICovXG4gc3RhdGljIHZvaWQgZW5ldGM0X3NldF9zaV9tc2l4X251bShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIHtcbiYjNDM7XHRpbnQgdmFsaWRfbnVtX3NpID0gcGYtXHUwMDNldG90YWxfdmZzICYjNDM7IDE7XG4gXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2cGYtXHUwMDNlc2ktXHUwMDNlaHc7XG4tXHRpbnQgaSwgbnVtX21zaXgsIHRvdGFsX3NpO1xuJiM0MztcdGludCBpLCBudW1fbXNpeCwgbnVtX3ZzaTtcbiBcdHUzMiB2YWw7XG4gXG4tXHR0b3RhbF9zaSA9IHBmLVx1MDAzZWNhcHMubnVtX3ZzaSAmIzQzOyAxO1xuJiM0MztcdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9FQ0FQUjEpO1xuJiM0MztcdG51bV92c2kgPSBGSUVMRF9HRVQoRUNBUFIxX05VTV9WU0ksIHZhbCk7XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBQU0lhQ0ZHUjJbTlVNX01TSVhdIGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIE1TSS1YIGFsbG9jYXRlZCB0b1xuJiM0MztcdCAqIHRoZSBTSSBpcyBOVU1fTVNJWCAmIzQzOyAxLCBzbyB0aGUgbWluaW11bSBudW1iZXIgb2YgTVNJLVggYWxsb2NhdGVkIHRvXG4mIzQzO1x0ICogZWFjaCBTSSBpcyAxLiBUaGUgdG90YWwgbnVtYmVyIG9mIE1TSS1YIGFsbG9jYXRlZCB0byBQU0kgYW5kIFZTSXNcbiYjNDM7XHQgKiBjYW5ub3QgZXhjZWVkIHRoZSB0b3RhbCBudW1iZXIgb2YgTVNJLVggb3duZWQgYnkgdGhpcyBFTkVUQywgd2hpY2hcbiYjNDM7XHQgKiBpcyBFQ0FQUjFbTlVNX01TSVhdLiBPdGhlcndpc2UsIHdoZW4gbXVsdGlwbGUgRU5FVEMgaW5zdGFuY2VzIGV4aXN0LFxuJiM0MztcdCAqIGl0IHdpbGwgYWZmZWN0IG90aGVyIEVORVRDcyB3aG9zZSBNU0ktWCBpbnRlcnJ1cHRzIGNhbm5vdCBiZVxuJiM0MztcdCAqIGdlbmVyYXRlZC4gVGhpcyBpcyBzaW1pbGFyIHRvIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzOiB0aGUgYXJyYXlcbiYjNDM7XHQgKiBpdHNlbGYgaXMgbm90IGFmZmVjdGVkLCBidXQgYWRqYWNlbnQgYXJyYXlzIHdpbGwgYmUgY29ycnVwdGVkLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogcGYtXHUwMDNldG90YWxfdmZzIGlzIDAgaWYgQ09ORklHX1BDSV9JT1YgaXMgZGlzYWJsZWQuIElmIHRoZSBoYXJkd2FyZVxuJiM0MztcdCAqIGl0c2VsZiBzdXBwb3J0cyBTUi1JT1YsIHRoZW4gd2hlbiBhbGxvY2F0aW5nIHRoZSBudW1iZXIgb2YgTVNJWHMgdG9cbiYjNDM7XHQgKiB0aGUgU0ksIGl0IG11c3QgYmUgdGFrZW4gaW50byBhY2NvdW50IHRoYXQgdGhlIFZTSSBoYXMgYXQgbGVhc3QgMVxuJiM0MztcdCAqIE1TSVgsIGFuZCB0aGUgdG90YWwgbnVtYmVyIG9mIE1TSVhzIG9mIGFsbCBTSXMgY2Fubm90IGV4Y2VlZFxuJiM0MztcdCAqIEVDQVBSMVtOVU1fTVNJWF0uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFwZi1cdTAwM2V0b3RhbF92ZnMgXHUwMDI2XHUwMDI2IG51bV92c2kpIHtcbiYjNDM7XHRcdC8qIEJlY2F1c2UgZWFjaCBTSSBoYXMgYXQgbGVhc3Qgb25lIE1TSVgsIGFuZCBmcm9tIHRoZSBoYXJkd2FyZVxuJiM0MztcdFx0ICogcGVyc3BlY3RpdmUsIHBmLVx1MDAzZWNhcHMubnVtX21zaXggd2lsbCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuXG4mIzQzO1x0XHQgKiBudW1fdnNpLiBTbyBudW1fbXNpeCBpcyBhbHdheXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdG51bV9tc2l4ID0gcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAtIG51bV92c2kgLSAxO1xuJiM0MztcdFx0aWYgKG51bV9tc2l4IFx1MDAzZSBQU0lDRkdSMl9OVU1fTVNJWClcbiYjNDM7XHRcdFx0bnVtX21zaXggPSBQU0lDRkdSMl9OVU1fTVNJWDtcbiYjNDM7XHRcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMigwKSwgbnVtX21zaXgpO1xuIFxuLVx0bnVtX21zaXggPSBwZi1cdTAwM2VjYXBzLm51bV9tc2l4IC8gdG90YWxfc2kgJiM0Mztcbi1cdFx0ICAgcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAlIHRvdGFsX3NpIC0gMTtcbi1cdHZhbCA9IG51bV9tc2l4IFx1MDAyNiBQU0lDRkdSMl9OVU1fTVNJWDtcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMigwKSwgdmFsKTtcbiYjNDM7XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV92c2k7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoaSAmIzQzOyAxKSwgMCk7XG4gXG4tXHRudW1fbXNpeCA9IHBmLVx1MDAzZWNhcHMubnVtX21zaXggLyB0b3RhbF9zaSAtIDE7XG4tXHR2YWwgPSBudW1fbXNpeCBcdTAwMjYgUFNJQ0ZHUjJfTlVNX01TSVg7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZi1cdTAwM2VjYXBzLm51bV92c2k7IGkmIzQzOyYjNDM7KVxuLVx0XHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoaSAmIzQzOyAxKSwgdmFsKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIExpa2V3aXNlLCBmcm9tIHRoZSBoYXJkd2FyZSBwZXJzcGVjdGl2ZSBwZi1cdTAwM2VjYXBzLm51bV9tc2l4IGlzIGFsd2F5c1xuJiM0MztcdCAqIGdyZWF0ZXIgdGhhbiB2YWxpZF9udW1fc2kuIFNvIG51bV9tc2l4IGlzIGFsd2F5cyBncmVhdGVyIHRoYW4gb3JcbiYjNDM7XHQgKiBlcXVhbCB0byAwLlxuJiM0MztcdCAqL1xuJiM0MztcdG51bV9tc2l4ID0gcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAvIHZhbGlkX251bV9zaSAmIzQzO1xuJiM0MztcdFx0ICAgcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAlIHZhbGlkX251bV9zaSAtIDE7XG4mIzQzO1x0aWYgKG51bV9tc2l4IFx1MDAzZSBQU0lDRkdSMl9OVU1fTVNJWClcbiYjNDM7XHRcdG51bV9tc2l4ID0gUFNJQ0ZHUjJfTlVNX01TSVg7XG4mIzQzO1x0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSUNGR1IyKDApLCBudW1fbXNpeCk7XG4mIzQzO1xuJiM0MztcdG51bV9tc2l4ID0gcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAvIHZhbGlkX251bV9zaSAtIDE7XG4mIzQzO1x0aWYgKG51bV9tc2l4IFx1MDAzZSBQU0lDRkdSMl9OVU1fTVNJWClcbiYjNDM7XHRcdG51bV9tc2l4ID0gUFNJQ0ZHUjJfTlVNX01TSVg7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBmLVx1MDAzZXRvdGFsX3ZmczsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoaSAmIzQzOyAxKSwgbnVtX21zaXgpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbmV0YzRfZW5hYmxlX2FsbF9zaShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIHtcbiBcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2Vodztcbi1cdGludCBudW1fc2kgPSBwZi1cdTAwM2VjYXBzLm51bV92c2kgJiM0MzsgMTtcbiYjNDM7XHRpbnQgbnVtX3NpID0gcGYtXHUwMDNldG90YWxfdmZzICYjNDM7IDE7XG4gXHR1MzIgc2lfYml0bWFwID0gMDtcbiBcdGludCBpO1xuIFxuQEAgLTQxMiw3ICYjNDM7Mzc4LDkgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2NvbmZpZ3VyZV9wb3J0X3NpKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXHQvKiBPdXRlciBWTEFOIHRhZyB3aWxsIGJlIHVzZWQgZm9yIFZMQU4gZmlsdGVyaW5nICovXG4gXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJVkxBTkZNUiwgUFNJVkxBTkZNUl9WUyk7XG4gXG4tXHRlbmV0YzRfc2V0X2RlZmF1bHRfc2lfdmxhbl9wcm9taXNjKHBmKTtcbiYjNDM7XHQvKiBFbmZvcmNlIFZMQU4gcHJvbWlzY3VvdXMgbW9kZSBmb3IgYWxsIFNJcyAqL1xuJiM0MztcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBwZi1cdTAwM2V0b3RhbF92ZnMgJiM0MzsgMTsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRlbmV0Y19zZXRfc2lfdmxhbl9wcm9taXNjKHBmLVx1MDAzZXNpLCBpLCB0cnVlKTtcbiBcbiBcdC8qIERpc2FibGUgU0kgTUFDIG11bHRpY2FzdCBcdTAwMjYgdW5pY2FzdCBwcm9taXNjdW91cyAqL1xuIFx0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSVBNTVIsIDApO1xuQEAgLTQ1MCwxOCAmIzQzOzQxOCw2MCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfY29uZmlndXJlX3BvcnQoc3RydWN0IGVuZXRjX3BmICpwZilcbiBcdGVuZXRjX3NldF9kZWZhdWx0X3Jzc19rZXkocGYpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgZW5ldGM0X2dldF9udG1wX2NhcHMoc3RydWN0IGVuZXRjX3NpICpzaSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBudG1wX3VzZXIgKnVzZXIgPSBcdTAwMjZzaS1cdTAwM2VudG1wX3VzZXI7XG4mIzQzO1x0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnNpLVx1MDAzZWh3O1xuJiM0MztcdHUzMiB2YWw7XG4mIzQzO1xuJiM0MztcdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lNQUZDQVBSKTtcbiYjNDM7XHR1c2VyLVx1MDAzZW1hZnRfbnVtX2VudHJpZXMgPSBGSUVMRF9HRVQoUFNJTUFGQ0FQUl9OVU1fTUFDX0FGVEUsIHZhbCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgZW5ldGM0X250bXBfYml0bWFwX2luaXQoc3RydWN0IG50bXBfdXNlciAqdXNlcilcbiYjNDM7e1xuJiM0MztcdHVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwID0gYml0bWFwX3phbGxvYyh1c2VyLVx1MDAzZW1hZnRfbnVtX2VudHJpZXMsXG4mIzQzO1x0XHRcdFx0XHQgICAgICBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIXVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBlbmV0YzRfbnRtcF9iaXRtYXBfZnJlZShzdHJ1Y3QgbnRtcF91c2VyICp1c2VyKVxuJiM0Mzt7XG4mIzQzO1x0Yml0bWFwX2ZyZWUodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXApO1xuJiM0MztcdHVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwID0gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGVuZXRjNF9pbml0X250bXBfdXNlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxuIHtcbiBcdHN0cnVjdCBudG1wX3VzZXIgKnVzZXIgPSBcdTAwMjZzaS1cdTAwM2VudG1wX3VzZXI7XG4mIzQzO1x0aW50IGVycjtcbiBcbiBcdC8qIEZvciBFTkVUQyA0LjEsIGFsbCB0YWJsZSB2ZXJzaW9ucyBhcmUgMCAqL1xuIFx0bWVtc2V0KFx1MDAyNnVzZXItXHUwMDNldGJsLCAwLCBzaXplb2YodXNlci1cdTAwM2V0YmwpKTtcbiBcbi1cdHJldHVybiBlbmV0YzRfc2V0dXBfY2JkcihzaSk7XG4mIzQzO1x0ZXJyID0gZW5ldGM0X3NldHVwX2NiZHIoc2kpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRlbmV0YzRfZ2V0X250bXBfY2FwcyhzaSk7XG4mIzQzO1x0ZXJyID0gZW5ldGM0X250bXBfYml0bWFwX2luaXQodXNlcik7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdGdvdG8gdGVhcmRvd25fY2JkcjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO1xuJiM0Mzt0ZWFyZG93bl9jYmRyOlxuJiM0MztcdGVuZXRjNF90ZWFyZG93bl9jYmRyKHNpKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW5ldGM0X2ZyZWVfbnRtcF91c2VyKHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4ge1xuJiM0MztcdGVuZXRjNF9udG1wX2JpdG1hcF9mcmVlKFx1MDAyNnNpLVx1MDAzZW50bXBfdXNlcik7XG4gXHRlbmV0YzRfdGVhcmRvd25fY2JkcihzaSk7XG4gfVxuIFxuQEAgLTQ3OSw3ICYjNDM7NDg5LDcgQEAgc3RhdGljIGludCBlbmV0YzRfcGZfaW5pdChzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFxuIFx0ZXJyID0gZW5ldGM0X2luaXRfbnRtcF91c2VyKHBmLVx1MDAzZXNpKTtcbiBcdGlmIChlcnIpIHtcbi1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBpbml0IENCRFJcXG5cJiMzNDspO1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBpbml0IE5UTVAgdXNlclxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiBlcnI7XG4gXHR9XG4gXG5AQCAtNDkzLDE4ICYjNDM7NTAzLDE3IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9mcmVlKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXHRlbmV0YzRfZnJlZV9udG1wX3VzZXIocGYtXHUwMDNlc2kpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBlbmV0YzRfcHNpX2RvX3NldF9yeF9tb2RlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiYjNDM7c3RhdGljIGludCBlbmV0YzRfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4mIzQzO1x0XHRcdFx0IHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcbiYjNDM7XHRcdFx0XHQgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKm1jKVxuIHtcbi1cdHN0cnVjdCBlbmV0Y19zaSAqc2kgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGVuZXRjX3NpLCByeF9tb2RlX3Rhc2spO1xuLVx0c3RydWN0IGVuZXRjX3BmICpwZiA9IGVuZXRjX3NpX3ByaXYoc2kpO1xuLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBzaS1cdTAwM2VuZGV2O1xuLVx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnNpLVx1MDAzZWh3O1xuJiM0MztcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiYjNDM7XHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihwcml2LVx1MDAzZXNpKTtcbiYjNDM7XHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcHJpdi1cdTAwM2VzaTtcbiBcdGJvb2wgdWNfcHJvbWlzYyA9IGZhbHNlO1xuIFx0Ym9vbCBtY19wcm9taXNjID0gZmFsc2U7XG4gXHRpbnQgdHlwZSA9IDA7XG4gXG4tXHRydG5sX2xvY2soKTtcbi1cbiBcdGlmIChuZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUFJPTUlTQykge1xuIFx0XHR1Y19wcm9taXNjID0gdHJ1ZTtcbiBcdFx0bWNfcHJvbWlzYyA9IHRydWU7XG5AQCAtNTE1LDI4ICYjNDM7NTI0LDIxIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wc2lfZG9fc2V0X3J4X21vZGUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHR0eXBlID0gRU5FVENfTUFDX0ZJTFRFUl9UWVBFX0FMTDtcbiBcdH1cbiBcbi1cdGVuZXRjNF9wZl9zZXRfc2lfbWFjX3Byb21pc2MoaHcsIDAsIHVjX3Byb21pc2MsIG1jX3Byb21pc2MpO1xuJiM0MztcdGVuZXRjX3NldF9zaV91Y19wcm9taXNjKHNpLCAwLCB1Y19wcm9taXNjKTtcbiYjNDM7XHRlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhzaSwgMCwgbWNfcHJvbWlzYyk7XG4gXG4gXHRpZiAodWNfcHJvbWlzYykge1xuLVx0XHRlbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKGh3LCAwLCAwKTtcbiYjNDM7XHRcdGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7XG4gXHRcdGVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpO1xuIFx0fVxuIFxuIFx0aWYgKG1jX3Byb21pc2MpXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfbWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApO1xuJiM0MztcdFx0ZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTtcbiBcbiBcdC8qIFNldCBuZXcgTUFDIGZpbHRlciAqL1xuLVx0ZW5ldGM0X3BmX3NldF9tYWNfZmlsdGVyKHBmLCB0eXBlKTtcbiYjNDM7XHRlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIocGYsIHR5cGUsIHVjLCBtYyk7XG4gXG4tXHRydG5sX3VubG9jaygpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4te1xuLVx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuLVx0c3RydWN0IGVuZXRjX3NpICpzaSA9IHByaXYtXHUwMDNlc2k7XG4tXG4tXHRxdWV1ZV93b3JrKHNpLVx1MDAzZXdvcmtxdWV1ZSwgXHUwMDI2c2ktXHUwMDNlcnhfbW9kZV90YXNrKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBlbmV0YzRfcGZfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuQEAgLTU0NCwxMiAmIzQzOzU0NiwxMSBAQCBzdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4ge1xuIFx0bmV0ZGV2X2ZlYXR1cmVzX3QgY2hhbmdlZCA9IG5kZXYtXHUwMDNlZmVhdHVyZXMgXiBmZWF0dXJlcztcbiBcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwcml2LVx1MDAzZXNpLVx1MDAzZWh3O1xuIFxuIFx0aWYgKGNoYW5nZWQgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUikge1xuIFx0XHRib29sIHByb21pc2NfZW4gPSAhKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19GSUxURVIpO1xuIFxuLVx0XHRlbmV0YzRfcGZfc2V0X3NpX3ZsYW5fcHJvbWlzYyhodywgMCwgcHJvbWlzY19lbik7XG4mIzQzO1x0XHRlbmV0Y19zZXRfc2lfdmxhbl9wcm9taXNjKHByaXYtXHUwMDNlc2ksIDAsIHByb21pc2NfZW4pO1xuIFx0fVxuIFxuIFx0aWYgKGNoYW5nZWQgXHUwMDI2IE5FVElGX0ZfTE9PUEJBQ0spXG5AQCAtNTY2LDcgJiM0Mzs1NjcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVuZXRjNF9uZGV2X29wcyA9IHtcbiBcdC5uZG9fc3RhcnRfeG1pdFx0XHQ9IGVuZXRjX3htaXQsXG4gXHQubmRvX2dldF9zdGF0c1x0XHQ9IGVuZXRjX2dldF9zdGF0cyxcbiBcdC5uZG9fc2V0X21hY19hZGRyZXNzXHQ9IGVuZXRjX3BmX3NldF9tYWNfYWRkcixcbi1cdC5uZG9fc2V0X3J4X21vZGVcdD0gZW5ldGM0X3BmX3NldF9yeF9tb2RlLFxuJiM0MztcdC5uZG9fc2V0X3J4X21vZGVfYXN5bmNcdD0gZW5ldGM0X3BmX3NldF9yeF9tb2RlLFxuIFx0Lm5kb19zZXRfZmVhdHVyZXNcdD0gZW5ldGM0X3BmX3NldF9mZWF0dXJlcyxcbiBcdC5uZG9fdmxhbl9yeF9hZGRfdmlkXHQ9IGVuZXRjX3ZsYW5fcnhfYWRkX3ZpZCxcbiBcdC5uZG9fdmxhbl9yeF9raWxsX3ZpZFx0PSBlbmV0Y192bGFuX3J4X2RlbF92aWQsXG5AQCAtNjAyLDExICYjNDM7NjAzLDYgQEAgc3RhdGljIHZvaWQgZW5ldGM0X21hY19jb25maWcoc3RydWN0IGVuZXRjX3BmICpwZiwgdW5zaWduZWQgaW50IG1vZGUsXG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcbiBcdFx0dmFsIHw9IElGTU9ERV9SR01JSTtcbi1cdFx0LyogV2UgbmVlZCB0byBlbmFibGUgYXV0by1uZWdvdGlhdGlvbiBmb3IgdGhlIE1BQ1xuLVx0XHQgKiBpZiBpdHMgUkdNSUkgaW50ZXJmYWNlIHN1cHBvcnQgSW4tQmFuZCBzdGF0dXMuXG4tXHRcdCAqL1xuLVx0XHRpZiAocGh5bGlua19hdXRvbmVnX2luYmFuZChtb2RlKSlcbi1cdFx0XHR2YWwgfD0gUE1fSUZfTU9ERV9FTkE7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUk1JSTpcbiBcdFx0dmFsIHw9IElGTU9ERV9STUlJO1xuQEAgLTYxNiw3ICYjNDM7NjEyLDYgQEAgc3RhdGljIHZvaWQgZW5ldGM0X21hY19jb25maWcoc3RydWN0IGVuZXRjX3BmICpwZiwgdW5zaWduZWQgaW50IG1vZGUsXG4gXHRcdHZhbCB8PSBJRk1PREVfU0dNSUk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XG4tXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9YR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUk6XG4gXHRcdHZhbCB8PSBJRk1PREVfWEdNSUk7XG4gXHRcdGJyZWFrO1xuQEAgLTY0MiwyNiAmIzQzOzYzNywxOSBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3BvcnRfc3BlZWQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgaW50IHNwZWVkKVxuIFx0dTMyIG9sZF9zcGVlZCA9IHByaXYtXHUwMDNlc3BlZWQ7XG4gXHR1MzIgdmFsO1xuIFxuJiM0MztcdC8qIElmIHRoZSBzcGVlZCBpcyB1bmtub3duLCB1c2UgdGhlIG1pbmltdW0gdmFsdWUgKi9cbiYjNDM7XHRpZiAoc3BlZWQgPT0gU1BFRURfVU5LTk9XTikge1xuJiM0MztcdFx0c3BlZWQgPSBTUEVFRF8xMDtcbiYjNDM7XHRcdGRldl93YXJuKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtTcGVlZCB1bmtub3duLCBkZWZhdWx0IGlzIDEwTWJwc1xcblwmIzM0Oyk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChzcGVlZCA9PSBvbGRfc3BlZWQpXG4gXHRcdHJldHVybjtcbiBcbi1cdHZhbCA9IGVuZXRjX3BvcnRfcmQoXHUwMDI2cHJpdi1cdTAwM2VzaS1cdTAwM2VodywgRU5FVEM0X1BDUik7XG4tXHR2YWwgXHUwMDI2PSB+UENSX1BTUEVFRDtcbi1cbi1cdHN3aXRjaCAoc3BlZWQpIHtcbi1cdGNhc2UgU1BFRURfMTAwOlxuLVx0Y2FzZSBTUEVFRF8xMDAwOlxuLVx0Y2FzZSBTUEVFRF8yNTAwOlxuLVx0Y2FzZSBTUEVFRF8xMDAwMDpcbi1cdFx0dmFsIHw9IChQQ1JfUFNQRUVEIFx1MDAyNiBQQ1JfUFNQRUVEX1ZBTChzcGVlZCkpO1xuLVx0XHRicmVhaztcbi1cdGNhc2UgU1BFRURfMTA6XG4tXHRkZWZhdWx0OlxuLVx0XHR2YWwgfD0gKFBDUl9QU1BFRUQgXHUwMDI2IFBDUl9QU1BFRURfVkFMKFNQRUVEXzEwKSk7XG4tXHR9XG4tXG4tXHRwcml2LVx1MDAzZXNwZWVkID0gc3BlZWQ7XG4mIzQzO1x0dmFsID0gZW5ldGNfcG9ydF9yZChcdTAwMjZwcml2LVx1MDAzZXNpLVx1MDAzZWh3LCBFTkVUQzRfUENSKSBcdTAwMjYgKH5QQ1JfUFNQRUVEKTtcbiYjNDM7XHR2YWwgfD0gUENSX1BTUEVFRF9WQUwoc3BlZWQpO1xuIFx0ZW5ldGNfcG9ydF93cihcdTAwMjZwcml2LVx1MDAzZXNpLVx1MDAzZWh3LCBFTkVUQzRfUENSLCB2YWwpO1xuJiM0MztcdHByaXYtXHUwMDNlc3BlZWQgPSBzcGVlZDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW5ldGM0X3NldF9yZ21paV9tYWMoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHNwZWVkLCBpbnQgZHVwbGV4KVxuQEAgLTcxNywyMiAmIzQzOzcwNSw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfcm1paV9tYWMoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHNwZWVkLCBpbnQgZHVwbGV4KVxuIFx0ZW5ldGNfcG9ydF9tYWNfd3Ioc2ksIEVORVRDNF9QTV9JRl9NT0RFKDApLCB2YWwpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBlbmV0YzRfc2V0X2hkX2Zsb3dfY29udHJvbChzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBib29sIGVuYWJsZSlcbi17XG4tXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcGYtXHUwMDNlc2k7XG4tXHR1MzIgb2xkX3ZhbCwgdmFsO1xuLVxuLVx0aWYgKCFwZi1cdTAwM2VjYXBzLmhhbGZfZHVwbGV4KVxuLVx0XHRyZXR1cm47XG4tXG4tXHRvbGRfdmFsID0gZW5ldGNfcG9ydF9tYWNfcmQoc2ksIEVORVRDNF9QTV9DTURfQ0ZHKDApKTtcbi1cdHZhbCA9IHUzMl9yZXBsYWNlX2JpdHMob2xkX3ZhbCwgZW5hYmxlID8gMSA6IDAsIFBNX0NNRF9DRkdfSERfRkNFTik7XG4tXHRpZiAodmFsID09IG9sZF92YWwpXG4tXHRcdHJldHVybjtcbi1cbi1cdGVuZXRjX3BvcnRfbWFjX3dyKHNpLCBFTkVUQzRfUE1fQ01EX0NGRygwKSwgdmFsKTtcbi19XG4tXG4gc3RhdGljIHZvaWQgZW5ldGM0X3NldF9yeF9wYXVzZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBib29sIHJ4X3BhdXNlKVxuIHtcbiBcdHN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwZi1cdTAwM2VzaTtcbkBAIC05MDgsMTMgJiM0Mzs4ODAsMTEgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BsX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuIFx0c3RydWN0IGVuZXRjX3BmICpwZiA9IHBoeWxpbmtfdG9fZW5ldGNfcGYoY29uZmlnKTtcbiBcdHN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwZi1cdTAwM2VzaTtcbiBcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXY7XG4tXHRib29sIGhkX2ZjID0gZmFsc2U7XG4gXG4gXHRwcml2ID0gbmV0ZGV2X3ByaXYoc2ktXHUwMDNlbmRldik7XG4gXHRlbmV0YzRfc2V0X3BvcnRfc3BlZWQocHJpdiwgc3BlZWQpO1xuIFxuLVx0aWYgKCFwaHlsaW5rX2F1dG9uZWdfaW5iYW5kKG1vZGUpIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHBoeV9pbnRlcmZhY2VfbW9kZV9pc19yZ21paShpbnRlcmZhY2UpKVxuJiM0MztcdGlmIChwaHlfaW50ZXJmYWNlX21vZGVfaXNfcmdtaWkoaW50ZXJmYWNlKSlcbiBcdFx0ZW5ldGM0X3NldF9yZ21paV9tYWMocGYsIHNwZWVkLCBkdXBsZXgpO1xuIFxuIFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUk1JSSlcbkBAIC05MjYsMTggJiM0Mzs4OTYsOCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4gXHRcdCAqL1xuIFx0XHRpZiAocHJpdi1cdTAwM2VhY3RpdmVfb2ZmbG9hZHMgXHUwMDI2IEVORVRDX0ZfUUJVKVxuIFx0XHRcdHR4X3BhdXNlID0gZmFsc2U7XG4tXHR9IGVsc2UgeyAvKiBEVVBMRVhfSEFMRiAqL1xuLVx0XHRpZiAodHhfcGF1c2UgfHwgcnhfcGF1c2UpXG4tXHRcdFx0aGRfZmMgPSB0cnVlO1xuLVxuLVx0XHQvKiBBcyBwZXIgODAyLjMgYW5uZXggMzFCLCBQQVVTRSBmcmFtZXMgYXJlIG9ubHkgc3VwcG9ydGVkXG4tXHRcdCAqIHdoZW4gdGhlIGxpbmsgaXMgY29uZmlndXJlZCBmb3IgZnVsbCBkdXBsZXggb3BlcmF0aW9uLlxuLVx0XHQgKi9cbi1cdFx0dHhfcGF1c2UgPSBmYWxzZTtcbi1cdFx0cnhfcGF1c2UgPSBmYWxzZTtcbiBcdH1cbiBcbi1cdGVuZXRjNF9zZXRfaGRfZmxvd19jb250cm9sKHBmLCBoZF9mYyk7XG4gXHRlbmV0YzRfc2V0X3R4X3BhdXNlKHBmLCBwcml2LVx1MDAzZW51bV9yeF9yaW5ncywgdHhfcGF1c2UpO1xuIFx0ZW5ldGM0X3NldF9yeF9wYXVzZShwZiwgcnhfcGF1c2UpO1xuIFx0ZW5ldGM0X21hY190eF9lbmFibGUocGYpO1xuQEAgLTEwMDksMTkgJiM0Mzs5NjksNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfbGlua19kZWluaXQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdilcbiBcdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZW5ldGM0X3BzaV93cV90YXNrX2luaXQoc3RydWN0IGVuZXRjX3NpICpzaSlcbi17XG4tXHRjaGFyIHdxX25hbWVbMjRdO1xuLVxuLVx0SU5JVF9XT1JLKFx1MDAyNnNpLVx1MDAzZXJ4X21vZGVfdGFzaywgZW5ldGM0X3BzaV9kb19zZXRfcnhfbW9kZSk7XG4tXHRzbnByaW50Zih3cV9uYW1lLCBzaXplb2Yod3FfbmFtZSksIFwmIzM0O2VuZXRjLSVzXCYjMzQ7LCBwY2lfbmFtZShzaS1cdTAwM2VwZGV2KSk7XG4tXHRzaS1cdTAwM2V3b3JrcXVldWUgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSh3cV9uYW1lKTtcbi1cdGlmICghc2ktXHUwMDNld29ya3F1ZXVlKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbi1cbi1cdHJldHVybiAwO1xuLX1cbi1cbiBzdGF0aWMgaW50IGVuZXRjNF9wZl9uZXRkZXZfY3JlYXRlKHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4ge1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2c2ktXHUwMDNlcGRldi1cdTAwM2VkZXY7XG5AQCAtMTA2MiwxMiAmIzQzOzEwMDksNiBAQCBzdGF0aWMgaW50IGVuZXRjNF9wZl9uZXRkZXZfY3JlYXRlKHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9saW5rX2luaXQ7XG4gXG4tXHRlcnIgPSBlbmV0YzRfcHNpX3dxX3Rhc2tfaW5pdChzaSk7XG4tXHRpZiAoZXJyKSB7XG4tXHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gaW5pdCB3b3JrcXVldWVcXG5cJiMzNDspO1xuLVx0XHRnb3RvIGVycl93cV9pbml0O1xuLVx0fVxuLVxuIFx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuIFx0aWYgKGVycikge1xuIFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIG5ldGRldlxcblwmIzM0Oyk7XG5AQCAtMTA3Nyw4ICYjNDM7MTAxOCw2IEBAIHN0YXRpYyBpbnQgZW5ldGM0X3BmX25ldGRldl9jcmVhdGUoc3RydWN0IGVuZXRjX3NpICpzaSlcbiBcdHJldHVybiAwO1xuIFxuIGVycl9yZWdfbmV0ZGV2OlxuLVx0ZGVzdHJveV93b3JrcXVldWUoc2ktXHUwMDNld29ya3F1ZXVlKTtcbi1lcnJfd3FfaW5pdDpcbiBcdGVuZXRjNF9saW5rX2RlaW5pdChwcml2KTtcbiBlcnJfbGlua19pbml0OlxuIFx0ZW5ldGNfZnJlZV9tc2l4KHByaXYpO1xuQEAgLTEwOTYsOCAmIzQzOzEwMzUsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGZfbmV0ZGV2X2Rlc3Ryb3koc3RydWN0IGVuZXRjX3NpICpzaSlcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gc2ktXHUwMDNlbmRldjtcbiBcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuLVx0Y2FuY2VsX3dvcmsoXHUwMDI2c2ktXHUwMDNlcnhfbW9kZV90YXNrKTtcbi1cdGRlc3Ryb3lfd29ya3F1ZXVlKHNpLVx1MDAzZXdvcmtxdWV1ZSk7XG4gXHRlbmV0YzRfbGlua19kZWluaXQocHJpdik7XG4gXHRlbmV0Y19mcmVlX21zaXgocHJpdik7XG4gXHRmcmVlX25ldGRldihuZGV2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuY1xuaW5kZXggNzFmMzc2ZWYxYmUxYzkuLjA3Yjc4MzJmMjQyNzZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuY1xuQEAgLTI5LDcgJiM0MzsyOSw3IEBAIHN0YXRpYyBjb25zdCB1MzIgZW5ldGNfcnhiZHJfcmVnc1tdID0ge1xuIH07XG4gXG4gc3RhdGljIGNvbnN0IHUzMiBlbmV0Y19wb3J0X3JlZ3NbXSA9IHtcbi1cdEVORVRDX1BNUiwgRU5FVENfUFNSLCBFTkVUQ19QU0lQTVIsIEVORVRDX1BTSVBNQVIwKDApLFxuJiM0MztcdEVORVRDX1BNUiwgRU5FVENfUFNSLCBFTkVUQ19QU0lQTU1SLCBFTkVUQ19QU0lQTUFSMCgwKSxcbiBcdEVORVRDX1BTSVBNQVIxKDApLCBFTkVUQ19QVFhNQkFSLCBFTkVUQ19QQ0FQUjAsIEVORVRDX1BDQVBSMSxcbiBcdEVORVRDX1BTSUNGR1IwKDApLCBFTkVUQ19QUkZTQ0FQUiwgRU5FVENfUFRDTVNEVVIoMCksXG4gXHRFTkVUQ19QTTBfQ01EX0NGRywgRU5FVENfUE0wX01BWEZSTSwgRU5FVENfUE0wX0lGX01PREVcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oXG5pbmRleCBiZjk5YjY1ZDc1OThhYi4uMTZkYTczMmRjNWRlODIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfaHcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmhcbkBAIC0xODAsMTMgJiM0MzsxODAsMTMgQEAgZW51bSBlbmV0Y19iZHJfdHlwZSB7VFgsIFJYfTtcbiAjZGVmaW5lIEVORVRDX1BNUl9QU1BFRURfMTAwME1cdEJJVCg5KVxuICNkZWZpbmUgRU5FVENfUE1SX1BTUEVFRF8yNTAwTVx0QklUKDEwKVxuICNkZWZpbmUgRU5FVENfUFNSXHRcdDB4MDAwNCAvKiBSTyAqL1xuLSNkZWZpbmUgRU5FVENfUFNJUE1SXHRcdDB4MDAxOFxuLSNkZWZpbmUgRU5FVENfUFNJUE1SX1NFVF9VUChuKVx0QklUKG4pIC8qIG4gPSBTSSBpbmRleCAqL1xuLSNkZWZpbmUgRU5FVENfUFNJUE1SX1NFVF9NUChuKVx0QklUKChuKSAmIzQzOyAxNilcbiYjNDM7I2RlZmluZSBFTkVUQ19QU0lQTU1SXHRcdDB4MDAxOFxuJiM0MzsjZGVmaW5lICBQU0lQTU1SX1NJX01BQ19VUChuKVx0QklUKG4pIC8qIG4gPSBTSSBpbmRleCAqL1xuJiM0MzsjZGVmaW5lICBQU0lQTU1SX1NJX01BQ19NUChuKVx0QklUKChuKSAmIzQzOyAxNilcbiYjNDM7XG4gI2RlZmluZSBFTkVUQ19QU0lQVk1SXHRcdDB4MDAxY1xuLSNkZWZpbmUgRU5FVENfVkxBTl9QUk9NSVNDX01BUF9BTExcdDB4N1xuLSNkZWZpbmUgRU5FVENfUFNJUFZNUl9TRVRfVlAoc2ltYXApXHQoKHNpbWFwKSBcdTAwMjYgMHg3KVxuLSNkZWZpbmUgRU5FVENfUFNJUFZNUl9TRVRfVlVUQShzaW1hcClcdCgoKHNpbWFwKSBcdTAwMjYgMHg3KSBcdTAwM2NcdTAwM2MgMTYpXG4mIzQzOyNkZWZpbmUgIFBTSVBWTVJfU0lfVkxBTl9QKG4pXHRCSVQobikgLyogbiA9IFNJIGluZGV4ICovXG4mIzQzO1xuICNkZWZpbmUgRU5FVENfUFNJUE1BUjAobilcdCgweDAxMDAgJiM0MzsgKG4pICogMHg4KSAvKiBuID0gU0kgaW5kZXggKi9cbiAjZGVmaW5lIEVORVRDX1BTSVBNQVIxKG4pXHQoMHgwMTA0ICYjNDM7IChuKSAqIDB4OClcbiAjZGVmaW5lIEVORVRDX1BWQ0xDVFJcdFx0MHgwMjA4XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuY1xuaW5kZXggMmQ2ODdiYjhjM2EwNjMuLmE1MDk5MjlmODlmMjVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jXG5AQCAtNDIsMjYgJiM0Mzs0Miw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3BmX2Rlc3Ryb3lfcGNzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuIFx0bHlueF9wY3NfZGVzdHJveShwY3MpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBlbmV0Y19zZXRfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19odyAqaHcsIGNoYXIgc2lfbWFwKVxuLXtcbi1cdHUzMiB2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQ19QU0lQVk1SKTtcbi1cbi1cdHZhbCBcdTAwMjY9IH5FTkVUQ19QU0lQVk1SX1NFVF9WUChFTkVUQ19WTEFOX1BST01JU0NfTUFQX0FMTCk7XG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQ19QU0lQVk1SLCBFTkVUQ19QU0lQVk1SX1NFVF9WUChzaV9tYXApIHwgdmFsKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZW5ldGNfZW5hYmxlX3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgc2lfaWR4KVxuLXtcbi1cdHBmLVx1MDAzZXZsYW5fcHJvbWlzY19zaW1hcCB8PSBCSVQoc2lfaWR4KTtcbi1cdGVuZXRjX3NldF92bGFuX3Byb21pc2MoXHUwMDI2cGYtXHUwMDNlc2ktXHUwMDNlaHcsIHBmLVx1MDAzZXZsYW5fcHJvbWlzY19zaW1hcCk7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIGVuZXRjX2Rpc2FibGVfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBzaV9pZHgpXG4te1xuLVx0cGYtXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwIFx1MDAyNj0gfkJJVChzaV9pZHgpO1xuLVx0ZW5ldGNfc2V0X3ZsYW5fcHJvbWlzYyhcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VodywgcGYtXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwKTtcbi19XG4tXG4gc3RhdGljIHZvaWQgZW5ldGNfc2V0X2lzb2xfdmxhbihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksIHUxNiB2bGFuLCB1OCBxb3MpXG4ge1xuIFx0dTMyIHZhbCA9IDA7XG5AQCAtODAsMzcgJiM0Mzs2MCw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjX2FkZF9tYWNfYWRkcl9lbV9maWx0ZXIoc3RydWN0IGVuZXRjX21hY19maWx0ZXIgKmZpbHRlcixcbiBcdGZpbHRlci1cdTAwM2VtYWNfYWRkcl9jbnQmIzQzOyYjNDM7O1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBlbmV0Y19jbGVhcl9tYWNfaHRfZmx0KHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZHgsIGludCB0eXBlKVxuLXtcbi1cdGJvb2wgZXJyID0gc2ktXHUwMDNlZXJyYXRhIFx1MDAyNiBFTkVUQ19FUlJfVUNNQ1NXUDtcbi1cbi1cdGlmICh0eXBlID09IFVDKSB7XG4tXHRcdGVuZXRjX3BvcnRfd3IoXHUwMDI2c2ktXHUwMDNlaHcsIEVORVRDX1BTSVVNSEZSMChzaV9pZHgsIGVyciksIDApO1xuLVx0XHRlbmV0Y19wb3J0X3dyKFx1MDAyNnNpLVx1MDAzZWh3LCBFTkVUQ19QU0lVTUhGUjEoc2lfaWR4KSwgMCk7XG4tXHR9IGVsc2UgeyAvKiBNQyAqL1xuLVx0XHRlbmV0Y19wb3J0X3dyKFx1MDAyNnNpLVx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjAoc2lfaWR4LCBlcnIpLCAwKTtcbi1cdFx0ZW5ldGNfcG9ydF93cihcdTAwMjZzaS1cdTAwM2VodywgRU5FVENfUFNJTU1IRlIxKHNpX2lkeCksIDApO1xuLVx0fVxuLX1cbi1cbi1zdGF0aWMgdm9pZCBlbmV0Y19zZXRfbWFjX2h0X2ZsdChzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWR4LCBpbnQgdHlwZSxcbi1cdFx0XHRcdCB1bnNpZ25lZCBsb25nIGhhc2gpXG4te1xuLVx0Ym9vbCBlcnIgPSBzaS1cdTAwM2VlcnJhdGEgXHUwMDI2IEVORVRDX0VSUl9VQ01DU1dQO1xuLVxuLVx0aWYgKHR5cGUgPT0gVUMpIHtcbi1cdFx0ZW5ldGNfcG9ydF93cihcdTAwMjZzaS1cdTAwM2VodywgRU5FVENfUFNJVU1IRlIwKHNpX2lkeCwgZXJyKSxcbi1cdFx0XHQgICAgICBsb3dlcl8zMl9iaXRzKGhhc2gpKTtcbi1cdFx0ZW5ldGNfcG9ydF93cihcdTAwMjZzaS1cdTAwM2VodywgRU5FVENfUFNJVU1IRlIxKHNpX2lkeCksXG4tXHRcdFx0ICAgICAgdXBwZXJfMzJfYml0cyhoYXNoKSk7XG4tXHR9IGVsc2UgeyAvKiBNQyAqL1xuLVx0XHRlbmV0Y19wb3J0X3dyKFx1MDAyNnNpLVx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjAoc2lfaWR4LCBlcnIpLFxuLVx0XHRcdCAgICAgIGxvd2VyXzMyX2JpdHMoaGFzaCkpO1xuLVx0XHRlbmV0Y19wb3J0X3dyKFx1MDAyNnNpLVx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjEoc2lfaWR4KSxcbi1cdFx0XHQgICAgICB1cHBlcl8zMl9iaXRzKGhhc2gpKTtcbi1cdH1cbi19XG4tXG4gc3RhdGljIHZvaWQgZW5ldGNfc3luY19tYWNfZmlsdGVycyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIHtcbiBcdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICpmID0gcGYtXHUwMDNlbWFjX2ZpbHRlcjtcbkBAIC0xMjIsMTIgJiM0Mzs3MSwxNiBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zeW5jX21hY19maWx0ZXJzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQUREUl9UWVBFOyBpJiM0MzsmIzQzOywgZiYjNDM7JiM0MzspIHtcbiBcdFx0Ym9vbCBlbSA9IChmLVx1MDAzZW1hY19hZGRyX2NudCA9PSAxKSBcdTAwMjZcdTAwMjYgKGkgPT0gVUMpO1xuIFx0XHRib29sIGNsZWFyID0gIWYtXHUwMDNlbWFjX2FkZHJfY250O1xuJiM0MztcdFx0dTY0IGhhc2g7XG4gXG4gXHRcdGlmIChjbGVhcikge1xuLVx0XHRcdGlmIChpID09IFVDKVxuJiM0MztcdFx0XHRpZiAoaSA9PSBVQykge1xuIFx0XHRcdFx0ZW5ldGNfY2xlYXJfbWFjX2ZsdF9lbnRyeShzaSwgcG9zKTtcbiYjNDM7XHRcdFx0XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7XG4mIzQzO1x0XHRcdH1cbiBcbi1cdFx0XHRlbmV0Y19jbGVhcl9tYWNfaHRfZmx0KHNpLCAwLCBpKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuQEAgLTEzNSw3ICYjNDM7ODgsNyBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zeW5jX21hY19maWx0ZXJzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXHRcdGlmIChlbSkge1xuIFx0XHRcdGludCBlcnI7XG4gXG4tXHRcdFx0ZW5ldGNfY2xlYXJfbWFjX2h0X2ZsdChzaSwgMCwgVUMpO1xuJiM0MztcdFx0XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuIFxuIFx0XHRcdGVyciA9IGVuZXRjX3NldF9tYWNfZmx0X2VudHJ5KHNpLCBwb3MsIGYtXHUwMDNlbWFjX2FkZHIsXG4gXHRcdFx0XHRcdFx0ICAgICAgQklUKDApKTtcbkBAIC0xNDcsMTEgJiM0MzsxMDAsMTUgQEAgc3RhdGljIHZvaWQgZW5ldGNfc3luY19tYWNfZmlsdGVycyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0XHRcdFx0IGVycik7XG4gXHRcdH1cbiBcbiYjNDM7XHRcdGJpdG1hcF90b19hcnI2NChcdTAwMjZoYXNoLCBmLVx1MDAzZW1hY19oYXNoX3RhYmxlLFxuJiM0MztcdFx0XHRcdEVORVRDX01BRERSX0hBU0hfVEJMX1NaKTtcbiBcdFx0LyogaGFzaCB0YWJsZSBmaWx0ZXIsIGNsZWFyIEVNIGZpbHRlciBmb3IgVUMgZW50cmllcyAqL1xuLVx0XHRpZiAoaSA9PSBVQylcbiYjNDM7XHRcdGlmIChpID09IFVDKSB7XG4gXHRcdFx0ZW5ldGNfY2xlYXJfbWFjX2ZsdF9lbnRyeShzaSwgcG9zKTtcbi1cbi1cdFx0ZW5ldGNfc2V0X21hY19odF9mbHQoc2ksIDAsIGksICpmLVx1MDAzZW1hY19oYXNoX3RhYmxlKTtcbiYjNDM7XHRcdFx0ZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCBoYXNoKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzaSwgMCwgaGFzaCk7XG4mIzQzO1x0XHR9XG4gXHR9XG4gfVxuIFxuQEAgLTE1OSwyMSAmIzQzOzExNiwxNyBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wZl9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihwcml2LVx1MDAzZXNpKTtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwcml2LVx1MDAzZXNpLVx1MDAzZWh3O1xuIFx0Ym9vbCB1cHJvbSA9IGZhbHNlLCBtcHJvbSA9IGZhbHNlO1xuIFx0c3RydWN0IGVuZXRjX21hY19maWx0ZXIgKmZpbHRlcjtcbiBcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XG4tXHR1MzIgcHNpcG1yID0gMDtcbiBcdGJvb2wgZW07XG4gXG4gXHRpZiAobmRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BST01JU0MpIHtcbiBcdFx0LyogZW5hYmxlIHByb21pc2MgbW9kZSBmb3IgU0kwIChQRikgKi9cbi1cdFx0cHNpcG1yID0gRU5FVENfUFNJUE1SX1NFVF9VUCgwKSB8IEVORVRDX1BTSVBNUl9TRVRfTVAoMCk7XG4gXHRcdHVwcm9tID0gdHJ1ZTtcbiBcdFx0bXByb20gPSB0cnVlO1xuIFx0fSBlbHNlIGlmIChuZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfQUxMTVVMVEkpIHtcbiBcdFx0LyogZW5hYmxlIG11bHRpIGNhc3QgcHJvbWlzYyBtb2RlIGZvciBTSTAgKFBGKSAqL1xuLVx0XHRwc2lwbXIgPSBFTkVUQ19QU0lQTVJfU0VUX01QKDApO1xuIFx0XHRtcHJvbSA9IHRydWU7XG4gXHR9XG4gXG5AQCAtMjExLDkgJiM0MzsxNjQsOCBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wZl9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdFx0LyogdXBkYXRlIFBGIGVudHJpZXMgKi9cbiBcdFx0ZW5ldGNfc3luY19tYWNfZmlsdGVycyhwZik7XG4gXG4tXHRwc2lwbXIgfD0gZW5ldGNfcG9ydF9yZChodywgRU5FVENfUFNJUE1SKSBcdTAwMjZcbi1cdFx0ICB+KEVORVRDX1BTSVBNUl9TRVRfVVAoMCkgfCBFTkVUQ19QU0lQTVJfU0VUX01QKDApKTtcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BTSVBNUiwgcHNpcG1yKTtcbiYjNDM7XHRlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyhwcml2LVx1MDAzZXNpLCAwLCB1cHJvbSk7XG4mIzQzO1x0ZW5ldGNfc2V0X3NpX21jX3Byb21pc2MocHJpdi1cdTAwM2VzaSwgMCwgbXByb20pO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbmV0Y19zZXRfbG9vcGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZW4pXG5AQCAtNDY5LDEyICYjNDM7NDIxLDExIEBAIHN0YXRpYyB2b2lkIGVuZXRjX2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXG4gXHQvKiBzcGxpdCB1cCBSRlMgZW50cmllcyAqL1xuIFx0ZW5ldGNfcG9ydF9hc3NpZ25fcmZzX2VudHJpZXMocGYtXHUwMDNlc2kpO1xuLVxuIFx0LyogZW5mb3JjZSBWTEFOIHByb21pc2MgbW9kZSBmb3IgYWxsIFNJcyAqL1xuLVx0cGYtXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwID0gRU5FVENfVkxBTl9QUk9NSVNDX01BUF9BTEw7XG4tXHRlbmV0Y19zZXRfdmxhbl9wcm9taXNjKGh3LCBwZi1cdTAwM2V2bGFuX3Byb21pc2Nfc2ltYXApO1xuJiM0MztcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBwZi1cdTAwM2V0b3RhbF92ZnMgJiM0MzsgMTsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRlbmV0Y19zZXRfc2lfdmxhbl9wcm9taXNjKHBmLVx1MDAzZXNpLCBpLCB0cnVlKTtcbiBcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BTSVBNUiwgMCk7XG4mIzQzO1x0ZW5ldGNfcG9ydF93cihodywgRU5FVENfUFNJUE1NUiwgMCk7XG4gXG4gXHQvKiBlbmFibGUgcG9ydCAqL1xuIFx0ZW5ldGNfcG9ydF93cihodywgRU5FVENfUE1SLCBFTkVUQ19QTVJfRU4pO1xuQEAgLTQ5NCwxMiAmIzQzOzQ0NSw5IEBAIHN0YXRpYyBpbnQgZW5ldGNfcGZfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0fVxuIFxuIFx0aWYgKGNoYW5nZWQgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUikge1xuLVx0XHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihwcml2LVx1MDAzZXNpKTtcbiYjNDM7XHRcdGJvb2wgcHJvbWlzYyA9ICEoZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUik7XG4gXG4tXHRcdGlmICghIShmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSKSlcbi1cdFx0XHRlbmV0Y19kaXNhYmxlX3NpX3ZsYW5fcHJvbWlzYyhwZiwgMCk7XG4tXHRcdGVsc2Vcbi1cdFx0XHRlbmV0Y19lbmFibGVfc2lfdmxhbl9wcm9taXNjKHBmLCAwKTtcbiYjNDM7XHRcdGVuZXRjX3NldF9zaV92bGFuX3Byb21pc2MocHJpdi1cdTAwM2VzaSwgMCwgcHJvbWlzYyk7XG4gXHR9XG4gXG4gXHRpZiAoY2hhbmdlZCBcdTAwMjYgTkVUSUZfRl9MT09QQkFDSylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5oXG5pbmRleCAyODViN2U1YzQ4ZmRjNy4uNTZkMjNhOGExMWEwNjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmhcbkBAIC0xNywxMiAmIzQzOzE3LDkgQEAgc3RydWN0IGVuZXRjX3ZmX3N0YXRlIHtcbiB9O1xuIFxuIHN0cnVjdCBlbmV0Y19wb3J0X2NhcHMge1xuLVx0dTMyIGhhbGZfZHVwbGV4OjE7XG4tXHRpbnQgbnVtX3ZzaTtcbiBcdGludCBudW1fbXNpeDtcbiBcdGludCBudW1fcnhfYmRyO1xuIFx0aW50IG51bV90eF9iZHI7XG4tXHRpbnQgbWFjX2ZpbHRlcl9udW07XG4gfTtcbiBcbiBzdHJ1Y3QgZW5ldGNfcGY7XG5AQCAtNDcsNyAmIzQzOzQ0LDYgQEAgc3RydWN0IGVuZXRjX3BmIHtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCBtc2dfdGFzaztcbiBcdGNoYXIgbXNnX2ludF9uYW1lW0VORVRDX0lOVF9OQU1FX01BWF07XG4gXG4tXHRjaGFyIHZsYW5fcHJvbWlzY19zaW1hcDsgLyogYml0bWFwIG9mIFNJcyBpbiBWTEFOIHByb21pc2MgbW9kZSAqL1xuIFx0REVDTEFSRV9CSVRNQVAodmxhbl9odF9maWx0ZXIsIEVORVRDX1ZMQU5fSFRfU0laRSk7XG4gXHRERUNMQVJFX0JJVE1BUChhY3RpdmVfdmxhbnMsIFZMQU5fTl9WSUQpO1xuIFxuQEAgLTYwLDggJiM0Mzs1Niw2IEBAIHN0cnVjdCBlbmV0Y19wZiB7XG4gXG4gXHRzdHJ1Y3QgZW5ldGNfcG9ydF9jYXBzIGNhcHM7XG4gXHRjb25zdCBzdHJ1Y3QgZW5ldGNfcGZfb3BzICpvcHM7XG4tXG4tXHRpbnQgbnVtX21mZTtcdC8qIG51bWJlciBvZiBtYWMgYWRkcmVzcyBmaWx0ZXIgdGFibGUgZW50cmllcyAqL1xuIH07XG4gXG4gI2RlZmluZSBwaHlsaW5rX3RvX2VuZXRjX3BmKGNvbmZpZykgXFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmNcbmluZGV4IDZlNWQyZjg2OTkxNTBiLi5kMzJhMTk1YTA0Yzk3ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jXG5AQCAtMSw1ICYjNDM7MSw1IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wJiM0MzsgT1IgQlNELTMtQ2xhdXNlKVxuLS8qIENvcHlyaWdodCAyMDI0IE5YUCAqL1xuJiM0MzsvKiBDb3B5cmlnaHQgMjAyNC0yMDI2IE5YUCAqL1xuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzbC9lbmV0Y19tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbkBAIC04Nyw2ICYjNDM7ODcsMTEyIEBAIGludCBlbmV0Y19zZXR1cF9tYWNfYWRkcmVzc2VzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3NldHVwX21hY19hZGRyZXNzZXMpO1xuIFxuJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV91Y19wcm9taXNjKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgYm9vbCBwcm9taXNjKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnNpLVx1MDAzZWh3O1xuJiM0MztcdGludCBwc2lwbW1yX29mZjtcbiYjNDM7XHR1MzIgdmFsO1xuJiM0MztcbiYjNDM7XHRpZiAoaXNfZW5ldGNfcmV2MShzaSkpXG4mIzQzO1x0XHRwc2lwbW1yX29mZiA9IEVORVRDX1BTSVBNTVI7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0cHNpcG1tcl9vZmYgPSBFTkVUQzRfUFNJUE1NUjtcbiYjNDM7XG4mIzQzO1x0dmFsID0gZW5ldGNfcG9ydF9yZChodywgcHNpcG1tcl9vZmYpO1xuJiM0MztcbiYjNDM7XHRpZiAocHJvbWlzYylcbiYjNDM7XHRcdHZhbCB8PSBQU0lQTU1SX1NJX01BQ19VUChzaV9pZCk7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0dmFsIFx1MDAyNj0gflBTSVBNTVJfU0lfTUFDX1VQKHNpX2lkKTtcbiYjNDM7XG4mIzQzO1x0ZW5ldGNfcG9ydF93cihodywgcHNpcG1tcl9vZmYsIHZhbCk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX3VjX3Byb21pc2MpO1xuJiM0MztcbiYjNDM7dm9pZCBlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZzaS1cdTAwM2VodztcbiYjNDM7XHRpbnQgcHNpcG1tcl9vZmY7XG4mIzQzO1x0dTMyIHZhbDtcbiYjNDM7XG4mIzQzO1x0aWYgKGlzX2VuZXRjX3JldjEoc2kpKVxuJiM0MztcdFx0cHNpcG1tcl9vZmYgPSBFTkVUQ19QU0lQTU1SO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHBzaXBtbXJfb2ZmID0gRU5FVEM0X1BTSVBNTVI7XG4mIzQzO1xuJiM0MztcdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIHBzaXBtbXJfb2ZmKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHByb21pc2MpXG4mIzQzO1x0XHR2YWwgfD0gUFNJUE1NUl9TSV9NQUNfTVAoc2lfaWQpO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHZhbCBcdTAwMjY9IH5QU0lQTU1SX1NJX01BQ19NUChzaV9pZCk7XG4mIzQzO1xuJiM0MztcdGVuZXRjX3BvcnRfd3IoaHcsIHBzaXBtbXJfb2ZmLCB2YWwpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3NldF9zaV9tY19wcm9taXNjKTtcbiYjNDM7XG4mIzQzO3ZvaWQgZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgdTY0IGhhc2gpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcHNpdW1oZnIwX29mZiwgcHNpdW1oZnIxX29mZjtcbiYjNDM7XHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2c2ktXHUwMDNlaHc7XG4mIzQzO1xuJiM0MztcdGlmIChpc19lbmV0Y19yZXYxKHNpKSkge1xuJiM0MztcdFx0Ym9vbCBlcnIgPSBzaS1cdTAwM2VlcnJhdGEgXHUwMDI2IEVORVRDX0VSUl9VQ01DU1dQO1xuJiM0MztcbiYjNDM7XHRcdHBzaXVtaGZyMF9vZmYgPSBFTkVUQ19QU0lVTUhGUjAoc2lfaWQsIGVycik7XG4mIzQzO1x0XHRwc2l1bWhmcjFfb2ZmID0gRU5FVENfUFNJVU1IRlIxKHNpX2lkKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cHNpdW1oZnIwX29mZiA9IEVORVRDNF9QU0lVTUhGUjAoc2lfaWQpO1xuJiM0MztcdFx0cHNpdW1oZnIxX29mZiA9IEVORVRDNF9QU0lVTUhGUjEoc2lfaWQpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0ZW5ldGNfcG9ydF93cihodywgcHNpdW1oZnIwX29mZiwgbG93ZXJfMzJfYml0cyhoYXNoKSk7XG4mIzQzO1x0ZW5ldGNfcG9ydF93cihodywgcHNpdW1oZnIxX29mZiwgdXBwZXJfMzJfYml0cyhoYXNoKSk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKTtcbiYjNDM7XG4mIzQzO3ZvaWQgZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgdTY0IGhhc2gpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcHNpbW1oZnIwX29mZiwgcHNpbW1oZnIxX29mZjtcbiYjNDM7XHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2c2ktXHUwMDNlaHc7XG4mIzQzO1xuJiM0MztcdGlmIChpc19lbmV0Y19yZXYxKHNpKSkge1xuJiM0MztcdFx0Ym9vbCBlcnIgPSBzaS1cdTAwM2VlcnJhdGEgXHUwMDI2IEVORVRDX0VSUl9VQ01DU1dQO1xuJiM0MztcbiYjNDM7XHRcdHBzaW1taGZyMF9vZmYgPSBFTkVUQ19QU0lNTUhGUjAoc2lfaWQsIGVycik7XG4mIzQzO1x0XHRwc2ltbWhmcjFfb2ZmID0gRU5FVENfUFNJTU1IRlIxKHNpX2lkKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cHNpbW1oZnIwX29mZiA9IEVORVRDNF9QU0lNTUhGUjAoc2lfaWQpO1xuJiM0MztcdFx0cHNpbW1oZnIxX29mZiA9IEVORVRDNF9QU0lNTUhGUjEoc2lfaWQpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0ZW5ldGNfcG9ydF93cihodywgcHNpbW1oZnIwX29mZiwgbG93ZXJfMzJfYml0cyhoYXNoKSk7XG4mIzQzO1x0ZW5ldGNfcG9ydF93cihodywgcHNpbW1oZnIxX29mZiwgdXBwZXJfMzJfYml0cyhoYXNoKSk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKTtcbiYjNDM7XG4mIzQzO3ZvaWQgZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZzaS1cdTAwM2VodztcbiYjNDM7XHRpbnQgcHNpcHZtcl9vZmY7XG4mIzQzO1x0dTMyIHZhbDtcbiYjNDM7XG4mIzQzO1x0aWYgKGlzX2VuZXRjX3JldjEoc2kpKVxuJiM0MztcdFx0cHNpcHZtcl9vZmYgPSBFTkVUQ19QU0lQVk1SO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHBzaXB2bXJfb2ZmID0gRU5FVEM0X1BTSVBWTVI7XG4mIzQzO1xuJiM0MztcdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIHBzaXB2bXJfb2ZmKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHByb21pc2MpXG4mIzQzO1x0XHR2YWwgfD0gUFNJUFZNUl9TSV9WTEFOX1Aoc2lfaWQpO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHZhbCBcdTAwMjY9IH5QU0lQVk1SX1NJX1ZMQU5fUChzaV9pZCk7XG4mIzQzO1xuJiM0MztcdGVuZXRjX3BvcnRfd3IoaHcsIHBzaXB2bXJfb2ZmLCB2YWwpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3NldF9zaV92bGFuX3Byb21pc2MpO1xuJiM0MztcbiB2b2lkIGVuZXRjX3BmX25ldGRldl9zZXR1cChzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgKm5kZXZfb3BzKVxuIHtcbkBAIC0yNzUsNyAmIzQzOzM4MSw4IEBAIHN0YXRpYyBib29sIGVuZXRjX3BvcnRfaGFzX3BjcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0cmV0dXJuIChwZi1cdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSB8fFxuIFx0XHRwZi1cdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggfHxcbiBcdFx0cGYtXHUwMDNlaWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYIHx8XG4tXHRcdHBmLVx1MDAzZWlmX21vZGUgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUkpO1xuJiM0MztcdFx0cGYtXHUwMDNlaWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSSB8fFxuJiM0MztcdFx0cGYtXHUwMDNlaWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpO1xuIH1cbiBcbiBpbnQgZW5ldGNfbWRpb2J1c19jcmVhdGUoc3RydWN0IGVuZXRjX3BmICpwZiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuQEAgLTMxNiwyNSAmIzQzOzQyMyw0MiBAQCBpbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuIHtcbiBcdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBlbmV0Y19zaV9wcml2KHByaXYtXHUwMDNlc2kpO1xuIFx0c3RydWN0IHBoeWxpbmsgKnBoeWxpbms7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBtYWNfY2FwcztcbiBcdGludCBlcnI7XG4gXG4gXHRwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5kZXYgPSBcdTAwMjZwcml2LVx1MDAzZW5kZXYtXHUwMDNlZGV2O1xuIFx0cGYtXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xuLVx0cGYtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRSB8XG4tXHRcdE1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMCB8IE1BQ18yNTAwRkQ7XG4gXG4gXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxuIFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbi1cdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfU0dNSUksXG4tXHRcdCAgcGYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuLVx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgsXG4tXHRcdCAgcGYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuLVx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsXG4tXHRcdCAgcGYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuLVx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJLFxuLVx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbi1cdHBoeV9pbnRlcmZhY2Vfc2V0X3JnbWlpKHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiBcbiYjNDM7XHRtYWNfY2FwcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTtcbiYjNDM7XHRpZiAoIWVuZXRjX2lzX3BzZXVkb19tYWMocHJpdi1cdTAwM2VzaSkpIHtcbiYjNDM7XHRcdG1hY19jYXBzIHw9IE1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDtcbiYjNDM7XG4mIzQzO1x0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLFxuJiM0MztcdFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiYjNDM7XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYLFxuJiM0MztcdFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiYjNDM7XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLFxuJiM0MztcdFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiYjNDM7XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSSxcbiYjNDM7XHRcdFx0ICBwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKCFpc19lbmV0Y19yZXYxKHByaXYtXHUwMDNlc2kpKSB7XG4mIzQzO1x0XHRcdG1hY19jYXBzIHw9IE1BQ181MDAwRkQgfCBNQUNfMTAwMDBGRDtcbiYjNDM7XHRcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUixcbiYjNDM7XHRcdFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRwaHlfaW50ZXJmYWNlX3NldF9yZ21paShwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdG1hY19jYXBzIHw9IE1BQ18xMEZEIHwgTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQgfFxuJiM0MztcdFx0XHQgICAgTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEIHwgTUFDXzIwMDAwRkQgfFxuJiM0MztcdFx0XHQgICAgTUFDXzI1MDAwRkQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gbWFjX2NhcHM7XG4gXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cGYtXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXG4gXHRcdFx0XHQgcGYtXHUwMDNlaWZfbW9kZSwgb3BzKTtcbiBcdGlmIChJU19FUlIocGh5bGluaykpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmhcbmluZGV4IDU3ZDJlMGViZDJiMGJiLi44MjQzY2UwZGU1N2Y2NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oXG5AQCAtMTcsNiAmIzQzOzE3LDExIEBAIHZvaWQgZW5ldGNfc2V0X2RlZmF1bHRfcnNzX2tleShzdHJ1Y3QgZW5ldGNfcGYgKnBmKTtcbiBpbnQgZW5ldGNfdmxhbl9yeF9hZGRfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBfX2JlMTYgcHJvdCwgdTE2IHZpZCk7XG4gaW50IGVuZXRjX3ZsYW5fcnhfZGVsX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgX19iZTE2IHByb3QsIHUxNiB2aWQpO1xuIGludCBlbmV0Y19pbml0X3NyaW92X3Jlc291cmNlcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKTtcbiYjNDM7dm9pZCBlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYyk7XG4mIzQzO3ZvaWQgZW5ldGNfc2V0X3NpX21jX3Byb21pc2Moc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCBib29sIHByb21pc2MpO1xuJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIHU2NCBoYXNoKTtcbiYjNDM7dm9pZCBlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCB1NjQgaGFzaCk7XG4mIzQzO3ZvaWQgZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYyk7XG4gXG4gc3RhdGljIGlubGluZSB1MTYgZW5ldGNfZ2V0X2lwX3JldmlzaW9uKHN0cnVjdCBlbmV0Y19odyAqaHcpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19xb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19xb3MuY1xuaW5kZXggN2IxN2JjYTI0ZjI2MGYuLjJhYTBmY2FhZmNkMjNjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3Fvcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcW9zLmNcbkBAIC0xMTM1LDcgJiM0MzsxMTM1LDYgQEAgc3RhdGljIGludCBlbmV0Y19wc2ZwX3BhcnNlX2Nsc2Zsb3dlcihzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxuIFx0c3RydWN0IGZsb3dfYWN0aW9uX2VudHJ5ICplbnRyeTtcbiBcdHN0cnVjdCBhY3Rpb25fZ2F0ZV9lbnRyeSAqZTtcbiBcdHU4IHNmaV9vdmVyd3JpdGUgPSAwO1xuLVx0aW50IGVudHJpZXNfc2l6ZTtcbiBcdGludCBpLCBlcnI7XG4gXG4gXHRpZiAoZi1cdTAwM2Vjb21tb24uY2hhaW5faW5kZXggXHUwMDNlPSBwcml2LVx1MDAzZXBzZnBfY2FwLm1heF9zdHJlYW1pZCkge1xuQEAgLTEyNDIsOCAmIzQzOzEyNDEsNyBAQCBzdGF0aWMgaW50IGVuZXRjX3BzZnBfcGFyc2VfY2xzZmxvd2VyKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsXG4gXHRcdGdvdG8gZnJlZV9maWx0ZXI7XG4gXHR9XG4gXG4tXHRlbnRyaWVzX3NpemUgPSBzdHJ1Y3Rfc2l6ZShzZ2ksIGVudHJpZXMsIGVudHJ5Zy1cdTAwM2VnYXRlLm51bV9lbnRyaWVzKTtcbi1cdHNnaSA9IGt6YWxsb2MoZW50cmllc19zaXplLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRzZ2kgPSBremFsbG9jX2ZsZXgoKnNnaSwgZW50cmllcywgZW50cnlnLVx1MDAzZWdhdGUubnVtX2VudHJpZXMpO1xuIFx0aWYgKCFzZ2kpIHtcbiBcdFx0ZXJyID0gLUVOT01FTTtcbiBcdFx0Z290byBmcmVlX2ZpbHRlcjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jXG5pbmRleCA5Y2RiMGE0ZDZiYWZiNy4uN2RjYjRhMDI0NmY1MjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmNcbkBAIC0zMTcsNyAmIzQzOzMxNywxNCBAQCBzdGF0aWMgaW50IGVuZXRjX3ZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFxuIFx0ZW5ldGNfZ2V0X3NpX2NhcHMoc2kpO1xuIFxuLVx0bmRldiA9IGFsbG9jX2V0aGVyZGV2X21xKHNpemVvZigqcHJpdiksIEVORVRDX01BWF9OVU1fVFhRUyk7XG4mIzQzO1x0LyogQ3VycmVudGx5LCB0aGUgc3VwcG9ydGVkIFNvQ3MgaGF2ZSBhIG1heCBvZiA2IENQVXMgYW5kIHRoZSBWRnNcbiYjNDM7XHQgKiBoYXZlIGxlc3MgdGhhbiA2IFJYL1RYIHJpbmdzLiBTbyBubyBpc3N1ZXMgZm9yIHRoZXNlIHN1cHBvcnRlZFxuJiM0MztcdCAqIFNvQ3MsIGJ1dCBmb3IgZnV0dXJlIFNvQ3Mgd2hpY2ggaGF2ZSBtb3JlIENQVXMgb3IgbW9yZSBUWC9SWFxuJiM0MztcdCAqIHJpbmdzLCBhbGwgdGhlIHJlbGF0ZWQgbG9naWMgbmVlZHMgdG8gYmUgaW1wcm92ZWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0bmRldiA9IGFsbG9jX2V0aGVyZGV2X21xcyhzaXplb2YoKnByaXYpLFxuJiM0MztcdFx0XHRcdCAgbWluKHNpLVx1MDAzZW51bV90eF9yaW5ncywgRU5FVENfTUFYX05VTV9UWFFTKSxcbiYjNDM7XHRcdFx0XHQgIG1pbihzaS1cdTAwM2VudW1fcnhfcmluZ3MsIEVORVRDX01BWF9OVU1fVFhRUykpO1xuIFx0aWYgKCFuZGV2KSB7XG4gXHRcdGVyciA9IC1FTk9NRU07XG4gXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O25ldGRldiBjcmVhdGlvbiBmYWlsZWRcXG5cJiMzNDspO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZnNsL250bXAuaCBiL2luY2x1ZGUvbGludXgvZnNsL250bXAuaFxuaW5kZXggZDNiNmM0NzZiOTFhMmQuLjc2NGVmMjg5MjYwODVlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9mc2wvbnRtcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2ZzbC9udG1wLmhcbkBAIC03NSw4ICYjNDM7NzUsMTAgQEAgc3RydWN0IG50bXBfdXNlciB7XG4gXHQvKiBOVE1QIHRhYmxlIGJpdG1hcHMgZm9yIHJlc291cmNlIG1hbmFnZW1lbnQgKi9cbiBcdHUzMiBldHRfYml0bWFwX3NpemU7XG4gXHR1MzIgZWN0X2JpdG1hcF9zaXplO1xuJiM0MztcdHUxNiBtYWZ0X251bV9lbnRyaWVzO1xuIFx0dW5zaWduZWQgbG9uZyAqZXR0X2dpZF9iaXRtYXA7IC8qIG9ubHkgdmFsaWQgZm9yIHN3aXRjaCAqL1xuIFx0dW5zaWduZWQgbG9uZyAqZWN0X2dpZF9iaXRtYXA7IC8qIG9ubHkgdmFsaWQgZm9yIHN3aXRjaCAqL1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgKm1hZnRfZWlkX2JpdG1hcDsgLyogb25seSB2YWxpZCBmb3IgRU5FVEMgKi9cbiB9O1xuIFxuIHN0cnVjdCBtYWZ0X2VudHJ5X2RhdGEge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBoYXJkd2FyZS1zcGVjaWZpYyB0byBOWFAgU29Dcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFiNTdlNjg3ZjMzZTA3ODM3OWE4OWUyYjJmZDVjYTNiNDQ3MWUxMjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCA3IDE2OjA2OjUyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaAppbmRleCAwNGE1ZGQ1ZWE2Yzc0Yy4uODgzOWNmYjQ5YmNmZTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oCkBAIC0xLDUgJiM0MzsxLDUgQEAKIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMCYjNDM7IE9SIEJTRC0zLUNsYXVzZSkgKi8KLS8qIENvcHlyaWdodCAyMDE3LTIwMTkgTlhQICovCiYjNDM7LyogQ29weXJpZ2h0IDIwMTctMjAxOSwgMjAyNS0yMDI2IE5YUCAqLwogCiAjaW5jbHVkZSAmbHQ7bGludXgvdGltZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wY2kuaCZndDsKQEAgLTMyNCw4ICYjNDM7MzI0LDYgQEAgc3RydWN0IGVuZXRjX3NpIHsKIAljb25zdCBzdHJ1Y3QgZW5ldGNfZHJ2ZGF0YSAqZHJ2ZGF0YTsKIAljb25zdCBzdHJ1Y3QgZW5ldGNfc2lfb3BzICpvcHM7CiAKLQlzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd29ya3F1ZXVlOwotCXN0cnVjdCB3b3JrX3N0cnVjdCByeF9tb2RlX3Rhc2s7CiAJc3RydWN0IGRlbnRyeSAqZGVidWdmc19yb290OwogCXN0cnVjdCBlbmV0Y19tc2dfc3diZCBtc2c7IC8qIE9ubHkgdmFsaWQgZm9yIFZTSSAqLwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9kZWJ1Z2ZzLmMKaW5kZXggMWIxNTkxZGNlNzNkNGIuLjUwMjkwMzhiZjk5ZmFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2RlYnVnZnMuYwpAQCAtMjgsMTUgJiM0MzsyOCwxNCBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zaG93X3NpX21hY19oYXNoX2ZpbHRlcihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBpKQogCiBzdGF0aWMgaW50IGVuZXRjX21hY19maWx0ZXJfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpCiB7Ci0Jc3RydWN0IGVuZXRjX3NpICpzaSA9IHMtJmd0O3ByaXZhdGU7Ci0Jc3RydWN0IGVuZXRjX2h3ICpodyA9ICZhbXA7c2ktJmd0O2h3OwomIzQzOwlzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihzLSZndDtwcml2YXRlKTsKJiM0MzsJc3RydWN0IGVuZXRjX2h3ICpodyA9ICZhbXA7cGYtJmd0O3NpLSZndDtodzsKJiM0MzsJaW50IG51bV9zaSA9IHBmLSZndDt0b3RhbF92ZnMgJiM0MzsgMTsKIAlzdHJ1Y3QgbWFmdF9lbnRyeV9kYXRhIG1hZnQ7Ci0Jc3RydWN0IGVuZXRjX3BmICpwZjsKLQlpbnQgaSwgZXJyLCBudW1fc2k7Ci0JdTMyIHZhbDsKLQotCXBmID0gZW5ldGNfc2lfcHJpdihzaSk7Ci0JbnVtX3NpID0gcGYtJmd0O2NhcHMubnVtX3ZzaSAmIzQzOyAxOwomIzQzOwlzdHJ1Y3QgbnRtcF91c2VyICp1c2VyOwomIzQzOwl1MzIgdmFsLCBlbnRyeV9pZDsKJiM0MzsJaW50IGVyciA9IDA7CiYjNDM7CWludCBpOwogCiAJdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSVBNTVIpOwogCWZvciAoaSA9IDA7IGkgJmx0OyBudW1fc2k7IGkmIzQzOyYjNDM7KSB7CkBAIC01MCwzMSAmIzQzOzQ5LDM4IEBAIHN0YXRpYyBpbnQgZW5ldGNfbWFjX2ZpbHRlcl9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSkKIAlmb3IgKGkgPSAwOyBpICZsdDsgbnVtX3NpOyBpJiM0MzsmIzQzOykKIAkJZW5ldGNfc2hvd19zaV9tYWNfaGFzaF9maWx0ZXIocywgaSk7CiAKLQlpZiAoIXBmLSZndDtudW1fbWZlKQotCQlyZXR1cm4gMDsKJiM0MzsJdXNlciA9ICZhbXA7cGYtJmd0O3NpLSZndDtudG1wX3VzZXI7CiYjNDM7CXJ0bmxfbG9jaygpOwomIzQzOwomIzQzOwlpZiAoYml0bWFwX2VtcHR5KHVzZXItJmd0O21hZnRfZWlkX2JpdG1hcCwgdXNlci0mZ3Q7bWFmdF9udW1fZW50cmllcykpCiYjNDM7CQlnb3RvIHVubG9ja19ydG5sOwogCiAJLyogTUFDIGFkZHJlc3MgZmlsdGVyIHRhYmxlICovCiAJc2VxX3B1dHMocywgJiMzNDtNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGVcbiYjMzQ7KTsKLQlmb3IgKGkgPSAwOyBpICZsdDsgcGYtJmd0O251bV9tZmU7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CWZvcl9lYWNoX3NldF9iaXQoZW50cnlfaWQsIHVzZXItJmd0O21hZnRfZWlkX2JpdG1hcCwKJiM0MzsJCQkgdXNlci0mZ3Q7bWFmdF9udW1fZW50cmllcykgewogCQltZW1zZXQoJmFtcDttYWZ0LCAwLCBzaXplb2YobWFmdCkpOwotCQllcnIgPSBudG1wX21hZnRfcXVlcnlfZW50cnkoJmFtcDtzaS0mZ3Q7bnRtcF91c2VyLCBpLCAmYW1wO21hZnQpOwomIzQzOwkJZXJyID0gbnRtcF9tYWZ0X3F1ZXJ5X2VudHJ5KHVzZXIsIGVudHJ5X2lkLCAmYW1wO21hZnQpOwogCQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKJiM0MzsJCQlnb3RvIHVubG9ja19ydG5sOwogCi0JCXNlcV9wcmludGYocywgJiMzNDtFbnRyeSAlZCwgTUFDOiAlcE0sIFNJIGJpdG1hcDogMHglMDR4XG4mIzM0OywgaSwKLQkJCSAgIG1hZnQua2V5ZS5tYWNfYWRkciwgbGUxNl90b19jcHUobWFmdC5jZmdlLnNpX2JpdG1hcCkpOwomIzQzOwkJc2VxX3ByaW50ZihzLCAmIzM0O0VudHJ5ICVkLCBNQUM6ICVwTSwgU0kgYml0bWFwOiAweCUwNHhcbiYjMzQ7LAomIzQzOwkJCSAgIGVudHJ5X2lkLCBtYWZ0LmtleWUubWFjX2FkZHIsCiYjNDM7CQkJICAgbGUxNl90b19jcHUobWFmdC5jZmdlLnNpX2JpdG1hcCkpOwogCX0KIAotCXJldHVybiAwOwomIzQzO3VubG9ja19ydG5sOgomIzQzOwlydG5sX3VubG9jaygpOwomIzQzOwomIzQzOwlyZXR1cm4gZXJyOwogfQogREVGSU5FX1NIT1dfQVRUUklCVVRFKGVuZXRjX21hY19maWx0ZXIpOwogCiB2b2lkIGVuZXRjX2NyZWF0ZV9kZWJ1Z2ZzKHN0cnVjdCBlbmV0Y19zaSAqc2kpCiB7Ci0Jc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBzaS0mZ3Q7bmRldjsKIAlzdHJ1Y3QgZGVudHJ5ICpyb290OwogCi0Jcm9vdCA9IGRlYnVnZnNfY3JlYXRlX2RpcihuZXRkZXZfbmFtZShuZGV2KSwgTlVMTCk7CiYjNDM7CXJvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIocGNpX25hbWUoc2ktJmd0O3BkZXYpLCBOVUxMKTsKIAlpZiAoSVNfRVJSKHJvb3QpKQogCQlyZXR1cm47CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaAppbmRleCBmMTg0Mzc1NTZhMGVlMi4uMDkwMjVlN2EyYTNhZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2h3LmgKQEAgLTY5LDggJiM0Mzs2OSw2IEBACiAKIC8qIFBvcnQgU3RhdGlvbiBpbnRlcmZhY2UgcHJvbWlzY3VvdXMgTUFDIG1vZGUgcmVnaXN0ZXIgKi8KICNkZWZpbmUgRU5FVEM0X1BTSVBNTVIJCQkweDIwMAotI2RlZmluZSAgUFNJUE1NUl9TSV9NQUNfVVAoYSkJCUJJVChhKSAvKiBhID0gU0kgaW5kZXggKi8KLSNkZWZpbmUgIFBTSVBNTVJfU0lfTUFDX01QKGEpCQlCSVQoKGEpICYjNDM7IDE2KQogCiAvKiBQb3J0IFN0YXRpb24gaW50ZXJmYWNlIHByb21pc2N1b3VzIFZMQU4gbW9kZSByZWdpc3RlciAqLwogI2RlZmluZSBFTkVUQzRfUFNJUFZNUgkJCTB4MjA0CkBAIC0xMzcsNyAmIzQzOzEzNSw2IEBACiAjZGVmaW5lIEVORVRDNF9QU0lWSEZSMShhKQkJKChhKSAqIDB4ODAgJiM0MzsgMHgyMDY0KQogCiAjZGVmaW5lIEVORVRDNF9QTUNBUFIJCQkweDQwMDQKLSNkZWZpbmUgIFBNQ0FQUl9IRAkJCUJJVCg4KQogI2RlZmluZSAgUE1DQVBSX0ZQCQkJR0VOTUFTSygxMCwgOSkKIAogLyogUG9ydCBjYXBhYmlsaXR5IHJlZ2lzdGVyICovCkBAIC0xNTAsNyAmIzQzOzE0Nyw3IEBACiAjZGVmaW5lICBQQ1JfTDJET1NFCQkJQklUKDQpCiAjZGVmaW5lICBQQ1JfVElNRVJfQ1MJCQlCSVQoOCkKICNkZWZpbmUgIFBDUl9QU1BFRUQJCQlHRU5NQVNLKDI5LCAxNikKLSNkZWZpbmUgIFBDUl9QU1BFRURfVkFMKHNwZWVkKQkJKCgoc3BlZWQpIC8gMTAgLSAxKSAmbHQ7Jmx0OyAxNikKJiM0MzsjZGVmaW5lICBQQ1JfUFNQRUVEX1ZBTChzKQkJRklFTERfUFJFUChQQ1JfUFNQRUVELCAoKHMpIC8gMTAgLSAxKSkKIAogLyogUG9ydCBNQUMgYWRkcmVzcyByZWdpc3RlciAwLzEgKi8KICNkZWZpbmUgRU5FVEM0X1BNQVIwCQkJMHg0MDIwCkBAIC0yMDAsNyAmIzQzOzE5Nyw2IEBACiAjZGVmaW5lICBQTV9DTURfQ0ZHX0NOVF9GUk1fRU4JCUJJVCgxMykKICNkZWZpbmUgIFBNX0NNRF9DRkdfVFhQCQkJQklUKDE1KQogI2RlZmluZSAgUE1fQ01EX0NGR19TRU5EX0lETEUJCUJJVCgxNikKLSNkZWZpbmUgIFBNX0NNRF9DRkdfSERfRkNFTgkJQklUKDE4KQogI2RlZmluZSAgUE1fQ01EX0NGR19TRkQJCQlCSVQoMjEpCiAjZGVmaW5lICBQTV9DTURfQ0ZHX1RYX0ZMVVNICQlCSVQoMjIpCiAjZGVmaW5lICBQTV9DTURfQ0ZHX1RYX0xPV1BfRU4JCUJJVCgyMykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYwppbmRleCA0MzdhMTViYmI0N2JhOC4uZmNmYmFiYjI5ZDIyZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMKQEAgLTIzLDE4ICYjNDM7MjMsMTEgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2dldF9wb3J0X2NhcHMoc3RydWN0IGVuZXRjX3BmICpwZikKIAl1MzIgdmFsOwogCiAJdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X0VDQVBSMSk7Ci0JcGYtJmd0O2NhcHMubnVtX3ZzaSA9ICh2YWwgJmFtcDsgRUNBUFIxX05VTV9WU0kpICZndDsmZ3Q7IDI0OwogCXBmLSZndDtjYXBzLm51bV9tc2l4ID0gKCh2YWwgJmFtcDsgRUNBUFIxX05VTV9NU0lYKSAmZ3Q7Jmd0OyAxMikgJiM0MzsgMTsKIAogCXZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9FQ0FQUjIpOwogCXBmLSZndDtjYXBzLm51bV9yeF9iZHIgPSAodmFsICZhbXA7IEVDQVBSMl9OVU1fUlhfQkRSKSAmZ3Q7Jmd0OyAxNjsKIAlwZi0mZ3Q7Y2Fwcy5udW1fdHhfYmRyID0gdmFsICZhbXA7IEVDQVBSMl9OVU1fVFhfQkRSOwotCi0JdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BNQ0FQUik7Ci0JcGYtJmd0O2NhcHMuaGFsZl9kdXBsZXggPSAodmFsICZhbXA7IFBNQ0FQUl9IRCkgPyAxIDogMDsKLQotCXZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lNQUZDQVBSKTsKLQlwZi0mZ3Q7Y2Fwcy5tYWNfZmlsdGVyX251bSA9IHZhbCAmYW1wOyBQU0lNQUZDQVBSX05VTV9NQUNfQUZURTsKIH0KIAogc3RhdGljIHZvaWQgZW5ldGM0X2dldF9wc2lfaHdfZmVhdHVyZXMoc3RydWN0IGVuZXRjX3NpICpzaSkKQEAgLTc1LDM4ICYjNDM7NjgsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGZfZ2V0X3NpX3ByaW1hcnlfbWFjKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSwKIAlwdXRfdW5hbGlnbmVkX2xlMTYobG93ZXIsIGFkZHIgJiM0MzsgNCk7CiB9CiAKLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfc2lfbWFjX3Byb21pc2Moc3RydWN0IGVuZXRjX2h3ICpodywgaW50IHNpLAotCQkJCQkgYm9vbCB1Y19wcm9taXNjLCBib29sIG1jX3Byb21pc2MpCi17Ci0JdTMyIHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lQTU1SKTsKLQotCWlmICh1Y19wcm9taXNjKQotCQl2YWwgfD0gUFNJUE1NUl9TSV9NQUNfVVAoc2kpOwotCWVsc2UKLQkJdmFsICZhbXA7PSB+UFNJUE1NUl9TSV9NQUNfVVAoc2kpOwotCi0JaWYgKG1jX3Byb21pc2MpCi0JCXZhbCB8PSBQU0lQTU1SX1NJX01BQ19NUChzaSk7Ci0JZWxzZQotCQl2YWwgJmFtcDs9IH5QU0lQTU1SX1NJX01BQ19NUChzaSk7Ci0KLQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJUE1NUiwgdmFsKTsKLX0KLQotc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksCi0JCQkJCSAgICB1NjQgaGFzaCkKLXsKLQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJVU1IRlIwKHNpKSwgbG93ZXJfMzJfYml0cyhoYXNoKSk7Ci0JZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSVVNSEZSMShzaSksIHVwcGVyXzMyX2JpdHMoaGFzaCkpOwotfQotCi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSwKLQkJCQkJICAgIHU2NCBoYXNoKQotewotCWVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lNTUhGUjAoc2kpLCBsb3dlcl8zMl9iaXRzKGhhc2gpKTsKLQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJTU1IRlIxKHNpKSwgdXBwZXJfMzJfYml0cyhoYXNoKSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbG9vcGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZW4pCiB7CiAJc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwpAQCAtMTI0LDM0ICYjNDM7ODUsNDcgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9sb29wYmFjayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgYm9vbCBlbikKIAogc3RhdGljIHZvaWQgZW5ldGM0X3BmX2NsZWFyX21hZnRfZW50cmllcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKQogewotCWludCBpOwomIzQzOwlzdHJ1Y3QgbnRtcF91c2VyICp1c2VyID0gJmFtcDtwZi0mZ3Q7c2ktJmd0O250bXBfdXNlcjsKJiM0MzsJdTMyIGVudHJ5X2lkOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IHBmLSZndDtudW1fbWZlOyBpJiM0MzsmIzQzOykKLQkJbnRtcF9tYWZ0X2RlbGV0ZV9lbnRyeSgmYW1wO3BmLSZndDtzaS0mZ3Q7bnRtcF91c2VyLCBpKTsKLQotCXBmLSZndDtudW1fbWZlID0gMDsKJiM0MzsJZm9yX2VhY2hfc2V0X2JpdChlbnRyeV9pZCwgdXNlci0mZ3Q7bWFmdF9laWRfYml0bWFwLAomIzQzOwkJCSB1c2VyLSZndDttYWZ0X251bV9lbnRyaWVzKSB7CiYjNDM7CQlpZiAoIW50bXBfbWFmdF9kZWxldGVfZW50cnkodXNlciwgZW50cnlfaWQpKQomIzQzOwkJCW50bXBfY2xlYXJfZWlkX2JpdG1hcCh1c2VyLSZndDttYWZ0X2VpZF9iaXRtYXAsIGVudHJ5X2lkKTsKJiM0MzsJfQogfQogCiBzdGF0aWMgaW50IGVuZXRjNF9wZl9hZGRfbWFmdF9lbnRyaWVzKHN0cnVjdCBlbmV0Y19wZiAqcGYsCi0JCQkJICAgICAgc3RydWN0IGVuZXRjX21hY19hZGRyICptYWMsCi0JCQkJICAgICAgaW50IG1hY19jbnQpCiYjNDM7CQkJCSAgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YykKIHsKJiM0MzsJc3RydWN0IG50bXBfdXNlciAqdXNlciA9ICZhbXA7cGYtJmd0O3NpLSZndDtudG1wX3VzZXI7CiYjNDM7CWludCBtYWNfY250ID0gbmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1Yyk7CiAJc3RydWN0IG1hZnRfZW50cnlfZGF0YSBtYWZ0ID0ge307CiYjNDM7CXN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7CiYjNDM7CXUzMiBhdmFpbGFibGVfZW50cmllczsKIAl1MTYgc2lfYml0ID0gQklUKDApOwotCWludCBpLCBlcnI7CiYjNDM7CXUzMiBlbnRyeV9pZDsKJiM0MzsJaW50IGVycjsKJiM0MzsKJiM0MzsJYXZhaWxhYmxlX2VudHJpZXMgPSB1c2VyLSZndDttYWZ0X251bV9lbnRyaWVzIC0KJiM0MzsJCQkgICAgYml0bWFwX3dlaWdodCh1c2VyLSZndDttYWZ0X2VpZF9iaXRtYXAsCiYjNDM7CQkJCQkgIHVzZXItJmd0O21hZnRfbnVtX2VudHJpZXMpOwomIzQzOwomIzQzOwlpZiAobWFjX2NudCAmZ3Q7IGF2YWlsYWJsZV9lbnRyaWVzKQomIzQzOwkJcmV0dXJuIC1FTk9TUEM7CiAKIAltYWZ0LmNmZ2Uuc2lfYml0bWFwID0gY3B1X3RvX2xlMTYoc2lfYml0KTsKLQlmb3IgKGkgPSAwOyBpICZsdDsgbWFjX2NudDsgaSYjNDM7JiM0MzspIHsKLQkJZXRoZXJfYWRkcl9jb3B5KG1hZnQua2V5ZS5tYWNfYWRkciwgbWFjW2ldLmFkZHIpOwotCQllcnIgPSBudG1wX21hZnRfYWRkX2VudHJ5KCZhbXA7cGYtJmd0O3NpLSZndDtudG1wX3VzZXIsIGksICZhbXA7bWFmdCk7CiYjNDM7CW5ldGRldl9od19hZGRyX2xpc3RfZm9yX2VhY2goaGEsIHVjKSB7CiYjNDM7CQllbnRyeV9pZCA9IG50bXBfbG9va3VwX2ZyZWVfZWlkKHVzZXItJmd0O21hZnRfZWlkX2JpdG1hcCwKJiM0MzsJCQkJCQl1c2VyLSZndDttYWZ0X251bV9lbnRyaWVzKTsKJiM0MzsJCWV0aGVyX2FkZHJfY29weShtYWZ0LmtleWUubWFjX2FkZHIsIGhhLSZndDthZGRyKTsKJiM0MzsJCWVyciA9IG50bXBfbWFmdF9hZGRfZW50cnkodXNlciwgZW50cnlfaWQsICZhbXA7bWFmdCk7CiAJCWlmICh1bmxpa2VseShlcnIpKSB7Ci0JCQlwZi0mZ3Q7bnVtX21mZSA9IGk7CiYjNDM7CQkJbnRtcF9jbGVhcl9laWRfYml0bWFwKHVzZXItJmd0O21hZnRfZWlkX2JpdG1hcCwgZW50cnlfaWQpOwogCQkJZ290byBjbGVhcl9tYWZ0X2VudHJpZXM7CiAJCX0KIAl9CiAKLQlwZi0mZ3Q7bnVtX21mZSA9IG1hY19jbnQ7Ci0KIAlyZXR1cm4gMDsKIAogY2xlYXJfbWFmdF9lbnRyaWVzOgpAQCAtMTYwLDk3ICYjNDM7MTM0LDcwIEBAIHN0YXRpYyBpbnQgZW5ldGM0X3BmX2FkZF9tYWZ0X2VudHJpZXMoc3RydWN0IGVuZXRjX3BmICpwZiwKIAlyZXR1cm4gIGVycjsKIH0KIAotc3RhdGljIGludCBlbmV0YzRfcGZfc2V0X3VjX2V4YWN0X2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmKQomIzQzO3N0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfdWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwKJiM0MzsJCQkJCSBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMpCiB7Ci0JaW50IG1heF9udW1fbWZlID0gcGYtJmd0O2NhcHMubWFjX2ZpbHRlcl9udW07Ci0Jc3RydWN0IGVuZXRjX21hY19maWx0ZXIgbWFjX2ZpbHRlciA9IHt9OwotCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGYtJmd0O3NpLSZndDtuZGV2OwotCXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3BmLSZndDtzaS0mZ3Q7aHc7Ci0Jc3RydWN0IGVuZXRjX21hY19hZGRyICptYWNfdGJsOwomIzQzOwlzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqbWFjX2ZpbHRlciA9ICZhbXA7cGYtJmd0O21hY19maWx0ZXJbVUNdOwogCXN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7Ci0JaW50IGkgPSAwLCBlcnI7Ci0JaW50IG1hY19jbnQ7CiYjNDM7CXU2NCBoYXNoOwogCi0JbmV0aWZfYWRkcl9sb2NrX2JoKG5kZXYpOwomIzQzOwllbmV0Y19yZXNldF9tYWNfYWRkcl9maWx0ZXIobWFjX2ZpbHRlcik7CiYjNDM7CW5ldGRldl9od19hZGRyX2xpc3RfZm9yX2VhY2goaGEsIHVjKQomIzQzOwkJZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihtYWNfZmlsdGVyLCBoYS0mZ3Q7YWRkcik7CiYjNDM7CiYjNDM7CWJpdG1hcF90b19hcnI2NCgmYW1wO2hhc2gsIG1hY19maWx0ZXItJmd0O21hY19oYXNoX3RhYmxlLAomIzQzOwkJCUVORVRDX01BRERSX0hBU0hfVEJMX1NaKTsKJiM0MzsJZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHBmLSZndDtzaSwgMCwgaGFzaCk7CiYjNDM7fQogCi0JbWFjX2NudCA9IG5ldGRldl91Y19jb3VudChuZGV2KTsKLQlpZiAoIW1hY19jbnQpIHsKLQkJbmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7CiYjNDM7c3RhdGljIGludCBlbmV0YzRfcGZfc2V0X3VjX2V4YWN0X2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLAomIzQzOwkJCQkJIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwZi0mZ3Q7c2k7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2VtcHR5KHVjKSkgewogCQkvKiBjbGVhciBib3RoIE1BQyBoYXNoIGFuZCBleGFjdCBmaWx0ZXJzICovCi0JCWVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApOwomIzQzOwkJZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTsKIAkJZW5ldGM0X3BmX2NsZWFyX21hZnRfZW50cmllcyhwZik7CiAKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKG1hY19jbnQgJmd0OyBtYXhfbnVtX21mZSkgewotCQllcnIgPSAtRU5PU1BDOwotCQlnb3RvIHVubG9ja19uZXRpZl9hZGRyOwotCX0KLQotCW1hY190YmwgPSBremFsbG9jX29ianMoKm1hY190YmwsIG1hY19jbnQsIEdGUF9BVE9NSUMpOwotCWlmICghbWFjX3RibCkgewotCQllcnIgPSAtRU5PTUVNOwotCQlnb3RvIHVubG9ja19uZXRpZl9hZGRyOwotCX0KLQotCW5ldGRldl9mb3JfZWFjaF91Y19hZGRyKGhhLCBuZGV2KSB7Ci0JCWVuZXRjX2FkZF9tYWNfYWRkcl9odF9maWx0ZXIoJmFtcDttYWNfZmlsdGVyLCBoYS0mZ3Q7YWRkcik7Ci0JCWV0aGVyX2FkZHJfY29weShtYWNfdGJsW2kmIzQzOyYjNDM7XS5hZGRyLCBoYS0mZ3Q7YWRkcik7Ci0JfQotCi0JbmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7Ci0KLQkvKiBTZXQgdGVtcG9yYXJ5IHVuaWNhc3QgaGFzaCBmaWx0ZXJzIGluIGNhc2Ugb2YgUnggbG9zcyB3aGVuCiYjNDM7CS8qIFNldCB0ZW1wb3JhcnkgdW5pY2FzdCBoYXNoIGZpbHRlciBpbiBjYXNlIG9mIFJ4IGxvc3Mgd2hlbgogCSAqIHVwZGF0aW5nIE1BQyBhZGRyZXNzIGZpbHRlciB0YWJsZQogCSAqLwotCWVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsICptYWNfZmlsdGVyLm1hY19oYXNoX3RhYmxlKTsKJiM0MzsJZW5ldGM0X3BmX3NldF91Y19oYXNoX2ZpbHRlcihwZiwgdWMpOwogCWVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpOwogCi0JaWYgKCFlbmV0YzRfcGZfYWRkX21hZnRfZW50cmllcyhwZiwgbWFjX3RibCwgaSkpCi0JCWVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApOwotCi0Ja2ZyZWUobWFjX3RibCk7Ci0KLQlyZXR1cm4gMDsKLQotdW5sb2NrX25ldGlmX2FkZHI6Ci0JbmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7CiYjNDM7CWVyciA9IGVuZXRjNF9wZl9hZGRfbWFmdF9lbnRyaWVzKHBmLCB1Yyk7CiYjNDM7CWlmICghZXJyKSB7CiYjNDM7CQllbmV0Y19yZXNldF9tYWNfYWRkcl9maWx0ZXIoJmFtcDtwZi0mZ3Q7bWFjX2ZpbHRlcltVQ10pOwomIzQzOwkJZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTsKJiM0MzsJfQogCiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tYWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHR5cGUpCiYjNDM7c3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLAomIzQzOwkJCQkJIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYykKIHsKLQlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHBmLSZndDtzaS0mZ3Q7bmRldjsKLQlzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqbWFjX2ZpbHRlcjsKLQlzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gJmFtcDtwZi0mZ3Q7c2ktJmd0O2h3OwomIzQzOwlzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqbWFjX2ZpbHRlciA9ICZhbXA7cGYtJmd0O21hY19maWx0ZXJbTUNdOwogCXN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7CiYjNDM7CXU2NCBoYXNoOwogCi0JbmV0aWZfYWRkcl9sb2NrX2JoKG5kZXYpOwotCWlmICh0eXBlICZhbXA7IEVORVRDX01BQ19GSUxURVJfVFlQRV9VQykgewotCQltYWNfZmlsdGVyID0gJmFtcDtwZi0mZ3Q7bWFjX2ZpbHRlcltVQ107Ci0JCWVuZXRjX3Jlc2V0X21hY19hZGRyX2ZpbHRlcihtYWNfZmlsdGVyKTsKLQkJbmV0ZGV2X2Zvcl9lYWNoX3VjX2FkZHIoaGEsIG5kZXYpCi0JCQllbmV0Y19hZGRfbWFjX2FkZHJfaHRfZmlsdGVyKG1hY19maWx0ZXIsIGhhLSZndDthZGRyKTsKLQotCQllbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKGh3LCAwLAotCQkJCQkJKm1hY19maWx0ZXItJmd0O21hY19oYXNoX3RhYmxlKTsKLQl9CiYjNDM7CWVuZXRjX3Jlc2V0X21hY19hZGRyX2ZpbHRlcihtYWNfZmlsdGVyKTsKJiM0MzsJbmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgbWMpCiYjNDM7CQllbmV0Y19hZGRfbWFjX2FkZHJfaHRfZmlsdGVyKG1hY19maWx0ZXIsIGhhLSZndDthZGRyKTsKIAotCWlmICh0eXBlICZhbXA7IEVORVRDX01BQ19GSUxURVJfVFlQRV9NQykgewotCQltYWNfZmlsdGVyID0gJmFtcDtwZi0mZ3Q7bWFjX2ZpbHRlcltNQ107Ci0JCWVuZXRjX3Jlc2V0X21hY19hZGRyX2ZpbHRlcihtYWNfZmlsdGVyKTsKLQkJbmV0ZGV2X2Zvcl9lYWNoX21jX2FkZHIoaGEsIG5kZXYpCi0JCQllbmV0Y19hZGRfbWFjX2FkZHJfaHRfZmlsdGVyKG1hY19maWx0ZXIsIGhhLSZndDthZGRyKTsKLQotCQllbmV0YzRfcGZfc2V0X3NpX21jX2hhc2hfZmlsdGVyKGh3LCAwLAotCQkJCQkJKm1hY19maWx0ZXItJmd0O21hY19oYXNoX3RhYmxlKTsKLQl9Ci0JbmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7CiYjNDM7CWJpdG1hcF90b19hcnI2NCgmYW1wO2hhc2gsIG1hY19maWx0ZXItJmd0O21hY19oYXNoX3RhYmxlLAomIzQzOwkJCUVORVRDX01BRERSX0hBU0hfVEJMX1NaKTsKJiM0MzsJZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHBmLSZndDtzaSwgMCwgaGFzaCk7CiB9CiAKLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbWFjX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgdHlwZSkKJiM0MztzdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHR5cGUsCiYjNDM7CQkJCSAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLAomIzQzOwkJCQkgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYykKIHsKIAkvKiBDdXJyZW50bHksIHRoZSBNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGUgKE1BRlQpIG9ubHkgaGFzIDQgZW50cmllcywKIAkgKiBhbmQgbXVsdGlwbGUgbXVsdGljYXN0IGFkZHJlc3NlcyBmb3IgZmlsdGVyaW5nIHdpbGwgYmUgY29uZmlndXJlZApAQCAtMjU4LDE1ICYjNDM7MjA1LDE2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbWFjX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgdHlwZSkKIAkgKiB1bmljYXN0IGZpbHRlcmluZy4gSWYgdGhlIG51bWJlciBvZiB1bmljYXN0IGFkZHJlc3NlcyBleGNlZWRzIHRoZQogCSAqIHRhYmxlIGNhcGFjaXR5LCB0aGUgTUFDIGhhc2ggZmlsdGVyIHdpbGwgYmUgdXNlZC4KIAkgKi8KLQlpZiAodHlwZSAmYW1wOyBFTkVUQ19NQUNfRklMVEVSX1RZUEVfVUMgJmFtcDsmYW1wOyBlbmV0YzRfcGZfc2V0X3VjX2V4YWN0X2ZpbHRlcihwZikpIHsKJiM0MzsJaWYgKHR5cGUgJmFtcDsgRU5FVENfTUFDX0ZJTFRFUl9UWVBFX1VDICZhbXA7JmFtcDsKJiM0MzsJICAgIGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHBmLCB1YykpIHsKIAkJLyogRmFsbCBiYWNrIHRvIHRoZSBNQUMgaGFzaCBmaWx0ZXIgKi8KLQkJZW5ldGM0X3BmX3NldF9tYWNfaGFzaF9maWx0ZXIocGYsIEVORVRDX01BQ19GSUxURVJfVFlQRV9VQyk7CiYjNDM7CQllbmV0YzRfcGZfc2V0X3VjX2hhc2hfZmlsdGVyKHBmLCB1Yyk7CiAJCS8qIENsZWFyIHRoZSBvbGQgTUFDIGV4YWN0IGZpbHRlciAqLwogCQllbmV0YzRfcGZfY2xlYXJfbWFmdF9lbnRyaWVzKHBmKTsKIAl9CiAKIAlpZiAodHlwZSAmYW1wOyBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpCi0JCWVuZXRjNF9wZl9zZXRfbWFjX2hhc2hfZmlsdGVyKHBmLCBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpOwomIzQzOwkJZW5ldGM0X3BmX3NldF9tY19oYXNoX2ZpbHRlcihwZiwgbWMpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGVuZXRjX3BmX29wcyBlbmV0YzRfcGZfb3BzID0gewpAQCAtMzA2LDM0ICYjNDM7MjU0LDM1IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24oc3RydWN0IGVuZXRjX3BmICpwZikKIHsKIAlzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gJmFtcDtwZi0mZ3Q7c2ktJmd0O2h3OwogCXUzMiBudW1fcnhfYmRyLCBudW1fdHhfYmRyLCB2YWw7CiYjNDM7CWludCBudW1fdmZzID0gcGYtJmd0O3RvdGFsX3ZmczsKIAl1MzIgdmZfdHhfYmRyLCB2Zl9yeF9iZHI7CiAJaW50IGksIHJ4X3JlbSwgdHhfcmVtOwogCi0JaWYgKHBmLSZndDtjYXBzLm51bV9yeF9iZHIgJmx0OyBFTkVUQ19TSV9NQVhfUklOR19OVU0gJiM0MzsgcGYtJmd0O2NhcHMubnVtX3ZzaSkKLQkJbnVtX3J4X2JkciA9IHBmLSZndDtjYXBzLm51bV9yeF9iZHIgLSBwZi0mZ3Q7Y2Fwcy5udW1fdnNpOwomIzQzOwlpZiAocGYtJmd0O2NhcHMubnVtX3J4X2JkciAmbHQ7IEVORVRDX1NJX01BWF9SSU5HX05VTSAmIzQzOyBudW1fdmZzKQomIzQzOwkJbnVtX3J4X2JkciA9IHBmLSZndDtjYXBzLm51bV9yeF9iZHIgLSBudW1fdmZzOwogCWVsc2UKIAkJbnVtX3J4X2JkciA9IEVORVRDX1NJX01BWF9SSU5HX05VTTsKIAotCWlmIChwZi0mZ3Q7Y2Fwcy5udW1fdHhfYmRyICZsdDsgRU5FVENfU0lfTUFYX1JJTkdfTlVNICYjNDM7IHBmLSZndDtjYXBzLm51bV92c2kpCi0JCW51bV90eF9iZHIgPSBwZi0mZ3Q7Y2Fwcy5udW1fdHhfYmRyIC0gcGYtJmd0O2NhcHMubnVtX3ZzaTsKJiM0MzsJaWYgKHBmLSZndDtjYXBzLm51bV90eF9iZHIgJmx0OyBFTkVUQ19TSV9NQVhfUklOR19OVU0gJiM0MzsgbnVtX3ZmcykKJiM0MzsJCW51bV90eF9iZHIgPSBwZi0mZ3Q7Y2Fwcy5udW1fdHhfYmRyIC0gbnVtX3ZmczsKIAllbHNlCiAJCW51bV90eF9iZHIgPSBFTkVUQ19TSV9NQVhfUklOR19OVU07CiAKIAl2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdChmYWxzZSwgbnVtX3R4X2JkciwgbnVtX3J4X2Jkcik7CiAJZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSUNGR1IwKDApLCB2YWwpOwogCi0JaWYgKCFwZi0mZ3Q7Y2Fwcy5udW1fdnNpKQomIzQzOwlpZiAoIW51bV92ZnMpCiAJCXJldHVybjsKIAogCW51bV9yeF9iZHIgPSBwZi0mZ3Q7Y2Fwcy5udW1fcnhfYmRyIC0gbnVtX3J4X2JkcjsKLQlyeF9yZW0gPSBudW1fcnhfYmRyICUgcGYtJmd0O2NhcHMubnVtX3ZzaTsKLQludW1fcnhfYmRyID0gbnVtX3J4X2JkciAvIHBmLSZndDtjYXBzLm51bV92c2k7CiYjNDM7CXJ4X3JlbSA9IG51bV9yeF9iZHIgJSBudW1fdmZzOwomIzQzOwludW1fcnhfYmRyID0gbnVtX3J4X2JkciAvIG51bV92ZnM7CiAKIAludW1fdHhfYmRyID0gcGYtJmd0O2NhcHMubnVtX3R4X2JkciAtIG51bV90eF9iZHI7Ci0JdHhfcmVtID0gbnVtX3R4X2JkciAlIHBmLSZndDtjYXBzLm51bV92c2k7Ci0JbnVtX3R4X2JkciA9IG51bV90eF9iZHIgLyBwZi0mZ3Q7Y2Fwcy5udW1fdnNpOwomIzQzOwl0eF9yZW0gPSBudW1fdHhfYmRyICUgbnVtX3ZmczsKJiM0MzsJbnVtX3R4X2JkciA9IG51bV90eF9iZHIgLyBudW1fdmZzOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IHBmLSZndDtjYXBzLm51bV92c2k7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBudW1fdmZzOyBpJiM0MzsmIzQzOykgewogCQl2Zl90eF9iZHIgPSAoaSAmbHQ7IHR4X3JlbSkgPyBudW1fdHhfYmRyICYjNDM7IDEgOiBudW1fdHhfYmRyOwogCQl2Zl9yeF9iZHIgPSAoaSAmbHQ7IHJ4X3JlbSkgPyBudW1fcnhfYmRyICYjNDM7IDEgOiBudW1fcnhfYmRyOwogCQl2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdCh0cnVlLCB2Zl90eF9iZHIsIHZmX3J4X2Jkcik7CkBAIC0zNDYsNTMgJiM0MzsyOTUsNzAgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzKHN0cnVjdCBlbmV0Y19wZiAqcGYpCiAJZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbihwZik7CiB9CiAKLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSwgYm9vbCBlbikKLXsKLQl1MzIgdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSVBWTVIpOwotCi0JaWYgKGVuKQotCQl2YWwgfD0gQklUKHNpKTsKLQllbHNlCi0JCXZhbCAmYW1wOz0gfkJJVChzaSk7Ci0KLQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJUFZNUiwgdmFsKTsKLX0KLQotc3RhdGljIHZvaWQgZW5ldGM0X3NldF9kZWZhdWx0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKQotewotCXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3BmLSZndDtzaS0mZ3Q7aHc7Ci0JaW50IG51bV9zaSA9IHBmLSZndDtjYXBzLm51bV92c2kgJiM0MzsgMTsKLQlpbnQgaTsKLQotCS8qIGVuZm9yY2UgVkxBTiBwcm9taXNjdW91cyBtb2RlIGZvciBhbGwgU0lzICovCi0JZm9yIChpID0gMDsgaSAmbHQ7IG51bV9zaTsgaSYjNDM7JiM0MzspCi0JCWVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKGh3LCBpLCB0cnVlKTsKLX0KLQogLyogQWxsb2NhdGUgdGhlIG51bWJlciBvZiBNU0ktWCB2ZWN0b3JzIGZvciBwZXIgU0kuICovCiBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3NpX21zaXhfbnVtKHN0cnVjdCBlbmV0Y19wZiAqcGYpCiB7CiYjNDM7CWludCB2YWxpZF9udW1fc2kgPSBwZi0mZ3Q7dG90YWxfdmZzICYjNDM7IDE7CiAJc3RydWN0IGVuZXRjX2h3ICpodyA9ICZhbXA7cGYtJmd0O3NpLSZndDtodzsKLQlpbnQgaSwgbnVtX21zaXgsIHRvdGFsX3NpOwomIzQzOwlpbnQgaSwgbnVtX21zaXgsIG51bV92c2k7CiAJdTMyIHZhbDsKIAotCXRvdGFsX3NpID0gcGYtJmd0O2NhcHMubnVtX3ZzaSAmIzQzOyAxOwomIzQzOwl2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQzRfRUNBUFIxKTsKJiM0MzsJbnVtX3ZzaSA9IEZJRUxEX0dFVChFQ0FQUjFfTlVNX1ZTSSwgdmFsKTsKJiM0MzsKJiM0MzsJLyogVGhlIFBTSWFDRkdSMltOVU1fTVNJWF0gaW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgTVNJLVggYWxsb2NhdGVkIHRvCiYjNDM7CSAqIHRoZSBTSSBpcyBOVU1fTVNJWCAmIzQzOyAxLCBzbyB0aGUgbWluaW11bSBudW1iZXIgb2YgTVNJLVggYWxsb2NhdGVkIHRvCiYjNDM7CSAqIGVhY2ggU0kgaXMgMS4gVGhlIHRvdGFsIG51bWJlciBvZiBNU0ktWCBhbGxvY2F0ZWQgdG8gUFNJIGFuZCBWU0lzCiYjNDM7CSAqIGNhbm5vdCBleGNlZWQgdGhlIHRvdGFsIG51bWJlciBvZiBNU0ktWCBvd25lZCBieSB0aGlzIEVORVRDLCB3aGljaAomIzQzOwkgKiBpcyBFQ0FQUjFbTlVNX01TSVhdLiBPdGhlcndpc2UsIHdoZW4gbXVsdGlwbGUgRU5FVEMgaW5zdGFuY2VzIGV4aXN0LAomIzQzOwkgKiBpdCB3aWxsIGFmZmVjdCBvdGhlciBFTkVUQ3Mgd2hvc2UgTVNJLVggaW50ZXJydXB0cyBjYW5ub3QgYmUKJiM0MzsJICogZ2VuZXJhdGVkLiBUaGlzIGlzIHNpbWlsYXIgdG8gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3M6IHRoZSBhcnJheQomIzQzOwkgKiBpdHNlbGYgaXMgbm90IGFmZmVjdGVkLCBidXQgYWRqYWNlbnQgYXJyYXlzIHdpbGwgYmUgY29ycnVwdGVkLgomIzQzOwkgKgomIzQzOwkgKiBwZi0mZ3Q7dG90YWxfdmZzIGlzIDAgaWYgQ09ORklHX1BDSV9JT1YgaXMgZGlzYWJsZWQuIElmIHRoZSBoYXJkd2FyZQomIzQzOwkgKiBpdHNlbGYgc3VwcG9ydHMgU1ItSU9WLCB0aGVuIHdoZW4gYWxsb2NhdGluZyB0aGUgbnVtYmVyIG9mIE1TSVhzIHRvCiYjNDM7CSAqIHRoZSBTSSwgaXQgbXVzdCBiZSB0YWtlbiBpbnRvIGFjY291bnQgdGhhdCB0aGUgVlNJIGhhcyBhdCBsZWFzdCAxCiYjNDM7CSAqIE1TSVgsIGFuZCB0aGUgdG90YWwgbnVtYmVyIG9mIE1TSVhzIG9mIGFsbCBTSXMgY2Fubm90IGV4Y2VlZAomIzQzOwkgKiBFQ0FQUjFbTlVNX01TSVhdLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFwZi0mZ3Q7dG90YWxfdmZzICZhbXA7JmFtcDsgbnVtX3ZzaSkgewomIzQzOwkJLyogQmVjYXVzZSBlYWNoIFNJIGhhcyBhdCBsZWFzdCBvbmUgTVNJWCwgYW5kIGZyb20gdGhlIGhhcmR3YXJlCiYjNDM7CQkgKiBwZXJzcGVjdGl2ZSwgcGYtJmd0O2NhcHMubnVtX21zaXggd2lsbCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuCiYjNDM7CQkgKiBudW1fdnNpLiBTbyBudW1fbXNpeCBpcyBhbHdheXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAuCiYjNDM7CQkgKi8KJiM0MzsJCW51bV9tc2l4ID0gcGYtJmd0O2NhcHMubnVtX21zaXggLSBudW1fdnNpIC0gMTsKJiM0MzsJCWlmIChudW1fbXNpeCAmZ3Q7IFBTSUNGR1IyX05VTV9NU0lYKQomIzQzOwkJCW51bV9tc2l4ID0gUFNJQ0ZHUjJfTlVNX01TSVg7CiYjNDM7CQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoMCksIG51bV9tc2l4KTsKIAotCW51bV9tc2l4ID0gcGYtJmd0O2NhcHMubnVtX21zaXggLyB0b3RhbF9zaSAmIzQzOwotCQkgICBwZi0mZ3Q7Y2Fwcy5udW1fbXNpeCAlIHRvdGFsX3NpIC0gMTsKLQl2YWwgPSBudW1fbXNpeCAmYW1wOyBQU0lDRkdSMl9OVU1fTVNJWDsKLQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoMCksIHZhbCk7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgbnVtX3ZzaTsgaSYjNDM7JiM0MzspCiYjNDM7CQkJZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSUNGR1IyKGkgJiM0MzsgMSksIDApOwogCi0JbnVtX21zaXggPSBwZi0mZ3Q7Y2Fwcy5udW1fbXNpeCAvIHRvdGFsX3NpIC0gMTsKLQl2YWwgPSBudW1fbXNpeCAmYW1wOyBQU0lDRkdSMl9OVU1fTVNJWDsKLQlmb3IgKGkgPSAwOyBpICZsdDsgcGYtJmd0O2NhcHMubnVtX3ZzaTsgaSYjNDM7JiM0MzspCi0JCWVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMihpICYjNDM7IDEpLCB2YWwpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIExpa2V3aXNlLCBmcm9tIHRoZSBoYXJkd2FyZSBwZXJzcGVjdGl2ZSBwZi0mZ3Q7Y2Fwcy5udW1fbXNpeCBpcyBhbHdheXMKJiM0MzsJICogZ3JlYXRlciB0aGFuIHZhbGlkX251bV9zaS4gU28gbnVtX21zaXggaXMgYWx3YXlzIGdyZWF0ZXIgdGhhbiBvcgomIzQzOwkgKiBlcXVhbCB0byAwLgomIzQzOwkgKi8KJiM0MzsJbnVtX21zaXggPSBwZi0mZ3Q7Y2Fwcy5udW1fbXNpeCAvIHZhbGlkX251bV9zaSAmIzQzOwomIzQzOwkJICAgcGYtJmd0O2NhcHMubnVtX21zaXggJSB2YWxpZF9udW1fc2kgLSAxOwomIzQzOwlpZiAobnVtX21zaXggJmd0OyBQU0lDRkdSMl9OVU1fTVNJWCkKJiM0MzsJCW51bV9tc2l4ID0gUFNJQ0ZHUjJfTlVNX01TSVg7CiYjNDM7CWVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMigwKSwgbnVtX21zaXgpOwomIzQzOwomIzQzOwludW1fbXNpeCA9IHBmLSZndDtjYXBzLm51bV9tc2l4IC8gdmFsaWRfbnVtX3NpIC0gMTsKJiM0MzsJaWYgKG51bV9tc2l4ICZndDsgUFNJQ0ZHUjJfTlVNX01TSVgpCiYjNDM7CQludW1fbXNpeCA9IFBTSUNGR1IyX05VTV9NU0lYOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgcGYtJmd0O3RvdGFsX3ZmczsgaSYjNDM7JiM0MzspCiYjNDM7CQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoaSAmIzQzOyAxKSwgbnVtX21zaXgpOwogfQogCiBzdGF0aWMgdm9pZCBlbmV0YzRfZW5hYmxlX2FsbF9zaShzdHJ1Y3QgZW5ldGNfcGYgKnBmKQogewogCXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3BmLSZndDtzaS0mZ3Q7aHc7Ci0JaW50IG51bV9zaSA9IHBmLSZndDtjYXBzLm51bV92c2kgJiM0MzsgMTsKJiM0MzsJaW50IG51bV9zaSA9IHBmLSZndDt0b3RhbF92ZnMgJiM0MzsgMTsKIAl1MzIgc2lfYml0bWFwID0gMDsKIAlpbnQgaTsKIApAQCAtNDEyLDcgJiM0MzszNzgsOSBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfY29uZmlndXJlX3BvcnRfc2koc3RydWN0IGVuZXRjX3BmICpwZikKIAkvKiBPdXRlciBWTEFOIHRhZyB3aWxsIGJlIHVzZWQgZm9yIFZMQU4gZmlsdGVyaW5nICovCiAJZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSVZMQU5GTVIsIFBTSVZMQU5GTVJfVlMpOwogCi0JZW5ldGM0X3NldF9kZWZhdWx0X3NpX3ZsYW5fcHJvbWlzYyhwZik7CiYjNDM7CS8qIEVuZm9yY2UgVkxBTiBwcm9taXNjdW91cyBtb2RlIGZvciBhbGwgU0lzICovCiYjNDM7CWZvciAoaW50IGkgPSAwOyBpICZsdDsgcGYtJmd0O3RvdGFsX3ZmcyAmIzQzOyAxOyBpJiM0MzsmIzQzOykKJiM0MzsJCWVuZXRjX3NldF9zaV92bGFuX3Byb21pc2MocGYtJmd0O3NpLCBpLCB0cnVlKTsKIAogCS8qIERpc2FibGUgU0kgTUFDIG11bHRpY2FzdCAmYW1wOyB1bmljYXN0IHByb21pc2N1b3VzICovCiAJZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSVBNTVIsIDApOwpAQCAtNDUwLDE4ICYjNDM7NDE4LDYwIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9jb25maWd1cmVfcG9ydChzdHJ1Y3QgZW5ldGNfcGYgKnBmKQogCWVuZXRjX3NldF9kZWZhdWx0X3Jzc19rZXkocGYpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZW5ldGM0X2dldF9udG1wX2NhcHMoc3RydWN0IGVuZXRjX3NpICpzaSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBudG1wX3VzZXIgKnVzZXIgPSAmYW1wO3NpLSZndDtudG1wX3VzZXI7CiYjNDM7CXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3NpLSZndDtodzsKJiM0MzsJdTMyIHZhbDsKJiM0MzsKJiM0MzsJdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSU1BRkNBUFIpOwomIzQzOwl1c2VyLSZndDttYWZ0X251bV9lbnRyaWVzID0gRklFTERfR0VUKFBTSU1BRkNBUFJfTlVNX01BQ19BRlRFLCB2YWwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGVuZXRjNF9udG1wX2JpdG1hcF9pbml0KHN0cnVjdCBudG1wX3VzZXIgKnVzZXIpCiYjNDM7ewomIzQzOwl1c2VyLSZndDttYWZ0X2VpZF9iaXRtYXAgPSBiaXRtYXBfemFsbG9jKHVzZXItJmd0O21hZnRfbnVtX2VudHJpZXMsCiYjNDM7CQkJCQkgICAgICBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCF1c2VyLSZndDttYWZ0X2VpZF9iaXRtYXApCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGVuZXRjNF9udG1wX2JpdG1hcF9mcmVlKHN0cnVjdCBudG1wX3VzZXIgKnVzZXIpCiYjNDM7ewomIzQzOwliaXRtYXBfZnJlZSh1c2VyLSZndDttYWZ0X2VpZF9iaXRtYXApOwomIzQzOwl1c2VyLSZndDttYWZ0X2VpZF9iaXRtYXAgPSBOVUxMOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgZW5ldGM0X2luaXRfbnRtcF91c2VyKHN0cnVjdCBlbmV0Y19zaSAqc2kpCiB7CiAJc3RydWN0IG50bXBfdXNlciAqdXNlciA9ICZhbXA7c2ktJmd0O250bXBfdXNlcjsKJiM0MzsJaW50IGVycjsKIAogCS8qIEZvciBFTkVUQyA0LjEsIGFsbCB0YWJsZSB2ZXJzaW9ucyBhcmUgMCAqLwogCW1lbXNldCgmYW1wO3VzZXItJmd0O3RibCwgMCwgc2l6ZW9mKHVzZXItJmd0O3RibCkpOwogCi0JcmV0dXJuIGVuZXRjNF9zZXR1cF9jYmRyKHNpKTsKJiM0MzsJZXJyID0gZW5ldGM0X3NldHVwX2NiZHIoc2kpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJZW5ldGM0X2dldF9udG1wX2NhcHMoc2kpOwomIzQzOwllcnIgPSBlbmV0YzRfbnRtcF9iaXRtYXBfaW5pdCh1c2VyKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCWdvdG8gdGVhcmRvd25fY2JkcjsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7CiYjNDM7dGVhcmRvd25fY2JkcjoKJiM0MzsJZW5ldGM0X3RlYXJkb3duX2NiZHIoc2kpOwomIzQzOwomIzQzOwlyZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgdm9pZCBlbmV0YzRfZnJlZV9udG1wX3VzZXIoc3RydWN0IGVuZXRjX3NpICpzaSkKIHsKJiM0MzsJZW5ldGM0X250bXBfYml0bWFwX2ZyZWUoJmFtcDtzaS0mZ3Q7bnRtcF91c2VyKTsKIAllbmV0YzRfdGVhcmRvd25fY2JkcihzaSk7CiB9CiAKQEAgLTQ3OSw3ICYjNDM7NDg5LDcgQEAgc3RhdGljIGludCBlbmV0YzRfcGZfaW5pdChzdHJ1Y3QgZW5ldGNfcGYgKnBmKQogCiAJZXJyID0gZW5ldGM0X2luaXRfbnRtcF91c2VyKHBmLSZndDtzaSk7CiAJaWYgKGVycikgewotCQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gaW5pdCBDQkRSXG4mIzM0Oyk7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gaW5pdCBOVE1QIHVzZXJcbiYjMzQ7KTsKIAkJcmV0dXJuIGVycjsKIAl9CiAKQEAgLTQ5MywxOCAmIzQzOzUwMywxNyBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGZfZnJlZShzdHJ1Y3QgZW5ldGNfcGYgKnBmKQogCWVuZXRjNF9mcmVlX250bXBfdXNlcihwZi0mZ3Q7c2kpOwogfQogCi1zdGF0aWMgdm9pZCBlbmV0YzRfcHNpX2RvX3NldF9yeF9tb2RlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKJiM0MztzdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKJiM0MzsJCQkJIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YywKJiM0MzsJCQkJIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYykKIHsKLQlzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBlbmV0Y19zaSwgcnhfbW9kZV90YXNrKTsKLQlzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihzaSk7Ci0Jc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBzaS0mZ3Q7bmRldjsKLQlzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gJmFtcDtzaS0mZ3Q7aHc7CiYjNDM7CXN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsKJiM0MzsJc3RydWN0IGVuZXRjX3BmICpwZiA9IGVuZXRjX3NpX3ByaXYocHJpdi0mZ3Q7c2kpOwomIzQzOwlzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcHJpdi0mZ3Q7c2k7CiAJYm9vbCB1Y19wcm9taXNjID0gZmFsc2U7CiAJYm9vbCBtY19wcm9taXNjID0gZmFsc2U7CiAJaW50IHR5cGUgPSAwOwogCi0JcnRubF9sb2NrKCk7Ci0KIAlpZiAobmRldi0mZ3Q7ZmxhZ3MgJmFtcDsgSUZGX1BST01JU0MpIHsKIAkJdWNfcHJvbWlzYyA9IHRydWU7CiAJCW1jX3Byb21pc2MgPSB0cnVlOwpAQCAtNTE1LDI4ICYjNDM7NTI0LDIxIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wc2lfZG9fc2V0X3J4X21vZGUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQl0eXBlID0gRU5FVENfTUFDX0ZJTFRFUl9UWVBFX0FMTDsKIAl9CiAKLQllbmV0YzRfcGZfc2V0X3NpX21hY19wcm9taXNjKGh3LCAwLCB1Y19wcm9taXNjLCBtY19wcm9taXNjKTsKJiM0MzsJZW5ldGNfc2V0X3NpX3VjX3Byb21pc2Moc2ksIDAsIHVjX3Byb21pc2MpOwomIzQzOwllbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhzaSwgMCwgbWNfcHJvbWlzYyk7CiAKIAlpZiAodWNfcHJvbWlzYykgewotCQllbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKGh3LCAwLCAwKTsKJiM0MzsJCWVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7CiAJCWVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpOwogCX0KIAogCWlmIChtY19wcm9taXNjKQotCQllbmV0YzRfcGZfc2V0X3NpX21jX2hhc2hfZmlsdGVyKGh3LCAwLCAwKTsKJiM0MzsJCWVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7CiAKIAkvKiBTZXQgbmV3IE1BQyBmaWx0ZXIgKi8KLQllbmV0YzRfcGZfc2V0X21hY19maWx0ZXIocGYsIHR5cGUpOwomIzQzOwllbmV0YzRfcGZfc2V0X21hY19maWx0ZXIocGYsIHR5cGUsIHVjLCBtYyk7CiAKLQlydG5sX3VubG9jaygpOwotfQotCi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCi17Ci0Jc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwotCXN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwcml2LSZndDtzaTsKLQotCXF1ZXVlX3dvcmsoc2ktJmd0O3dvcmtxdWV1ZSwgJmFtcDtzaS0mZ3Q7cnhfbW9kZV90YXNrKTsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgZW5ldGM0X3BmX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKQEAgLTU0NCwxMiAmIzQzOzU0NiwxMSBAQCBzdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiB7CiAJbmV0ZGV2X2ZlYXR1cmVzX3QgY2hhbmdlZCA9IG5kZXYtJmd0O2ZlYXR1cmVzIF4gZmVhdHVyZXM7CiAJc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwotCXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3ByaXYtJmd0O3NpLSZndDtodzsKIAogCWlmIChjaGFuZ2VkICZhbXA7IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUikgewogCQlib29sIHByb21pc2NfZW4gPSAhKGZlYXR1cmVzICZhbXA7IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUik7CiAKLQkJZW5ldGM0X3BmX3NldF9zaV92bGFuX3Byb21pc2MoaHcsIDAsIHByb21pc2NfZW4pOwomIzQzOwkJZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhwcml2LSZndDtzaSwgMCwgcHJvbWlzY19lbik7CiAJfQogCiAJaWYgKGNoYW5nZWQgJmFtcDsgTkVUSUZfRl9MT09QQkFDSykKQEAgLTU2Niw3ICYjNDM7NTY3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlbmV0YzRfbmRldl9vcHMgPSB7CiAJLm5kb19zdGFydF94bWl0CQk9IGVuZXRjX3htaXQsCiAJLm5kb19nZXRfc3RhdHMJCT0gZW5ldGNfZ2V0X3N0YXRzLAogCS5uZG9fc2V0X21hY19hZGRyZXNzCT0gZW5ldGNfcGZfc2V0X21hY19hZGRyLAotCS5uZG9fc2V0X3J4X21vZGUJPSBlbmV0YzRfcGZfc2V0X3J4X21vZGUsCiYjNDM7CS5uZG9fc2V0X3J4X21vZGVfYXN5bmMJPSBlbmV0YzRfcGZfc2V0X3J4X21vZGUsCiAJLm5kb19zZXRfZmVhdHVyZXMJPSBlbmV0YzRfcGZfc2V0X2ZlYXR1cmVzLAogCS5uZG9fdmxhbl9yeF9hZGRfdmlkCT0gZW5ldGNfdmxhbl9yeF9hZGRfdmlkLAogCS5uZG9fdmxhbl9yeF9raWxsX3ZpZAk9IGVuZXRjX3ZsYW5fcnhfZGVsX3ZpZCwKQEAgLTYwMiwxMSAmIzQzOzYwMyw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9tYWNfY29uZmlnKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHVuc2lnbmVkIGludCBtb2RlLAogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDoKIAkJdmFsIHw9IElGTU9ERV9SR01JSTsKLQkJLyogV2UgbmVlZCB0byBlbmFibGUgYXV0by1uZWdvdGlhdGlvbiBmb3IgdGhlIE1BQwotCQkgKiBpZiBpdHMgUkdNSUkgaW50ZXJmYWNlIHN1cHBvcnQgSW4tQmFuZCBzdGF0dXMuCi0JCSAqLwotCQlpZiAocGh5bGlua19hdXRvbmVnX2luYmFuZChtb2RlKSkKLQkJCXZhbCB8PSBQTV9JRl9NT0RFX0VOQTsKIAkJYnJlYWs7CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUk1JSToKIAkJdmFsIHw9IElGTU9ERV9STUlJOwpAQCAtNjE2LDcgJiM0Mzs2MTIsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfbWFjX2NvbmZpZyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLCB1bnNpZ25lZCBpbnQgbW9kZSwKIAkJdmFsIHw9IElGTU9ERV9TR01JSTsKIAkJYnJlYWs7CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6Ci0JY2FzZSBQSFlfSU5URVJGQUNFX01PREVfWEdNSUk6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSToKIAkJdmFsIHw9IElGTU9ERV9YR01JSTsKIAkJYnJlYWs7CkBAIC02NDIsMjYgJiM0Mzs2MzcsMTkgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3NldF9wb3J0X3NwZWVkKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsIGludCBzcGVlZCkKIAl1MzIgb2xkX3NwZWVkID0gcHJpdi0mZ3Q7c3BlZWQ7CiAJdTMyIHZhbDsKIAomIzQzOwkvKiBJZiB0aGUgc3BlZWQgaXMgdW5rbm93biwgdXNlIHRoZSBtaW5pbXVtIHZhbHVlICovCiYjNDM7CWlmIChzcGVlZCA9PSBTUEVFRF9VTktOT1dOKSB7CiYjNDM7CQlzcGVlZCA9IFNQRUVEXzEwOwomIzQzOwkJZGV2X3dhcm4ocHJpdi0mZ3Q7ZGV2LCAmIzM0O1NwZWVkIHVua25vd24sIGRlZmF1bHQgaXMgMTBNYnBzXG4mIzM0Oyk7CiYjNDM7CX0KJiM0MzsKIAlpZiAoc3BlZWQgPT0gb2xkX3NwZWVkKQogCQlyZXR1cm47CiAKLQl2YWwgPSBlbmV0Y19wb3J0X3JkKCZhbXA7cHJpdi0mZ3Q7c2ktJmd0O2h3LCBFTkVUQzRfUENSKTsKLQl2YWwgJmFtcDs9IH5QQ1JfUFNQRUVEOwotCi0Jc3dpdGNoIChzcGVlZCkgewotCWNhc2UgU1BFRURfMTAwOgotCWNhc2UgU1BFRURfMTAwMDoKLQljYXNlIFNQRUVEXzI1MDA6Ci0JY2FzZSBTUEVFRF8xMDAwMDoKLQkJdmFsIHw9IChQQ1JfUFNQRUVEICZhbXA7IFBDUl9QU1BFRURfVkFMKHNwZWVkKSk7Ci0JCWJyZWFrOwotCWNhc2UgU1BFRURfMTA6Ci0JZGVmYXVsdDoKLQkJdmFsIHw9IChQQ1JfUFNQRUVEICZhbXA7IFBDUl9QU1BFRURfVkFMKFNQRUVEXzEwKSk7Ci0JfQotCi0JcHJpdi0mZ3Q7c3BlZWQgPSBzcGVlZDsKJiM0MzsJdmFsID0gZW5ldGNfcG9ydF9yZCgmYW1wO3ByaXYtJmd0O3NpLSZndDtodywgRU5FVEM0X1BDUikgJmFtcDsgKH5QQ1JfUFNQRUVEKTsKJiM0MzsJdmFsIHw9IFBDUl9QU1BFRURfVkFMKHNwZWVkKTsKIAllbmV0Y19wb3J0X3dyKCZhbXA7cHJpdi0mZ3Q7c2ktJmd0O2h3LCBFTkVUQzRfUENSLCB2YWwpOwomIzQzOwlwcml2LSZndDtzcGVlZCA9IHNwZWVkOwogfQogCiBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3JnbWlpX21hYyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgc3BlZWQsIGludCBkdXBsZXgpCkBAIC03MTcsMjIgJiM0Mzs3MDUsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3JtaWlfbWFjKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBzcGVlZCwgaW50IGR1cGxleCkKIAllbmV0Y19wb3J0X21hY193cihzaSwgRU5FVEM0X1BNX0lGX01PREUoMCksIHZhbCk7CiB9CiAKLXN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfaGRfZmxvd19jb250cm9sKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGJvb2wgZW5hYmxlKQotewotCXN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwZi0mZ3Q7c2k7Ci0JdTMyIG9sZF92YWwsIHZhbDsKLQotCWlmICghcGYtJmd0O2NhcHMuaGFsZl9kdXBsZXgpCi0JCXJldHVybjsKLQotCW9sZF92YWwgPSBlbmV0Y19wb3J0X21hY19yZChzaSwgRU5FVEM0X1BNX0NNRF9DRkcoMCkpOwotCXZhbCA9IHUzMl9yZXBsYWNlX2JpdHMob2xkX3ZhbCwgZW5hYmxlID8gMSA6IDAsIFBNX0NNRF9DRkdfSERfRkNFTik7Ci0JaWYgKHZhbCA9PSBvbGRfdmFsKQotCQlyZXR1cm47Ci0KLQllbmV0Y19wb3J0X21hY193cihzaSwgRU5FVEM0X1BNX0NNRF9DRkcoMCksIHZhbCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfcnhfcGF1c2Uoc3RydWN0IGVuZXRjX3BmICpwZiwgYm9vbCByeF9wYXVzZSkKIHsKIAlzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcGYtJmd0O3NpOwpAQCAtOTA4LDEzICYjNDM7ODgwLDExIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wbF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywKIAlzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gcGh5bGlua190b19lbmV0Y19wZihjb25maWcpOwogCXN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwZi0mZ3Q7c2k7CiAJc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdjsKLQlib29sIGhkX2ZjID0gZmFsc2U7CiAKIAlwcml2ID0gbmV0ZGV2X3ByaXYoc2ktJmd0O25kZXYpOwogCWVuZXRjNF9zZXRfcG9ydF9zcGVlZChwcml2LCBzcGVlZCk7CiAKLQlpZiAoIXBoeWxpbmtfYXV0b25lZ19pbmJhbmQobW9kZSkgJmFtcDsmYW1wOwotCSAgICBwaHlfaW50ZXJmYWNlX21vZGVfaXNfcmdtaWkoaW50ZXJmYWNlKSkKJiM0MzsJaWYgKHBoeV9pbnRlcmZhY2VfbW9kZV9pc19yZ21paShpbnRlcmZhY2UpKQogCQllbmV0YzRfc2V0X3JnbWlpX21hYyhwZiwgc3BlZWQsIGR1cGxleCk7CiAKIAlpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJKQpAQCAtOTI2LDE4ICYjNDM7ODk2LDggQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BsX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAogCQkgKi8KIAkJaWYgKHByaXYtJmd0O2FjdGl2ZV9vZmZsb2FkcyAmYW1wOyBFTkVUQ19GX1FCVSkKIAkJCXR4X3BhdXNlID0gZmFsc2U7Ci0JfSBlbHNlIHsgLyogRFVQTEVYX0hBTEYgKi8KLQkJaWYgKHR4X3BhdXNlIHx8IHJ4X3BhdXNlKQotCQkJaGRfZmMgPSB0cnVlOwotCi0JCS8qIEFzIHBlciA4MDIuMyBhbm5leCAzMUIsIFBBVVNFIGZyYW1lcyBhcmUgb25seSBzdXBwb3J0ZWQKLQkJICogd2hlbiB0aGUgbGluayBpcyBjb25maWd1cmVkIGZvciBmdWxsIGR1cGxleCBvcGVyYXRpb24uCi0JCSAqLwotCQl0eF9wYXVzZSA9IGZhbHNlOwotCQlyeF9wYXVzZSA9IGZhbHNlOwogCX0KIAotCWVuZXRjNF9zZXRfaGRfZmxvd19jb250cm9sKHBmLCBoZF9mYyk7CiAJZW5ldGM0X3NldF90eF9wYXVzZShwZiwgcHJpdi0mZ3Q7bnVtX3J4X3JpbmdzLCB0eF9wYXVzZSk7CiAJZW5ldGM0X3NldF9yeF9wYXVzZShwZiwgcnhfcGF1c2UpOwogCWVuZXRjNF9tYWNfdHhfZW5hYmxlKHBmKTsKQEAgLTEwMDksMTkgJiM0Mzs5NjksNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfbGlua19kZWluaXQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdikKIAllbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpOwogfQogCi1zdGF0aWMgaW50IGVuZXRjNF9wc2lfd3FfdGFza19pbml0KHN0cnVjdCBlbmV0Y19zaSAqc2kpCi17Ci0JY2hhciB3cV9uYW1lWzI0XTsKLQotCUlOSVRfV09SSygmYW1wO3NpLSZndDtyeF9tb2RlX3Rhc2ssIGVuZXRjNF9wc2lfZG9fc2V0X3J4X21vZGUpOwotCXNucHJpbnRmKHdxX25hbWUsIHNpemVvZih3cV9uYW1lKSwgJiMzNDtlbmV0Yy0lcyYjMzQ7LCBwY2lfbmFtZShzaS0mZ3Q7cGRldikpOwotCXNpLSZndDt3b3JrcXVldWUgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSh3cV9uYW1lKTsKLQlpZiAoIXNpLSZndDt3b3JrcXVldWUpCi0JCXJldHVybiAtRU5PTUVNOwotCi0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbnQgZW5ldGM0X3BmX25ldGRldl9jcmVhdGUoc3RydWN0IGVuZXRjX3NpICpzaSkKIHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmYW1wO3NpLSZndDtwZGV2LSZndDtkZXY7CkBAIC0xMDYyLDEyICYjNDM7MTAwOSw2IEBAIHN0YXRpYyBpbnQgZW5ldGM0X3BmX25ldGRldl9jcmVhdGUoc3RydWN0IGVuZXRjX3NpICpzaSkKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9saW5rX2luaXQ7CiAKLQllcnIgPSBlbmV0YzRfcHNpX3dxX3Rhc2tfaW5pdChzaSk7Ci0JaWYgKGVycikgewotCQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gaW5pdCB3b3JrcXVldWVcbiYjMzQ7KTsKLQkJZ290byBlcnJfd3FfaW5pdDsKLQl9Ci0KIAllcnIgPSByZWdpc3Rlcl9uZXRkZXYobmRldik7CiAJaWYgKGVycikgewogCQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgbmV0ZGV2XG4mIzM0Oyk7CkBAIC0xMDc3LDggJiM0MzsxMDE4LDYgQEAgc3RhdGljIGludCBlbmV0YzRfcGZfbmV0ZGV2X2NyZWF0ZShzdHJ1Y3QgZW5ldGNfc2kgKnNpKQogCXJldHVybiAwOwogCiBlcnJfcmVnX25ldGRldjoKLQlkZXN0cm95X3dvcmtxdWV1ZShzaS0mZ3Q7d29ya3F1ZXVlKTsKLWVycl93cV9pbml0OgogCWVuZXRjNF9saW5rX2RlaW5pdChwcml2KTsKIGVycl9saW5rX2luaXQ6CiAJZW5ldGNfZnJlZV9tc2l4KHByaXYpOwpAQCAtMTA5Niw4ICYjNDM7MTAzNSw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9uZXRkZXZfZGVzdHJveShzdHJ1Y3QgZW5ldGNfc2kgKnNpKQogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gc2ktJmd0O25kZXY7CiAKIAl1bnJlZ2lzdGVyX25ldGRldihuZGV2KTsKLQljYW5jZWxfd29yaygmYW1wO3NpLSZndDtyeF9tb2RlX3Rhc2spOwotCWRlc3Ryb3lfd29ya3F1ZXVlKHNpLSZndDt3b3JrcXVldWUpOwogCWVuZXRjNF9saW5rX2RlaW5pdChwcml2KTsKIAllbmV0Y19mcmVlX21zaXgocHJpdik7CiAJZnJlZV9uZXRkZXYobmRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYwppbmRleCA3MWYzNzZlZjFiZTFjOS4uMDdiNzgzMmYyNDI3NmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYwpAQCAtMjksNyAmIzQzOzI5LDcgQEAgc3RhdGljIGNvbnN0IHUzMiBlbmV0Y19yeGJkcl9yZWdzW10gPSB7CiB9OwogCiBzdGF0aWMgY29uc3QgdTMyIGVuZXRjX3BvcnRfcmVnc1tdID0gewotCUVORVRDX1BNUiwgRU5FVENfUFNSLCBFTkVUQ19QU0lQTVIsIEVORVRDX1BTSVBNQVIwKDApLAomIzQzOwlFTkVUQ19QTVIsIEVORVRDX1BTUiwgRU5FVENfUFNJUE1NUiwgRU5FVENfUFNJUE1BUjAoMCksCiAJRU5FVENfUFNJUE1BUjEoMCksIEVORVRDX1BUWE1CQVIsIEVORVRDX1BDQVBSMCwgRU5FVENfUENBUFIxLAogCUVORVRDX1BTSUNGR1IwKDApLCBFTkVUQ19QUkZTQ0FQUiwgRU5FVENfUFRDTVNEVVIoMCksCiAJRU5FVENfUE0wX0NNRF9DRkcsIEVORVRDX1BNMF9NQVhGUk0sIEVORVRDX1BNMF9JRl9NT0RFCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oCmluZGV4IGJmOTliNjVkNzU5OGFiLi4xNmRhNzMyZGM1ZGU4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmgKQEAgLTE4MCwxMyAmIzQzOzE4MCwxMyBAQCBlbnVtIGVuZXRjX2Jkcl90eXBlIHtUWCwgUlh9OwogI2RlZmluZSBFTkVUQ19QTVJfUFNQRUVEXzEwMDBNCUJJVCg5KQogI2RlZmluZSBFTkVUQ19QTVJfUFNQRUVEXzI1MDBNCUJJVCgxMCkKICNkZWZpbmUgRU5FVENfUFNSCQkweDAwMDQgLyogUk8gKi8KLSNkZWZpbmUgRU5FVENfUFNJUE1SCQkweDAwMTgKLSNkZWZpbmUgRU5FVENfUFNJUE1SX1NFVF9VUChuKQlCSVQobikgLyogbiA9IFNJIGluZGV4ICovCi0jZGVmaW5lIEVORVRDX1BTSVBNUl9TRVRfTVAobikJQklUKChuKSAmIzQzOyAxNikKJiM0MzsjZGVmaW5lIEVORVRDX1BTSVBNTVIJCTB4MDAxOAomIzQzOyNkZWZpbmUgIFBTSVBNTVJfU0lfTUFDX1VQKG4pCUJJVChuKSAvKiBuID0gU0kgaW5kZXggKi8KJiM0MzsjZGVmaW5lICBQU0lQTU1SX1NJX01BQ19NUChuKQlCSVQoKG4pICYjNDM7IDE2KQomIzQzOwogI2RlZmluZSBFTkVUQ19QU0lQVk1SCQkweDAwMWMKLSNkZWZpbmUgRU5FVENfVkxBTl9QUk9NSVNDX01BUF9BTEwJMHg3Ci0jZGVmaW5lIEVORVRDX1BTSVBWTVJfU0VUX1ZQKHNpbWFwKQkoKHNpbWFwKSAmYW1wOyAweDcpCi0jZGVmaW5lIEVORVRDX1BTSVBWTVJfU0VUX1ZVVEEoc2ltYXApCSgoKHNpbWFwKSAmYW1wOyAweDcpICZsdDsmbHQ7IDE2KQomIzQzOyNkZWZpbmUgIFBTSVBWTVJfU0lfVkxBTl9QKG4pCUJJVChuKSAvKiBuID0gU0kgaW5kZXggKi8KJiM0MzsKICNkZWZpbmUgRU5FVENfUFNJUE1BUjAobikJKDB4MDEwMCAmIzQzOyAobikgKiAweDgpIC8qIG4gPSBTSSBpbmRleCAqLwogI2RlZmluZSBFTkVUQ19QU0lQTUFSMShuKQkoMHgwMTA0ICYjNDM7IChuKSAqIDB4OCkKICNkZWZpbmUgRU5FVENfUFZDTENUUgkJMHgwMjA4CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jCmluZGV4IDJkNjg3YmI4YzNhMDYzLi5hNTA5OTI5Zjg5ZjI1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMKQEAgLTQyLDI2ICYjNDM7NDIsNiBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wZl9kZXN0cm95X3BjcyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcykKIAlseW54X3Bjc19kZXN0cm95KHBjcyk7CiB9CiAKLXN0YXRpYyB2b2lkIGVuZXRjX3NldF92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX2h3ICpodywgY2hhciBzaV9tYXApCi17Ci0JdTMyIHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDX1BTSVBWTVIpOwotCi0JdmFsICZhbXA7PSB+RU5FVENfUFNJUFZNUl9TRVRfVlAoRU5FVENfVkxBTl9QUk9NSVNDX01BUF9BTEwpOwotCWVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BTSVBWTVIsIEVORVRDX1BTSVBWTVJfU0VUX1ZQKHNpX21hcCkgfCB2YWwpOwotfQotCi1zdGF0aWMgdm9pZCBlbmV0Y19lbmFibGVfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBzaV9pZHgpCi17Ci0JcGYtJmd0O3ZsYW5fcHJvbWlzY19zaW1hcCB8PSBCSVQoc2lfaWR4KTsKLQllbmV0Y19zZXRfdmxhbl9wcm9taXNjKCZhbXA7cGYtJmd0O3NpLSZndDtodywgcGYtJmd0O3ZsYW5fcHJvbWlzY19zaW1hcCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGVuZXRjX2Rpc2FibGVfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBzaV9pZHgpCi17Ci0JcGYtJmd0O3ZsYW5fcHJvbWlzY19zaW1hcCAmYW1wOz0gfkJJVChzaV9pZHgpOwotCWVuZXRjX3NldF92bGFuX3Byb21pc2MoJmFtcDtwZi0mZ3Q7c2ktJmd0O2h3LCBwZi0mZ3Q7dmxhbl9wcm9taXNjX3NpbWFwKTsKLX0KLQogc3RhdGljIHZvaWQgZW5ldGNfc2V0X2lzb2xfdmxhbihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksIHUxNiB2bGFuLCB1OCBxb3MpCiB7CiAJdTMyIHZhbCA9IDA7CkBAIC04MCwzNyAmIzQzOzYwLDYgQEAgc3RhdGljIHZvaWQgZW5ldGNfYWRkX21hY19hZGRyX2VtX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqZmlsdGVyLAogCWZpbHRlci0mZ3Q7bWFjX2FkZHJfY250JiM0MzsmIzQzOzsKIH0KIAotc3RhdGljIHZvaWQgZW5ldGNfY2xlYXJfbWFjX2h0X2ZsdChzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWR4LCBpbnQgdHlwZSkKLXsKLQlib29sIGVyciA9IHNpLSZndDtlcnJhdGEgJmFtcDsgRU5FVENfRVJSX1VDTUNTV1A7Ci0KLQlpZiAodHlwZSA9PSBVQykgewotCQllbmV0Y19wb3J0X3dyKCZhbXA7c2ktJmd0O2h3LCBFTkVUQ19QU0lVTUhGUjAoc2lfaWR4LCBlcnIpLCAwKTsKLQkJZW5ldGNfcG9ydF93cigmYW1wO3NpLSZndDtodywgRU5FVENfUFNJVU1IRlIxKHNpX2lkeCksIDApOwotCX0gZWxzZSB7IC8qIE1DICovCi0JCWVuZXRjX3BvcnRfd3IoJmFtcDtzaS0mZ3Q7aHcsIEVORVRDX1BTSU1NSEZSMChzaV9pZHgsIGVyciksIDApOwotCQllbmV0Y19wb3J0X3dyKCZhbXA7c2ktJmd0O2h3LCBFTkVUQ19QU0lNTUhGUjEoc2lfaWR4KSwgMCk7Ci0JfQotfQotCi1zdGF0aWMgdm9pZCBlbmV0Y19zZXRfbWFjX2h0X2ZsdChzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWR4LCBpbnQgdHlwZSwKLQkJCQkgdW5zaWduZWQgbG9uZyBoYXNoKQotewotCWJvb2wgZXJyID0gc2ktJmd0O2VycmF0YSAmYW1wOyBFTkVUQ19FUlJfVUNNQ1NXUDsKLQotCWlmICh0eXBlID09IFVDKSB7Ci0JCWVuZXRjX3BvcnRfd3IoJmFtcDtzaS0mZ3Q7aHcsIEVORVRDX1BTSVVNSEZSMChzaV9pZHgsIGVyciksCi0JCQkgICAgICBsb3dlcl8zMl9iaXRzKGhhc2gpKTsKLQkJZW5ldGNfcG9ydF93cigmYW1wO3NpLSZndDtodywgRU5FVENfUFNJVU1IRlIxKHNpX2lkeCksCi0JCQkgICAgICB1cHBlcl8zMl9iaXRzKGhhc2gpKTsKLQl9IGVsc2UgeyAvKiBNQyAqLwotCQllbmV0Y19wb3J0X3dyKCZhbXA7c2ktJmd0O2h3LCBFTkVUQ19QU0lNTUhGUjAoc2lfaWR4LCBlcnIpLAotCQkJICAgICAgbG93ZXJfMzJfYml0cyhoYXNoKSk7Ci0JCWVuZXRjX3BvcnRfd3IoJmFtcDtzaS0mZ3Q7aHcsIEVORVRDX1BTSU1NSEZSMShzaV9pZHgpLAotCQkJICAgICAgdXBwZXJfMzJfYml0cyhoYXNoKSk7Ci0JfQotfQotCiBzdGF0aWMgdm9pZCBlbmV0Y19zeW5jX21hY19maWx0ZXJzKHN0cnVjdCBlbmV0Y19wZiAqcGYpCiB7CiAJc3RydWN0IGVuZXRjX21hY19maWx0ZXIgKmYgPSBwZi0mZ3Q7bWFjX2ZpbHRlcjsKQEAgLTEyMiwxMiAmIzQzOzcxLDE2IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3N5bmNfbWFjX2ZpbHRlcnMoc3RydWN0IGVuZXRjX3BmICpwZikKIAlmb3IgKGkgPSAwOyBpICZsdDsgTUFERFJfVFlQRTsgaSYjNDM7JiM0MzssIGYmIzQzOyYjNDM7KSB7CiAJCWJvb2wgZW0gPSAoZi0mZ3Q7bWFjX2FkZHJfY250ID09IDEpICZhbXA7JmFtcDsgKGkgPT0gVUMpOwogCQlib29sIGNsZWFyID0gIWYtJmd0O21hY19hZGRyX2NudDsKJiM0MzsJCXU2NCBoYXNoOwogCiAJCWlmIChjbGVhcikgewotCQkJaWYgKGkgPT0gVUMpCiYjNDM7CQkJaWYgKGkgPT0gVUMpIHsKIAkJCQllbmV0Y19jbGVhcl9tYWNfZmx0X2VudHJ5KHNpLCBwb3MpOwomIzQzOwkJCQllbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7CiYjNDM7CQkJfQogCi0JCQllbmV0Y19jbGVhcl9tYWNfaHRfZmx0KHNpLCAwLCBpKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTEzNSw3ICYjNDM7ODgsNyBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zeW5jX21hY19maWx0ZXJzKHN0cnVjdCBlbmV0Y19wZiAqcGYpCiAJCWlmIChlbSkgewogCQkJaW50IGVycjsKIAotCQkJZW5ldGNfY2xlYXJfbWFjX2h0X2ZsdChzaSwgMCwgVUMpOwomIzQzOwkJCWVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7CiAKIAkJCWVyciA9IGVuZXRjX3NldF9tYWNfZmx0X2VudHJ5KHNpLCBwb3MsIGYtJmd0O21hY19hZGRyLAogCQkJCQkJICAgICAgQklUKDApKTsKQEAgLTE0NywxMSAmIzQzOzEwMCwxNSBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zeW5jX21hY19maWx0ZXJzKHN0cnVjdCBlbmV0Y19wZiAqcGYpCiAJCQkJIGVycik7CiAJCX0KIAomIzQzOwkJYml0bWFwX3RvX2FycjY0KCZhbXA7aGFzaCwgZi0mZ3Q7bWFjX2hhc2hfdGFibGUsCiYjNDM7CQkJCUVORVRDX01BRERSX0hBU0hfVEJMX1NaKTsKIAkJLyogaGFzaCB0YWJsZSBmaWx0ZXIsIGNsZWFyIEVNIGZpbHRlciBmb3IgVUMgZW50cmllcyAqLwotCQlpZiAoaSA9PSBVQykKJiM0MzsJCWlmIChpID09IFVDKSB7CiAJCQllbmV0Y19jbGVhcl9tYWNfZmx0X2VudHJ5KHNpLCBwb3MpOwotCi0JCWVuZXRjX3NldF9tYWNfaHRfZmx0KHNpLCAwLCBpLCAqZi0mZ3Q7bWFjX2hhc2hfdGFibGUpOwomIzQzOwkJCWVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzaSwgMCwgaGFzaCk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzaSwgMCwgaGFzaCk7CiYjNDM7CQl9CiAJfQogfQogCkBAIC0xNTksMjEgJiM0MzsxMTYsMTcgQEAgc3RhdGljIHZvaWQgZW5ldGNfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiB7CiAJc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwogCXN0cnVjdCBlbmV0Y19wZiAqcGYgPSBlbmV0Y19zaV9wcml2KHByaXYtJmd0O3NpKTsKLQlzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gJmFtcDtwcml2LSZndDtzaS0mZ3Q7aHc7CiAJYm9vbCB1cHJvbSA9IGZhbHNlLCBtcHJvbSA9IGZhbHNlOwogCXN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICpmaWx0ZXI7CiAJc3RydWN0IG5ldGRldl9od19hZGRyICpoYTsKLQl1MzIgcHNpcG1yID0gMDsKIAlib29sIGVtOwogCiAJaWYgKG5kZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9QUk9NSVNDKSB7CiAJCS8qIGVuYWJsZSBwcm9taXNjIG1vZGUgZm9yIFNJMCAoUEYpICovCi0JCXBzaXBtciA9IEVORVRDX1BTSVBNUl9TRVRfVVAoMCkgfCBFTkVUQ19QU0lQTVJfU0VUX01QKDApOwogCQl1cHJvbSA9IHRydWU7CiAJCW1wcm9tID0gdHJ1ZTsKIAl9IGVsc2UgaWYgKG5kZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9BTExNVUxUSSkgewogCQkvKiBlbmFibGUgbXVsdGkgY2FzdCBwcm9taXNjIG1vZGUgZm9yIFNJMCAoUEYpICovCi0JCXBzaXBtciA9IEVORVRDX1BTSVBNUl9TRVRfTVAoMCk7CiAJCW1wcm9tID0gdHJ1ZTsKIAl9CiAKQEAgLTIxMSw5ICYjNDM7MTY0LDggQEAgc3RhdGljIHZvaWQgZW5ldGNfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiAJCS8qIHVwZGF0ZSBQRiBlbnRyaWVzICovCiAJCWVuZXRjX3N5bmNfbWFjX2ZpbHRlcnMocGYpOwogCi0JcHNpcG1yIHw9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDX1BTSVBNUikgJmFtcDsKLQkJICB+KEVORVRDX1BTSVBNUl9TRVRfVVAoMCkgfCBFTkVUQ19QU0lQTVJfU0VUX01QKDApKTsKLQllbmV0Y19wb3J0X3dyKGh3LCBFTkVUQ19QU0lQTVIsIHBzaXBtcik7CiYjNDM7CWVuZXRjX3NldF9zaV91Y19wcm9taXNjKHByaXYtJmd0O3NpLCAwLCB1cHJvbSk7CiYjNDM7CWVuZXRjX3NldF9zaV9tY19wcm9taXNjKHByaXYtJmd0O3NpLCAwLCBtcHJvbSk7CiB9CiAKIHN0YXRpYyB2b2lkIGVuZXRjX3NldF9sb29wYmFjayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgYm9vbCBlbikKQEAgLTQ2OSwxMiAmIzQzOzQyMSwxMSBAQCBzdGF0aWMgdm9pZCBlbmV0Y19jb25maWd1cmVfcG9ydChzdHJ1Y3QgZW5ldGNfcGYgKnBmKQogCiAJLyogc3BsaXQgdXAgUkZTIGVudHJpZXMgKi8KIAllbmV0Y19wb3J0X2Fzc2lnbl9yZnNfZW50cmllcyhwZi0mZ3Q7c2kpOwotCiAJLyogZW5mb3JjZSBWTEFOIHByb21pc2MgbW9kZSBmb3IgYWxsIFNJcyAqLwotCXBmLSZndDt2bGFuX3Byb21pc2Nfc2ltYXAgPSBFTkVUQ19WTEFOX1BST01JU0NfTUFQX0FMTDsKLQllbmV0Y19zZXRfdmxhbl9wcm9taXNjKGh3LCBwZi0mZ3Q7dmxhbl9wcm9taXNjX3NpbWFwKTsKJiM0MzsJZm9yIChpbnQgaSA9IDA7IGkgJmx0OyBwZi0mZ3Q7dG90YWxfdmZzICYjNDM7IDE7IGkmIzQzOyYjNDM7KQomIzQzOwkJZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhwZi0mZ3Q7c2ksIGksIHRydWUpOwogCi0JZW5ldGNfcG9ydF93cihodywgRU5FVENfUFNJUE1SLCAwKTsKJiM0MzsJZW5ldGNfcG9ydF93cihodywgRU5FVENfUFNJUE1NUiwgMCk7CiAKIAkvKiBlbmFibGUgcG9ydCAqLwogCWVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BNUiwgRU5FVENfUE1SX0VOKTsKQEAgLTQ5NCwxMiAmIzQzOzQ0NSw5IEBAIHN0YXRpYyBpbnQgZW5ldGNfcGZfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCX0KIAogCWlmIChjaGFuZ2VkICZhbXA7IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUikgewotCQlzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihwcml2LSZndDtzaSk7CiYjNDM7CQlib29sIHByb21pc2MgPSAhKGZlYXR1cmVzICZhbXA7IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUik7CiAKLQkJaWYgKCEhKGZlYXR1cmVzICZhbXA7IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUikpCi0JCQllbmV0Y19kaXNhYmxlX3NpX3ZsYW5fcHJvbWlzYyhwZiwgMCk7Ci0JCWVsc2UKLQkJCWVuZXRjX2VuYWJsZV9zaV92bGFuX3Byb21pc2MocGYsIDApOwomIzQzOwkJZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhwcml2LSZndDtzaSwgMCwgcHJvbWlzYyk7CiAJfQogCiAJaWYgKGNoYW5nZWQgJmFtcDsgTkVUSUZfRl9MT09QQkFDSykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmgKaW5kZXggMjg1YjdlNWM0OGZkYzcuLjU2ZDIzYThhMTFhMDYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuaApAQCAtMTcsMTIgJiM0MzsxNyw5IEBAIHN0cnVjdCBlbmV0Y192Zl9zdGF0ZSB7CiB9OwogCiBzdHJ1Y3QgZW5ldGNfcG9ydF9jYXBzIHsKLQl1MzIgaGFsZl9kdXBsZXg6MTsKLQlpbnQgbnVtX3ZzaTsKIAlpbnQgbnVtX21zaXg7CiAJaW50IG51bV9yeF9iZHI7CiAJaW50IG51bV90eF9iZHI7Ci0JaW50IG1hY19maWx0ZXJfbnVtOwogfTsKIAogc3RydWN0IGVuZXRjX3BmOwpAQCAtNDcsNyAmIzQzOzQ0LDYgQEAgc3RydWN0IGVuZXRjX3BmIHsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgbXNnX3Rhc2s7CiAJY2hhciBtc2dfaW50X25hbWVbRU5FVENfSU5UX05BTUVfTUFYXTsKIAotCWNoYXIgdmxhbl9wcm9taXNjX3NpbWFwOyAvKiBiaXRtYXAgb2YgU0lzIGluIFZMQU4gcHJvbWlzYyBtb2RlICovCiAJREVDTEFSRV9CSVRNQVAodmxhbl9odF9maWx0ZXIsIEVORVRDX1ZMQU5fSFRfU0laRSk7CiAJREVDTEFSRV9CSVRNQVAoYWN0aXZlX3ZsYW5zLCBWTEFOX05fVklEKTsKIApAQCAtNjAsOCAmIzQzOzU2LDYgQEAgc3RydWN0IGVuZXRjX3BmIHsKIAogCXN0cnVjdCBlbmV0Y19wb3J0X2NhcHMgY2FwczsKIAljb25zdCBzdHJ1Y3QgZW5ldGNfcGZfb3BzICpvcHM7Ci0KLQlpbnQgbnVtX21mZTsJLyogbnVtYmVyIG9mIG1hYyBhZGRyZXNzIGZpbHRlciB0YWJsZSBlbnRyaWVzICovCiB9OwogCiAjZGVmaW5lIHBoeWxpbmtfdG9fZW5ldGNfcGYoY29uZmlnKSBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMKaW5kZXggNmU1ZDJmODY5OTE1MGIuLmQzMmExOTVhMDRjOTdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jCkBAIC0xLDUgJiM0MzsxLDUgQEAKIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMCYjNDM7IE9SIEJTRC0zLUNsYXVzZSkKLS8qIENvcHlyaWdodCAyMDI0IE5YUCAqLwomIzQzOy8qIENvcHlyaWdodCAyMDI0LTIwMjYgTlhQICovCiAKICNpbmNsdWRlICZsdDtsaW51eC9mc2wvZW5ldGNfbWRpby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mX21kaW8uaCZndDsKQEAgLTg3LDYgJiM0Mzs4NywxMTIgQEAgaW50IGVuZXRjX3NldHVwX21hY19hZGRyZXNzZXMoc3RydWN0IGRldmljZV9ub2RlICpucCwgc3RydWN0IGVuZXRjX3BmICpwZikKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3NldHVwX21hY19hZGRyZXNzZXMpOwogCiYjNDM7dm9pZCBlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3NpLSZndDtodzsKJiM0MzsJaW50IHBzaXBtbXJfb2ZmOwomIzQzOwl1MzIgdmFsOwomIzQzOwomIzQzOwlpZiAoaXNfZW5ldGNfcmV2MShzaSkpCiYjNDM7CQlwc2lwbW1yX29mZiA9IEVORVRDX1BTSVBNTVI7CiYjNDM7CWVsc2UKJiM0MzsJCXBzaXBtbXJfb2ZmID0gRU5FVEM0X1BTSVBNTVI7CiYjNDM7CiYjNDM7CXZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIHBzaXBtbXJfb2ZmKTsKJiM0MzsKJiM0MzsJaWYgKHByb21pc2MpCiYjNDM7CQl2YWwgfD0gUFNJUE1NUl9TSV9NQUNfVVAoc2lfaWQpOwomIzQzOwllbHNlCiYjNDM7CQl2YWwgJmFtcDs9IH5QU0lQTU1SX1NJX01BQ19VUChzaV9pZCk7CiYjNDM7CiYjNDM7CWVuZXRjX3BvcnRfd3IoaHcsIHBzaXBtbXJfb2ZmLCB2YWwpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyk7CiYjNDM7CiYjNDM7dm9pZCBlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3NpLSZndDtodzsKJiM0MzsJaW50IHBzaXBtbXJfb2ZmOwomIzQzOwl1MzIgdmFsOwomIzQzOwomIzQzOwlpZiAoaXNfZW5ldGNfcmV2MShzaSkpCiYjNDM7CQlwc2lwbW1yX29mZiA9IEVORVRDX1BTSVBNTVI7CiYjNDM7CWVsc2UKJiM0MzsJCXBzaXBtbXJfb2ZmID0gRU5FVEM0X1BTSVBNTVI7CiYjNDM7CiYjNDM7CXZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIHBzaXBtbXJfb2ZmKTsKJiM0MzsKJiM0MzsJaWYgKHByb21pc2MpCiYjNDM7CQl2YWwgfD0gUFNJUE1NUl9TSV9NQUNfTVAoc2lfaWQpOwomIzQzOwllbHNlCiYjNDM7CQl2YWwgJmFtcDs9IH5QU0lQTU1SX1NJX01BQ19NUChzaV9pZCk7CiYjNDM7CiYjNDM7CWVuZXRjX3BvcnRfd3IoaHcsIHBzaXBtbXJfb2ZmLCB2YWwpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyk7CiYjNDM7CiYjNDM7dm9pZCBlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCB1NjQgaGFzaCkKJiM0Mzt7CiYjNDM7CWludCBwc2l1bWhmcjBfb2ZmLCBwc2l1bWhmcjFfb2ZmOwomIzQzOwlzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gJmFtcDtzaS0mZ3Q7aHc7CiYjNDM7CiYjNDM7CWlmIChpc19lbmV0Y19yZXYxKHNpKSkgewomIzQzOwkJYm9vbCBlcnIgPSBzaS0mZ3Q7ZXJyYXRhICZhbXA7IEVORVRDX0VSUl9VQ01DU1dQOwomIzQzOwomIzQzOwkJcHNpdW1oZnIwX29mZiA9IEVORVRDX1BTSVVNSEZSMChzaV9pZCwgZXJyKTsKJiM0MzsJCXBzaXVtaGZyMV9vZmYgPSBFTkVUQ19QU0lVTUhGUjEoc2lfaWQpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJcHNpdW1oZnIwX29mZiA9IEVORVRDNF9QU0lVTUhGUjAoc2lfaWQpOwomIzQzOwkJcHNpdW1oZnIxX29mZiA9IEVORVRDNF9QU0lVTUhGUjEoc2lfaWQpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWVuZXRjX3BvcnRfd3IoaHcsIHBzaXVtaGZyMF9vZmYsIGxvd2VyXzMyX2JpdHMoaGFzaCkpOwomIzQzOwllbmV0Y19wb3J0X3dyKGh3LCBwc2l1bWhmcjFfb2ZmLCB1cHBlcl8zMl9iaXRzKGhhc2gpKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKTsKJiM0MzsKJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIHU2NCBoYXNoKQomIzQzO3sKJiM0MzsJaW50IHBzaW1taGZyMF9vZmYsIHBzaW1taGZyMV9vZmY7CiYjNDM7CXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3NpLSZndDtodzsKJiM0MzsKJiM0MzsJaWYgKGlzX2VuZXRjX3JldjEoc2kpKSB7CiYjNDM7CQlib29sIGVyciA9IHNpLSZndDtlcnJhdGEgJmFtcDsgRU5FVENfRVJSX1VDTUNTV1A7CiYjNDM7CiYjNDM7CQlwc2ltbWhmcjBfb2ZmID0gRU5FVENfUFNJTU1IRlIwKHNpX2lkLCBlcnIpOwomIzQzOwkJcHNpbW1oZnIxX29mZiA9IEVORVRDX1BTSU1NSEZSMShzaV9pZCk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlwc2ltbWhmcjBfb2ZmID0gRU5FVEM0X1BTSU1NSEZSMChzaV9pZCk7CiYjNDM7CQlwc2ltbWhmcjFfb2ZmID0gRU5FVEM0X1BTSU1NSEZSMShzaV9pZCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZW5ldGNfcG9ydF93cihodywgcHNpbW1oZnIwX29mZiwgbG93ZXJfMzJfYml0cyhoYXNoKSk7CiYjNDM7CWVuZXRjX3BvcnRfd3IoaHcsIHBzaW1taGZyMV9vZmYsIHVwcGVyXzMyX2JpdHMoaGFzaCkpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIpOwomIzQzOwomIzQzO3ZvaWQgZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBlbmV0Y19odyAqaHcgPSAmYW1wO3NpLSZndDtodzsKJiM0MzsJaW50IHBzaXB2bXJfb2ZmOwomIzQzOwl1MzIgdmFsOwomIzQzOwomIzQzOwlpZiAoaXNfZW5ldGNfcmV2MShzaSkpCiYjNDM7CQlwc2lwdm1yX29mZiA9IEVORVRDX1BTSVBWTVI7CiYjNDM7CWVsc2UKJiM0MzsJCXBzaXB2bXJfb2ZmID0gRU5FVEM0X1BTSVBWTVI7CiYjNDM7CiYjNDM7CXZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIHBzaXB2bXJfb2ZmKTsKJiM0MzsKJiM0MzsJaWYgKHByb21pc2MpCiYjNDM7CQl2YWwgfD0gUFNJUFZNUl9TSV9WTEFOX1Aoc2lfaWQpOwomIzQzOwllbHNlCiYjNDM7CQl2YWwgJmFtcDs9IH5QU0lQVk1SX1NJX1ZMQU5fUChzaV9pZCk7CiYjNDM7CiYjNDM7CWVuZXRjX3BvcnRfd3IoaHcsIHBzaXB2bXJfb2ZmLCB2YWwpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXRfc2lfdmxhbl9wcm9taXNjKTsKJiM0MzsKIHZvaWQgZW5ldGNfcGZfbmV0ZGV2X3NldHVwKHN0cnVjdCBlbmV0Y19zaSAqc2ksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQkJICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzICpuZGV2X29wcykKIHsKQEAgLTI3NSw3ICYjNDM7MzgxLDggQEAgc3RhdGljIGJvb2wgZW5ldGNfcG9ydF9oYXNfcGNzKHN0cnVjdCBlbmV0Y19wZiAqcGYpCiAJcmV0dXJuIChwZi0mZ3Q7aWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkgfHwKIAkJcGYtJmd0O2lmX21vZGUgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCB8fAogCQlwZi0mZ3Q7aWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYIHx8Ci0JCXBmLSZndDtpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJKTsKJiM0MzsJCXBmLSZndDtpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJIHx8CiYjNDM7CQlwZi0mZ3Q7aWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpOwogfQogCiBpbnQgZW5ldGNfbWRpb2J1c19jcmVhdGUoc3RydWN0IGVuZXRjX3BmICpwZiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlKQpAQCAtMzE2LDI1ICYjNDM7NDIzLDQyIEBAIGludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsCiB7CiAJc3RydWN0IGVuZXRjX3BmICpwZiA9IGVuZXRjX3NpX3ByaXYocHJpdi0mZ3Q7c2kpOwogCXN0cnVjdCBwaHlsaW5rICpwaHlsaW5rOwomIzQzOwl1bnNpZ25lZCBsb25nIG1hY19jYXBzOwogCWludCBlcnI7CiAKIAlwZi0mZ3Q7cGh5bGlua19jb25maWcuZGV2ID0gJmFtcDtwcml2LSZndDtuZGV2LSZndDtkZXY7CiAJcGYtJmd0O3BoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjsKLQlwZi0mZ3Q7cGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRSB8Ci0JCU1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMCB8IE1BQ18yNTAwRkQ7CiAKIAlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLAogCQkgIHBmLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7Ci0JX19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSwKLQkJICBwZi0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwotCV9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYLAotCQkgIHBmLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7Ci0JX19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsCi0JCSAgcGYtJmd0O3BoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTsKLQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUksCi0JCSAgcGYtJmd0O3BoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTsKLQlwaHlfaW50ZXJmYWNlX3NldF9yZ21paShwZi0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwogCiYjNDM7CW1hY19jYXBzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFOwomIzQzOwlpZiAoIWVuZXRjX2lzX3BzZXVkb19tYWMocHJpdi0mZ3Q7c2kpKSB7CiYjNDM7CQltYWNfY2FwcyB8PSBNQUNfMTAgfCBNQUNfMTAwIHwgTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQ7CiYjNDM7CiYjNDM7CQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLAomIzQzOwkJCSAgcGYtJmd0O3BoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTsKJiM0MzsJCV9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYLAomIzQzOwkJCSAgcGYtJmd0O3BoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTsKJiM0MzsJCV9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLAomIzQzOwkJCSAgcGYtJmd0O3BoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTsKJiM0MzsJCV9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSSwKJiM0MzsJCQkgIHBmLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CiYjNDM7CQlpZiAoIWlzX2VuZXRjX3JldjEocHJpdi0mZ3Q7c2kpKSB7CiYjNDM7CQkJbWFjX2NhcHMgfD0gTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEOwomIzQzOwkJCV9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIsCiYjNDM7CQkJCSAgcGYtJmd0O3BoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXBoeV9pbnRlcmZhY2Vfc2V0X3JnbWlpKHBmLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQltYWNfY2FwcyB8PSBNQUNfMTBGRCB8IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEIHwKJiM0MzsJCQkgICAgTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEIHwgTUFDXzIwMDAwRkQgfAomIzQzOwkJCSAgICBNQUNfMjUwMDBGRDsKJiM0MzsJfQomIzQzOwomIzQzOwlwZi0mZ3Q7cGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IG1hY19jYXBzOwogCXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZSgmYW1wO3BmLSZndDtwaHlsaW5rX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShub2RlKSwKIAkJCQkgcGYtJmd0O2lmX21vZGUsIG9wcyk7CiAJaWYgKElTX0VSUihwaHlsaW5rKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oCmluZGV4IDU3ZDJlMGViZDJiMGJiLi44MjQzY2UwZGU1N2Y2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaApAQCAtMTcsNiAmIzQzOzE3LDExIEBAIHZvaWQgZW5ldGNfc2V0X2RlZmF1bHRfcnNzX2tleShzdHJ1Y3QgZW5ldGNfcGYgKnBmKTsKIGludCBlbmV0Y192bGFuX3J4X2FkZF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIF9fYmUxNiBwcm90LCB1MTYgdmlkKTsKIGludCBlbmV0Y192bGFuX3J4X2RlbF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIF9fYmUxNiBwcm90LCB1MTYgdmlkKTsKIGludCBlbmV0Y19pbml0X3NyaW92X3Jlc291cmNlcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKTsKJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV91Y19wcm9taXNjKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgYm9vbCBwcm9taXNjKTsKJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV9tY19wcm9taXNjKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgYm9vbCBwcm9taXNjKTsKJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIHU2NCBoYXNoKTsKJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIHU2NCBoYXNoKTsKJiM0Mzt2b2lkIGVuZXRjX3NldF9zaV92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCBib29sIHByb21pc2MpOwogCiBzdGF0aWMgaW5saW5lIHUxNiBlbmV0Y19nZXRfaXBfcmV2aXNpb24oc3RydWN0IGVuZXRjX2h3ICpodykKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19xb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19xb3MuYwppbmRleCA3YjE3YmNhMjRmMjYwZi4uMmFhMGZjYWFmY2QyM2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19xb3MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcW9zLmMKQEAgLTExMzUsNyAmIzQzOzExMzUsNiBAQCBzdGF0aWMgaW50IGVuZXRjX3BzZnBfcGFyc2VfY2xzZmxvd2VyKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsCiAJc3RydWN0IGZsb3dfYWN0aW9uX2VudHJ5ICplbnRyeTsKIAlzdHJ1Y3QgYWN0aW9uX2dhdGVfZW50cnkgKmU7CiAJdTggc2ZpX292ZXJ3cml0ZSA9IDA7Ci0JaW50IGVudHJpZXNfc2l6ZTsKIAlpbnQgaSwgZXJyOwogCiAJaWYgKGYtJmd0O2NvbW1vbi5jaGFpbl9pbmRleCAmZ3Q7PSBwcml2LSZndDtwc2ZwX2NhcC5tYXhfc3RyZWFtaWQpIHsKQEAgLTEyNDIsOCAmIzQzOzEyNDEsNyBAQCBzdGF0aWMgaW50IGVuZXRjX3BzZnBfcGFyc2VfY2xzZmxvd2VyKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsCiAJCWdvdG8gZnJlZV9maWx0ZXI7CiAJfQogCi0JZW50cmllc19zaXplID0gc3RydWN0X3NpemUoc2dpLCBlbnRyaWVzLCBlbnRyeWctJmd0O2dhdGUubnVtX2VudHJpZXMpOwotCXNnaSA9IGt6YWxsb2MoZW50cmllc19zaXplLCBHRlBfS0VSTkVMKTsKJiM0MzsJc2dpID0ga3phbGxvY19mbGV4KCpzZ2ksIGVudHJpZXMsIGVudHJ5Zy0mZ3Q7Z2F0ZS5udW1fZW50cmllcyk7CiAJaWYgKCFzZ2kpIHsKIAkJZXJyID0gLUVOT01FTTsKIAkJZ290byBmcmVlX2ZpbHRlcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmMKaW5kZXggOWNkYjBhNGQ2YmFmYjcuLjdkY2I0YTAyNDZmNTI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYwpAQCAtMzE3LDcgJiM0MzszMTcsMTQgQEAgc3RhdGljIGludCBlbmV0Y192Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAogCWVuZXRjX2dldF9zaV9jYXBzKHNpKTsKIAotCW5kZXYgPSBhbGxvY19ldGhlcmRldl9tcShzaXplb2YoKnByaXYpLCBFTkVUQ19NQVhfTlVNX1RYUVMpOwomIzQzOwkvKiBDdXJyZW50bHksIHRoZSBzdXBwb3J0ZWQgU29DcyBoYXZlIGEgbWF4IG9mIDYgQ1BVcyBhbmQgdGhlIFZGcwomIzQzOwkgKiBoYXZlIGxlc3MgdGhhbiA2IFJYL1RYIHJpbmdzLiBTbyBubyBpc3N1ZXMgZm9yIHRoZXNlIHN1cHBvcnRlZAomIzQzOwkgKiBTb0NzLCBidXQgZm9yIGZ1dHVyZSBTb0NzIHdoaWNoIGhhdmUgbW9yZSBDUFVzIG9yIG1vcmUgVFgvUlgKJiM0MzsJICogcmluZ3MsIGFsbCB0aGUgcmVsYXRlZCBsb2dpYyBuZWVkcyB0byBiZSBpbXByb3ZlZC4KJiM0MzsJICovCiYjNDM7CW5kZXYgPSBhbGxvY19ldGhlcmRldl9tcXMoc2l6ZW9mKCpwcml2KSwKJiM0MzsJCQkJICBtaW4oc2ktJmd0O251bV90eF9yaW5ncywgRU5FVENfTUFYX05VTV9UWFFTKSwKJiM0MzsJCQkJICBtaW4oc2ktJmd0O251bV9yeF9yaW5ncywgRU5FVENfTUFYX05VTV9UWFFTKSk7CiAJaWYgKCFuZGV2KSB7CiAJCWVyciA9IC1FTk9NRU07CiAJCWRldl9lcnIoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7bmV0ZGV2IGNyZWF0aW9uIGZhaWxlZFxuJiMzNDspOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mc2wvbnRtcC5oIGIvaW5jbHVkZS9saW51eC9mc2wvbnRtcC5oCmluZGV4IGQzYjZjNDc2YjkxYTJkLi43NjRlZjI4OTI2MDg1ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9mc2wvbnRtcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZnNsL250bXAuaApAQCAtNzUsOCAmIzQzOzc1LDEwIEBAIHN0cnVjdCBudG1wX3VzZXIgewogCS8qIE5UTVAgdGFibGUgYml0bWFwcyBmb3IgcmVzb3VyY2UgbWFuYWdlbWVudCAqLwogCXUzMiBldHRfYml0bWFwX3NpemU7CiAJdTMyIGVjdF9iaXRtYXBfc2l6ZTsKJiM0MzsJdTE2IG1hZnRfbnVtX2VudHJpZXM7CiAJdW5zaWduZWQgbG9uZyAqZXR0X2dpZF9iaXRtYXA7IC8qIG9ubHkgdmFsaWQgZm9yIHN3aXRjaCAqLwogCXVuc2lnbmVkIGxvbmcgKmVjdF9naWRfYml0bWFwOyAvKiBvbmx5IHZhbGlkIGZvciBzd2l0Y2ggKi8KJiM0MzsJdW5zaWduZWQgbG9uZyAqbWFmdF9laWRfYml0bWFwOyAvKiBvbmx5IHZhbGlkIGZvciBFTkVUQyAqLwogfTsKIAogc3RydWN0IG1hZnRfZW50cnlfZGF0YSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDkxCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnJlZXNjYWxlIEVORVRDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJIGhhdmUgYSBwYXRjaCBmb3IgdGhlIEZyZWVzY2FsZSBFTkVUQyBldGhlcm5ldCBkcml2ZXIuIEl0IHRvdWNoZXMgYSBzaWduaWZpY2FudCBjaHVuayBvZiB0aGUgZHJpdmVyOiBgZW5ldGMuaGAsIGBlbmV0YzRfZGVidWdmcy5jYCwgYGVuZXRjNF9ody5oYCwgYGVuZXRjNF9wZi5jYCwgYW5kIHNvIG9uLCBhbGwgdGhlIHdheSB0aHJvdWdoIHRvIGBudG1wLmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U/JiMzNDsgWWVzLCBpdCBhcHBlYXJzIHRvIGJlLiBNQUMgZmlsdGVyaW5nLCBSWCBtb2RlIHNldHRpbmdzLCBOVE1QIGJpdG1hcCBpbml0aWFsaXphdGlvbiwgYW5kIGxpbmsgdXAgbG9naWMgYXJlIGFsbCBiZWluZyBtb2RpZmllZC4gVGhhdCBzY3JlYW1zIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgbmV0d29yayBkcml2ZXIsIHdoaWNoIHJhaXNlcyBzb21lIHJlZCBmbGFncywgYnV0IGFsc28gcG90ZW50aWFsIHRhcmdldHMgZm9yIHRlc3RpbmcuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGhvdyByZWFjaGFibGUgaXMgdGhpcyBjb2RlPyBUaGUgZHJpdmVyIGlzIGBmcmVlc2NhbGUvZW5ldGNgLCBzbyBpdCYjMzk7cyBhIEZyZWVzY2FsZSAobm93IE5YUCkgRU5FVEMgZHJpdmVyLiBOZXR3b3JrIGRyaXZlcnMgYXJlIG9mdGVuIHRyaWNreSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEdlbmVyYWxseSwgaGFyZHdhcmUtc3BlY2lmaWMgZXRoZXJuZXQgZHJpdmVycyBhcmVuJiMzOTt0IHJlYWNoYWJsZSB1bmxlc3MgdGhlcmUmIzM5O3MgYW4gZW11bGF0b3IuIFRoZSBkcml2ZXImIzM5O3MgaGFyZHdhcmUtZGVwZW5kZW50IG5hdHVyZSBtZWFucyBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIGFjY2Vzc2liaWxpdHkuIFFFTVUgZG9lcyBoYXZlIHNvbWUgc3VwcG9ydCBmb3IgTlhQIGJvYXJkcywgYnV0IGRvZXMgaXQgZW11bGF0ZSBFTkVUQz8gSXQmIzM5O3MgYSBQQ0llIGRldmljZSwgc28gdGhhdCBtaWdodCBjb21wbGljYXRlIHRoaW5ncy4gSSBkb24mIzM5O3QgbmVlZCB0byBkZWZpbml0aXZlbHkga25vdyBpZiBRRU1VIGVtdWxhdGVzIGl0IHBlcmZlY3RseTsgaW5zdGVhZCwgSSBqdXN0IG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGxpa2VseSB0byBiZSByZWFjaGFibGUgaW4gc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMsIHN1Y2ggYXMgR0NFIG9yIGV2ZW4gUUVNVSB3aXRob3V0IHNwZWNpYWxpemVkIGhhcmR3YXJlIGVtdWxhdGlvbi4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zICYjMzQ7Y29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7IFRoaXMgaXMgZXhhY3RseSB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IuIFNvLCBpcyBFTkVUQyBlbXVsYXRlZCBpbiBRRU1VPyBMZXQmIzM5O3MgY2hlY2sgaWYgaXQmIzM5O3MgYSBQQ0kgZGV2aWNlIHdpdGhpbiBRRU1VJiMzOTtzIGZyYW1ld29yay4gU2luY2UgaXQgaXMgYSBQQ0llIGRldmljZSwgaXQmIzM5O3MgbGVzcyBsaWtlbHkgdG8gYmUgZW11bGF0ZWQuIFNlYXJjaGluZyBRRU1VJiMzOTtzIHNvdXJjZSBjb2RlLCBvciBqdXN0IGFzc3VtaW5nIGl0JiMzOTtzIG5vdCBjb21tb25seSBmdXp6ZWQsIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gV2FpdCwgc3l6a2FsbGVyIHByb2JhYmx5IGRvZXNuJiMzOTt0IGhhdmUgYW4gRU5FVEMgZW11bGF0b3IuIExldCYjMzk7cyBjaGVjay4gRG9lcyBzeXprYWxsZXIgaGF2ZSBhIGRlZmluaXRpb24/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5ldGMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg0NzEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLHhnZW5lLWVuZXQueWFtbD04OT1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FwbSx4Z2VuZS1lbmV0LnlhbWwtOTktICAgICAgICBwb3J0LWlkID0gXHUwMDNjMFx1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLHhnZW5lLWVuZXQueWFtbDoxMDA6ICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZtZW5ldGNsayAwXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hcG0seGdlbmUtZW5ldC55YW1sLTEwMS0gICAgICAgIGxvY2FsLW1hYy1hZGRyZXNzID0gWzAwIDAxIDczIDAwIDAwIDAxXTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FwbSx4Z2VuZS1tZGlvLXJnbWlpLnlhbWw9MzY9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hcG0seGdlbmUtbWRpby1yZ21paS55YW1sLTQyLSAgICAgICAgcmVnID0gXHUwMDNjMHgxNzAyMDAwMCAweGQxMDBcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FwbSx4Z2VuZS1tZGlvLXJnbWlpLnlhbWw6NDM6ICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZtZW5ldGNsayAwXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hcG0seGdlbmUtbWRpby1yZ21paS55YW1sLTQ0LVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWw9MTU9ZGVzY3JpcHRpb246IHxcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTM4LSAgICBUaGlzIGlzIGZvdW5kIGluIHRoZSBOWFAgTFMxMDI4QS4gSXQgaXMgYSBQQ0kgZGV2aWNlLCBwYXJ0IG9mIHRoZSBsYXJnZXJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWw6Mzk6ICAgIGVuZXRjIHJvb3QgY29tcGxleC4gQXMgYSByZXN1bHQsIHRoZSBldGhlcm5ldC1zd2l0Y2ggbm9kZSBpcyBhIHN1Yi1ub2RlIG9mXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTQwLSAgICB0aGUgUENJZSByb290IGNvbXBsZXggbm9kZSBhbmQgaXRzIFwmIzM0O3JlZ1wmIzM0OyBwcm9wZXJ0eSBjb25mb3JtcyB0byB0aGUgcGFyZW50XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbC00Mi1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWw6NDM6ICAgIElmIGFueSBleHRlcm5hbCBzd2l0Y2ggcG9ydCBpcyBlbmFibGVkLCB0aGUgZW5ldGMgUEYyIChlbmV0Y19wb3J0Mikgc2hvdWxkXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTQ0LSAgICBiZSBlbmFibGVkIGFzIHdlbGwuIFRoaXMgaXMgYmVjYXVzZSB0aGUgaW50ZXJuYWwgTURJTyBidXMgKGV4cG9zZWQgdGhyb3VnaFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbDo0NTogICAgRUEgQkFSIDApIHVzZWQgdG8gYWNjZXNzIHRoZSBNQUMgUENTIHJlZ2lzdGVycyB0cnVseSBiZWxvbmdzIHRvIHRoZSBlbmV0Y1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbC00Ni0gICAgcG9ydCAyIGFuZCBub3QgdG8gRmVsaXguXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbD05Mj1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTEzOS0gICAgICAgICAgICAgICAgICAgIHJlZyA9IFx1MDAzYzRcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sOjE0MDogICAgICAgICAgICAgICAgICAgIGV0aGVybmV0ID0gXHUwMDNjXHUwMDI2ZW5ldGNfcG9ydDJcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTE0MS0gICAgICAgICAgICAgICAgICAgIHBoeS1tb2RlID0gXCYjMzQ7aW50ZXJuYWxcJiMzNDs7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbC0xNTEtICAgICAgICAgICAgICAgICAgICByZWcgPSBcdTAwM2M1XHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbDoxNTI6ICAgICAgICAgICAgICAgICAgICBldGhlcm5ldCA9IFx1MDAzY1x1MDAyNmVuZXRjX3BvcnQzXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbC0xNTMtICAgICAgICAgICAgICAgICAgICBwaHktbW9kZSA9IFwmIzM0O2ludGVybmFsXCYjMzQ7O1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL254cCxuZXRjLXN3aXRjaC55YW1sPTgxPWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL254cCxuZXRjLXN3aXRjaC55YW1sLTExOS0gICAgICAgICAgICAgICAgICAgIHJlZyA9IFx1MDAzYzNcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9ueHAsbmV0Yy1zd2l0Y2gueWFtbDoxMjA6ICAgICAgICAgICAgICAgICAgICBldGhlcm5ldCA9IFx1MDAzY1x1MDAyNmVuZXRjM1x1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL254cCxuZXRjLXN3aXRjaC55YW1sLTEyMS0gICAgICAgICAgICAgICAgICAgIHBoeS1tb2RlID0gXCYjMzQ7aW50ZXJuYWxcJiMzNDs7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sLTMtLS0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWw6NDokaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sPTk9ZGVzY3JpcHRpb246XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWw6MTA6ICBUaGUgZnNsX2VuZXRjIGRyaXZlciBjYW4gcHJvYmUgb24gdGhlIEludGVncmF0ZWQgRW5kcG9pbnQgUmVnaXN0ZXIgQmxvY2ssXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWwtMTEtICB3aGljaCBwcmVjb25maWd1cmVzIHRoZSBGSUZPIGxpbWl0cyBmb3IgdGhlIEVORVRDIHBvcnRzLlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbD0xOT1wcm9wZXJ0aWVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbC0yMS0gICAgZW51bTpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbDoyMjogICAgICAtIGZzbCxsczEwMjhhLWVuZXRjLWllcmJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbC0yMy1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWw9MzM9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sLTM1LSAgICBlbmRwb2ludC1jb25maWdAZjA4MDAwMDAge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sOjM2OiAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O2ZzbCxsczEwMjhhLWVuZXRjLWllcmJcJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWwtMzctICAgICAgICByZWcgPSBcdTAwM2MweGYwODAwMDAwIDB4MTAwMDBcdTAwM2U7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sLTMtLS0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1tZGlvLnlhbWw6NDokaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sPTIxPXByb3BlcnRpZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sLTI2LSAgICAgICAgICAgICAgLSBwY2kxOTU3LGVlMDFcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbDoyNzogICAgICAgICAgLSBjb25zdDogZnNsLGVuZXRjLW1kaW9cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbC0yOC0gICAgICAtIGl0ZW1zOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbD00ND1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1tZGlvLnlhbWwtNTAtICAgICAgICBtZGlvQDAsMyB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1tZGlvLnlhbWw6NTE6ICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O3BjaTE5NTcsZWUwMVwmIzM0OywgXCYjMzQ7ZnNsLGVuZXRjLW1kaW9cJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1tZGlvLnlhbWwtNTItICAgICAgICAgICAgcmVnID0gXHUwMDNjMHgwMDAzMDAgMCAwIDAgMFx1MDAzZTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sLTMtLS0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sOjQ6JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZnNsLGVuZXRjLnlhbWwjXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbD0yMT1wcm9wZXJ0aWVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLnlhbWwtMjYtICAgICAgICAgICAgICAtIHBjaTE5NTcsZTEwMFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbDoyNzogICAgICAgICAgLSBjb25zdDogZnNsLGVuZXRjXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sLTI4LSAgICAgIC0gZW51bTpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sPTY5PWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLnlhbWwtNzUtICAgICAgICBldGhlcm5ldEAwLDAge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbDo3NjogICAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7cGNpMTk1NyxlMTAwXCYjMzQ7LCBcJiMzNDtmc2wsZW5ldGNcJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sLTc3LSAgICAgICAgICAgIHJlZyA9IFx1MDAzYzB4MDAwMDAwIDAgMCAwIDBcdTAwM2U7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9mc2wscHRwLnlhbWw9MTI9cHJvcGVydGllczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL2ZzbCxwdHAueWFtbC0yMC0gICAgICAgICAgLSBjb25zdDogcGNpMTk1NyxlZTAyXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL2ZzbCxwdHAueWFtbDoyMTogICAgICAgICAgLSBjb25zdDogZnNsLGVuZXRjLXB0cFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9mc2wscHRwLnlhbWwtMjItXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9mc2wscHRwLnlhbWw9MTI5PWFsbE9mOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvZnNsLHB0cC55YW1sLTEzMy0gICAgICAgICAgY29udGFpbnM6XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL2ZzbCxwdHAueWFtbDoxMzQ6ICAgICAgICAgICAgY29uc3Q6IGZzbCxlbmV0Yy1wdHBcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvZnNsLHB0cC55YW1sLTEzNS0gICAgdGhlbjpcbi0tXG5NQUlOVEFJTkVSUz0xMDMyNT1TOlx0TWFpbnRhaW5lZFxuTUFJTlRBSU5FUlM6MTAzMjY6RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjKi55YW1sXG5NQUlOVEFJTkVSUy0xMDMyNy1GOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsbmV0Yy1ibGstY3RybC55YW1sXG5NQUlOVEFJTkVSUzoxMDMyODpGOlx0ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL1xuTUFJTlRBSU5FUlM6MTAzMjk6RjpcdGluY2x1ZGUvbGludXgvZnNsL2VuZXRjX21kaW8uaFxuTUFJTlRBSU5FUlMtMTAzMzAtRjpcdGluY2x1ZGUvbGludXgvZnNsL25ldGNfZ2xvYmFsLmhcbi0tXG5NQUlOVEFJTkVSUz0xMDQzNj1GOlx0ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwcnRjKlxuTUFJTlRBSU5FUlM6MTA0Mzc6RjpcdGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wdHAuY1xuTUFJTlRBSU5FUlMtMTA0MzgtRjpcdGRyaXZlcnMvcHRwL3B0cF9xb3JpcS5jXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2k9MjE1PVx0XHRcdGV0aGNsazogZXRoY2xrIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaS0yMjctXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaToyMjg6XHRcdFx0bWVuZXRjbGs6IG1lbmV0Y2xrIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpLTIyOS1cdFx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDthcG0seGdlbmUtZGV2aWNlLWNsb2NrXCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpLTIzMy1cdFx0XHRcdHJlZy1uYW1lcyA9IFwmIzM0O2Nzci1yZWdcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaToyMzQ6XHRcdFx0XHRjbG9jay1vdXRwdXQtbmFtZXMgPSBcJiMzNDttZW5ldGNsa1wmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpLTIzNS1cdFx0XHR9O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpPTk3MT1cdFx0bWRpbzogbWRpb0AxNzAyMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2ktOTc1LVx0XHRcdHJlZyA9IFx1MDAzYzB4MCAweDE3MDIwMDAwIDB4MCAweGQxMDBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaTo5NzY6XHRcdFx0Y2xvY2tzID0gXHUwMDNjXHUwMDI2bWVuZXRjbGsgMFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpLTk3Ny1cdFx0fTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaT05Nzk9XHRcdG1lbmV0OiBldGhlcm5ldEAxNzAyMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2ktOTg3LVx0XHRcdGRtYS1jb2hlcmVudDtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpOjk4ODpcdFx0XHRjbG9ja3MgPSBcdTAwM2NcdTAwMjZtZW5ldGNsayAwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2ktOTg5LVx0XHRcdC8qIG1hYyBhZGRyZXNzIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIGJvb3Rsb2FkZXIgKi9cbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLWtib3gtYS0yMzAtbHMuZHRzPTMwPVx0XHRwb3dlci1sZWQge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtMzgtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLWtib3gtYS0yMzAtbHMuZHRzOjM5Olx1MDAyNmVuZXRjX21kaW9fcGYzIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtNDAtXHQvKiBCQ001NDE0MCBRU0dNSUkgcXVhZCBQSFkgKi9cbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLWtib3gtYS0yMzAtbHMuZHRzPTUzPVx0cXNnbWlpX3BoeTM6IGV0aGVybmV0LXBoeUAxMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1rYm94LWEtMjMwLWxzLmR0cy01Ny1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHM6NTg6XHUwMDI2ZW5ldGNfcG9ydDIge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1rYm94LWEtMjMwLWxzLmR0cy01OS1cdG52bWVtLWNlbGxzID0gXHUwMDNjXHUwMDI2YmFzZV9tYWNfYWRkcmVzcyAyXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtNjMtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLWtib3gtYS0yMzAtbHMuZHRzOjY0Olx1MDAyNmVuZXRjX3BvcnQzIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtNjUtXHRudm1lbS1jZWxscyA9IFx1MDAzY1x1MDAyNmJhc2VfbWFjX2FkZHJlc3MgM1x1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHM9MTk9LyB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzLTIzLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzOjI0Olx1MDAyNmVuZXRjX21kaW9fcGYzIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIxLmR0cy0yNS1cdC8qIERlbGV0ZSB1bnVzZWQgcGh5IG5vZGUgKi9cbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHM9NDM9XHRcdHZkZGg6IHZkZGgtcmVndWxhdG9yIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHMtNDgtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHM6NDk6XHUwMDI2ZW5ldGNfcG9ydDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzLTUwLVx0c3RhdHVzID0gXCYjMzQ7ZGlzYWJsZWRcJiMzNDs7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzLTU0LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzOjU1Olx1MDAyNmVuZXRjX3BvcnQxIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIxLmR0cy01Ni1cdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZwaHkwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0cz0xNT0vIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMi5kdHMtMTktXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMi5kdHM6MjA6XHUwMDI2ZW5ldGNfbWRpb19wZjMge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzLTIxLVx0cGh5MTogZXRoZXJuZXQtcGh5QDQge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0cy0yNy1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0czoyODpcdTAwMjZlbmV0Y19wb3J0MCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMi5kdHMtMjktXHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMi5kdHMtMzctXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMi5kdHM6Mzg6XHUwMDI2ZW5ldGNfcG9ydDIge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzLTM5LVx0bnZtZW0tY2VsbHMgPSBcdTAwM2NcdTAwMjZiYXNlX21hY19hZGRyZXNzIDJcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzLTQzLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzOjQ0Olx1MDAyNmVuZXRjX3BvcnQzIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0cy00NS1cdG52bWVtLWNlbGxzID0gXHUwMDNjXHUwMDI2YmFzZV9tYWNfYWRkcmVzcyAzXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXI0LmR0cz0xNj0vIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyNC5kdHMtMjAtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyNC5kdHM6MjE6XHUwMDI2ZW5ldGNfbWRpb19wZjMge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjQuZHRzLTIyLVx0cGh5MTogZXRoZXJuZXQtcGh5QDQge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXI0LmR0cz0zNz1cdFx0dmRkaDogdmRkaC1yZWd1bGF0b3Ige1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXI0LmR0cy00Mi1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXI0LmR0czo0MzpcdTAwMjZlbmV0Y19wb3J0MSB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyNC5kdHMtNDQtXHRwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2cGh5MVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjguZHRzPTc5PVx1MDAyNmR1YXJ0MSB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LmR0cy04Mi1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC5kdHM6ODM6XHUwMDI2ZW5ldGNfbWRpb19wZjMge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LmR0cy04NC1cdHBoeTA6IGV0aGVybmV0LXBoeUA1IHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjguZHRzLTkwLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LmR0czo5MTpcdTAwMjZlbmV0Y19wb3J0MCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjguZHRzLTkyLVx0cGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnBoeTBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTEzYmIuZHRzbz0xOT1cdHNsb3QxX3NnbWlpOiBldGhlcm5ldC1waHlAMiB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTEzYmIuZHRzby0yNS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy0xM2JiLmR0c286MjY6XHUwMDI2ZW5ldGNfcG9ydDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTEzYmIuZHRzby0yNy1cdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzbG90MV9zZ21paVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtNjViYi5kdHNvPTE4PVx0c2xvdDFfc2dtaWk6IGV0aGVybmV0LXBoeUAyIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtNjViYi5kdHNvLTI0LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTY1YmIuZHRzbzoyNTpcdTAwMjZlbmV0Y19wb3J0MCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtNjViYi5kdHNvLTI2LVx0cGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnNsb3QxX3NnbWlpXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy04NWJiLmR0c289MTg9XHRzbG90MV9zZ21paTogZXRoZXJuZXQtcGh5QDFjIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtODViYi5kdHNvLTIzLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTg1YmIuZHRzbzoyNDpcdTAwMjZlbmV0Y19wb3J0MCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtODViYi5kdHNvLTI1LVx0cGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnNsb3QxX3NnbWlpXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy04OTliLmR0c289MzE9XHRzbG90MV9zZ21paTM6IGV0aGVybmV0LXBoeUAxZiB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTg5OWIuZHRzby0zNS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy04OTliLmR0c286MzY6XHUwMDI2ZW5ldGNfcG9ydDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTg5OWIuZHRzby0zNy1cdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzbG90MV9zZ21paTBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLmR0cz05Mj1cdG1kaW8tbXV4IHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzLTk0LVx0XHRtdXgtY29udHJvbHMgPSBcdTAwM2NcdTAwMjZtdXggMFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHM6OTU6XHRcdG1kaW8tcGFyZW50LWJ1cyA9IFx1MDAzY1x1MDAyNmVuZXRjX21kaW9fcGYzXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLmR0cy05Ni1cdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHM9MjM0PVx1MDAyNmR1YXJ0MSB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLmR0cy0yMzctXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzOjIzODpcdTAwMjZlbmV0Y19wb3J0MSB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzLTIzOS1cdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZxZHNfcGh5MVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzLTI0My1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHM6MjQ0Olx1MDAyNmVuZXRjX3BvcnQyIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHMtMjQ1LVx0c3RhdHVzID0gXCYjMzQ7b2theVwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzPTM3MT1cdTAwMjZtc2NjX2ZlbGl4X3BvcnQ0IHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHM6MzcyOlx0ZXRoZXJuZXQgPSBcdTAwM2NcdTAwMjZlbmV0Y19wb3J0Mlx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHMtMzczLVx0c3RhdHVzID0gXCYjMzQ7b2theVwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzPTE4PVx0YWxpYXNlcyB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0yNS1cdFx0c3BpMCA9IFx1MDAyNmZzcGk7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjI2Olx0XHRldGhlcm5ldDAgPSBcdTAwMjZlbmV0Y19wb3J0MDtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHM6Mjc6XHRcdGV0aGVybmV0MSA9IFx1MDAyNmVuZXRjX3BvcnQyO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0yOC1cdFx0ZXRoZXJuZXQyID0gXHUwMDI2bXNjY19mZWxpeF9wb3J0MDtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTMzLVx0XHRldGhlcm5ldDcgPSBcdTAwMjZtc2NjX2ZlbGl4X3BvcnQ1O1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0czozNDpcdFx0ZXRoZXJuZXQ4ID0gXHUwMDI2ZW5ldGNfcG9ydDM7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTM1LVx0fTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzPTExOT1cdTAwMjZkdWFydDEge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHMtMTIyLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0czoxMjM6XHUwMDI2ZW5ldGNfbWRpb19wZjMge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0xMjQtXHRzZ21paV9waHkwOiBldGhlcm5ldC1waHlAMiB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cz0xNDE9XHRxc2dtaWlfcGh5MzogZXRoZXJuZXQtcGh5QDEzIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTE0NS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHM6MTQ2Olx1MDAyNmVuZXRjX3BvcnQwIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHMtMTQ3LVx0cGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnNnbWlpX3BoeTBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0xNTItXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjE1MzpcdTAwMjZlbmV0Y19wb3J0MiB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTE1NC1cdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0xNTYtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjE1NzpcdTAwMjZlbmV0Y19wb3J0MyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTE1OC1cdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaT0xNDE9XHRcdHFzZ21paS1yc3RuLWhvZyB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaS0xNDktXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpOjE1MDpcdTAwMjZlbmV0Y19tZGlvX3BmMyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpLTE1MS1cdG1kaW8wX3JnbWlpX3BoeTAwOiBldGhlcm5ldC1waHlAMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaT0xOTM9XHRxc2dtaWlfcGh5NDogZXRoZXJuZXQtcGh5QDFmIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpLTE5Ny1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2k6MTk4Olx1MDAyNmVuZXRjX3BvcnQwIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2ktMTk5LVx0cGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNm1kaW8wX3NnbWlpX3BoeTAzXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2ktMjA0LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaToyMDU6XHUwMDI2ZW5ldGNfcG9ydDEge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaS0yMDYtXHRwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2bWRpbzBfcmdtaWlfcGh5MDBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaS0yMTAtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpOjIxMTpcdTAwMjZlbmV0Y19wb3J0MiB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpLTIxMi1cdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaT0yNDQ9XHUwMDI2bXNjY19mZWxpeF9wb3J0NCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpOjI0NTpcdGV0aGVybmV0ID0gXHUwMDNjXHUwMDI2ZW5ldGNfcG9ydDJcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpLTI0Ni1cdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaT0xMDc0PVx0XHRwY2llQDFmMDAwMDAwMCB7IC8qIEludGVncmF0ZWQgRW5kcG9pbnQgUm9vdCBDb21wbGV4ICovXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTAzLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTA0Olx0XHRcdGVuZXRjX3BvcnQwOiBldGhlcm5ldEAwLDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTA1Olx0XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3BjaTE5NTcsZTEwMFwmIzM0OywgXCYjMzQ7ZnNsLGVuZXRjXCYjMzQ7O1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTA2LVx0XHRcdFx0cmVnID0gXHUwMDNjMHgwMDAwMDAgMCAwIDAgMFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTExMDktXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpOjExMTA6XHRcdFx0ZW5ldGNfcG9ydDE6IGV0aGVybmV0QDAsMSB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpOjExMTE6XHRcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7cGNpMTk1NyxlMTAwXCYjMzQ7LCBcJiMzNDtmc2wsZW5ldGNcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTExMTItXHRcdFx0XHRyZWcgPSBcdTAwM2MweDAwMDEwMCAwIDAgMCAwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTExNS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTExNjpcdFx0XHRlbmV0Y19wb3J0MjogZXRoZXJuZXRAMCwyIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTExNzpcdFx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtwY2kxOTU3LGUxMDBcJiMzNDssIFwmIzM0O2ZzbCxlbmV0Y1wmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTExOC1cdFx0XHRcdHJlZyA9IFx1MDAzYzB4MDAwMjAwIDAgMCAwIDBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaT0xMTIyPVx0XHRcdFx0Zml4ZWQtbGluayB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTI4LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTI5Olx0XHRcdGVuZXRjX21kaW9fcGYzOiBtZGlvQDAsMyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpOjExMzA6XHRcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7cGNpMTk1NyxlZTAxXCYjMzQ7LCBcJiMzNDtmc2wsZW5ldGMtbWRpb1wmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTEzMS1cdFx0XHRcdHJlZyA9IFx1MDAzYzB4MDAwMzAwIDAgMCAwIDBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaT0xMTM2PVx0XHRcdGV0aGVybmV0QDAsNCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpOjExMzc6XHRcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7cGNpMTk1NyxlZTAyXCYjMzQ7LCBcJiMzNDtmc2wsZW5ldGMtcHRwXCYjMzQ7O1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTM4LVx0XHRcdFx0cmVnID0gXHUwMDNjMHgwMDA0MDAgMCAwIDAgMFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTExNzY9XHRcdFx0XHRcdG1zY2NfZmVsaXhfcG9ydDQ6IHBvcnRANCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTc4LVx0XHRcdFx0XHRcdHBoeS1tb2RlID0gXCYjMzQ7aW50ZXJuYWxcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpOjExNzk6XHRcdFx0XHRcdFx0ZXRoZXJuZXQgPSBcdTAwM2NcdTAwMjZlbmV0Y19wb3J0Mlx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTE4MC1cdFx0XHRcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTExODk9XHRcdFx0XHRcdG1zY2NfZmVsaXhfcG9ydDU6IHBvcnRANSB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTkxLVx0XHRcdFx0XHRcdHBoeS1tb2RlID0gXCYjMzQ7aW50ZXJuYWxcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpOjExOTI6XHRcdFx0XHRcdFx0ZXRoZXJuZXQgPSBcdTAwM2NcdTAwMjZlbmV0Y19wb3J0M1x1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTE5My1cdFx0XHRcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTExOTU9XHRcdFx0XHRcdFx0Zml4ZWQtbGluayB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMjAzLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMjA0Olx0XHRcdGVuZXRjX3BvcnQzOiBldGhlcm5ldEAwLDYge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMjA1Olx0XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3BjaTE5NTcsZTEwMFwmIzM0OywgXCYjMzQ7ZnNsLGVuZXRjXCYjMzQ7O1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMjA2LVx0XHRcdFx0cmVnID0gXHUwMDNjMHgwMDA2MDAgMCAwIDAgMFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTEyMjU9XHRcdGllcmJAMWYwODAwMDAwIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTIyNjpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7ZnNsLGxzMTAyOGEtZW5ldGMtaWVyYlwmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTIyNy1cdFx0XHRyZWcgPSBcdTAwM2MweDAxIDB4ZjA4MDAwMDAgMHgwIDB4MTAwMDBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaT0xNDU3PVx0XHRcdG5ldGNfYnVzMDogcGNpZUA0Y2EwMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNDg1LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaToxNDg2Olx0XHRcdFx0ZW5ldGMzOiBldGhlcm5ldEAwLDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNDg3LVx0XHRcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7cGNpMTEzMSxlMTEwXCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k9MTUxMT1cdFx0XHRuZXRjX2J1czE6IHBjaWVANGNiMDAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2ktMTUzNS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k6MTUzNjpcdFx0XHRcdGVuZXRjMDogZXRoZXJuZXRAMCwwIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2ktMTUzNy1cdFx0XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3BjaTExMzEsZTEwMVwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NC5kdHNpPTE1NDg9XHRcdFx0XHRyY2VjQDEsMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNTUyLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaToxNTUzOlx0XHRcdFx0ZW5ldGMxOiBldGhlcm5ldEA4LDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNTU0LVx0XHRcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7cGNpMTEzMSxlMTAxXCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2ktMTU1OC1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k6MTU1OTpcdFx0XHRcdGVuZXRjMjogZXRoZXJuZXRAMTAsMCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NC5kdHNpLTE1NjAtXHRcdFx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtwY2kxMTMxLGUxMDFcJiMzNDs7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHM9MjI9XHRhbGlhc2VzIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzOjIzOlx0XHRldGhlcm5ldDAgPSBcdTAwMjZlbmV0YzM7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0czoyNDpcdFx0ZXRoZXJuZXQxID0gXHUwMDI2ZW5ldGMxO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHM6MjU6XHRcdGV0aGVybmV0MiA9IFx1MDAyNmVuZXRjMjtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzLTI2LVx0XHRpMmMyID0gXHUwMDI2bHBpMmMzO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzPTIwNz1cdG1lbW9yeUA4MDAwMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHMtMjEyLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHM6MjEzOlx1MDAyNmVuZXRjMSB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0cy0yMTQtXHRjbG9ja3MgPSBcdTAwM2NcdTAwMjZzY21pX2NsayBJTVg5NF9DTEtfTUFDNFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0cy0yMjItXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0czoyMjM6XHUwMDI2ZW5ldGMyIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzLTIyNC1cdGNsb2NrcyA9IFx1MDAzY1x1MDAyNnNjbWlfY2xrIElNWDk0X0NMS19NQUM1XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzLTIzMi1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzOjIzMzpcdTAwMjZlbmV0YzMge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHMtMjM0LVx0c3RhdHVzID0gXCYjMzQ7b2theVwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzPTIxPVx0YWxpYXNlcyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzOjIyOlx0XHRldGhlcm5ldDAgPSBcdTAwMjZlbmV0Y19wb3J0MDtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHMtMjMtXHRcdGdwaW8wID0gXHUwMDI2Z3BpbzE7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtYWIyLmR0cz0xNTk9XHRtZW1vcnlAODAwMDAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHMtMTY0LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtYWIyLmR0czoxNjU6XHUwMDI2ZW5ldGNfcG9ydDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtYWIyLmR0cy0xNjYtXHRwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2ZXRocGh5MFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHMtMTY3LVx0cGh5LW1vZGUgPSBcJiMzNDtyZ21paS1pZFwmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHM6MTY4Olx0cGluY3RybC0wID0gXHUwMDNjXHUwMDI2cGluY3RybF9lbmV0YzBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzLTE2OS1cdHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHM9Mzc2PVx0XHRcdElNWDk1X1BBRF9FTkVUMV9NRElPX19ORVRDTUlYX1RPUF9ORVRDX01ESU9cdFx0MHg5MGVcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzLTM3OS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHM6MzgwOlx0cGluY3RybF9lbmV0YzA6IGVuZXRjMGdycCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzLTM4MS1cdFx0ZnNsLHBpbnMgPSBcdTAwM2Ncbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzPTI4PVx0YWxpYXNlcyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzOjI5Olx0XHRldGhlcm5ldDAgPSBcdTAwMjZlbmV0Y19wb3J0MDtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM6MzA6XHRcdGV0aGVybmV0MSA9IFx1MDAyNmVuZXRjX3BvcnQxO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy0zMS1cdFx0Z3BpbzAgPSBcdTAwMjZncGlvMTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzPTI5NT1cdTAwMjZhZGMxIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTI5OS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM6MzAwOlx1MDAyNmVuZXRjX3BvcnQwIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtMzAxLVx0cGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNmV0aHBoeTBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTMwMi1cdHBoeS1tb2RlID0gXCYjMzQ7cmdtaWktaWRcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzOjMwMzpcdHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNnBpbmN0cmxfZW5ldGMwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy0zMDQtXHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTMwNy1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM6MzA4Olx1MDAyNmVuZXRjX3BvcnQxIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtMzA5LVx0cGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNmV0aHBoeTFcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTMxMC1cdHBoeS1tb2RlID0gXCYjMzQ7cmdtaWktaWRcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzOjMxMTpcdHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNnBpbmN0cmxfZW5ldGMxXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy0zMTItXHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0Oztcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzPTYwOT1cdFx0XHRJTVg5NV9QQURfRU5FVDJfTURJT19fTkVUQ01JWF9UT1BfTkVUQ19NRElPXHRcdDB4OTBlXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy02MTItXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzOjYxMzpcdHBpbmN0cmxfZW5ldGMwOiBlbmV0YzBncnAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy02MTQtXHRcdGZzbCxwaW5zID0gXHUwMDNjXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cz02MjY9XHRcdFx0SU1YOTVfUEFEX0VORVQxX1JEM19fTkVUQ01JWF9UT1BfRVRIMF9SR01JSV9SRDNcdFx0MHg1N2Vcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTYyOS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM6NjMwOlx0cGluY3RybF9lbmV0YzE6IGVuZXRjMWdycCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTYzMS1cdFx0ZnNsLHBpbnMgPSBcdTAwM2Ncbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cz0yND1cdGFsaWFzZXMge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM6MjU6XHRcdGV0aGVybmV0MCA9IFx1MDAyNmVuZXRjX3BvcnQwO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM6MjY6XHRcdGV0aGVybmV0MSA9IFx1MDAyNmVuZXRjX3BvcnQxO1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHMtMjctXHRcdGdwaW8wID0gXHUwMDI2Z3BpbzE7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM9MjYzPVx1MDAyNmFkYzEge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI2Ny1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzOjI2ODpcdTAwMjZlbmV0Y19wb3J0MCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy0yNjktXHRwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2ZXRocGh5MFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI3MC1cdHBoeS1tb2RlID0gXCYjMzQ7cmdtaWktaWRcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0czoyNzE6XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZwaW5jdHJsX2VuZXRjMFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI3Mi1cdHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI3NS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzOjI3NjpcdTAwMjZlbmV0Y19wb3J0MSB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy0yNzctXHRwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2ZXRocGh5MVx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI3OC1cdHBoeS1tb2RlID0gXCYjMzQ7cmdtaWktaWRcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0czoyNzk6XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZwaW5jdHJsX2VuZXRjMVx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI4MC1cdHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzPTYwNz1cdFx0XHRJTVg5NV9QQURfRU5FVDJfTURJT19fTkVUQ01JWF9UT1BfTkVUQ19NRElPXHRcdDB4OTBlXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHMtNjEwLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM6NjExOlx0cGluY3RybF9lbmV0YzA6IGVuZXRjMGdycCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy02MTItXHRcdGZzbCxwaW5zID0gXHUwMDNjXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM9NjI0PVx0XHRcdElNWDk1X1BBRF9FTkVUMV9SRDNfX05FVENNSVhfVE9QX0VUSDBfUkdNSUlfUkQzXHRcdDB4NTdlXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHMtNjI3LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM6NjI4Olx0cGluY3RybF9lbmV0YzE6IGVuZXRjMWdycCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy02MjktXHRcdGZzbCxwaW5zID0gXHUwMDNjXG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0cz0yNT1cdGFsaWFzZXMge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0czoyNjpcdFx0ZXRoZXJuZXQwID0gXHUwMDI2ZW5ldGNfcG9ydDA7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xOXgxOS1ldmsuZHRzLTI3LVx0XHRncGlvMCA9IFx1MDAyNmdwaW8xO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE5eDE5LWV2ay5kdHM9MjM4PVx1MDAyNmFkYzEge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE5eDE5LWV2ay5kdHMtMjQyLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0czoyNDM6XHUwMDI2ZW5ldGNfcG9ydDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0cy0yNDQtXHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE5eDE5LWV2ay5kdHM6MjQ1Olx0cGluY3RybC0wID0gXHUwMDNjXHUwMDI2cGluY3RybF9lbmV0YzBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xOXgxOS1ldmsuZHRzLTI0Ni1cdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZldGhwaHkwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE5eDE5LWV2ay5kdHM9NzEyPVx0XHRcdElNWDk1X1BBRF9FTkVUMV9NRElPX19ORVRDTUlYX1RPUF9ORVRDX01ESU9cdFx0MHg5MGVcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTc3MgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDM2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBFTkVUQyBEcml2ZXImIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgRU5FVEMgZHJpdmVyIOKAkyBpdCYjMzk7cyBOWFAmIzM5O3MgRXRoZXJuZXQgTmV0d29yayBDb250cm9sbGVyLCBmb3VuZCBvbiBzb21lIG9mIHRoZWlyIFN5c3RlbSBvbiBDaGlwcywgbGlrZSB0aGUgTFMxMDI4QSBhbmQgaS5NWDk1LiBUaGUgdGhpbmcgaXMsIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIGEgUENJZSBkZXZpY2UsIGl0JiMzOTtzIGludGVncmF0ZWQgaW50byB0aGUgU29DLCB3aGljaCBtZWFucyBteSB0eXBpY2FsIFFFTVUgYXBwcm9hY2ggbWlnaHQgbm90IHdvcmsuIEZpcnN0IHRob3VnaHQ6IGlzIHRoaXMgZXZlbiByZWFjaGFibGUgaW4gUUVNVT8gQW5kIHRoZSBhbnN3ZXIsIGFzIEkgZXhwZWN0ZWQsIGlzIG5vLiBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgRU5FVEMgZGlyZWN0bHkuCgpTbywgdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBmdXp6YWJpbGl0eS4gQXJlIHRoZXJlIEVORVRDIGZ1enplcnMgb3V0IHRoZXJlLCBvciBpcyB0aGlzIGVzc2VudGlhbGx5IGEgaGFyZHdhcmUgZHJpdmVyIHRoYXQmIzM5O3MgdXN1YWxseSBvbmx5IHRhcmdldGVkIHdpdGggc3BlY2lmaWMgZW11bGF0b3JzPyBJbiBteSBleHBlcmllbmNlLCB0aGVzZSBkcml2ZXJzIGFyZSByYXJlbHkgZnV6emVkICp1bmxlc3MqIHRoZXkmIzM5O3JlIGV4cGxpY2l0bHkgZW11bGF0ZWQsIG9yIHRoZXJl4oCZcyBhIGJlc3Bva2UgZnV6emVyLgoKQnV0IHRoZW4sIEkgbmVlZCB0byBjb25zaWRlciB0aGUgY29uc3RyYWludHMgaW4gdGhlIGluc3RydWN0aW9uczogdGhleSBzYWlkLCAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnPigKYmIzM0OyBhbmQgSSByZW1lbWJlciB0aGUga2V5IHBvaW50IGlzIGFib3V0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXMgRU5FVEMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBRRU1VPyBXZWxsLCB5ZWFoLCB1bmxlc3MgUUVNVSBlbXVsYXRlcyBpdCwgd2hpY2ggaXQgZG9lc24mIzM5O3QuIENhbiBJIGNvbmZpcm0/IEkgY2FuJiMzOTt0IGVhc2lseSBzZWFyY2ggUUVNVSBjb2RlIGhlcmUgZm9yICYjMzQ7ZW5ldGMmIzM0OyB0byBiZSBjZXJ0YWluLgoKSG93ZXZlciwgSSYjMzk7bSBub3cgdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyLiBEb2VzIHN5emthbGxlciBoYXZlIHN1cHBvcnQgZm9yIEVORVRDPyBUaGF0JiMzOTtzIGEgcmVhc29uYWJsZSBwbGFjZSB0byBjaGVjaywgYW5kIGl0IG1pZ2h0IGJlIG15IGJlc3QgYmV0IGZvciBhIHF1aWNrIGFuc3dlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VuZXRjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA1MTcKCQkJCQkJCW91dHB1dDogODMKCQkJCQkJCXRob3VnaHRzOiA4MjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIEVORVRDIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJIHNlZSB0aGUgZ3JlcHBlciB3YXMgbG9va2luZyBmb3IgYGVuZXRjYCB1bmRlciBgbmV0L2AsIGJ1dCB0aGUgcmVsZXZhbnQgY29kZSBpcyBhY3R1YWxseSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2AuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIHRoaXMgY29kZSBpcyBldmVuICpyZWFjaGFibGUqIGZvciBmdXp6aW5nLiBIYXJkd2FyZSBkcml2ZXJzLCBlc3BlY2lhbGx5IHRob3NlIGxpa2UgdGhpcywgYXJlIHR5cGljYWxseSBwcm9ibGVtYXRpYyBpbiBzdGFuZGFyZCBRRU1VIHNldHVwcywgdW5sZXNzIHRoZXJlJiMzOTtzIGFuIGVtdWxhdGVkIFBDSSBkZXZpY2Ugb3Igc2ltaWxhci4KCkxldCBtZSB0aGluay4uLiBpcyBFTkVUQyBlbXVsYXRlZD8gTXkga25vd2xlZGdlIG9mIFFFTVUmIzM5O3Mgc3VwcG9ydGVkIGRldmljZXMgaXMgcHJldHR5IGdvb2QuIEkga25vdyBpdCBoYW5kbGVzIHRoZSBlMTAwMCBmYW1pbHksIFJUTDgxMzksIFZpcnRJTywgVk1YTkVUMywgYW5kIGEgZmV3IG90aGVycy4gSSBuZWVkIHRvIGNoZWNrIHRoZSBQQ0kgSURzIOKAkyBGcmVlc2NhbGUgdXN1YWxseSB1c2VzIDB4MTk1Ny4gWWVzLCBhbmQgdGhlIGRldmljZSBJRHMgaW5jbHVkZSAweGUxMDAsIDB4ZWUwMSwgYW5kIHNvIG9uLiBCdXQgSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhbiBFTkVUQy1zcGVjaWZpYyBlbXVsYXRpb24uIEl0IGlzbiYjMzk7dCBhbW9uZyB0aGUgc3RhbmRhcmQgZW11bGF0ZWQgZGV2aWNlcy4KClRoZSB0ZXh0IGFsc28gbWVudGlvbnMgZW52aXJvbm1lbnRzIGxpa2UgR0NFLiBCYXNlZCBvbiBteSBleHBlcmllbmNlLCBFTkVUQywgYmVpbmcgYSBoYXJkd2FyZS1zcGVjaWZpYyBibG9jaywgaXMgdW5saWtlbHkgdG8gYmUgcmVhY2hhYmxlIGluIEdDRSBlaXRoZXIsIG9yIGluIGEgc3RhbmRhcmQgeDg2IFFFTVUgc2V0dXAuCgpBbHJpZ2h0LCB3aGF0IGFib3V0IGEgcGxhdGZvcm0gZGV2aWNlPyBJcyB0aGVyZSBzb21ldGhpbmcgdGhhdCAqaXNuJiMzOTt0KiBhIFBDSSBkZXZpY2UsIGJ1dCBzdGlsbCBoYXJkd2FyZSBkZXBlbmRlbnQ/IE5vLCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRoYXQgY29kZSB1bnJlYWNoYWJsZSBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uIChsaWtlIGB1c2IgZ2FkZ2V0YCBvciBgbWFjODAyMTFfaHdzaW1gKSBzaG91bGQgYmUgbWFya2VkIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgRU5FVEMgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIGFuIE5YUCBTb0MsIHN1Y2ggYXMgdGhlIExTMTAyOEEgb3IgaS5NWDk1LiBJdCYjMzk7cyBhIHJlYWwgaGFyZHdhcmUgYmxvY2s7IHRoZXJlJiMzOTtzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBsaWtlIHRoZXJlIGlzIGZvciBgbWFjODAyMTFfaHdzaW1gLgoKTGV0JiMzOTtzIGNvbmZpcm0gdGhhdC4gSSBkb24mIzM5O3QgcmVjYWxsIGV2ZXIgc2VlaW5nIGEgYG5ldGRldnNpbWAgb3Igc2ltaWxhciBtb2NrIGZvciBFTkVUQy4gTm8sIGl0JiMzOTtzIGEgcmVhbCBoYXJkd2FyZSBkcml2ZXIuCgpMZXQmIzM5O3MgcmV2aWV3IHRoZSBwcm9tcHQgYWdhaW46ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiAtIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7CgpHaXZlbiB0aGF0IGl0IG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZXRoZXJuZXQgZHJpdmVyIOKAkyBhbmQgaXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZGVzaWduZWQgZm9yIE5YUCBTb0NzIOKAkyBpdCYjMzk7cyBjbGVhcmx5ICpub3QqIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIE5vIHg4NiBRRU1VLCBubyBHQ0UgaW5zdGFuY2UgaXMgZ29pbmcgdG8gYmUgYWJsZSB0byBoaXQgdGhpcyBjb2RlLCBhdCBsZWFzdCBub3Qgd2l0aG91dCBzcGVjaWFsaXplZCBoYXJkd2FyZSBzZXR1cHMgb3IgZXh0cmVtZWx5IHNvcGhpc3RpY2F0ZWQgZW11bGF0aW9uLiBJIHNlZSBubyBgbmV0ZGV2c2ltYCBtb2NrLCBub3IgYSBzaW1pbGFyIHNvZnR3YXJlLWVtdWxhdGVkIGRyaXZlci4gVGhlcmVmb3JlLCBmdXp6aW5nIHRoaXMgY29kZSBpcyBlc3NlbnRpYWxseSBpbXBvc3NpYmxlIGluIHRob3NlIGVudmlyb25tZW50cy4KCkxldCBtZSBkb3VibGUtY2hlY2sgZm9yIHNvbWUgZWRnZSBjYXNlLiBBIFBDSSBzdHViIHBlcmhhcHM/IE5vcGUuIFBDSSBkcml2ZXJzIG5lZWQgdGhlIGFjdHVhbCBoYXJkd2FyZSwgb3IgYW4gZW11bGF0b3IsIHRvIGJlIHByb2JlZC4gV2l0aG91dCB0aGF0LCB0aGUgZHJpdmVyJiMzOTtzIGBwcm9iZWAgZnVuY3Rpb24gd2lsbCAqbmV2ZXIqIGJlIGNhbGxlZC4gVGhpcyBtZWFucyB0aGF0IG5vbmUgb2YgdGhlIG1vZGlmaWVkIGNvZGUg4oCTIGBlbmV0YzRfcGZfc2V0X3J4X21vZGVgLCBgZW5ldGNfcGZfc2V0X3J4X21vZGVgLCBgZW5ldGM0X3BmX3NldF9mZWF0dXJlc2AsIGV0Yy4g4oCTIHdpbGwgYmUgZXhlY3V0ZWQuCgpJJiMzOTttIGNvbmZpZGVudC4gVGhlIGFuYWx5c2lzIGlzIHRoYXQgYmVjYXVzZSBpdCBpcyBhbiBFTkVUQyBkcml2ZXIgc3BlY2lmaWMgdG8gTlhQIGhhcmR3YXJlLCBhbmQgbm90IGVtdWxhdGVkLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUsIGFuZCBzbyBJIHNob3VsZCBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgYW0gZ29pbmcgdG8gd3JpdGUgdGhlIGZvbGxvd2luZyByZWFzb25pbmc6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBoYXJkd2FyZS1zcGVjaWZpYyAoTlhQIFNvQ3MpIGFuZCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEVORVRDIGV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgaGFyZHdhcmUtc3BlY2lmaWMgdG8gTlhQIFNvQ3MuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEVORVRDIGV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgaGFyZHdhcmUtc3BlY2lmaWMgdG8gTlhQIFNvQ3MuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDY6NTQuMTU1NjkzMTY5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg2MzkxMzc2NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBoYXJkd2FyZS1zcGVjaWZpYyB0byBOWFAgU29Dcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA2OjU0LjE1NTY5OTYyOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY1NDQxOTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWI1N2U2ODdmMzNlMDc4Mzc5YTg5ZTJiMmZkNWNhM2I0NDcxZTEyM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCA3IDE2OjA2OjUyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmhcXG5pbmRleCAwNGE1ZGQ1ZWE2Yzc0Yy4uODgzOWNmYjQ5YmNmZTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaFxcbkBAIC0xLDUgKzEsNSBAQFxcbiAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjArIE9SIEJTRC0zLUNsYXVzZSkgKi9cXG4tLyogQ29weXJpZ2h0IDIwMTctMjAxOSBOWFAgKi9cXG4rLyogQ29weXJpZ2h0IDIwMTctMjAxOSwgMjAyNS0yMDI2IE5YUCAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RpbWVyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wY2kuaFxcdTAwM2VcXG5AQCAtMzI0LDggKzMyNCw2IEBAIHN0cnVjdCBlbmV0Y19zaSB7XFxuIFxcdGNvbnN0IHN0cnVjdCBlbmV0Y19kcnZkYXRhICpkcnZkYXRhO1xcbiBcXHRjb25zdCBzdHJ1Y3QgZW5ldGNfc2lfb3BzICpvcHM7XFxuIFxcbi1cXHRzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd29ya3F1ZXVlO1xcbi1cXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcnhfbW9kZV90YXNrO1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3Jvb3Q7XFxuIFxcdHN0cnVjdCBlbmV0Y19tc2dfc3diZCBtc2c7IC8qIE9ubHkgdmFsaWQgZm9yIFZTSSAqL1xcbiB9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfZGVidWdmcy5jXFxuaW5kZXggMWIxNTkxZGNlNzNkNGIuLjUwMjkwMzhiZjk5ZmFhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfZGVidWdmcy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9kZWJ1Z2ZzLmNcXG5AQCAtMjgsMTUgKzI4LDE0IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3Nob3dfc2lfbWFjX2hhc2hfZmlsdGVyKHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGkpXFxuIFxcbiBzdGF0aWMgaW50IGVuZXRjX21hY19maWx0ZXJfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuIHtcXG4tXFx0c3RydWN0IGVuZXRjX3NpICpzaSA9IHMtXFx1MDAzZXByaXZhdGU7XFxuLVxcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcXHUwMDI2c2ktXFx1MDAzZWh3O1xcbitcXHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihzLVxcdTAwM2Vwcml2YXRlKTtcXG4rXFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFxcdTAwMjZwZi1cXHUwMDNlc2ktXFx1MDAzZWh3O1xcbitcXHRpbnQgbnVtX3NpID0gcGYtXFx1MDAzZXRvdGFsX3ZmcyArIDE7XFxuIFxcdHN0cnVjdCBtYWZ0X2VudHJ5X2RhdGEgbWFmdDtcXG4tXFx0c3RydWN0IGVuZXRjX3BmICpwZjtcXG4tXFx0aW50IGksIGVyciwgbnVtX3NpO1xcbi1cXHR1MzIgdmFsO1xcbi1cXG4tXFx0cGYgPSBlbmV0Y19zaV9wcml2KHNpKTtcXG4tXFx0bnVtX3NpID0gcGYtXFx1MDAzZWNhcHMubnVtX3ZzaSArIDE7XFxuK1xcdHN0cnVjdCBudG1wX3VzZXIgKnVzZXI7XFxuK1xcdHUzMiB2YWwsIGVudHJ5X2lkO1xcbitcXHRpbnQgZXJyID0gMDtcXG4rXFx0aW50IGk7XFxuIFxcbiBcXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQzRfUFNJUE1NUik7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudW1fc2k7IGkrKykge1xcbkBAIC01MCwzMSArNDksMzggQEAgc3RhdGljIGludCBlbmV0Y19tYWNfZmlsdGVyX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnVtX3NpOyBpKyspXFxuIFxcdFxcdGVuZXRjX3Nob3dfc2lfbWFjX2hhc2hfZmlsdGVyKHMsIGkpO1xcbiBcXG4tXFx0aWYgKCFwZi1cXHUwMDNlbnVtX21mZSlcXG4tXFx0XFx0cmV0dXJuIDA7XFxuK1xcdHVzZXIgPSBcXHUwMDI2cGYtXFx1MDAzZXNpLVxcdTAwM2VudG1wX3VzZXI7XFxuK1xcdHJ0bmxfbG9jaygpO1xcbitcXG4rXFx0aWYgKGJpdG1hcF9lbXB0eSh1c2VyLVxcdTAwM2VtYWZ0X2VpZF9iaXRtYXAsIHVzZXItXFx1MDAzZW1hZnRfbnVtX2VudHJpZXMpKVxcbitcXHRcXHRnb3RvIHVubG9ja19ydG5sO1xcbiBcXG4gXFx0LyogTUFDIGFkZHJlc3MgZmlsdGVyIHRhYmxlICovXFxuIFxcdHNlcV9wdXRzKHMsIFxcXCJNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGVcXFxcblxcXCIpO1xcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGYtXFx1MDAzZW51bV9tZmU7IGkrKykge1xcbitcXHRmb3JfZWFjaF9zZXRfYml0KGVudHJ5X2lkLCB1c2VyLVxcdTAwM2VtYWZ0X2VpZF9iaXRtYXAsXFxuK1xcdFxcdFxcdCB1c2VyLVxcdTAwM2VtYWZ0X251bV9lbnRyaWVzKSB7XFxuIFxcdFxcdG1lbXNldChcXHUwMDI2bWFmdCwgMCwgc2l6ZW9mKG1hZnQpKTtcXG4tXFx0XFx0ZXJyID0gbnRtcF9tYWZ0X3F1ZXJ5X2VudHJ5KFxcdTAwMjZzaS1cXHUwMDNlbnRtcF91c2VyLCBpLCBcXHUwMDI2bWFmdCk7XFxuK1xcdFxcdGVyciA9IG50bXBfbWFmdF9xdWVyeV9lbnRyeSh1c2VyLCBlbnRyeV9pZCwgXFx1MDAyNm1hZnQpO1xcbiBcXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRcXHRnb3RvIHVubG9ja19ydG5sO1xcbiBcXG4tXFx0XFx0c2VxX3ByaW50ZihzLCBcXFwiRW50cnkgJWQsIE1BQzogJXBNLCBTSSBiaXRtYXA6IDB4JTA0eFxcXFxuXFxcIiwgaSxcXG4tXFx0XFx0XFx0ICAgbWFmdC5rZXllLm1hY19hZGRyLCBsZTE2X3RvX2NwdShtYWZ0LmNmZ2Uuc2lfYml0bWFwKSk7XFxuK1xcdFxcdHNlcV9wcmludGYocywgXFxcIkVudHJ5ICVkLCBNQUM6ICVwTSwgU0kgYml0bWFwOiAweCUwNHhcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgIGVudHJ5X2lkLCBtYWZ0LmtleWUubWFjX2FkZHIsXFxuK1xcdFxcdFxcdCAgIGxlMTZfdG9fY3B1KG1hZnQuY2ZnZS5zaV9iaXRtYXApKTtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0dXJuIDA7XFxuK3VubG9ja19ydG5sOlxcbitcXHRydG5sX3VubG9jaygpO1xcbitcXG4rXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBERUZJTkVfU0hPV19BVFRSSUJVVEUoZW5ldGNfbWFjX2ZpbHRlcik7XFxuIFxcbiB2b2lkIGVuZXRjX2NyZWF0ZV9kZWJ1Z2ZzKHN0cnVjdCBlbmV0Y19zaSAqc2kpXFxuIHtcXG4tXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBzaS1cXHUwMDNlbmRldjtcXG4gXFx0c3RydWN0IGRlbnRyeSAqcm9vdDtcXG4gXFxuLVxcdHJvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIobmV0ZGV2X25hbWUobmRldiksIE5VTEwpO1xcbitcXHRyb290ID0gZGVidWdmc19jcmVhdGVfZGlyKHBjaV9uYW1lKHNpLVxcdTAwM2VwZGV2KSwgTlVMTCk7XFxuIFxcdGlmIChJU19FUlIocm9vdCkpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaFxcbmluZGV4IGYxODQzNzU1NmEwZWUyLi4wOTAyNWU3YTJhM2FlZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2h3LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2h3LmhcXG5AQCAtNjksOCArNjksNiBAQFxcbiBcXG4gLyogUG9ydCBTdGF0aW9uIGludGVyZmFjZSBwcm9taXNjdW91cyBNQUMgbW9kZSByZWdpc3RlciAqL1xcbiAjZGVmaW5lIEVORVRDNF9QU0lQTU1SXFx0XFx0XFx0MHgyMDBcXG4tI2RlZmluZSAgUFNJUE1NUl9TSV9NQUNfVVAoYSlcXHRcXHRCSVQoYSkgLyogYSA9IFNJIGluZGV4ICovXFxuLSNkZWZpbmUgIFBTSVBNTVJfU0lfTUFDX01QKGEpXFx0XFx0QklUKChhKSArIDE2KVxcbiBcXG4gLyogUG9ydCBTdGF0aW9uIGludGVyZmFjZSBwcm9taXNjdW91cyBWTEFOIG1vZGUgcmVnaXN0ZXIgKi9cXG4gI2RlZmluZSBFTkVUQzRfUFNJUFZNUlxcdFxcdFxcdDB4MjA0XFxuQEAgLTEzNyw3ICsxMzUsNiBAQFxcbiAjZGVmaW5lIEVORVRDNF9QU0lWSEZSMShhKVxcdFxcdCgoYSkgKiAweDgwICsgMHgyMDY0KVxcbiBcXG4gI2RlZmluZSBFTkVUQzRfUE1DQVBSXFx0XFx0XFx0MHg0MDA0XFxuLSNkZWZpbmUgIFBNQ0FQUl9IRFxcdFxcdFxcdEJJVCg4KVxcbiAjZGVmaW5lICBQTUNBUFJfRlBcXHRcXHRcXHRHRU5NQVNLKDEwLCA5KVxcbiBcXG4gLyogUG9ydCBjYXBhYmlsaXR5IHJlZ2lzdGVyICovXFxuQEAgLTE1MCw3ICsxNDcsNyBAQFxcbiAjZGVmaW5lICBQQ1JfTDJET1NFXFx0XFx0XFx0QklUKDQpXFxuICNkZWZpbmUgIFBDUl9USU1FUl9DU1xcdFxcdFxcdEJJVCg4KVxcbiAjZGVmaW5lICBQQ1JfUFNQRUVEXFx0XFx0XFx0R0VOTUFTSygyOSwgMTYpXFxuLSNkZWZpbmUgIFBDUl9QU1BFRURfVkFMKHNwZWVkKVxcdFxcdCgoKHNwZWVkKSAvIDEwIC0gMSkgXFx1MDAzY1xcdTAwM2MgMTYpXFxuKyNkZWZpbmUgIFBDUl9QU1BFRURfVkFMKHMpXFx0XFx0RklFTERfUFJFUChQQ1JfUFNQRUVELCAoKHMpIC8gMTAgLSAxKSlcXG4gXFxuIC8qIFBvcnQgTUFDIGFkZHJlc3MgcmVnaXN0ZXIgMC8xICovXFxuICNkZWZpbmUgRU5FVEM0X1BNQVIwXFx0XFx0XFx0MHg0MDIwXFxuQEAgLTIwMCw3ICsxOTcsNiBAQFxcbiAjZGVmaW5lICBQTV9DTURfQ0ZHX0NOVF9GUk1fRU5cXHRcXHRCSVQoMTMpXFxuICNkZWZpbmUgIFBNX0NNRF9DRkdfVFhQXFx0XFx0XFx0QklUKDE1KVxcbiAjZGVmaW5lICBQTV9DTURfQ0ZHX1NFTkRfSURMRVxcdFxcdEJJVCgxNilcXG4tI2RlZmluZSAgUE1fQ01EX0NGR19IRF9GQ0VOXFx0XFx0QklUKDE4KVxcbiAjZGVmaW5lICBQTV9DTURfQ0ZHX1NGRFxcdFxcdFxcdEJJVCgyMSlcXG4gI2RlZmluZSAgUE1fQ01EX0NGR19UWF9GTFVTSFxcdFxcdEJJVCgyMilcXG4gI2RlZmluZSAgUE1fQ01EX0NGR19UWF9MT1dQX0VOXFx0XFx0QklUKDIzKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcXG5pbmRleCA0MzdhMTViYmI0N2JhOC4uZmNmYmFiYjI5ZDIyZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXFxuQEAgLTIzLDE4ICsyMywxMSBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfZ2V0X3BvcnRfY2FwcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbiBcXHR1MzIgdmFsO1xcbiBcXG4gXFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X0VDQVBSMSk7XFxuLVxcdHBmLVxcdTAwM2VjYXBzLm51bV92c2kgPSAodmFsIFxcdTAwMjYgRUNBUFIxX05VTV9WU0kpIFxcdTAwM2VcXHUwMDNlIDI0O1xcbiBcXHRwZi1cXHUwMDNlY2Fwcy5udW1fbXNpeCA9ICgodmFsIFxcdTAwMjYgRUNBUFIxX05VTV9NU0lYKSBcXHUwMDNlXFx1MDAzZSAxMikgKyAxO1xcbiBcXG4gXFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X0VDQVBSMik7XFxuIFxcdHBmLVxcdTAwM2VjYXBzLm51bV9yeF9iZHIgPSAodmFsIFxcdTAwMjYgRUNBUFIyX05VTV9SWF9CRFIpIFxcdTAwM2VcXHUwMDNlIDE2O1xcbiBcXHRwZi1cXHUwMDNlY2Fwcy5udW1fdHhfYmRyID0gdmFsIFxcdTAwMjYgRUNBUFIyX05VTV9UWF9CRFI7XFxuLVxcbi1cXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQzRfUE1DQVBSKTtcXG4tXFx0cGYtXFx1MDAzZWNhcHMuaGFsZl9kdXBsZXggPSAodmFsIFxcdTAwMjYgUE1DQVBSX0hEKSA/IDEgOiAwO1xcbi1cXG4tXFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSU1BRkNBUFIpO1xcbi1cXHRwZi1cXHUwMDNlY2Fwcy5tYWNfZmlsdGVyX251bSA9IHZhbCBcXHUwMDI2IFBTSU1BRkNBUFJfTlVNX01BQ19BRlRFO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBlbmV0YzRfZ2V0X3BzaV9od19mZWF0dXJlcyhzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxcbkBAIC03NSwzOCArNjgsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGZfZ2V0X3NpX3ByaW1hcnlfbWFjKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSxcXG4gXFx0cHV0X3VuYWxpZ25lZF9sZTE2KGxvd2VyLCBhZGRyICsgNCk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfc2lfbWFjX3Byb21pc2Moc3RydWN0IGVuZXRjX2h3ICpodywgaW50IHNpLFxcbi1cXHRcXHRcXHRcXHRcXHQgYm9vbCB1Y19wcm9taXNjLCBib29sIG1jX3Byb21pc2MpXFxuLXtcXG4tXFx0dTMyIHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lQTU1SKTtcXG4tXFxuLVxcdGlmICh1Y19wcm9taXNjKVxcbi1cXHRcXHR2YWwgfD0gUFNJUE1NUl9TSV9NQUNfVVAoc2kpO1xcbi1cXHRlbHNlXFxuLVxcdFxcdHZhbCBcXHUwMDI2PSB+UFNJUE1NUl9TSV9NQUNfVVAoc2kpO1xcbi1cXG4tXFx0aWYgKG1jX3Byb21pc2MpXFxuLVxcdFxcdHZhbCB8PSBQU0lQTU1SX1NJX01BQ19NUChzaSk7XFxuLVxcdGVsc2VcXG4tXFx0XFx0dmFsIFxcdTAwMjY9IH5QU0lQTU1SX1NJX01BQ19NUChzaSk7XFxuLVxcbi1cXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJUE1NUiwgdmFsKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksXFxuLVxcdFxcdFxcdFxcdFxcdCAgICB1NjQgaGFzaClcXG4te1xcbi1cXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJVU1IRlIwKHNpKSwgbG93ZXJfMzJfYml0cyhoYXNoKSk7XFxuLVxcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lVTUhGUjEoc2kpLCB1cHBlcl8zMl9iaXRzKGhhc2gpKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksXFxuLVxcdFxcdFxcdFxcdFxcdCAgICB1NjQgaGFzaClcXG4te1xcbi1cXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJTU1IRlIwKHNpKSwgbG93ZXJfMzJfYml0cyhoYXNoKSk7XFxuLVxcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lNTUhGUjEoc2kpLCB1cHBlcl8zMl9iaXRzKGhhc2gpKTtcXG4tfVxcbi1cXG4gc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9sb29wYmFjayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgYm9vbCBlbilcXG4ge1xcbiBcXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuQEAgLTEyNCwzNCArODUsNDcgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9sb29wYmFjayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgYm9vbCBlbilcXG4gXFxuIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMoc3RydWN0IGVuZXRjX3BmICpwZilcXG4ge1xcbi1cXHRpbnQgaTtcXG4rXFx0c3RydWN0IG50bXBfdXNlciAqdXNlciA9IFxcdTAwMjZwZi1cXHUwMDNlc2ktXFx1MDAzZW50bXBfdXNlcjtcXG4rXFx0dTMyIGVudHJ5X2lkO1xcbiBcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHBmLVxcdTAwM2VudW1fbWZlOyBpKyspXFxuLVxcdFxcdG50bXBfbWFmdF9kZWxldGVfZW50cnkoXFx1MDAyNnBmLVxcdTAwM2VzaS1cXHUwMDNlbnRtcF91c2VyLCBpKTtcXG4tXFxuLVxcdHBmLVxcdTAwM2VudW1fbWZlID0gMDtcXG4rXFx0Zm9yX2VhY2hfc2V0X2JpdChlbnRyeV9pZCwgdXNlci1cXHUwMDNlbWFmdF9laWRfYml0bWFwLFxcbitcXHRcXHRcXHQgdXNlci1cXHUwMDNlbWFmdF9udW1fZW50cmllcykge1xcbitcXHRcXHRpZiAoIW50bXBfbWFmdF9kZWxldGVfZW50cnkodXNlciwgZW50cnlfaWQpKVxcbitcXHRcXHRcXHRudG1wX2NsZWFyX2VpZF9iaXRtYXAodXNlci1cXHUwMDNlbWFmdF9laWRfYml0bWFwLCBlbnRyeV9pZCk7XFxuK1xcdH1cXG4gfVxcbiBcXG4gc3RhdGljIGludCBlbmV0YzRfcGZfYWRkX21hZnRfZW50cmllcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLFxcbi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZW5ldGNfbWFjX2FkZHIgKm1hYyxcXG4tXFx0XFx0XFx0XFx0ICAgICAgaW50IG1hY19jbnQpXFxuK1xcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YylcXG4ge1xcbitcXHRzdHJ1Y3QgbnRtcF91c2VyICp1c2VyID0gXFx1MDAyNnBmLVxcdTAwM2VzaS1cXHUwMDNlbnRtcF91c2VyO1xcbitcXHRpbnQgbWFjX2NudCA9IG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpO1xcbiBcXHRzdHJ1Y3QgbWFmdF9lbnRyeV9kYXRhIG1hZnQgPSB7fTtcXG4rXFx0c3RydWN0IG5ldGRldl9od19hZGRyICpoYTtcXG4rXFx0dTMyIGF2YWlsYWJsZV9lbnRyaWVzO1xcbiBcXHR1MTYgc2lfYml0ID0gQklUKDApO1xcbi1cXHRpbnQgaSwgZXJyO1xcbitcXHR1MzIgZW50cnlfaWQ7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRhdmFpbGFibGVfZW50cmllcyA9IHVzZXItXFx1MDAzZW1hZnRfbnVtX2VudHJpZXMgLVxcbitcXHRcXHRcXHQgICAgYml0bWFwX3dlaWdodCh1c2VyLVxcdTAwM2VtYWZ0X2VpZF9iaXRtYXAsXFxuK1xcdFxcdFxcdFxcdFxcdCAgdXNlci1cXHUwMDNlbWFmdF9udW1fZW50cmllcyk7XFxuK1xcbitcXHRpZiAobWFjX2NudCBcXHUwMDNlIGF2YWlsYWJsZV9lbnRyaWVzKVxcbitcXHRcXHRyZXR1cm4gLUVOT1NQQztcXG4gXFxuIFxcdG1hZnQuY2ZnZS5zaV9iaXRtYXAgPSBjcHVfdG9fbGUxNihzaV9iaXQpO1xcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbWFjX2NudDsgaSsrKSB7XFxuLVxcdFxcdGV0aGVyX2FkZHJfY29weShtYWZ0LmtleWUubWFjX2FkZHIsIG1hY1tpXS5hZGRyKTtcXG4tXFx0XFx0ZXJyID0gbnRtcF9tYWZ0X2FkZF9lbnRyeShcXHUwMDI2cGYtXFx1MDAzZXNpLVxcdTAwM2VudG1wX3VzZXIsIGksIFxcdTAwMjZtYWZ0KTtcXG4rXFx0bmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgdWMpIHtcXG4rXFx0XFx0ZW50cnlfaWQgPSBudG1wX2xvb2t1cF9mcmVlX2VpZCh1c2VyLVxcdTAwM2VtYWZ0X2VpZF9iaXRtYXAsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHVzZXItXFx1MDAzZW1hZnRfbnVtX2VudHJpZXMpO1xcbitcXHRcXHRldGhlcl9hZGRyX2NvcHkobWFmdC5rZXllLm1hY19hZGRyLCBoYS1cXHUwMDNlYWRkcik7XFxuK1xcdFxcdGVyciA9IG50bXBfbWFmdF9hZGRfZW50cnkodXNlciwgZW50cnlfaWQsIFxcdTAwMjZtYWZ0KTtcXG4gXFx0XFx0aWYgKHVubGlrZWx5KGVycikpIHtcXG4tXFx0XFx0XFx0cGYtXFx1MDAzZW51bV9tZmUgPSBpO1xcbitcXHRcXHRcXHRudG1wX2NsZWFyX2VpZF9iaXRtYXAodXNlci1cXHUwMDNlbWFmdF9laWRfYml0bWFwLCBlbnRyeV9pZCk7XFxuIFxcdFxcdFxcdGdvdG8gY2xlYXJfbWFmdF9lbnRyaWVzO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuLVxcdHBmLVxcdTAwM2VudW1fbWZlID0gbWFjX2NudDtcXG4tXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gY2xlYXJfbWFmdF9lbnRyaWVzOlxcbkBAIC0xNjAsOTcgKzEzNCw3MCBAQCBzdGF0aWMgaW50IGVuZXRjNF9wZl9hZGRfbWFmdF9lbnRyaWVzKHN0cnVjdCBlbmV0Y19wZiAqcGYsXFxuIFxcdHJldHVybiAgZXJyO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuK3N0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfdWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZixcXG4rXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YylcXG4ge1xcbi1cXHRpbnQgbWF4X251bV9tZmUgPSBwZi1cXHUwMDNlY2Fwcy5tYWNfZmlsdGVyX251bTtcXG4tXFx0c3RydWN0IGVuZXRjX21hY19maWx0ZXIgbWFjX2ZpbHRlciA9IHt9O1xcbi1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHBmLVxcdTAwM2VzaS1cXHUwMDNlbmRldjtcXG4tXFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFxcdTAwMjZwZi1cXHUwMDNlc2ktXFx1MDAzZWh3O1xcbi1cXHRzdHJ1Y3QgZW5ldGNfbWFjX2FkZHIgKm1hY190Ymw7XFxuK1xcdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICptYWNfZmlsdGVyID0gXFx1MDAyNnBmLVxcdTAwM2VtYWNfZmlsdGVyW1VDXTtcXG4gXFx0c3RydWN0IG5ldGRldl9od19hZGRyICpoYTtcXG4tXFx0aW50IGkgPSAwLCBlcnI7XFxuLVxcdGludCBtYWNfY250O1xcbitcXHR1NjQgaGFzaDtcXG4gXFxuLVxcdG5ldGlmX2FkZHJfbG9ja19iaChuZGV2KTtcXG4rXFx0ZW5ldGNfcmVzZXRfbWFjX2FkZHJfZmlsdGVyKG1hY19maWx0ZXIpO1xcbitcXHRuZXRkZXZfaHdfYWRkcl9saXN0X2Zvcl9lYWNoKGhhLCB1YylcXG4rXFx0XFx0ZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihtYWNfZmlsdGVyLCBoYS1cXHUwMDNlYWRkcik7XFxuK1xcbitcXHRiaXRtYXBfdG9fYXJyNjQoXFx1MDAyNmhhc2gsIG1hY19maWx0ZXItXFx1MDAzZW1hY19oYXNoX3RhYmxlLFxcbitcXHRcXHRcXHRFTkVUQ19NQUREUl9IQVNIX1RCTF9TWik7XFxuK1xcdGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihwZi1cXHUwMDNlc2ksIDAsIGhhc2gpO1xcbit9XFxuIFxcbi1cXHRtYWNfY250ID0gbmV0ZGV2X3VjX2NvdW50KG5kZXYpO1xcbi1cXHRpZiAoIW1hY19jbnQpIHtcXG4tXFx0XFx0bmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7XFxuK3N0YXRpYyBpbnQgZW5ldGM0X3BmX3NldF91Y19leGFjdF9maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZixcXG4rXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YylcXG4re1xcbitcXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcGYtXFx1MDAzZXNpO1xcbitcXHRpbnQgZXJyO1xcbitcXG4rXFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfZW1wdHkodWMpKSB7XFxuIFxcdFxcdC8qIGNsZWFyIGJvdGggTUFDIGhhc2ggYW5kIGV4YWN0IGZpbHRlcnMgKi9cXG4tXFx0XFx0ZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihodywgMCwgMCk7XFxuK1xcdFxcdGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7XFxuIFxcdFxcdGVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpO1xcbiBcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChtYWNfY250IFxcdTAwM2UgbWF4X251bV9tZmUpIHtcXG4tXFx0XFx0ZXJyID0gLUVOT1NQQztcXG4tXFx0XFx0Z290byB1bmxvY2tfbmV0aWZfYWRkcjtcXG4tXFx0fVxcbi1cXG4tXFx0bWFjX3RibCA9IGt6YWxsb2Nfb2JqcygqbWFjX3RibCwgbWFjX2NudCwgR0ZQX0FUT01JQyk7XFxuLVxcdGlmICghbWFjX3RibCkge1xcbi1cXHRcXHRlcnIgPSAtRU5PTUVNO1xcbi1cXHRcXHRnb3RvIHVubG9ja19uZXRpZl9hZGRyO1xcbi1cXHR9XFxuLVxcbi1cXHRuZXRkZXZfZm9yX2VhY2hfdWNfYWRkcihoYSwgbmRldikge1xcbi1cXHRcXHRlbmV0Y19hZGRfbWFjX2FkZHJfaHRfZmlsdGVyKFxcdTAwMjZtYWNfZmlsdGVyLCBoYS1cXHUwMDNlYWRkcik7XFxuLVxcdFxcdGV0aGVyX2FkZHJfY29weShtYWNfdGJsW2krK10uYWRkciwgaGEtXFx1MDAzZWFkZHIpO1xcbi1cXHR9XFxuLVxcbi1cXHRuZXRpZl9hZGRyX3VubG9ja19iaChuZGV2KTtcXG4tXFxuLVxcdC8qIFNldCB0ZW1wb3JhcnkgdW5pY2FzdCBoYXNoIGZpbHRlcnMgaW4gY2FzZSBvZiBSeCBsb3NzIHdoZW5cXG4rXFx0LyogU2V0IHRlbXBvcmFyeSB1bmljYXN0IGhhc2ggZmlsdGVyIGluIGNhc2Ugb2YgUnggbG9zcyB3aGVuXFxuIFxcdCAqIHVwZGF0aW5nIE1BQyBhZGRyZXNzIGZpbHRlciB0YWJsZVxcbiBcXHQgKi9cXG4tXFx0ZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihodywgMCwgKm1hY19maWx0ZXIubWFjX2hhc2hfdGFibGUpO1xcbitcXHRlbmV0YzRfcGZfc2V0X3VjX2hhc2hfZmlsdGVyKHBmLCB1Yyk7XFxuIFxcdGVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpO1xcbiBcXG4tXFx0aWYgKCFlbmV0YzRfcGZfYWRkX21hZnRfZW50cmllcyhwZiwgbWFjX3RibCwgaSkpXFxuLVxcdFxcdGVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApO1xcbi1cXG4tXFx0a2ZyZWUobWFjX3RibCk7XFxuLVxcbi1cXHRyZXR1cm4gMDtcXG4tXFxuLXVubG9ja19uZXRpZl9hZGRyOlxcbi1cXHRuZXRpZl9hZGRyX3VubG9ja19iaChuZGV2KTtcXG4rXFx0ZXJyID0gZW5ldGM0X3BmX2FkZF9tYWZ0X2VudHJpZXMocGYsIHVjKTtcXG4rXFx0aWYgKCFlcnIpIHtcXG4rXFx0XFx0ZW5ldGNfcmVzZXRfbWFjX2FkZHJfZmlsdGVyKFxcdTAwMjZwZi1cXHUwMDNlbWFjX2ZpbHRlcltVQ10pO1xcbitcXHRcXHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xcbitcXHR9XFxuIFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X21hY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgdHlwZSlcXG4rc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLFxcbitcXHRcXHRcXHRcXHRcXHQgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKm1jKVxcbiB7XFxuLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGYtXFx1MDAzZXNpLVxcdTAwM2VuZGV2O1xcbi1cXHRzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqbWFjX2ZpbHRlcjtcXG4tXFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFxcdTAwMjZwZi1cXHUwMDNlc2ktXFx1MDAzZWh3O1xcbitcXHRzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqbWFjX2ZpbHRlciA9IFxcdTAwMjZwZi1cXHUwMDNlbWFjX2ZpbHRlcltNQ107XFxuIFxcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XFxuK1xcdHU2NCBoYXNoO1xcbiBcXG4tXFx0bmV0aWZfYWRkcl9sb2NrX2JoKG5kZXYpO1xcbi1cXHRpZiAodHlwZSBcXHUwMDI2IEVORVRDX01BQ19GSUxURVJfVFlQRV9VQykge1xcbi1cXHRcXHRtYWNfZmlsdGVyID0gXFx1MDAyNnBmLVxcdTAwM2VtYWNfZmlsdGVyW1VDXTtcXG4tXFx0XFx0ZW5ldGNfcmVzZXRfbWFjX2FkZHJfZmlsdGVyKG1hY19maWx0ZXIpO1xcbi1cXHRcXHRuZXRkZXZfZm9yX2VhY2hfdWNfYWRkcihoYSwgbmRldilcXG4tXFx0XFx0XFx0ZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihtYWNfZmlsdGVyLCBoYS1cXHUwMDNlYWRkcik7XFxuLVxcbi1cXHRcXHRlbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKGh3LCAwLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQqbWFjX2ZpbHRlci1cXHUwMDNlbWFjX2hhc2hfdGFibGUpO1xcbi1cXHR9XFxuK1xcdGVuZXRjX3Jlc2V0X21hY19hZGRyX2ZpbHRlcihtYWNfZmlsdGVyKTtcXG4rXFx0bmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgbWMpXFxuK1xcdFxcdGVuZXRjX2FkZF9tYWNfYWRkcl9odF9maWx0ZXIobWFjX2ZpbHRlciwgaGEtXFx1MDAzZWFkZHIpO1xcbiBcXG4tXFx0aWYgKHR5cGUgXFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpIHtcXG4tXFx0XFx0bWFjX2ZpbHRlciA9IFxcdTAwMjZwZi1cXHUwMDNlbWFjX2ZpbHRlcltNQ107XFxuLVxcdFxcdGVuZXRjX3Jlc2V0X21hY19hZGRyX2ZpbHRlcihtYWNfZmlsdGVyKTtcXG4tXFx0XFx0bmV0ZGV2X2Zvcl9lYWNoX21jX2FkZHIoaGEsIG5kZXYpXFxuLVxcdFxcdFxcdGVuZXRjX2FkZF9tYWNfYWRkcl9odF9maWx0ZXIobWFjX2ZpbHRlciwgaGEtXFx1MDAzZWFkZHIpO1xcbi1cXG4tXFx0XFx0ZW5ldGM0X3BmX3NldF9zaV9tY19oYXNoX2ZpbHRlcihodywgMCxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0Km1hY19maWx0ZXItXFx1MDAzZW1hY19oYXNoX3RhYmxlKTtcXG4tXFx0fVxcbi1cXHRuZXRpZl9hZGRyX3VubG9ja19iaChuZGV2KTtcXG4rXFx0Yml0bWFwX3RvX2FycjY0KFxcdTAwMjZoYXNoLCBtYWNfZmlsdGVyLVxcdTAwM2VtYWNfaGFzaF90YWJsZSxcXG4rXFx0XFx0XFx0RU5FVENfTUFERFJfSEFTSF9UQkxfU1opO1xcbitcXHRlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIocGYtXFx1MDAzZXNpLCAwLCBoYXNoKTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tYWNfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCB0eXBlKVxcbitzdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHR5cGUsXFxuK1xcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLFxcbitcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYylcXG4ge1xcbiBcXHQvKiBDdXJyZW50bHksIHRoZSBNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGUgKE1BRlQpIG9ubHkgaGFzIDQgZW50cmllcyxcXG4gXFx0ICogYW5kIG11bHRpcGxlIG11bHRpY2FzdCBhZGRyZXNzZXMgZm9yIGZpbHRlcmluZyB3aWxsIGJlIGNvbmZpZ3VyZWRcXG5AQCAtMjU4LDE1ICsyMDUsMTYgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tYWNfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCB0eXBlKVxcbiBcXHQgKiB1bmljYXN0IGZpbHRlcmluZy4gSWYgdGhlIG51bWJlciBvZiB1bmljYXN0IGFkZHJlc3NlcyBleGNlZWRzIHRoZVxcbiBcXHQgKiB0YWJsZSBjYXBhY2l0eSwgdGhlIE1BQyBoYXNoIGZpbHRlciB3aWxsIGJlIHVzZWQuXFxuIFxcdCAqL1xcbi1cXHRpZiAodHlwZSBcXHUwMDI2IEVORVRDX01BQ19GSUxURVJfVFlQRV9VQyBcXHUwMDI2XFx1MDAyNiBlbmV0YzRfcGZfc2V0X3VjX2V4YWN0X2ZpbHRlcihwZikpIHtcXG4rXFx0aWYgKHR5cGUgXFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfVUMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHBmLCB1YykpIHtcXG4gXFx0XFx0LyogRmFsbCBiYWNrIHRvIHRoZSBNQUMgaGFzaCBmaWx0ZXIgKi9cXG4tXFx0XFx0ZW5ldGM0X3BmX3NldF9tYWNfaGFzaF9maWx0ZXIocGYsIEVORVRDX01BQ19GSUxURVJfVFlQRV9VQyk7XFxuK1xcdFxcdGVuZXRjNF9wZl9zZXRfdWNfaGFzaF9maWx0ZXIocGYsIHVjKTtcXG4gXFx0XFx0LyogQ2xlYXIgdGhlIG9sZCBNQUMgZXhhY3QgZmlsdGVyICovXFxuIFxcdFxcdGVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAodHlwZSBcXHUwMDI2IEVORVRDX01BQ19GSUxURVJfVFlQRV9NQylcXG4tXFx0XFx0ZW5ldGM0X3BmX3NldF9tYWNfaGFzaF9maWx0ZXIocGYsIEVORVRDX01BQ19GSUxURVJfVFlQRV9NQyk7XFxuK1xcdFxcdGVuZXRjNF9wZl9zZXRfbWNfaGFzaF9maWx0ZXIocGYsIG1jKTtcXG4gfVxcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBlbmV0Y19wZl9vcHMgZW5ldGM0X3BmX29wcyA9IHtcXG5AQCAtMzA2LDM0ICsyNTQsMzUgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbihzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbiB7XFxuIFxcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcXHUwMDI2cGYtXFx1MDAzZXNpLVxcdTAwM2VodztcXG4gXFx0dTMyIG51bV9yeF9iZHIsIG51bV90eF9iZHIsIHZhbDtcXG4rXFx0aW50IG51bV92ZnMgPSBwZi1cXHUwMDNldG90YWxfdmZzO1xcbiBcXHR1MzIgdmZfdHhfYmRyLCB2Zl9yeF9iZHI7XFxuIFxcdGludCBpLCByeF9yZW0sIHR4X3JlbTtcXG4gXFxuLVxcdGlmIChwZi1cXHUwMDNlY2Fwcy5udW1fcnhfYmRyIFxcdTAwM2MgRU5FVENfU0lfTUFYX1JJTkdfTlVNICsgcGYtXFx1MDAzZWNhcHMubnVtX3ZzaSlcXG4tXFx0XFx0bnVtX3J4X2JkciA9IHBmLVxcdTAwM2VjYXBzLm51bV9yeF9iZHIgLSBwZi1cXHUwMDNlY2Fwcy5udW1fdnNpO1xcbitcXHRpZiAocGYtXFx1MDAzZWNhcHMubnVtX3J4X2JkciBcXHUwMDNjIEVORVRDX1NJX01BWF9SSU5HX05VTSArIG51bV92ZnMpXFxuK1xcdFxcdG51bV9yeF9iZHIgPSBwZi1cXHUwMDNlY2Fwcy5udW1fcnhfYmRyIC0gbnVtX3ZmcztcXG4gXFx0ZWxzZVxcbiBcXHRcXHRudW1fcnhfYmRyID0gRU5FVENfU0lfTUFYX1JJTkdfTlVNO1xcbiBcXG4tXFx0aWYgKHBmLVxcdTAwM2VjYXBzLm51bV90eF9iZHIgXFx1MDAzYyBFTkVUQ19TSV9NQVhfUklOR19OVU0gKyBwZi1cXHUwMDNlY2Fwcy5udW1fdnNpKVxcbi1cXHRcXHRudW1fdHhfYmRyID0gcGYtXFx1MDAzZWNhcHMubnVtX3R4X2JkciAtIHBmLVxcdTAwM2VjYXBzLm51bV92c2k7XFxuK1xcdGlmIChwZi1cXHUwMDNlY2Fwcy5udW1fdHhfYmRyIFxcdTAwM2MgRU5FVENfU0lfTUFYX1JJTkdfTlVNICsgbnVtX3ZmcylcXG4rXFx0XFx0bnVtX3R4X2JkciA9IHBmLVxcdTAwM2VjYXBzLm51bV90eF9iZHIgLSBudW1fdmZzO1xcbiBcXHRlbHNlXFxuIFxcdFxcdG51bV90eF9iZHIgPSBFTkVUQ19TSV9NQVhfUklOR19OVU07XFxuIFxcbiBcXHR2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdChmYWxzZSwgbnVtX3R4X2JkciwgbnVtX3J4X2Jkcik7XFxuIFxcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMCgwKSwgdmFsKTtcXG4gXFxuLVxcdGlmICghcGYtXFx1MDAzZWNhcHMubnVtX3ZzaSlcXG4rXFx0aWYgKCFudW1fdmZzKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRudW1fcnhfYmRyID0gcGYtXFx1MDAzZWNhcHMubnVtX3J4X2JkciAtIG51bV9yeF9iZHI7XFxuLVxcdHJ4X3JlbSA9IG51bV9yeF9iZHIgJSBwZi1cXHUwMDNlY2Fwcy5udW1fdnNpO1xcbi1cXHRudW1fcnhfYmRyID0gbnVtX3J4X2JkciAvIHBmLVxcdTAwM2VjYXBzLm51bV92c2k7XFxuK1xcdHJ4X3JlbSA9IG51bV9yeF9iZHIgJSBudW1fdmZzO1xcbitcXHRudW1fcnhfYmRyID0gbnVtX3J4X2JkciAvIG51bV92ZnM7XFxuIFxcbiBcXHRudW1fdHhfYmRyID0gcGYtXFx1MDAzZWNhcHMubnVtX3R4X2JkciAtIG51bV90eF9iZHI7XFxuLVxcdHR4X3JlbSA9IG51bV90eF9iZHIgJSBwZi1cXHUwMDNlY2Fwcy5udW1fdnNpO1xcbi1cXHRudW1fdHhfYmRyID0gbnVtX3R4X2JkciAvIHBmLVxcdTAwM2VjYXBzLm51bV92c2k7XFxuK1xcdHR4X3JlbSA9IG51bV90eF9iZHIgJSBudW1fdmZzO1xcbitcXHRudW1fdHhfYmRyID0gbnVtX3R4X2JkciAvIG51bV92ZnM7XFxuIFxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGYtXFx1MDAzZWNhcHMubnVtX3ZzaTsgaSsrKSB7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudW1fdmZzOyBpKyspIHtcXG4gXFx0XFx0dmZfdHhfYmRyID0gKGkgXFx1MDAzYyB0eF9yZW0pID8gbnVtX3R4X2JkciArIDEgOiBudW1fdHhfYmRyO1xcbiBcXHRcXHR2Zl9yeF9iZHIgPSAoaSBcXHUwMDNjIHJ4X3JlbSkgPyBudW1fcnhfYmRyICsgMSA6IG51bV9yeF9iZHI7XFxuIFxcdFxcdHZhbCA9IGVuZXRjNF9wc2ljZmdyMF92YWxfY29uc3RydWN0KHRydWUsIHZmX3R4X2JkciwgdmZfcnhfYmRyKTtcXG5AQCAtMzQ2LDUzICsyOTUsNzAgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuIFxcdGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24ocGYpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksIGJvb2wgZW4pXFxuLXtcXG4tXFx0dTMyIHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lQVk1SKTtcXG4tXFxuLVxcdGlmIChlbilcXG4tXFx0XFx0dmFsIHw9IEJJVChzaSk7XFxuLVxcdGVsc2VcXG4tXFx0XFx0dmFsIFxcdTAwMjY9IH5CSVQoc2kpO1xcbi1cXG4tXFx0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSVBWTVIsIHZhbCk7XFxuLX1cXG4tXFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfZGVmYXVsdF9zaV92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX3BmICpwZilcXG4te1xcbi1cXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXFx1MDAyNnBmLVxcdTAwM2VzaS1cXHUwMDNlaHc7XFxuLVxcdGludCBudW1fc2kgPSBwZi1cXHUwMDNlY2Fwcy5udW1fdnNpICsgMTtcXG4tXFx0aW50IGk7XFxuLVxcbi1cXHQvKiBlbmZvcmNlIFZMQU4gcHJvbWlzY3VvdXMgbW9kZSBmb3IgYWxsIFNJcyAqL1xcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnVtX3NpOyBpKyspXFxuLVxcdFxcdGVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKGh3LCBpLCB0cnVlKTtcXG4tfVxcbi1cXG4gLyogQWxsb2NhdGUgdGhlIG51bWJlciBvZiBNU0ktWCB2ZWN0b3JzIGZvciBwZXIgU0kuICovXFxuIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfc2lfbXNpeF9udW0oc3RydWN0IGVuZXRjX3BmICpwZilcXG4ge1xcbitcXHRpbnQgdmFsaWRfbnVtX3NpID0gcGYtXFx1MDAzZXRvdGFsX3ZmcyArIDE7XFxuIFxcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcXHUwMDI2cGYtXFx1MDAzZXNpLVxcdTAwM2VodztcXG4tXFx0aW50IGksIG51bV9tc2l4LCB0b3RhbF9zaTtcXG4rXFx0aW50IGksIG51bV9tc2l4LCBudW1fdnNpO1xcbiBcXHR1MzIgdmFsO1xcbiBcXG4tXFx0dG90YWxfc2kgPSBwZi1cXHUwMDNlY2Fwcy5udW1fdnNpICsgMTtcXG4rXFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X0VDQVBSMSk7XFxuK1xcdG51bV92c2kgPSBGSUVMRF9HRVQoRUNBUFIxX05VTV9WU0ksIHZhbCk7XFxuK1xcbitcXHQvKiBUaGUgUFNJYUNGR1IyW05VTV9NU0lYXSBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBNU0ktWCBhbGxvY2F0ZWQgdG9cXG4rXFx0ICogdGhlIFNJIGlzIE5VTV9NU0lYICsgMSwgc28gdGhlIG1pbmltdW0gbnVtYmVyIG9mIE1TSS1YIGFsbG9jYXRlZCB0b1xcbitcXHQgKiBlYWNoIFNJIGlzIDEuIFRoZSB0b3RhbCBudW1iZXIgb2YgTVNJLVggYWxsb2NhdGVkIHRvIFBTSSBhbmQgVlNJc1xcbitcXHQgKiBjYW5ub3QgZXhjZWVkIHRoZSB0b3RhbCBudW1iZXIgb2YgTVNJLVggb3duZWQgYnkgdGhpcyBFTkVUQywgd2hpY2hcXG4rXFx0ICogaXMgRUNBUFIxW05VTV9NU0lYXS4gT3RoZXJ3aXNlLCB3aGVuIG11bHRpcGxlIEVORVRDIGluc3RhbmNlcyBleGlzdCxcXG4rXFx0ICogaXQgd2lsbCBhZmZlY3Qgb3RoZXIgRU5FVENzIHdob3NlIE1TSS1YIGludGVycnVwdHMgY2Fubm90IGJlXFxuK1xcdCAqIGdlbmVyYXRlZC4gVGhpcyBpcyBzaW1pbGFyIHRvIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzOiB0aGUgYXJyYXlcXG4rXFx0ICogaXRzZWxmIGlzIG5vdCBhZmZlY3RlZCwgYnV0IGFkamFjZW50IGFycmF5cyB3aWxsIGJlIGNvcnJ1cHRlZC5cXG4rXFx0ICpcXG4rXFx0ICogcGYtXFx1MDAzZXRvdGFsX3ZmcyBpcyAwIGlmIENPTkZJR19QQ0lfSU9WIGlzIGRpc2FibGVkLiBJZiB0aGUgaGFyZHdhcmVcXG4rXFx0ICogaXRzZWxmIHN1cHBvcnRzIFNSLUlPViwgdGhlbiB3aGVuIGFsbG9jYXRpbmcgdGhlIG51bWJlciBvZiBNU0lYcyB0b1xcbitcXHQgKiB0aGUgU0ksIGl0IG11c3QgYmUgdGFrZW4gaW50byBhY2NvdW50IHRoYXQgdGhlIFZTSSBoYXMgYXQgbGVhc3QgMVxcbitcXHQgKiBNU0lYLCBhbmQgdGhlIHRvdGFsIG51bWJlciBvZiBNU0lYcyBvZiBhbGwgU0lzIGNhbm5vdCBleGNlZWRcXG4rXFx0ICogRUNBUFIxW05VTV9NU0lYXS5cXG4rXFx0ICovXFxuK1xcdGlmICghcGYtXFx1MDAzZXRvdGFsX3ZmcyBcXHUwMDI2XFx1MDAyNiBudW1fdnNpKSB7XFxuK1xcdFxcdC8qIEJlY2F1c2UgZWFjaCBTSSBoYXMgYXQgbGVhc3Qgb25lIE1TSVgsIGFuZCBmcm9tIHRoZSBoYXJkd2FyZVxcbitcXHRcXHQgKiBwZXJzcGVjdGl2ZSwgcGYtXFx1MDAzZWNhcHMubnVtX21zaXggd2lsbCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuXFxuK1xcdFxcdCAqIG51bV92c2kuIFNvIG51bV9tc2l4IGlzIGFsd2F5cyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdG51bV9tc2l4ID0gcGYtXFx1MDAzZWNhcHMubnVtX21zaXggLSBudW1fdnNpIC0gMTtcXG4rXFx0XFx0aWYgKG51bV9tc2l4IFxcdTAwM2UgUFNJQ0ZHUjJfTlVNX01TSVgpXFxuK1xcdFxcdFxcdG51bV9tc2l4ID0gUFNJQ0ZHUjJfTlVNX01TSVg7XFxuK1xcdFxcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMigwKSwgbnVtX21zaXgpO1xcbiBcXG4tXFx0bnVtX21zaXggPSBwZi1cXHUwMDNlY2Fwcy5udW1fbXNpeCAvIHRvdGFsX3NpICtcXG4tXFx0XFx0ICAgcGYtXFx1MDAzZWNhcHMubnVtX21zaXggJSB0b3RhbF9zaSAtIDE7XFxuLVxcdHZhbCA9IG51bV9tc2l4IFxcdTAwMjYgUFNJQ0ZHUjJfTlVNX01TSVg7XFxuLVxcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMigwKSwgdmFsKTtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG51bV92c2k7IGkrKylcXG4rXFx0XFx0XFx0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSUNGR1IyKGkgKyAxKSwgMCk7XFxuIFxcbi1cXHRudW1fbXNpeCA9IHBmLVxcdTAwM2VjYXBzLm51bV9tc2l4IC8gdG90YWxfc2kgLSAxO1xcbi1cXHR2YWwgPSBudW1fbXNpeCBcXHUwMDI2IFBTSUNGR1IyX05VTV9NU0lYO1xcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGYtXFx1MDAzZWNhcHMubnVtX3ZzaTsgaSsrKVxcbi1cXHRcXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoaSArIDEpLCB2YWwpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdC8qIExpa2V3aXNlLCBmcm9tIHRoZSBoYXJkd2FyZSBwZXJzcGVjdGl2ZSBwZi1cXHUwMDNlY2Fwcy5udW1fbXNpeCBpcyBhbHdheXNcXG4rXFx0ICogZ3JlYXRlciB0aGFuIHZhbGlkX251bV9zaS4gU28gbnVtX21zaXggaXMgYWx3YXlzIGdyZWF0ZXIgdGhhbiBvclxcbitcXHQgKiBlcXVhbCB0byAwLlxcbitcXHQgKi9cXG4rXFx0bnVtX21zaXggPSBwZi1cXHUwMDNlY2Fwcy5udW1fbXNpeCAvIHZhbGlkX251bV9zaSArXFxuK1xcdFxcdCAgIHBmLVxcdTAwM2VjYXBzLm51bV9tc2l4ICUgdmFsaWRfbnVtX3NpIC0gMTtcXG4rXFx0aWYgKG51bV9tc2l4IFxcdTAwM2UgUFNJQ0ZHUjJfTlVNX01TSVgpXFxuK1xcdFxcdG51bV9tc2l4ID0gUFNJQ0ZHUjJfTlVNX01TSVg7XFxuK1xcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMigwKSwgbnVtX21zaXgpO1xcbitcXG4rXFx0bnVtX21zaXggPSBwZi1cXHUwMDNlY2Fwcy5udW1fbXNpeCAvIHZhbGlkX251bV9zaSAtIDE7XFxuK1xcdGlmIChudW1fbXNpeCBcXHUwMDNlIFBTSUNGR1IyX05VTV9NU0lYKVxcbitcXHRcXHRudW1fbXNpeCA9IFBTSUNGR1IyX05VTV9NU0lYO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHBmLVxcdTAwM2V0b3RhbF92ZnM7IGkrKylcXG4rXFx0XFx0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSUNGR1IyKGkgKyAxKSwgbnVtX21zaXgpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBlbmV0YzRfZW5hYmxlX2FsbF9zaShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbiB7XFxuIFxcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcXHUwMDI2cGYtXFx1MDAzZXNpLVxcdTAwM2VodztcXG4tXFx0aW50IG51bV9zaSA9IHBmLVxcdTAwM2VjYXBzLm51bV92c2kgKyAxO1xcbitcXHRpbnQgbnVtX3NpID0gcGYtXFx1MDAzZXRvdGFsX3ZmcyArIDE7XFxuIFxcdHUzMiBzaV9iaXRtYXAgPSAwO1xcbiBcXHRpbnQgaTtcXG4gXFxuQEAgLTQxMiw3ICszNzgsOSBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfY29uZmlndXJlX3BvcnRfc2koc3RydWN0IGVuZXRjX3BmICpwZilcXG4gXFx0LyogT3V0ZXIgVkxBTiB0YWcgd2lsbCBiZSB1c2VkIGZvciBWTEFOIGZpbHRlcmluZyAqL1xcbiBcXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJVkxBTkZNUiwgUFNJVkxBTkZNUl9WUyk7XFxuIFxcbi1cXHRlbmV0YzRfc2V0X2RlZmF1bHRfc2lfdmxhbl9wcm9taXNjKHBmKTtcXG4rXFx0LyogRW5mb3JjZSBWTEFOIHByb21pc2N1b3VzIG1vZGUgZm9yIGFsbCBTSXMgKi9cXG4rXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBwZi1cXHUwMDNldG90YWxfdmZzICsgMTsgaSsrKVxcbitcXHRcXHRlbmV0Y19zZXRfc2lfdmxhbl9wcm9taXNjKHBmLVxcdTAwM2VzaSwgaSwgdHJ1ZSk7XFxuIFxcbiBcXHQvKiBEaXNhYmxlIFNJIE1BQyBtdWx0aWNhc3QgXFx1MDAyNiB1bmljYXN0IHByb21pc2N1b3VzICovXFxuIFxcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lQTU1SLCAwKTtcXG5AQCAtNDUwLDE4ICs0MTgsNjAgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuIFxcdGVuZXRjX3NldF9kZWZhdWx0X3Jzc19rZXkocGYpO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBlbmV0YzRfZ2V0X250bXBfY2FwcyhzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxcbit7XFxuK1xcdHN0cnVjdCBudG1wX3VzZXIgKnVzZXIgPSBcXHUwMDI2c2ktXFx1MDAzZW50bXBfdXNlcjtcXG4rXFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFxcdTAwMjZzaS1cXHUwMDNlaHc7XFxuK1xcdHUzMiB2YWw7XFxuK1xcbitcXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQzRfUFNJTUFGQ0FQUik7XFxuK1xcdHVzZXItXFx1MDAzZW1hZnRfbnVtX2VudHJpZXMgPSBGSUVMRF9HRVQoUFNJTUFGQ0FQUl9OVU1fTUFDX0FGVEUsIHZhbCk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgZW5ldGM0X250bXBfYml0bWFwX2luaXQoc3RydWN0IG50bXBfdXNlciAqdXNlcilcXG4re1xcbitcXHR1c2VyLVxcdTAwM2VtYWZ0X2VpZF9iaXRtYXAgPSBiaXRtYXBfemFsbG9jKHVzZXItXFx1MDAzZW1hZnRfbnVtX2VudHJpZXMsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIEdGUF9LRVJORUwpO1xcbitcXHRpZiAoIXVzZXItXFx1MDAzZW1hZnRfZWlkX2JpdG1hcClcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgZW5ldGM0X250bXBfYml0bWFwX2ZyZWUoc3RydWN0IG50bXBfdXNlciAqdXNlcilcXG4re1xcbitcXHRiaXRtYXBfZnJlZSh1c2VyLVxcdTAwM2VtYWZ0X2VpZF9iaXRtYXApO1xcbitcXHR1c2VyLVxcdTAwM2VtYWZ0X2VpZF9iaXRtYXAgPSBOVUxMO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGVuZXRjNF9pbml0X250bXBfdXNlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxcbiB7XFxuIFxcdHN0cnVjdCBudG1wX3VzZXIgKnVzZXIgPSBcXHUwMDI2c2ktXFx1MDAzZW50bXBfdXNlcjtcXG4rXFx0aW50IGVycjtcXG4gXFxuIFxcdC8qIEZvciBFTkVUQyA0LjEsIGFsbCB0YWJsZSB2ZXJzaW9ucyBhcmUgMCAqL1xcbiBcXHRtZW1zZXQoXFx1MDAyNnVzZXItXFx1MDAzZXRibCwgMCwgc2l6ZW9mKHVzZXItXFx1MDAzZXRibCkpO1xcbiBcXG4tXFx0cmV0dXJuIGVuZXRjNF9zZXR1cF9jYmRyKHNpKTtcXG4rXFx0ZXJyID0gZW5ldGM0X3NldHVwX2NiZHIoc2kpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0ZW5ldGM0X2dldF9udG1wX2NhcHMoc2kpO1xcbitcXHRlcnIgPSBlbmV0YzRfbnRtcF9iaXRtYXBfaW5pdCh1c2VyKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byB0ZWFyZG93bl9jYmRyO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK1xcbit0ZWFyZG93bl9jYmRyOlxcbitcXHRlbmV0YzRfdGVhcmRvd25fY2JkcihzaSk7XFxuK1xcbitcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBlbmV0YzRfZnJlZV9udG1wX3VzZXIoc3RydWN0IGVuZXRjX3NpICpzaSlcXG4ge1xcbitcXHRlbmV0YzRfbnRtcF9iaXRtYXBfZnJlZShcXHUwMDI2c2ktXFx1MDAzZW50bXBfdXNlcik7XFxuIFxcdGVuZXRjNF90ZWFyZG93bl9jYmRyKHNpKTtcXG4gfVxcbiBcXG5AQCAtNDc5LDcgKzQ4OSw3IEBAIHN0YXRpYyBpbnQgZW5ldGM0X3BmX2luaXQoc3RydWN0IGVuZXRjX3BmICpwZilcXG4gXFxuIFxcdGVyciA9IGVuZXRjNF9pbml0X250bXBfdXNlcihwZi1cXHUwMDNlc2kpO1xcbiBcXHRpZiAoZXJyKSB7XFxuLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGluaXQgQ0JEUlxcXFxuXFxcIik7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGluaXQgTlRNUCB1c2VyXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0fVxcbiBcXG5AQCAtNDkzLDE4ICs1MDMsMTcgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BmX2ZyZWUoc3RydWN0IGVuZXRjX3BmICpwZilcXG4gXFx0ZW5ldGM0X2ZyZWVfbnRtcF91c2VyKHBmLVxcdTAwM2VzaSk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9wc2lfZG9fc2V0X3J4X21vZGUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbitzdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4rXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcXG4rXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYylcXG4ge1xcbi1cXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBlbmV0Y19zaSwgcnhfbW9kZV90YXNrKTtcXG4tXFx0c3RydWN0IGVuZXRjX3BmICpwZiA9IGVuZXRjX3NpX3ByaXYoc2kpO1xcbi1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHNpLVxcdTAwM2VuZGV2O1xcbi1cXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXFx1MDAyNnNpLVxcdTAwM2VodztcXG4rXFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbitcXHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihwcml2LVxcdTAwM2VzaSk7XFxuK1xcdHN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwcml2LVxcdTAwM2VzaTtcXG4gXFx0Ym9vbCB1Y19wcm9taXNjID0gZmFsc2U7XFxuIFxcdGJvb2wgbWNfcHJvbWlzYyA9IGZhbHNlO1xcbiBcXHRpbnQgdHlwZSA9IDA7XFxuIFxcbi1cXHRydG5sX2xvY2soKTtcXG4tXFxuIFxcdGlmIChuZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QUk9NSVNDKSB7XFxuIFxcdFxcdHVjX3Byb21pc2MgPSB0cnVlO1xcbiBcXHRcXHRtY19wcm9taXNjID0gdHJ1ZTtcXG5AQCAtNTE1LDI4ICs1MjQsMjEgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BzaV9kb19zZXRfcnhfbW9kZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdFxcdHR5cGUgPSBFTkVUQ19NQUNfRklMVEVSX1RZUEVfQUxMO1xcbiBcXHR9XFxuIFxcbi1cXHRlbmV0YzRfcGZfc2V0X3NpX21hY19wcm9taXNjKGh3LCAwLCB1Y19wcm9taXNjLCBtY19wcm9taXNjKTtcXG4rXFx0ZW5ldGNfc2V0X3NpX3VjX3Byb21pc2Moc2ksIDAsIHVjX3Byb21pc2MpO1xcbitcXHRlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhzaSwgMCwgbWNfcHJvbWlzYyk7XFxuIFxcbiBcXHRpZiAodWNfcHJvbWlzYykge1xcbi1cXHRcXHRlbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKGh3LCAwLCAwKTtcXG4rXFx0XFx0ZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTtcXG4gXFx0XFx0ZW5ldGM0X3BmX2NsZWFyX21hZnRfZW50cmllcyhwZik7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChtY19wcm9taXNjKVxcbi1cXHRcXHRlbmV0YzRfcGZfc2V0X3NpX21jX2hhc2hfZmlsdGVyKGh3LCAwLCAwKTtcXG4rXFx0XFx0ZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTtcXG4gXFxuIFxcdC8qIFNldCBuZXcgTUFDIGZpbHRlciAqL1xcbi1cXHRlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIocGYsIHR5cGUpO1xcbitcXHRlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIocGYsIHR5cGUsIHVjLCBtYyk7XFxuIFxcbi1cXHRydG5sX3VubG9jaygpO1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLXtcXG4tXFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbi1cXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcHJpdi1cXHUwMDNlc2k7XFxuLVxcbi1cXHRxdWV1ZV93b3JrKHNpLVxcdTAwM2V3b3JrcXVldWUsIFxcdTAwMjZzaS1cXHUwMDNlcnhfbW9kZV90YXNrKTtcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgZW5ldGM0X3BmX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5AQCAtNTQ0LDEyICs1NDYsMTEgQEAgc3RhdGljIGludCBlbmV0YzRfcGZfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiB7XFxuIFxcdG5ldGRldl9mZWF0dXJlc190IGNoYW5nZWQgPSBuZGV2LVxcdTAwM2VmZWF0dXJlcyBeIGZlYXR1cmVzO1xcbiBcXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuLVxcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcXHUwMDI2cHJpdi1cXHUwMDNlc2ktXFx1MDAzZWh3O1xcbiBcXG4gXFx0aWYgKGNoYW5nZWQgXFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19GSUxURVIpIHtcXG4gXFx0XFx0Ym9vbCBwcm9taXNjX2VuID0gIShmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUik7XFxuIFxcbi1cXHRcXHRlbmV0YzRfcGZfc2V0X3NpX3ZsYW5fcHJvbWlzYyhodywgMCwgcHJvbWlzY19lbik7XFxuK1xcdFxcdGVuZXRjX3NldF9zaV92bGFuX3Byb21pc2MocHJpdi1cXHUwMDNlc2ksIDAsIHByb21pc2NfZW4pO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY2hhbmdlZCBcXHUwMDI2IE5FVElGX0ZfTE9PUEJBQ0spXFxuQEAgLTU2Niw3ICs1NjcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVuZXRjNF9uZGV2X29wcyA9IHtcXG4gXFx0Lm5kb19zdGFydF94bWl0XFx0XFx0PSBlbmV0Y194bWl0LFxcbiBcXHQubmRvX2dldF9zdGF0c1xcdFxcdD0gZW5ldGNfZ2V0X3N0YXRzLFxcbiBcXHQubmRvX3NldF9tYWNfYWRkcmVzc1xcdD0gZW5ldGNfcGZfc2V0X21hY19hZGRyLFxcbi1cXHQubmRvX3NldF9yeF9tb2RlXFx0PSBlbmV0YzRfcGZfc2V0X3J4X21vZGUsXFxuK1xcdC5uZG9fc2V0X3J4X21vZGVfYXN5bmNcXHQ9IGVuZXRjNF9wZl9zZXRfcnhfbW9kZSxcXG4gXFx0Lm5kb19zZXRfZmVhdHVyZXNcXHQ9IGVuZXRjNF9wZl9zZXRfZmVhdHVyZXMsXFxuIFxcdC5uZG9fdmxhbl9yeF9hZGRfdmlkXFx0PSBlbmV0Y192bGFuX3J4X2FkZF92aWQsXFxuIFxcdC5uZG9fdmxhbl9yeF9raWxsX3ZpZFxcdD0gZW5ldGNfdmxhbl9yeF9kZWxfdmlkLFxcbkBAIC02MDIsMTEgKzYwMyw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9tYWNfY29uZmlnKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHVuc2lnbmVkIGludCBtb2RlLFxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOlxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOlxcbiBcXHRcXHR2YWwgfD0gSUZNT0RFX1JHTUlJO1xcbi1cXHRcXHQvKiBXZSBuZWVkIHRvIGVuYWJsZSBhdXRvLW5lZ290aWF0aW9uIGZvciB0aGUgTUFDXFxuLVxcdFxcdCAqIGlmIGl0cyBSR01JSSBpbnRlcmZhY2Ugc3VwcG9ydCBJbi1CYW5kIHN0YXR1cy5cXG4tXFx0XFx0ICovXFxuLVxcdFxcdGlmIChwaHlsaW5rX2F1dG9uZWdfaW5iYW5kKG1vZGUpKVxcbi1cXHRcXHRcXHR2YWwgfD0gUE1fSUZfTU9ERV9FTkE7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJOlxcbiBcXHRcXHR2YWwgfD0gSUZNT0RFX1JNSUk7XFxuQEAgLTYxNiw3ICs2MTIsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfbWFjX2NvbmZpZyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG4gXFx0XFx0dmFsIHw9IElGTU9ERV9TR01JSTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSOlxcbi1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9YR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcXG4gXFx0XFx0dmFsIHw9IElGTU9ERV9YR01JSTtcXG4gXFx0XFx0YnJlYWs7XFxuQEAgLTY0MiwyNiArNjM3LDE5IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfcG9ydF9zcGVlZChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBpbnQgc3BlZWQpXFxuIFxcdHUzMiBvbGRfc3BlZWQgPSBwcml2LVxcdTAwM2VzcGVlZDtcXG4gXFx0dTMyIHZhbDtcXG4gXFxuK1xcdC8qIElmIHRoZSBzcGVlZCBpcyB1bmtub3duLCB1c2UgdGhlIG1pbmltdW0gdmFsdWUgKi9cXG4rXFx0aWYgKHNwZWVkID09IFNQRUVEX1VOS05PV04pIHtcXG4rXFx0XFx0c3BlZWQgPSBTUEVFRF8xMDtcXG4rXFx0XFx0ZGV2X3dhcm4ocHJpdi1cXHUwMDNlZGV2LCBcXFwiU3BlZWQgdW5rbm93biwgZGVmYXVsdCBpcyAxME1icHNcXFxcblxcXCIpO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoc3BlZWQgPT0gb2xkX3NwZWVkKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHR2YWwgPSBlbmV0Y19wb3J0X3JkKFxcdTAwMjZwcml2LVxcdTAwM2VzaS1cXHUwMDNlaHcsIEVORVRDNF9QQ1IpO1xcbi1cXHR2YWwgXFx1MDAyNj0gflBDUl9QU1BFRUQ7XFxuLVxcbi1cXHRzd2l0Y2ggKHNwZWVkKSB7XFxuLVxcdGNhc2UgU1BFRURfMTAwOlxcbi1cXHRjYXNlIFNQRUVEXzEwMDA6XFxuLVxcdGNhc2UgU1BFRURfMjUwMDpcXG4tXFx0Y2FzZSBTUEVFRF8xMDAwMDpcXG4tXFx0XFx0dmFsIHw9IChQQ1JfUFNQRUVEIFxcdTAwMjYgUENSX1BTUEVFRF9WQUwoc3BlZWQpKTtcXG4tXFx0XFx0YnJlYWs7XFxuLVxcdGNhc2UgU1BFRURfMTA6XFxuLVxcdGRlZmF1bHQ6XFxuLVxcdFxcdHZhbCB8PSAoUENSX1BTUEVFRCBcXHUwMDI2IFBDUl9QU1BFRURfVkFMKFNQRUVEXzEwKSk7XFxuLVxcdH1cXG4tXFxuLVxcdHByaXYtXFx1MDAzZXNwZWVkID0gc3BlZWQ7XFxuK1xcdHZhbCA9IGVuZXRjX3BvcnRfcmQoXFx1MDAyNnByaXYtXFx1MDAzZXNpLVxcdTAwM2VodywgRU5FVEM0X1BDUikgXFx1MDAyNiAoflBDUl9QU1BFRUQpO1xcbitcXHR2YWwgfD0gUENSX1BTUEVFRF9WQUwoc3BlZWQpO1xcbiBcXHRlbmV0Y19wb3J0X3dyKFxcdTAwMjZwcml2LVxcdTAwM2VzaS1cXHUwMDNlaHcsIEVORVRDNF9QQ1IsIHZhbCk7XFxuK1xcdHByaXYtXFx1MDAzZXNwZWVkID0gc3BlZWQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfcmdtaWlfbWFjKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBzcGVlZCwgaW50IGR1cGxleClcXG5AQCAtNzE3LDIyICs3MDUsNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3JtaWlfbWFjKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBzcGVlZCwgaW50IGR1cGxleClcXG4gXFx0ZW5ldGNfcG9ydF9tYWNfd3Ioc2ksIEVORVRDNF9QTV9JRl9NT0RFKDApLCB2YWwpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBlbmV0YzRfc2V0X2hkX2Zsb3dfY29udHJvbChzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBib29sIGVuYWJsZSlcXG4te1xcbi1cXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcGYtXFx1MDAzZXNpO1xcbi1cXHR1MzIgb2xkX3ZhbCwgdmFsO1xcbi1cXG4tXFx0aWYgKCFwZi1cXHUwMDNlY2Fwcy5oYWxmX2R1cGxleClcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXG4tXFx0b2xkX3ZhbCA9IGVuZXRjX3BvcnRfbWFjX3JkKHNpLCBFTkVUQzRfUE1fQ01EX0NGRygwKSk7XFxuLVxcdHZhbCA9IHUzMl9yZXBsYWNlX2JpdHMob2xkX3ZhbCwgZW5hYmxlID8gMSA6IDAsIFBNX0NNRF9DRkdfSERfRkNFTik7XFxuLVxcdGlmICh2YWwgPT0gb2xkX3ZhbClcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXG4tXFx0ZW5ldGNfcG9ydF9tYWNfd3Ioc2ksIEVORVRDNF9QTV9DTURfQ0ZHKDApLCB2YWwpO1xcbi19XFxuLVxcbiBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3J4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGJvb2wgcnhfcGF1c2UpXFxuIHtcXG4gXFx0c3RydWN0IGVuZXRjX3NpICpzaSA9IHBmLVxcdTAwM2VzaTtcXG5AQCAtOTA4LDEzICs4ODAsMTEgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BsX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbiBcXHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gcGh5bGlua190b19lbmV0Y19wZihjb25maWcpO1xcbiBcXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcGYtXFx1MDAzZXNpO1xcbiBcXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2O1xcbi1cXHRib29sIGhkX2ZjID0gZmFsc2U7XFxuIFxcbiBcXHRwcml2ID0gbmV0ZGV2X3ByaXYoc2ktXFx1MDAzZW5kZXYpO1xcbiBcXHRlbmV0YzRfc2V0X3BvcnRfc3BlZWQocHJpdiwgc3BlZWQpO1xcbiBcXG4tXFx0aWYgKCFwaHlsaW5rX2F1dG9uZWdfaW5iYW5kKG1vZGUpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBwaHlfaW50ZXJmYWNlX21vZGVfaXNfcmdtaWkoaW50ZXJmYWNlKSlcXG4rXFx0aWYgKHBoeV9pbnRlcmZhY2VfbW9kZV9pc19yZ21paShpbnRlcmZhY2UpKVxcbiBcXHRcXHRlbmV0YzRfc2V0X3JnbWlpX21hYyhwZiwgc3BlZWQsIGR1cGxleCk7XFxuIFxcbiBcXHRpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJKVxcbkBAIC05MjYsMTggKzg5Niw4IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wbF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmIChwcml2LVxcdTAwM2VhY3RpdmVfb2ZmbG9hZHMgXFx1MDAyNiBFTkVUQ19GX1FCVSlcXG4gXFx0XFx0XFx0dHhfcGF1c2UgPSBmYWxzZTtcXG4tXFx0fSBlbHNlIHsgLyogRFVQTEVYX0hBTEYgKi9cXG4tXFx0XFx0aWYgKHR4X3BhdXNlIHx8IHJ4X3BhdXNlKVxcbi1cXHRcXHRcXHRoZF9mYyA9IHRydWU7XFxuLVxcbi1cXHRcXHQvKiBBcyBwZXIgODAyLjMgYW5uZXggMzFCLCBQQVVTRSBmcmFtZXMgYXJlIG9ubHkgc3VwcG9ydGVkXFxuLVxcdFxcdCAqIHdoZW4gdGhlIGxpbmsgaXMgY29uZmlndXJlZCBmb3IgZnVsbCBkdXBsZXggb3BlcmF0aW9uLlxcbi1cXHRcXHQgKi9cXG4tXFx0XFx0dHhfcGF1c2UgPSBmYWxzZTtcXG4tXFx0XFx0cnhfcGF1c2UgPSBmYWxzZTtcXG4gXFx0fVxcbiBcXG4tXFx0ZW5ldGM0X3NldF9oZF9mbG93X2NvbnRyb2wocGYsIGhkX2ZjKTtcXG4gXFx0ZW5ldGM0X3NldF90eF9wYXVzZShwZiwgcHJpdi1cXHUwMDNlbnVtX3J4X3JpbmdzLCB0eF9wYXVzZSk7XFxuIFxcdGVuZXRjNF9zZXRfcnhfcGF1c2UocGYsIHJ4X3BhdXNlKTtcXG4gXFx0ZW5ldGM0X21hY190eF9lbmFibGUocGYpO1xcbkBAIC0xMDA5LDE5ICs5NjksNiBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfbGlua19kZWluaXQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdilcXG4gXFx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBlbmV0YzRfcHNpX3dxX3Rhc2tfaW5pdChzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxcbi17XFxuLVxcdGNoYXIgd3FfbmFtZVsyNF07XFxuLVxcbi1cXHRJTklUX1dPUksoXFx1MDAyNnNpLVxcdTAwM2VyeF9tb2RlX3Rhc2ssIGVuZXRjNF9wc2lfZG9fc2V0X3J4X21vZGUpO1xcbi1cXHRzbnByaW50Zih3cV9uYW1lLCBzaXplb2Yod3FfbmFtZSksIFxcXCJlbmV0Yy0lc1xcXCIsIHBjaV9uYW1lKHNpLVxcdTAwM2VwZGV2KSk7XFxuLVxcdHNpLVxcdTAwM2V3b3JrcXVldWUgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSh3cV9uYW1lKTtcXG4tXFx0aWYgKCFzaS1cXHUwMDNld29ya3F1ZXVlKVxcbi1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tXFxuLVxcdHJldHVybiAwO1xcbi19XFxuLVxcbiBzdGF0aWMgaW50IGVuZXRjNF9wZl9uZXRkZXZfY3JlYXRlKHN0cnVjdCBlbmV0Y19zaSAqc2kpXFxuIHtcXG4gXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnNpLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXY7XFxuQEAgLTEwNjIsMTIgKzEwMDksNiBAQCBzdGF0aWMgaW50IGVuZXRjNF9wZl9uZXRkZXZfY3JlYXRlKHN0cnVjdCBlbmV0Y19zaSAqc2kpXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyX2xpbmtfaW5pdDtcXG4gXFxuLVxcdGVyciA9IGVuZXRjNF9wc2lfd3FfdGFza19pbml0KHNpKTtcXG4tXFx0aWYgKGVycikge1xcbi1cXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBpbml0IHdvcmtxdWV1ZVxcXFxuXFxcIik7XFxuLVxcdFxcdGdvdG8gZXJyX3dxX2luaXQ7XFxuLVxcdH1cXG4tXFxuIFxcdGVyciA9IHJlZ2lzdGVyX25ldGRldihuZGV2KTtcXG4gXFx0aWYgKGVycikge1xcbiBcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBuZXRkZXZcXFxcblxcXCIpO1xcbkBAIC0xMDc3LDggKzEwMTgsNiBAQCBzdGF0aWMgaW50IGVuZXRjNF9wZl9uZXRkZXZfY3JlYXRlKHN0cnVjdCBlbmV0Y19zaSAqc2kpXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gZXJyX3JlZ19uZXRkZXY6XFxuLVxcdGRlc3Ryb3lfd29ya3F1ZXVlKHNpLVxcdTAwM2V3b3JrcXVldWUpO1xcbi1lcnJfd3FfaW5pdDpcXG4gXFx0ZW5ldGM0X2xpbmtfZGVpbml0KHByaXYpO1xcbiBlcnJfbGlua19pbml0OlxcbiBcXHRlbmV0Y19mcmVlX21zaXgocHJpdik7XFxuQEAgLTEwOTYsOCArMTAzNSw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9uZXRkZXZfZGVzdHJveShzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHNpLVxcdTAwM2VuZGV2O1xcbiBcXG4gXFx0dW5yZWdpc3Rlcl9uZXRkZXYobmRldik7XFxuLVxcdGNhbmNlbF93b3JrKFxcdTAwMjZzaS1cXHUwMDNlcnhfbW9kZV90YXNrKTtcXG4tXFx0ZGVzdHJveV93b3JrcXVldWUoc2ktXFx1MDAzZXdvcmtxdWV1ZSk7XFxuIFxcdGVuZXRjNF9saW5rX2RlaW5pdChwcml2KTtcXG4gXFx0ZW5ldGNfZnJlZV9tc2l4KHByaXYpO1xcbiBcXHRmcmVlX25ldGRldihuZGV2KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmNcXG5pbmRleCA3MWYzNzZlZjFiZTFjOS4uMDdiNzgzMmYyNDI3NmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmNcXG5AQCAtMjksNyArMjksNyBAQCBzdGF0aWMgY29uc3QgdTMyIGVuZXRjX3J4YmRyX3JlZ3NbXSA9IHtcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCB1MzIgZW5ldGNfcG9ydF9yZWdzW10gPSB7XFxuLVxcdEVORVRDX1BNUiwgRU5FVENfUFNSLCBFTkVUQ19QU0lQTVIsIEVORVRDX1BTSVBNQVIwKDApLFxcbitcXHRFTkVUQ19QTVIsIEVORVRDX1BTUiwgRU5FVENfUFNJUE1NUiwgRU5FVENfUFNJUE1BUjAoMCksXFxuIFxcdEVORVRDX1BTSVBNQVIxKDApLCBFTkVUQ19QVFhNQkFSLCBFTkVUQ19QQ0FQUjAsIEVORVRDX1BDQVBSMSxcXG4gXFx0RU5FVENfUFNJQ0ZHUjAoMCksIEVORVRDX1BSRlNDQVBSLCBFTkVUQ19QVENNU0RVUigwKSxcXG4gXFx0RU5FVENfUE0wX0NNRF9DRkcsIEVORVRDX1BNMF9NQVhGUk0sIEVORVRDX1BNMF9JRl9NT0RFXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmhcXG5pbmRleCBiZjk5YjY1ZDc1OThhYi4uMTZkYTczMmRjNWRlODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfaHcuaFxcbkBAIC0xODAsMTMgKzE4MCwxMyBAQCBlbnVtIGVuZXRjX2Jkcl90eXBlIHtUWCwgUlh9O1xcbiAjZGVmaW5lIEVORVRDX1BNUl9QU1BFRURfMTAwME1cXHRCSVQoOSlcXG4gI2RlZmluZSBFTkVUQ19QTVJfUFNQRUVEXzI1MDBNXFx0QklUKDEwKVxcbiAjZGVmaW5lIEVORVRDX1BTUlxcdFxcdDB4MDAwNCAvKiBSTyAqL1xcbi0jZGVmaW5lIEVORVRDX1BTSVBNUlxcdFxcdDB4MDAxOFxcbi0jZGVmaW5lIEVORVRDX1BTSVBNUl9TRVRfVVAobilcXHRCSVQobikgLyogbiA9IFNJIGluZGV4ICovXFxuLSNkZWZpbmUgRU5FVENfUFNJUE1SX1NFVF9NUChuKVxcdEJJVCgobikgKyAxNilcXG4rI2RlZmluZSBFTkVUQ19QU0lQTU1SXFx0XFx0MHgwMDE4XFxuKyNkZWZpbmUgIFBTSVBNTVJfU0lfTUFDX1VQKG4pXFx0QklUKG4pIC8qIG4gPSBTSSBpbmRleCAqL1xcbisjZGVmaW5lICBQU0lQTU1SX1NJX01BQ19NUChuKVxcdEJJVCgobikgKyAxNilcXG4rXFxuICNkZWZpbmUgRU5FVENfUFNJUFZNUlxcdFxcdDB4MDAxY1xcbi0jZGVmaW5lIEVORVRDX1ZMQU5fUFJPTUlTQ19NQVBfQUxMXFx0MHg3XFxuLSNkZWZpbmUgRU5FVENfUFNJUFZNUl9TRVRfVlAoc2ltYXApXFx0KChzaW1hcCkgXFx1MDAyNiAweDcpXFxuLSNkZWZpbmUgRU5FVENfUFNJUFZNUl9TRVRfVlVUQShzaW1hcClcXHQoKChzaW1hcCkgXFx1MDAyNiAweDcpIFxcdTAwM2NcXHUwMDNjIDE2KVxcbisjZGVmaW5lICBQU0lQVk1SX1NJX1ZMQU5fUChuKVxcdEJJVChuKSAvKiBuID0gU0kgaW5kZXggKi9cXG4rXFxuICNkZWZpbmUgRU5FVENfUFNJUE1BUjAobilcXHQoMHgwMTAwICsgKG4pICogMHg4KSAvKiBuID0gU0kgaW5kZXggKi9cXG4gI2RlZmluZSBFTkVUQ19QU0lQTUFSMShuKVxcdCgweDAxMDQgKyAobikgKiAweDgpXFxuICNkZWZpbmUgRU5FVENfUFZDTENUUlxcdFxcdDB4MDIwOFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jXFxuaW5kZXggMmQ2ODdiYjhjM2EwNjMuLmE1MDk5MjlmODlmMjVmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNcXG5AQCAtNDIsMjYgKzQyLDYgQEAgc3RhdGljIHZvaWQgZW5ldGNfcGZfZGVzdHJveV9wY3Moc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXFxuIFxcdGx5bnhfcGNzX2Rlc3Ryb3kocGNzKTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgZW5ldGNfc2V0X3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBjaGFyIHNpX21hcClcXG4te1xcbi1cXHR1MzIgdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVENfUFNJUFZNUik7XFxuLVxcbi1cXHR2YWwgXFx1MDAyNj0gfkVORVRDX1BTSVBWTVJfU0VUX1ZQKEVORVRDX1ZMQU5fUFJPTUlTQ19NQVBfQUxMKTtcXG4tXFx0ZW5ldGNfcG9ydF93cihodywgRU5FVENfUFNJUFZNUiwgRU5FVENfUFNJUFZNUl9TRVRfVlAoc2lfbWFwKSB8IHZhbCk7XFxuLX1cXG4tXFxuLXN0YXRpYyB2b2lkIGVuZXRjX2VuYWJsZV9zaV92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHNpX2lkeClcXG4te1xcbi1cXHRwZi1cXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwIHw9IEJJVChzaV9pZHgpO1xcbi1cXHRlbmV0Y19zZXRfdmxhbl9wcm9taXNjKFxcdTAwMjZwZi1cXHUwMDNlc2ktXFx1MDAzZWh3LCBwZi1cXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgZW5ldGNfZGlzYWJsZV9zaV92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHNpX2lkeClcXG4te1xcbi1cXHRwZi1cXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwIFxcdTAwMjY9IH5CSVQoc2lfaWR4KTtcXG4tXFx0ZW5ldGNfc2V0X3ZsYW5fcHJvbWlzYyhcXHUwMDI2cGYtXFx1MDAzZXNpLVxcdTAwM2VodywgcGYtXFx1MDAzZXZsYW5fcHJvbWlzY19zaW1hcCk7XFxuLX1cXG4tXFxuIHN0YXRpYyB2b2lkIGVuZXRjX3NldF9pc29sX3ZsYW4oc3RydWN0IGVuZXRjX2h3ICpodywgaW50IHNpLCB1MTYgdmxhbiwgdTggcW9zKVxcbiB7XFxuIFxcdHUzMiB2YWwgPSAwO1xcbkBAIC04MCwzNyArNjAsNiBAQCBzdGF0aWMgdm9pZCBlbmV0Y19hZGRfbWFjX2FkZHJfZW1fZmlsdGVyKHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICpmaWx0ZXIsXFxuIFxcdGZpbHRlci1cXHUwMDNlbWFjX2FkZHJfY250Kys7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIGVuZXRjX2NsZWFyX21hY19odF9mbHQoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkeCwgaW50IHR5cGUpXFxuLXtcXG4tXFx0Ym9vbCBlcnIgPSBzaS1cXHUwMDNlZXJyYXRhIFxcdTAwMjYgRU5FVENfRVJSX1VDTUNTV1A7XFxuLVxcbi1cXHRpZiAodHlwZSA9PSBVQykge1xcbi1cXHRcXHRlbmV0Y19wb3J0X3dyKFxcdTAwMjZzaS1cXHUwMDNlaHcsIEVORVRDX1BTSVVNSEZSMChzaV9pZHgsIGVyciksIDApO1xcbi1cXHRcXHRlbmV0Y19wb3J0X3dyKFxcdTAwMjZzaS1cXHUwMDNlaHcsIEVORVRDX1BTSVVNSEZSMShzaV9pZHgpLCAwKTtcXG4tXFx0fSBlbHNlIHsgLyogTUMgKi9cXG4tXFx0XFx0ZW5ldGNfcG9ydF93cihcXHUwMDI2c2ktXFx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjAoc2lfaWR4LCBlcnIpLCAwKTtcXG4tXFx0XFx0ZW5ldGNfcG9ydF93cihcXHUwMDI2c2ktXFx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjEoc2lfaWR4KSwgMCk7XFxuLVxcdH1cXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgZW5ldGNfc2V0X21hY19odF9mbHQoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkeCwgaW50IHR5cGUsXFxuLVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nIGhhc2gpXFxuLXtcXG4tXFx0Ym9vbCBlcnIgPSBzaS1cXHUwMDNlZXJyYXRhIFxcdTAwMjYgRU5FVENfRVJSX1VDTUNTV1A7XFxuLVxcbi1cXHRpZiAodHlwZSA9PSBVQykge1xcbi1cXHRcXHRlbmV0Y19wb3J0X3dyKFxcdTAwMjZzaS1cXHUwMDNlaHcsIEVORVRDX1BTSVVNSEZSMChzaV9pZHgsIGVyciksXFxuLVxcdFxcdFxcdCAgICAgIGxvd2VyXzMyX2JpdHMoaGFzaCkpO1xcbi1cXHRcXHRlbmV0Y19wb3J0X3dyKFxcdTAwMjZzaS1cXHUwMDNlaHcsIEVORVRDX1BTSVVNSEZSMShzaV9pZHgpLFxcbi1cXHRcXHRcXHQgICAgICB1cHBlcl8zMl9iaXRzKGhhc2gpKTtcXG4tXFx0fSBlbHNlIHsgLyogTUMgKi9cXG4tXFx0XFx0ZW5ldGNfcG9ydF93cihcXHUwMDI2c2ktXFx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjAoc2lfaWR4LCBlcnIpLFxcbi1cXHRcXHRcXHQgICAgICBsb3dlcl8zMl9iaXRzKGhhc2gpKTtcXG4tXFx0XFx0ZW5ldGNfcG9ydF93cihcXHUwMDI2c2ktXFx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjEoc2lfaWR4KSxcXG4tXFx0XFx0XFx0ICAgICAgdXBwZXJfMzJfYml0cyhoYXNoKSk7XFxuLVxcdH1cXG4tfVxcbi1cXG4gc3RhdGljIHZvaWQgZW5ldGNfc3luY19tYWNfZmlsdGVycyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbiB7XFxuIFxcdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICpmID0gcGYtXFx1MDAzZW1hY19maWx0ZXI7XFxuQEAgLTEyMiwxMiArNzEsMTYgQEAgc3RhdGljIHZvaWQgZW5ldGNfc3luY19tYWNfZmlsdGVycyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFERFJfVFlQRTsgaSsrLCBmKyspIHtcXG4gXFx0XFx0Ym9vbCBlbSA9IChmLVxcdTAwM2VtYWNfYWRkcl9jbnQgPT0gMSkgXFx1MDAyNlxcdTAwMjYgKGkgPT0gVUMpO1xcbiBcXHRcXHRib29sIGNsZWFyID0gIWYtXFx1MDAzZW1hY19hZGRyX2NudDtcXG4rXFx0XFx0dTY0IGhhc2g7XFxuIFxcbiBcXHRcXHRpZiAoY2xlYXIpIHtcXG4tXFx0XFx0XFx0aWYgKGkgPT0gVUMpXFxuK1xcdFxcdFxcdGlmIChpID09IFVDKSB7XFxuIFxcdFxcdFxcdFxcdGVuZXRjX2NsZWFyX21hY19mbHRfZW50cnkoc2ksIHBvcyk7XFxuK1xcdFxcdFxcdFxcdGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdGVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7XFxuK1xcdFxcdFxcdH1cXG4gXFxuLVxcdFxcdFxcdGVuZXRjX2NsZWFyX21hY19odF9mbHQoc2ksIDAsIGkpO1xcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0fVxcbiBcXG5AQCAtMTM1LDcgKzg4LDcgQEAgc3RhdGljIHZvaWQgZW5ldGNfc3luY19tYWNfZmlsdGVycyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbiBcXHRcXHRpZiAoZW0pIHtcXG4gXFx0XFx0XFx0aW50IGVycjtcXG4gXFxuLVxcdFxcdFxcdGVuZXRjX2NsZWFyX21hY19odF9mbHQoc2ksIDAsIFVDKTtcXG4rXFx0XFx0XFx0ZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTtcXG4gXFxuIFxcdFxcdFxcdGVyciA9IGVuZXRjX3NldF9tYWNfZmx0X2VudHJ5KHNpLCBwb3MsIGYtXFx1MDAzZW1hY19hZGRyLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBCSVQoMCkpO1xcbkBAIC0xNDcsMTEgKzEwMCwxNSBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zeW5jX21hY19maWx0ZXJzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuIFxcdFxcdFxcdFxcdCBlcnIpO1xcbiBcXHRcXHR9XFxuIFxcbitcXHRcXHRiaXRtYXBfdG9fYXJyNjQoXFx1MDAyNmhhc2gsIGYtXFx1MDAzZW1hY19oYXNoX3RhYmxlLFxcbitcXHRcXHRcXHRcXHRFTkVUQ19NQUREUl9IQVNIX1RCTF9TWik7XFxuIFxcdFxcdC8qIGhhc2ggdGFibGUgZmlsdGVyLCBjbGVhciBFTSBmaWx0ZXIgZm9yIFVDIGVudHJpZXMgKi9cXG4tXFx0XFx0aWYgKGkgPT0gVUMpXFxuK1xcdFxcdGlmIChpID09IFVDKSB7XFxuIFxcdFxcdFxcdGVuZXRjX2NsZWFyX21hY19mbHRfZW50cnkoc2ksIHBvcyk7XFxuLVxcbi1cXHRcXHRlbmV0Y19zZXRfbWFjX2h0X2ZsdChzaSwgMCwgaSwgKmYtXFx1MDAzZW1hY19oYXNoX3RhYmxlKTtcXG4rXFx0XFx0XFx0ZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCBoYXNoKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHNpLCAwLCBoYXNoKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTE1OSwyMSArMTE2LDE3IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3BmX3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4gXFx0c3RydWN0IGVuZXRjX3BmICpwZiA9IGVuZXRjX3NpX3ByaXYocHJpdi1cXHUwMDNlc2kpO1xcbi1cXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXFx1MDAyNnByaXYtXFx1MDAzZXNpLVxcdTAwM2VodztcXG4gXFx0Ym9vbCB1cHJvbSA9IGZhbHNlLCBtcHJvbSA9IGZhbHNlO1xcbiBcXHRzdHJ1Y3QgZW5ldGNfbWFjX2ZpbHRlciAqZmlsdGVyO1xcbiBcXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xcbi1cXHR1MzIgcHNpcG1yID0gMDtcXG4gXFx0Ym9vbCBlbTtcXG4gXFxuIFxcdGlmIChuZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QUk9NSVNDKSB7XFxuIFxcdFxcdC8qIGVuYWJsZSBwcm9taXNjIG1vZGUgZm9yIFNJMCAoUEYpICovXFxuLVxcdFxcdHBzaXBtciA9IEVORVRDX1BTSVBNUl9TRVRfVVAoMCkgfCBFTkVUQ19QU0lQTVJfU0VUX01QKDApO1xcbiBcXHRcXHR1cHJvbSA9IHRydWU7XFxuIFxcdFxcdG1wcm9tID0gdHJ1ZTtcXG4gXFx0fSBlbHNlIGlmIChuZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9BTExNVUxUSSkge1xcbiBcXHRcXHQvKiBlbmFibGUgbXVsdGkgY2FzdCBwcm9taXNjIG1vZGUgZm9yIFNJMCAoUEYpICovXFxuLVxcdFxcdHBzaXBtciA9IEVORVRDX1BTSVBNUl9TRVRfTVAoMCk7XFxuIFxcdFxcdG1wcm9tID0gdHJ1ZTtcXG4gXFx0fVxcbiBcXG5AQCAtMjExLDkgKzE2NCw4IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3BmX3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiBcXHRcXHQvKiB1cGRhdGUgUEYgZW50cmllcyAqL1xcbiBcXHRcXHRlbmV0Y19zeW5jX21hY19maWx0ZXJzKHBmKTtcXG4gXFxuLVxcdHBzaXBtciB8PSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQ19QU0lQTVIpIFxcdTAwMjZcXG4tXFx0XFx0ICB+KEVORVRDX1BTSVBNUl9TRVRfVVAoMCkgfCBFTkVUQ19QU0lQTVJfU0VUX01QKDApKTtcXG4tXFx0ZW5ldGNfcG9ydF93cihodywgRU5FVENfUFNJUE1SLCBwc2lwbXIpO1xcbitcXHRlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyhwcml2LVxcdTAwM2VzaSwgMCwgdXByb20pO1xcbitcXHRlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhwcml2LVxcdTAwM2VzaSwgMCwgbXByb20pO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBlbmV0Y19zZXRfbG9vcGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZW4pXFxuQEAgLTQ2OSwxMiArNDIxLDExIEBAIHN0YXRpYyB2b2lkIGVuZXRjX2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuIFxcbiBcXHQvKiBzcGxpdCB1cCBSRlMgZW50cmllcyAqL1xcbiBcXHRlbmV0Y19wb3J0X2Fzc2lnbl9yZnNfZW50cmllcyhwZi1cXHUwMDNlc2kpO1xcbi1cXG4gXFx0LyogZW5mb3JjZSBWTEFOIHByb21pc2MgbW9kZSBmb3IgYWxsIFNJcyAqL1xcbi1cXHRwZi1cXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwID0gRU5FVENfVkxBTl9QUk9NSVNDX01BUF9BTEw7XFxuLVxcdGVuZXRjX3NldF92bGFuX3Byb21pc2MoaHcsIHBmLVxcdTAwM2V2bGFuX3Byb21pc2Nfc2ltYXApO1xcbitcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIHBmLVxcdTAwM2V0b3RhbF92ZnMgKyAxOyBpKyspXFxuK1xcdFxcdGVuZXRjX3NldF9zaV92bGFuX3Byb21pc2MocGYtXFx1MDAzZXNpLCBpLCB0cnVlKTtcXG4gXFxuLVxcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BTSVBNUiwgMCk7XFxuK1xcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BTSVBNTVIsIDApO1xcbiBcXG4gXFx0LyogZW5hYmxlIHBvcnQgKi9cXG4gXFx0ZW5ldGNfcG9ydF93cihodywgRU5FVENfUE1SLCBFTkVUQ19QTVJfRU4pO1xcbkBAIC00OTQsMTIgKzQ0NSw5IEBAIHN0YXRpYyBpbnQgZW5ldGNfcGZfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY2hhbmdlZCBcXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUikge1xcbi1cXHRcXHRzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gZW5ldGNfc2lfcHJpdihwcml2LVxcdTAwM2VzaSk7XFxuK1xcdFxcdGJvb2wgcHJvbWlzYyA9ICEoZmVhdHVyZXMgXFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19GSUxURVIpO1xcbiBcXG4tXFx0XFx0aWYgKCEhKGZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSKSlcXG4tXFx0XFx0XFx0ZW5ldGNfZGlzYWJsZV9zaV92bGFuX3Byb21pc2MocGYsIDApO1xcbi1cXHRcXHRlbHNlXFxuLVxcdFxcdFxcdGVuZXRjX2VuYWJsZV9zaV92bGFuX3Byb21pc2MocGYsIDApO1xcbitcXHRcXHRlbmV0Y19zZXRfc2lfdmxhbl9wcm9taXNjKHByaXYtXFx1MDAzZXNpLCAwLCBwcm9taXNjKTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGNoYW5nZWQgXFx1MDAyNiBORVRJRl9GX0xPT1BCQUNLKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5oXFxuaW5kZXggMjg1YjdlNWM0OGZkYzcuLjU2ZDIzYThhMTFhMDYzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmhcXG5AQCAtMTcsMTIgKzE3LDkgQEAgc3RydWN0IGVuZXRjX3ZmX3N0YXRlIHtcXG4gfTtcXG4gXFxuIHN0cnVjdCBlbmV0Y19wb3J0X2NhcHMge1xcbi1cXHR1MzIgaGFsZl9kdXBsZXg6MTtcXG4tXFx0aW50IG51bV92c2k7XFxuIFxcdGludCBudW1fbXNpeDtcXG4gXFx0aW50IG51bV9yeF9iZHI7XFxuIFxcdGludCBudW1fdHhfYmRyO1xcbi1cXHRpbnQgbWFjX2ZpbHRlcl9udW07XFxuIH07XFxuIFxcbiBzdHJ1Y3QgZW5ldGNfcGY7XFxuQEAgLTQ3LDcgKzQ0LDYgQEAgc3RydWN0IGVuZXRjX3BmIHtcXG4gXFx0c3RydWN0IHdvcmtfc3RydWN0IG1zZ190YXNrO1xcbiBcXHRjaGFyIG1zZ19pbnRfbmFtZVtFTkVUQ19JTlRfTkFNRV9NQVhdO1xcbiBcXG4tXFx0Y2hhciB2bGFuX3Byb21pc2Nfc2ltYXA7IC8qIGJpdG1hcCBvZiBTSXMgaW4gVkxBTiBwcm9taXNjIG1vZGUgKi9cXG4gXFx0REVDTEFSRV9CSVRNQVAodmxhbl9odF9maWx0ZXIsIEVORVRDX1ZMQU5fSFRfU0laRSk7XFxuIFxcdERFQ0xBUkVfQklUTUFQKGFjdGl2ZV92bGFucywgVkxBTl9OX1ZJRCk7XFxuIFxcbkBAIC02MCw4ICs1Niw2IEBAIHN0cnVjdCBlbmV0Y19wZiB7XFxuIFxcbiBcXHRzdHJ1Y3QgZW5ldGNfcG9ydF9jYXBzIGNhcHM7XFxuIFxcdGNvbnN0IHN0cnVjdCBlbmV0Y19wZl9vcHMgKm9wcztcXG4tXFxuLVxcdGludCBudW1fbWZlO1xcdC8qIG51bWJlciBvZiBtYWMgYWRkcmVzcyBmaWx0ZXIgdGFibGUgZW50cmllcyAqL1xcbiB9O1xcbiBcXG4gI2RlZmluZSBwaHlsaW5rX3RvX2VuZXRjX3BmKGNvbmZpZykgXFxcXFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmNcXG5pbmRleCA2ZTVkMmY4Njk5MTUwYi4uZDMyYTE5NWEwNGM5N2UgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jXFxuQEAgLTEsNSArMSw1IEBAXFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMCsgT1IgQlNELTMtQ2xhdXNlKVxcbi0vKiBDb3B5cmlnaHQgMjAyNCBOWFAgKi9cXG4rLyogQ29weXJpZ2h0IDIwMjQtMjAyNiBOWFAgKi9cXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9mc2wvZW5ldGNfbWRpby5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfbWRpby5oXFx1MDAzZVxcbkBAIC04Nyw2ICs4NywxMTIgQEAgaW50IGVuZXRjX3NldHVwX21hY19hZGRyZXNzZXMoc3RydWN0IGRldmljZV9ub2RlICpucCwgc3RydWN0IGVuZXRjX3BmICpwZilcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXR1cF9tYWNfYWRkcmVzc2VzKTtcXG4gXFxuK3ZvaWQgZW5ldGNfc2V0X3NpX3VjX3Byb21pc2Moc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCBib29sIHByb21pc2MpXFxuK3tcXG4rXFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFxcdTAwMjZzaS1cXHUwMDNlaHc7XFxuK1xcdGludCBwc2lwbW1yX29mZjtcXG4rXFx0dTMyIHZhbDtcXG4rXFxuK1xcdGlmIChpc19lbmV0Y19yZXYxKHNpKSlcXG4rXFx0XFx0cHNpcG1tcl9vZmYgPSBFTkVUQ19QU0lQTU1SO1xcbitcXHRlbHNlXFxuK1xcdFxcdHBzaXBtbXJfb2ZmID0gRU5FVEM0X1BTSVBNTVI7XFxuK1xcbitcXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBwc2lwbW1yX29mZik7XFxuK1xcbitcXHRpZiAocHJvbWlzYylcXG4rXFx0XFx0dmFsIHw9IFBTSVBNTVJfU0lfTUFDX1VQKHNpX2lkKTtcXG4rXFx0ZWxzZVxcbitcXHRcXHR2YWwgXFx1MDAyNj0gflBTSVBNTVJfU0lfTUFDX1VQKHNpX2lkKTtcXG4rXFxuK1xcdGVuZXRjX3BvcnRfd3IoaHcsIHBzaXBtbXJfb2ZmLCB2YWwpO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3NldF9zaV91Y19wcm9taXNjKTtcXG4rXFxuK3ZvaWQgZW5ldGNfc2V0X3NpX21jX3Byb21pc2Moc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCBib29sIHByb21pc2MpXFxuK3tcXG4rXFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFxcdTAwMjZzaS1cXHUwMDNlaHc7XFxuK1xcdGludCBwc2lwbW1yX29mZjtcXG4rXFx0dTMyIHZhbDtcXG4rXFxuK1xcdGlmIChpc19lbmV0Y19yZXYxKHNpKSlcXG4rXFx0XFx0cHNpcG1tcl9vZmYgPSBFTkVUQ19QU0lQTU1SO1xcbitcXHRlbHNlXFxuK1xcdFxcdHBzaXBtbXJfb2ZmID0gRU5FVEM0X1BTSVBNTVI7XFxuK1xcbitcXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBwc2lwbW1yX29mZik7XFxuK1xcbitcXHRpZiAocHJvbWlzYylcXG4rXFx0XFx0dmFsIHw9IFBTSVBNTVJfU0lfTUFDX01QKHNpX2lkKTtcXG4rXFx0ZWxzZVxcbitcXHRcXHR2YWwgXFx1MDAyNj0gflBTSVBNTVJfU0lfTUFDX01QKHNpX2lkKTtcXG4rXFxuK1xcdGVuZXRjX3BvcnRfd3IoaHcsIHBzaXBtbXJfb2ZmLCB2YWwpO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3NldF9zaV9tY19wcm9taXNjKTtcXG4rXFxuK3ZvaWQgZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgdTY0IGhhc2gpXFxuK3tcXG4rXFx0aW50IHBzaXVtaGZyMF9vZmYsIHBzaXVtaGZyMV9vZmY7XFxuK1xcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcXHUwMDI2c2ktXFx1MDAzZWh3O1xcbitcXG4rXFx0aWYgKGlzX2VuZXRjX3JldjEoc2kpKSB7XFxuK1xcdFxcdGJvb2wgZXJyID0gc2ktXFx1MDAzZWVycmF0YSBcXHUwMDI2IEVORVRDX0VSUl9VQ01DU1dQO1xcbitcXG4rXFx0XFx0cHNpdW1oZnIwX29mZiA9IEVORVRDX1BTSVVNSEZSMChzaV9pZCwgZXJyKTtcXG4rXFx0XFx0cHNpdW1oZnIxX29mZiA9IEVORVRDX1BTSVVNSEZSMShzaV9pZCk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHBzaXVtaGZyMF9vZmYgPSBFTkVUQzRfUFNJVU1IRlIwKHNpX2lkKTtcXG4rXFx0XFx0cHNpdW1oZnIxX29mZiA9IEVORVRDNF9QU0lVTUhGUjEoc2lfaWQpO1xcbitcXHR9XFxuK1xcbitcXHRlbmV0Y19wb3J0X3dyKGh3LCBwc2l1bWhmcjBfb2ZmLCBsb3dlcl8zMl9iaXRzKGhhc2gpKTtcXG4rXFx0ZW5ldGNfcG9ydF93cihodywgcHNpdW1oZnIxX29mZiwgdXBwZXJfMzJfYml0cyhoYXNoKSk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKTtcXG4rXFxuK3ZvaWQgZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgdTY0IGhhc2gpXFxuK3tcXG4rXFx0aW50IHBzaW1taGZyMF9vZmYsIHBzaW1taGZyMV9vZmY7XFxuK1xcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcXHUwMDI2c2ktXFx1MDAzZWh3O1xcbitcXG4rXFx0aWYgKGlzX2VuZXRjX3JldjEoc2kpKSB7XFxuK1xcdFxcdGJvb2wgZXJyID0gc2ktXFx1MDAzZWVycmF0YSBcXHUwMDI2IEVORVRDX0VSUl9VQ01DU1dQO1xcbitcXG4rXFx0XFx0cHNpbW1oZnIwX29mZiA9IEVORVRDX1BTSU1NSEZSMChzaV9pZCwgZXJyKTtcXG4rXFx0XFx0cHNpbW1oZnIxX29mZiA9IEVORVRDX1BTSU1NSEZSMShzaV9pZCk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHBzaW1taGZyMF9vZmYgPSBFTkVUQzRfUFNJTU1IRlIwKHNpX2lkKTtcXG4rXFx0XFx0cHNpbW1oZnIxX29mZiA9IEVORVRDNF9QU0lNTUhGUjEoc2lfaWQpO1xcbitcXHR9XFxuK1xcbitcXHRlbmV0Y19wb3J0X3dyKGh3LCBwc2ltbWhmcjBfb2ZmLCBsb3dlcl8zMl9iaXRzKGhhc2gpKTtcXG4rXFx0ZW5ldGNfcG9ydF93cihodywgcHNpbW1oZnIxX29mZiwgdXBwZXJfMzJfYml0cyhoYXNoKSk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKTtcXG4rXFxuK3ZvaWQgZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYylcXG4re1xcbitcXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXFx1MDAyNnNpLVxcdTAwM2VodztcXG4rXFx0aW50IHBzaXB2bXJfb2ZmO1xcbitcXHR1MzIgdmFsO1xcbitcXG4rXFx0aWYgKGlzX2VuZXRjX3JldjEoc2kpKVxcbitcXHRcXHRwc2lwdm1yX29mZiA9IEVORVRDX1BTSVBWTVI7XFxuK1xcdGVsc2VcXG4rXFx0XFx0cHNpcHZtcl9vZmYgPSBFTkVUQzRfUFNJUFZNUjtcXG4rXFxuK1xcdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIHBzaXB2bXJfb2ZmKTtcXG4rXFxuK1xcdGlmIChwcm9taXNjKVxcbitcXHRcXHR2YWwgfD0gUFNJUFZNUl9TSV9WTEFOX1Aoc2lfaWQpO1xcbitcXHRlbHNlXFxuK1xcdFxcdHZhbCBcXHUwMDI2PSB+UFNJUFZNUl9TSV9WTEFOX1Aoc2lfaWQpO1xcbitcXG4rXFx0ZW5ldGNfcG9ydF93cihodywgcHNpcHZtcl9vZmYsIHZhbCk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyk7XFxuK1xcbiB2b2lkIGVuZXRjX3BmX25ldGRldl9zZXR1cChzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzICpuZGV2X29wcylcXG4ge1xcbkBAIC0yNzUsNyArMzgxLDggQEAgc3RhdGljIGJvb2wgZW5ldGNfcG9ydF9oYXNfcGNzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuIFxcdHJldHVybiAocGYtXFx1MDAzZWlmX21vZGUgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJIHx8XFxuIFxcdFxcdHBmLVxcdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggfHxcXG4gXFx0XFx0cGYtXFx1MDAzZWlmX21vZGUgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCB8fFxcbi1cXHRcXHRwZi1cXHUwMDNlaWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSSk7XFxuK1xcdFxcdHBmLVxcdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJIHx8XFxuK1xcdFxcdHBmLVxcdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUik7XFxuIH1cXG4gXFxuIGludCBlbmV0Y19tZGlvYnVzX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXFxuQEAgLTMxNiwyNSArNDIzLDQyIEBAIGludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuIHtcXG4gXFx0c3RydWN0IGVuZXRjX3BmICpwZiA9IGVuZXRjX3NpX3ByaXYocHJpdi1cXHUwMDNlc2kpO1xcbiBcXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcXG4rXFx0dW5zaWduZWQgbG9uZyBtYWNfY2FwcztcXG4gXFx0aW50IGVycjtcXG4gXFxuIFxcdHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5kZXYgPSBcXHUwMDI2cHJpdi1cXHUwMDNlbmRldi1cXHUwMDNlZGV2O1xcbiBcXHRwZi1cXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xcbi1cXHRwZi1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRSB8XFxuLVxcdFxcdE1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMCB8IE1BQ18yNTAwRkQ7XFxuIFxcbiBcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbiBcXHRcXHQgIHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuLVxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfU0dNSUksXFxuLVxcdFxcdCAgcGYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4tXFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgsXFxuLVxcdFxcdCAgcGYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4tXFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsXFxuLVxcdFxcdCAgcGYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4tXFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJLFxcbi1cXHRcXHQgIHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuLVxcdHBoeV9pbnRlcmZhY2Vfc2V0X3JnbWlpKHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuIFxcbitcXHRtYWNfY2FwcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTtcXG4rXFx0aWYgKCFlbmV0Y19pc19wc2V1ZG9fbWFjKHByaXYtXFx1MDAzZXNpKSkge1xcbitcXHRcXHRtYWNfY2FwcyB8PSBNQUNfMTAgfCBNQUNfMTAwIHwgTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQ7XFxuK1xcbitcXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLFxcbitcXHRcXHRcXHQgIHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuK1xcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYLFxcbitcXHRcXHRcXHQgIHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuK1xcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLFxcbitcXHRcXHRcXHQgIHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuK1xcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSSxcXG4rXFx0XFx0XFx0ICBwZi1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbitcXG4rXFx0XFx0aWYgKCFpc19lbmV0Y19yZXYxKHByaXYtXFx1MDAzZXNpKSkge1xcbitcXHRcXHRcXHRtYWNfY2FwcyB8PSBNQUNfNTAwMEZEIHwgTUFDXzEwMDAwRkQ7XFxuK1xcdFxcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIsXFxuK1xcdFxcdFxcdFxcdCAgcGYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cGh5X2ludGVyZmFjZV9zZXRfcmdtaWkocGYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0bWFjX2NhcHMgfD0gTUFDXzEwRkQgfCBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRCB8XFxuK1xcdFxcdFxcdCAgICBNQUNfNTAwMEZEIHwgTUFDXzEwMDAwRkQgfCBNQUNfMjAwMDBGRCB8XFxuK1xcdFxcdFxcdCAgICBNQUNfMjUwMDBGRDtcXG4rXFx0fVxcbitcXG4rXFx0cGYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBtYWNfY2FwcztcXG4gXFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwZi1cXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXFxuIFxcdFxcdFxcdFxcdCBwZi1cXHUwMDNlaWZfbW9kZSwgb3BzKTtcXG4gXFx0aWYgKElTX0VSUihwaHlsaW5rKSkge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmhcXG5pbmRleCA1N2QyZTBlYmQyYjBiYi4uODI0M2NlMGRlNTdmNjQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oXFxuQEAgLTE3LDYgKzE3LDExIEBAIHZvaWQgZW5ldGNfc2V0X2RlZmF1bHRfcnNzX2tleShzdHJ1Y3QgZW5ldGNfcGYgKnBmKTtcXG4gaW50IGVuZXRjX3ZsYW5fcnhfYWRkX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgX19iZTE2IHByb3QsIHUxNiB2aWQpO1xcbiBpbnQgZW5ldGNfdmxhbl9yeF9kZWxfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBfX2JlMTYgcHJvdCwgdTE2IHZpZCk7XFxuIGludCBlbmV0Y19pbml0X3NyaW92X3Jlc291cmNlcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKTtcXG4rdm9pZCBlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYyk7XFxuK3ZvaWQgZW5ldGNfc2V0X3NpX21jX3Byb21pc2Moc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCBib29sIHByb21pc2MpO1xcbit2b2lkIGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIHU2NCBoYXNoKTtcXG4rdm9pZCBlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCB1NjQgaGFzaCk7XFxuK3ZvaWQgZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYyk7XFxuIFxcbiBzdGF0aWMgaW5saW5lIHUxNiBlbmV0Y19nZXRfaXBfcmV2aXNpb24oc3RydWN0IGVuZXRjX2h3ICpodylcXG4ge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcW9zLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcW9zLmNcXG5pbmRleCA3YjE3YmNhMjRmMjYwZi4uMmFhMGZjYWFmY2QyM2MgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3Fvcy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3Fvcy5jXFxuQEAgLTExMzUsNyArMTEzNSw2IEBAIHN0YXRpYyBpbnQgZW5ldGNfcHNmcF9wYXJzZV9jbHNmbG93ZXIoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdixcXG4gXFx0c3RydWN0IGZsb3dfYWN0aW9uX2VudHJ5ICplbnRyeTtcXG4gXFx0c3RydWN0IGFjdGlvbl9nYXRlX2VudHJ5ICplO1xcbiBcXHR1OCBzZmlfb3ZlcndyaXRlID0gMDtcXG4tXFx0aW50IGVudHJpZXNfc2l6ZTtcXG4gXFx0aW50IGksIGVycjtcXG4gXFxuIFxcdGlmIChmLVxcdTAwM2Vjb21tb24uY2hhaW5faW5kZXggXFx1MDAzZT0gcHJpdi1cXHUwMDNlcHNmcF9jYXAubWF4X3N0cmVhbWlkKSB7XFxuQEAgLTEyNDIsOCArMTI0MSw3IEBAIHN0YXRpYyBpbnQgZW5ldGNfcHNmcF9wYXJzZV9jbHNmbG93ZXIoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdixcXG4gXFx0XFx0Z290byBmcmVlX2ZpbHRlcjtcXG4gXFx0fVxcbiBcXG4tXFx0ZW50cmllc19zaXplID0gc3RydWN0X3NpemUoc2dpLCBlbnRyaWVzLCBlbnRyeWctXFx1MDAzZWdhdGUubnVtX2VudHJpZXMpO1xcbi1cXHRzZ2kgPSBremFsbG9jKGVudHJpZXNfc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuK1xcdHNnaSA9IGt6YWxsb2NfZmxleCgqc2dpLCBlbnRyaWVzLCBlbnRyeWctXFx1MDAzZWdhdGUubnVtX2VudHJpZXMpO1xcbiBcXHRpZiAoIXNnaSkge1xcbiBcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiBcXHRcXHRnb3RvIGZyZWVfZmlsdGVyO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jXFxuaW5kZXggOWNkYjBhNGQ2YmFmYjcuLjdkY2I0YTAyNDZmNTI4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmNcXG5AQCAtMzE3LDcgKzMxNywxNCBAQCBzdGF0aWMgaW50IGVuZXRjX3ZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiBcXG4gXFx0ZW5ldGNfZ2V0X3NpX2NhcHMoc2kpO1xcbiBcXG4tXFx0bmRldiA9IGFsbG9jX2V0aGVyZGV2X21xKHNpemVvZigqcHJpdiksIEVORVRDX01BWF9OVU1fVFhRUyk7XFxuK1xcdC8qIEN1cnJlbnRseSwgdGhlIHN1cHBvcnRlZCBTb0NzIGhhdmUgYSBtYXggb2YgNiBDUFVzIGFuZCB0aGUgVkZzXFxuK1xcdCAqIGhhdmUgbGVzcyB0aGFuIDYgUlgvVFggcmluZ3MuIFNvIG5vIGlzc3VlcyBmb3IgdGhlc2Ugc3VwcG9ydGVkXFxuK1xcdCAqIFNvQ3MsIGJ1dCBmb3IgZnV0dXJlIFNvQ3Mgd2hpY2ggaGF2ZSBtb3JlIENQVXMgb3IgbW9yZSBUWC9SWFxcbitcXHQgKiByaW5ncywgYWxsIHRoZSByZWxhdGVkIGxvZ2ljIG5lZWRzIHRvIGJlIGltcHJvdmVkLlxcbitcXHQgKi9cXG4rXFx0bmRldiA9IGFsbG9jX2V0aGVyZGV2X21xcyhzaXplb2YoKnByaXYpLFxcbitcXHRcXHRcXHRcXHQgIG1pbihzaS1cXHUwMDNlbnVtX3R4X3JpbmdzLCBFTkVUQ19NQVhfTlVNX1RYUVMpLFxcbitcXHRcXHRcXHRcXHQgIG1pbihzaS1cXHUwMDNlbnVtX3J4X3JpbmdzLCBFTkVUQ19NQVhfTlVNX1RYUVMpKTtcXG4gXFx0aWYgKCFuZGV2KSB7XFxuIFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIm5ldGRldiBjcmVhdGlvbiBmYWlsZWRcXFxcblxcXCIpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzbC9udG1wLmggYi9pbmNsdWRlL2xpbnV4L2ZzbC9udG1wLmhcXG5pbmRleCBkM2I2YzQ3NmI5MWEyZC4uNzY0ZWYyODkyNjA4NWUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9mc2wvbnRtcC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9mc2wvbnRtcC5oXFxuQEAgLTc1LDggKzc1LDEwIEBAIHN0cnVjdCBudG1wX3VzZXIge1xcbiBcXHQvKiBOVE1QIHRhYmxlIGJpdG1hcHMgZm9yIHJlc291cmNlIG1hbmFnZW1lbnQgKi9cXG4gXFx0dTMyIGV0dF9iaXRtYXBfc2l6ZTtcXG4gXFx0dTMyIGVjdF9iaXRtYXBfc2l6ZTtcXG4rXFx0dTE2IG1hZnRfbnVtX2VudHJpZXM7XFxuIFxcdHVuc2lnbmVkIGxvbmcgKmV0dF9naWRfYml0bWFwOyAvKiBvbmx5IHZhbGlkIGZvciBzd2l0Y2ggKi9cXG4gXFx0dW5zaWduZWQgbG9uZyAqZWN0X2dpZF9iaXRtYXA7IC8qIG9ubHkgdmFsaWQgZm9yIHN3aXRjaCAqL1xcbitcXHR1bnNpZ25lZCBsb25nICptYWZ0X2VpZF9iaXRtYXA7IC8qIG9ubHkgdmFsaWQgZm9yIEVORVRDICovXFxuIH07XFxuIFxcbiBzdHJ1Y3QgbWFmdF9lbnRyeV9kYXRhIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDY6NTUuMDIyMjc2MTQ2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzc3MjU0NTgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBFTkVUQyBldGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGhhcmR3YXJlLXNwZWNpZmljIHRvIE5YUCBTb0NzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhYjU3ZTY4N2YzM2UwNzgzNzlhODllMmIyZmQ1Y2EzYjQ0NzFlMTIzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNjowNjo1MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmhcbmluZGV4IDA0YTVkZDVlYTZjNzRjLi44ODM5Y2ZiNDliY2ZlOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaFxuQEAgLTEsNSArMSw1IEBAXG4gLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wKyBPUiBCU0QtMy1DbGF1c2UpICovXG4tLyogQ29weXJpZ2h0IDIwMTctMjAxOSBOWFAgKi9cbisvKiBDb3B5cmlnaHQgMjAxNy0yMDE5LCAyMDI1LTIwMjYgTlhQICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdGltZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BjaS5oXHUwMDNlXG5AQCAtMzI0LDggKzMyNCw2IEBAIHN0cnVjdCBlbmV0Y19zaSB7XG4gXHRjb25zdCBzdHJ1Y3QgZW5ldGNfZHJ2ZGF0YSAqZHJ2ZGF0YTtcbiBcdGNvbnN0IHN0cnVjdCBlbmV0Y19zaV9vcHMgKm9wcztcbiBcbi1cdHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3b3JrcXVldWU7XG4tXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcnhfbW9kZV90YXNrO1xuIFx0c3RydWN0IGRlbnRyeSAqZGVidWdmc19yb290O1xuIFx0c3RydWN0IGVuZXRjX21zZ19zd2JkIG1zZzsgLyogT25seSB2YWxpZCBmb3IgVlNJICovXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfZGVidWdmcy5jXG5pbmRleCAxYjE1OTFkY2U3M2Q0Yi4uNTAyOTAzOGJmOTlmYWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2RlYnVnZnMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9kZWJ1Z2ZzLmNcbkBAIC0yOCwxNSArMjgsMTQgQEAgc3RhdGljIHZvaWQgZW5ldGNfc2hvd19zaV9tYWNfaGFzaF9maWx0ZXIoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgaSlcbiBcbiBzdGF0aWMgaW50IGVuZXRjX21hY19maWx0ZXJfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG4ge1xuLVx0c3RydWN0IGVuZXRjX3NpICpzaSA9IHMtXHUwMDNlcHJpdmF0ZTtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZzaS1cdTAwM2VodztcbitcdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBlbmV0Y19zaV9wcml2KHMtXHUwMDNlcHJpdmF0ZSk7XG4rXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2cGYtXHUwMDNlc2ktXHUwMDNlaHc7XG4rXHRpbnQgbnVtX3NpID0gcGYtXHUwMDNldG90YWxfdmZzICsgMTtcbiBcdHN0cnVjdCBtYWZ0X2VudHJ5X2RhdGEgbWFmdDtcbi1cdHN0cnVjdCBlbmV0Y19wZiAqcGY7XG4tXHRpbnQgaSwgZXJyLCBudW1fc2k7XG4tXHR1MzIgdmFsO1xuLVxuLVx0cGYgPSBlbmV0Y19zaV9wcml2KHNpKTtcbi1cdG51bV9zaSA9IHBmLVx1MDAzZWNhcHMubnVtX3ZzaSArIDE7XG4rXHRzdHJ1Y3QgbnRtcF91c2VyICp1c2VyO1xuK1x0dTMyIHZhbCwgZW50cnlfaWQ7XG4rXHRpbnQgZXJyID0gMDtcbitcdGludCBpO1xuIFxuIFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSVBNTVIpO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3NpOyBpKyspIHtcbkBAIC01MCwzMSArNDksMzggQEAgc3RhdGljIGludCBlbmV0Y19tYWNfZmlsdGVyX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3NpOyBpKyspXG4gXHRcdGVuZXRjX3Nob3dfc2lfbWFjX2hhc2hfZmlsdGVyKHMsIGkpO1xuIFxuLVx0aWYgKCFwZi1cdTAwM2VudW1fbWZlKVxuLVx0XHRyZXR1cm4gMDtcbitcdHVzZXIgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VudG1wX3VzZXI7XG4rXHRydG5sX2xvY2soKTtcbitcbitcdGlmIChiaXRtYXBfZW1wdHkodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAsIHVzZXItXHUwMDNlbWFmdF9udW1fZW50cmllcykpXG4rXHRcdGdvdG8gdW5sb2NrX3J0bmw7XG4gXG4gXHQvKiBNQUMgYWRkcmVzcyBmaWx0ZXIgdGFibGUgKi9cbiBcdHNlcV9wdXRzKHMsIFwiTUFDIGFkZHJlc3MgZmlsdGVyIHRhYmxlXFxuXCIpO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNlbnVtX21mZTsgaSsrKSB7XG4rXHRmb3JfZWFjaF9zZXRfYml0KGVudHJ5X2lkLCB1c2VyLVx1MDAzZW1hZnRfZWlkX2JpdG1hcCxcbitcdFx0XHQgdXNlci1cdTAwM2VtYWZ0X251bV9lbnRyaWVzKSB7XG4gXHRcdG1lbXNldChcdTAwMjZtYWZ0LCAwLCBzaXplb2YobWFmdCkpO1xuLVx0XHRlcnIgPSBudG1wX21hZnRfcXVlcnlfZW50cnkoXHUwMDI2c2ktXHUwMDNlbnRtcF91c2VyLCBpLCBcdTAwMjZtYWZ0KTtcbitcdFx0ZXJyID0gbnRtcF9tYWZ0X3F1ZXJ5X2VudHJ5KHVzZXIsIGVudHJ5X2lkLCBcdTAwMjZtYWZ0KTtcbiBcdFx0aWYgKGVycilcbi1cdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHRcdGdvdG8gdW5sb2NrX3J0bmw7XG4gXG4tXHRcdHNlcV9wcmludGYocywgXCJFbnRyeSAlZCwgTUFDOiAlcE0sIFNJIGJpdG1hcDogMHglMDR4XFxuXCIsIGksXG4tXHRcdFx0ICAgbWFmdC5rZXllLm1hY19hZGRyLCBsZTE2X3RvX2NwdShtYWZ0LmNmZ2Uuc2lfYml0bWFwKSk7XG4rXHRcdHNlcV9wcmludGYocywgXCJFbnRyeSAlZCwgTUFDOiAlcE0sIFNJIGJpdG1hcDogMHglMDR4XFxuXCIsXG4rXHRcdFx0ICAgZW50cnlfaWQsIG1hZnQua2V5ZS5tYWNfYWRkcixcbitcdFx0XHQgICBsZTE2X3RvX2NwdShtYWZ0LmNmZ2Uuc2lfYml0bWFwKSk7XG4gXHR9XG4gXG4tXHRyZXR1cm4gMDtcbit1bmxvY2tfcnRubDpcbitcdHJ0bmxfdW5sb2NrKCk7XG4rXG4rXHRyZXR1cm4gZXJyO1xuIH1cbiBERUZJTkVfU0hPV19BVFRSSUJVVEUoZW5ldGNfbWFjX2ZpbHRlcik7XG4gXG4gdm9pZCBlbmV0Y19jcmVhdGVfZGVidWdmcyhzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxuIHtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gc2ktXHUwMDNlbmRldjtcbiBcdHN0cnVjdCBkZW50cnkgKnJvb3Q7XG4gXG4tXHRyb290ID0gZGVidWdmc19jcmVhdGVfZGlyKG5ldGRldl9uYW1lKG5kZXYpLCBOVUxMKTtcbitcdHJvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIocGNpX25hbWUoc2ktXHUwMDNlcGRldiksIE5VTEwpO1xuIFx0aWYgKElTX0VSUihyb290KSlcbiBcdFx0cmV0dXJuO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfaHcuaFxuaW5kZXggZjE4NDM3NTU2YTBlZTIuLjA5MDI1ZTdhMmEzYWVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9ody5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X2h3LmhcbkBAIC02OSw4ICs2OSw2IEBAXG4gXG4gLyogUG9ydCBTdGF0aW9uIGludGVyZmFjZSBwcm9taXNjdW91cyBNQUMgbW9kZSByZWdpc3RlciAqL1xuICNkZWZpbmUgRU5FVEM0X1BTSVBNTVJcdFx0XHQweDIwMFxuLSNkZWZpbmUgIFBTSVBNTVJfU0lfTUFDX1VQKGEpXHRcdEJJVChhKSAvKiBhID0gU0kgaW5kZXggKi9cbi0jZGVmaW5lICBQU0lQTU1SX1NJX01BQ19NUChhKVx0XHRCSVQoKGEpICsgMTYpXG4gXG4gLyogUG9ydCBTdGF0aW9uIGludGVyZmFjZSBwcm9taXNjdW91cyBWTEFOIG1vZGUgcmVnaXN0ZXIgKi9cbiAjZGVmaW5lIEVORVRDNF9QU0lQVk1SXHRcdFx0MHgyMDRcbkBAIC0xMzcsNyArMTM1LDYgQEBcbiAjZGVmaW5lIEVORVRDNF9QU0lWSEZSMShhKVx0XHQoKGEpICogMHg4MCArIDB4MjA2NClcbiBcbiAjZGVmaW5lIEVORVRDNF9QTUNBUFJcdFx0XHQweDQwMDRcbi0jZGVmaW5lICBQTUNBUFJfSERcdFx0XHRCSVQoOClcbiAjZGVmaW5lICBQTUNBUFJfRlBcdFx0XHRHRU5NQVNLKDEwLCA5KVxuIFxuIC8qIFBvcnQgY2FwYWJpbGl0eSByZWdpc3RlciAqL1xuQEAgLTE1MCw3ICsxNDcsNyBAQFxuICNkZWZpbmUgIFBDUl9MMkRPU0VcdFx0XHRCSVQoNClcbiAjZGVmaW5lICBQQ1JfVElNRVJfQ1NcdFx0XHRCSVQoOClcbiAjZGVmaW5lICBQQ1JfUFNQRUVEXHRcdFx0R0VOTUFTSygyOSwgMTYpXG4tI2RlZmluZSAgUENSX1BTUEVFRF9WQUwoc3BlZWQpXHRcdCgoKHNwZWVkKSAvIDEwIC0gMSkgXHUwMDNjXHUwMDNjIDE2KVxuKyNkZWZpbmUgIFBDUl9QU1BFRURfVkFMKHMpXHRcdEZJRUxEX1BSRVAoUENSX1BTUEVFRCwgKChzKSAvIDEwIC0gMSkpXG4gXG4gLyogUG9ydCBNQUMgYWRkcmVzcyByZWdpc3RlciAwLzEgKi9cbiAjZGVmaW5lIEVORVRDNF9QTUFSMFx0XHRcdDB4NDAyMFxuQEAgLTIwMCw3ICsxOTcsNiBAQFxuICNkZWZpbmUgIFBNX0NNRF9DRkdfQ05UX0ZSTV9FTlx0XHRCSVQoMTMpXG4gI2RlZmluZSAgUE1fQ01EX0NGR19UWFBcdFx0XHRCSVQoMTUpXG4gI2RlZmluZSAgUE1fQ01EX0NGR19TRU5EX0lETEVcdFx0QklUKDE2KVxuLSNkZWZpbmUgIFBNX0NNRF9DRkdfSERfRkNFTlx0XHRCSVQoMTgpXG4gI2RlZmluZSAgUE1fQ01EX0NGR19TRkRcdFx0XHRCSVQoMjEpXG4gI2RlZmluZSAgUE1fQ01EX0NGR19UWF9GTFVTSFx0XHRCSVQoMjIpXG4gI2RlZmluZSAgUE1fQ01EX0NGR19UWF9MT1dQX0VOXHRcdEJJVCgyMylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcbmluZGV4IDQzN2ExNWJiYjQ3YmE4Li5mY2ZiYWJiMjlkMjJlNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXG5AQCAtMjMsMTggKzIzLDExIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9nZXRfcG9ydF9jYXBzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXHR1MzIgdmFsO1xuIFxuIFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X0VDQVBSMSk7XG4tXHRwZi1cdTAwM2VjYXBzLm51bV92c2kgPSAodmFsIFx1MDAyNiBFQ0FQUjFfTlVNX1ZTSSkgXHUwMDNlXHUwMDNlIDI0O1xuIFx0cGYtXHUwMDNlY2Fwcy5udW1fbXNpeCA9ICgodmFsIFx1MDAyNiBFQ0FQUjFfTlVNX01TSVgpIFx1MDAzZVx1MDAzZSAxMikgKyAxO1xuIFxuIFx0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X0VDQVBSMik7XG4gXHRwZi1cdTAwM2VjYXBzLm51bV9yeF9iZHIgPSAodmFsIFx1MDAyNiBFQ0FQUjJfTlVNX1JYX0JEUikgXHUwMDNlXHUwMDNlIDE2O1xuIFx0cGYtXHUwMDNlY2Fwcy5udW1fdHhfYmRyID0gdmFsIFx1MDAyNiBFQ0FQUjJfTlVNX1RYX0JEUjtcbi1cbi1cdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QTUNBUFIpO1xuLVx0cGYtXHUwMDNlY2Fwcy5oYWxmX2R1cGxleCA9ICh2YWwgXHUwMDI2IFBNQ0FQUl9IRCkgPyAxIDogMDtcbi1cbi1cdHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lNQUZDQVBSKTtcbi1cdHBmLVx1MDAzZWNhcHMubWFjX2ZpbHRlcl9udW0gPSB2YWwgXHUwMDI2IFBTSU1BRkNBUFJfTlVNX01BQ19BRlRFO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbmV0YzRfZ2V0X3BzaV9od19mZWF0dXJlcyhzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxuQEAgLTc1LDM4ICs2OCw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9nZXRfc2lfcHJpbWFyeV9tYWMoc3RydWN0IGVuZXRjX2h3ICpodywgaW50IHNpLFxuIFx0cHV0X3VuYWxpZ25lZF9sZTE2KGxvd2VyLCBhZGRyICsgNCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfc2lfbWFjX3Byb21pc2Moc3RydWN0IGVuZXRjX2h3ICpodywgaW50IHNpLFxuLVx0XHRcdFx0XHQgYm9vbCB1Y19wcm9taXNjLCBib29sIG1jX3Byb21pc2MpXG4te1xuLVx0dTMyIHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDNF9QU0lQTU1SKTtcbi1cbi1cdGlmICh1Y19wcm9taXNjKVxuLVx0XHR2YWwgfD0gUFNJUE1NUl9TSV9NQUNfVVAoc2kpO1xuLVx0ZWxzZVxuLVx0XHR2YWwgXHUwMDI2PSB+UFNJUE1NUl9TSV9NQUNfVVAoc2kpO1xuLVxuLVx0aWYgKG1jX3Byb21pc2MpXG4tXHRcdHZhbCB8PSBQU0lQTU1SX1NJX01BQ19NUChzaSk7XG4tXHRlbHNlXG4tXHRcdHZhbCBcdTAwMjY9IH5QU0lQTU1SX1NJX01BQ19NUChzaSk7XG4tXG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJUE1NUiwgdmFsKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBpbnQgc2ksXG4tXHRcdFx0XHRcdCAgICB1NjQgaGFzaClcbi17XG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJVU1IRlIwKHNpKSwgbG93ZXJfMzJfYml0cyhoYXNoKSk7XG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJVU1IRlIxKHNpKSwgdXBwZXJfMzJfYml0cyhoYXNoKSk7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfc2lfbWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX2h3ICpodywgaW50IHNpLFxuLVx0XHRcdFx0XHQgICAgdTY0IGhhc2gpXG4te1xuLVx0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSU1NSEZSMChzaSksIGxvd2VyXzMyX2JpdHMoaGFzaCkpO1xuLVx0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSU1NSEZSMShzaSksIHVwcGVyXzMyX2JpdHMoaGFzaCkpO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X2xvb3BiYWNrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBib29sIGVuKVxuIHtcbiBcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbkBAIC0xMjQsMzQgKzg1LDQ3IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbG9vcGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZW4pXG4gXG4gc3RhdGljIHZvaWQgZW5ldGM0X3BmX2NsZWFyX21hZnRfZW50cmllcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIHtcbi1cdGludCBpO1xuK1x0c3RydWN0IG50bXBfdXNlciAqdXNlciA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZW50bXBfdXNlcjtcbitcdHUzMiBlbnRyeV9pZDtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBmLVx1MDAzZW51bV9tZmU7IGkrKylcbi1cdFx0bnRtcF9tYWZ0X2RlbGV0ZV9lbnRyeShcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VudG1wX3VzZXIsIGkpO1xuLVxuLVx0cGYtXHUwMDNlbnVtX21mZSA9IDA7XG4rXHRmb3JfZWFjaF9zZXRfYml0KGVudHJ5X2lkLCB1c2VyLVx1MDAzZW1hZnRfZWlkX2JpdG1hcCxcbitcdFx0XHQgdXNlci1cdTAwM2VtYWZ0X251bV9lbnRyaWVzKSB7XG4rXHRcdGlmICghbnRtcF9tYWZ0X2RlbGV0ZV9lbnRyeSh1c2VyLCBlbnRyeV9pZCkpXG4rXHRcdFx0bnRtcF9jbGVhcl9laWRfYml0bWFwKHVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwLCBlbnRyeV9pZCk7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyBpbnQgZW5ldGM0X3BmX2FkZF9tYWZ0X2VudHJpZXMoc3RydWN0IGVuZXRjX3BmICpwZixcbi1cdFx0XHRcdCAgICAgIHN0cnVjdCBlbmV0Y19tYWNfYWRkciAqbWFjLFxuLVx0XHRcdFx0ICAgICAgaW50IG1hY19jbnQpXG4rXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMpXG4ge1xuK1x0c3RydWN0IG50bXBfdXNlciAqdXNlciA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZW50bXBfdXNlcjtcbitcdGludCBtYWNfY250ID0gbmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1Yyk7XG4gXHRzdHJ1Y3QgbWFmdF9lbnRyeV9kYXRhIG1hZnQgPSB7fTtcbitcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XG4rXHR1MzIgYXZhaWxhYmxlX2VudHJpZXM7XG4gXHR1MTYgc2lfYml0ID0gQklUKDApO1xuLVx0aW50IGksIGVycjtcbitcdHUzMiBlbnRyeV9pZDtcbitcdGludCBlcnI7XG4rXG4rXHRhdmFpbGFibGVfZW50cmllcyA9IHVzZXItXHUwMDNlbWFmdF9udW1fZW50cmllcyAtXG4rXHRcdFx0ICAgIGJpdG1hcF93ZWlnaHQodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAsXG4rXHRcdFx0XHRcdCAgdXNlci1cdTAwM2VtYWZ0X251bV9lbnRyaWVzKTtcbitcbitcdGlmIChtYWNfY250IFx1MDAzZSBhdmFpbGFibGVfZW50cmllcylcbitcdFx0cmV0dXJuIC1FTk9TUEM7XG4gXG4gXHRtYWZ0LmNmZ2Uuc2lfYml0bWFwID0gY3B1X3RvX2xlMTYoc2lfYml0KTtcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG1hY19jbnQ7IGkrKykge1xuLVx0XHRldGhlcl9hZGRyX2NvcHkobWFmdC5rZXllLm1hY19hZGRyLCBtYWNbaV0uYWRkcik7XG4tXHRcdGVyciA9IG50bXBfbWFmdF9hZGRfZW50cnkoXHUwMDI2cGYtXHUwMDNlc2ktXHUwMDNlbnRtcF91c2VyLCBpLCBcdTAwMjZtYWZ0KTtcbitcdG5ldGRldl9od19hZGRyX2xpc3RfZm9yX2VhY2goaGEsIHVjKSB7XG4rXHRcdGVudHJ5X2lkID0gbnRtcF9sb29rdXBfZnJlZV9laWQodXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAsXG4rXHRcdFx0XHRcdFx0dXNlci1cdTAwM2VtYWZ0X251bV9lbnRyaWVzKTtcbitcdFx0ZXRoZXJfYWRkcl9jb3B5KG1hZnQua2V5ZS5tYWNfYWRkciwgaGEtXHUwMDNlYWRkcik7XG4rXHRcdGVyciA9IG50bXBfbWFmdF9hZGRfZW50cnkodXNlciwgZW50cnlfaWQsIFx1MDAyNm1hZnQpO1xuIFx0XHRpZiAodW5saWtlbHkoZXJyKSkge1xuLVx0XHRcdHBmLVx1MDAzZW51bV9tZmUgPSBpO1xuK1x0XHRcdG50bXBfY2xlYXJfZWlkX2JpdG1hcCh1c2VyLVx1MDAzZW1hZnRfZWlkX2JpdG1hcCwgZW50cnlfaWQpO1xuIFx0XHRcdGdvdG8gY2xlYXJfbWFmdF9lbnRyaWVzO1xuIFx0XHR9XG4gXHR9XG4gXG4tXHRwZi1cdTAwM2VudW1fbWZlID0gbWFjX2NudDtcbi1cbiBcdHJldHVybiAwO1xuIFxuIGNsZWFyX21hZnRfZW50cmllczpcbkBAIC0xNjAsOTcgKzEzNCw3MCBAQCBzdGF0aWMgaW50IGVuZXRjNF9wZl9hZGRfbWFmdF9lbnRyaWVzKHN0cnVjdCBlbmV0Y19wZiAqcGYsXG4gXHRyZXR1cm4gIGVycjtcbiB9XG4gXG4tc3RhdGljIGludCBlbmV0YzRfcGZfc2V0X3VjX2V4YWN0X2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuK3N0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfdWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZixcbitcdFx0XHRcdFx0IHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YylcbiB7XG4tXHRpbnQgbWF4X251bV9tZmUgPSBwZi1cdTAwM2VjYXBzLm1hY19maWx0ZXJfbnVtO1xuLVx0c3RydWN0IGVuZXRjX21hY19maWx0ZXIgbWFjX2ZpbHRlciA9IHt9O1xuLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBwZi1cdTAwM2VzaS1cdTAwM2VuZGV2O1xuLVx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZWh3O1xuLVx0c3RydWN0IGVuZXRjX21hY19hZGRyICptYWNfdGJsO1xuK1x0c3RydWN0IGVuZXRjX21hY19maWx0ZXIgKm1hY19maWx0ZXIgPSBcdTAwMjZwZi1cdTAwM2VtYWNfZmlsdGVyW1VDXTtcbiBcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XG4tXHRpbnQgaSA9IDAsIGVycjtcbi1cdGludCBtYWNfY250O1xuK1x0dTY0IGhhc2g7XG4gXG4tXHRuZXRpZl9hZGRyX2xvY2tfYmgobmRldik7XG4rXHRlbmV0Y19yZXNldF9tYWNfYWRkcl9maWx0ZXIobWFjX2ZpbHRlcik7XG4rXHRuZXRkZXZfaHdfYWRkcl9saXN0X2Zvcl9lYWNoKGhhLCB1YylcbitcdFx0ZW5ldGNfYWRkX21hY19hZGRyX2h0X2ZpbHRlcihtYWNfZmlsdGVyLCBoYS1cdTAwM2VhZGRyKTtcbitcbitcdGJpdG1hcF90b19hcnI2NChcdTAwMjZoYXNoLCBtYWNfZmlsdGVyLVx1MDAzZW1hY19oYXNoX3RhYmxlLFxuK1x0XHRcdEVORVRDX01BRERSX0hBU0hfVEJMX1NaKTtcbitcdGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihwZi1cdTAwM2VzaSwgMCwgaGFzaCk7XG4rfVxuIFxuLVx0bWFjX2NudCA9IG5ldGRldl91Y19jb3VudChuZGV2KTtcbi1cdGlmICghbWFjX2NudCkge1xuLVx0XHRuZXRpZl9hZGRyX3VubG9ja19iaChuZGV2KTtcbitzdGF0aWMgaW50IGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYsXG4rXHRcdFx0XHRcdCBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMpXG4re1xuK1x0c3RydWN0IGVuZXRjX3NpICpzaSA9IHBmLVx1MDAzZXNpO1xuK1x0aW50IGVycjtcbitcbitcdGlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2VtcHR5KHVjKSkge1xuIFx0XHQvKiBjbGVhciBib3RoIE1BQyBoYXNoIGFuZCBleGFjdCBmaWx0ZXJzICovXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApO1xuK1x0XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuIFx0XHRlbmV0YzRfcGZfY2xlYXJfbWFmdF9lbnRyaWVzKHBmKTtcbiBcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHRpZiAobWFjX2NudCBcdTAwM2UgbWF4X251bV9tZmUpIHtcbi1cdFx0ZXJyID0gLUVOT1NQQztcbi1cdFx0Z290byB1bmxvY2tfbmV0aWZfYWRkcjtcbi1cdH1cbi1cbi1cdG1hY190YmwgPSBremFsbG9jX29ianMoKm1hY190YmwsIG1hY19jbnQsIEdGUF9BVE9NSUMpO1xuLVx0aWYgKCFtYWNfdGJsKSB7XG4tXHRcdGVyciA9IC1FTk9NRU07XG4tXHRcdGdvdG8gdW5sb2NrX25ldGlmX2FkZHI7XG4tXHR9XG4tXG4tXHRuZXRkZXZfZm9yX2VhY2hfdWNfYWRkcihoYSwgbmRldikge1xuLVx0XHRlbmV0Y19hZGRfbWFjX2FkZHJfaHRfZmlsdGVyKFx1MDAyNm1hY19maWx0ZXIsIGhhLVx1MDAzZWFkZHIpO1xuLVx0XHRldGhlcl9hZGRyX2NvcHkobWFjX3RibFtpKytdLmFkZHIsIGhhLVx1MDAzZWFkZHIpO1xuLVx0fVxuLVxuLVx0bmV0aWZfYWRkcl91bmxvY2tfYmgobmRldik7XG4tXG4tXHQvKiBTZXQgdGVtcG9yYXJ5IHVuaWNhc3QgaGFzaCBmaWx0ZXJzIGluIGNhc2Ugb2YgUnggbG9zcyB3aGVuXG4rXHQvKiBTZXQgdGVtcG9yYXJ5IHVuaWNhc3QgaGFzaCBmaWx0ZXIgaW4gY2FzZSBvZiBSeCBsb3NzIHdoZW5cbiBcdCAqIHVwZGF0aW5nIE1BQyBhZGRyZXNzIGZpbHRlciB0YWJsZVxuIFx0ICovXG4tXHRlbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKGh3LCAwLCAqbWFjX2ZpbHRlci5tYWNfaGFzaF90YWJsZSk7XG4rXHRlbmV0YzRfcGZfc2V0X3VjX2hhc2hfZmlsdGVyKHBmLCB1Yyk7XG4gXHRlbmV0YzRfcGZfY2xlYXJfbWFmdF9lbnRyaWVzKHBmKTtcbiBcbi1cdGlmICghZW5ldGM0X3BmX2FkZF9tYWZ0X2VudHJpZXMocGYsIG1hY190YmwsIGkpKVxuLVx0XHRlbmV0YzRfcGZfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKGh3LCAwLCAwKTtcbi1cbi1cdGtmcmVlKG1hY190YmwpO1xuLVxuLVx0cmV0dXJuIDA7XG4tXG4tdW5sb2NrX25ldGlmX2FkZHI6XG4tXHRuZXRpZl9hZGRyX3VubG9ja19iaChuZGV2KTtcbitcdGVyciA9IGVuZXRjNF9wZl9hZGRfbWFmdF9lbnRyaWVzKHBmLCB1Yyk7XG4rXHRpZiAoIWVycikge1xuK1x0XHRlbmV0Y19yZXNldF9tYWNfYWRkcl9maWx0ZXIoXHUwMDI2cGYtXHUwMDNlbWFjX2ZpbHRlcltVQ10pO1xuK1x0XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuK1x0fVxuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tYWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHR5cGUpXG4rc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tY19oYXNoX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLFxuK1x0XHRcdFx0XHQgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKm1jKVxuIHtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGYtXHUwMDNlc2ktXHUwMDNlbmRldjtcbi1cdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICptYWNfZmlsdGVyO1xuLVx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZWh3O1xuK1x0c3RydWN0IGVuZXRjX21hY19maWx0ZXIgKm1hY19maWx0ZXIgPSBcdTAwMjZwZi1cdTAwM2VtYWNfZmlsdGVyW01DXTtcbiBcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XG4rXHR1NjQgaGFzaDtcbiBcbi1cdG5ldGlmX2FkZHJfbG9ja19iaChuZGV2KTtcbi1cdGlmICh0eXBlIFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfVUMpIHtcbi1cdFx0bWFjX2ZpbHRlciA9IFx1MDAyNnBmLVx1MDAzZW1hY19maWx0ZXJbVUNdO1xuLVx0XHRlbmV0Y19yZXNldF9tYWNfYWRkcl9maWx0ZXIobWFjX2ZpbHRlcik7XG4tXHRcdG5ldGRldl9mb3JfZWFjaF91Y19hZGRyKGhhLCBuZGV2KVxuLVx0XHRcdGVuZXRjX2FkZF9tYWNfYWRkcl9odF9maWx0ZXIobWFjX2ZpbHRlciwgaGEtXHUwMDNlYWRkcik7XG4tXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfdWNfaGFzaF9maWx0ZXIoaHcsIDAsXG4tXHRcdFx0XHRcdFx0Km1hY19maWx0ZXItXHUwMDNlbWFjX2hhc2hfdGFibGUpO1xuLVx0fVxuK1x0ZW5ldGNfcmVzZXRfbWFjX2FkZHJfZmlsdGVyKG1hY19maWx0ZXIpO1xuK1x0bmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgbWMpXG4rXHRcdGVuZXRjX2FkZF9tYWNfYWRkcl9odF9maWx0ZXIobWFjX2ZpbHRlciwgaGEtXHUwMDNlYWRkcik7XG4gXG4tXHRpZiAodHlwZSBcdTAwMjYgRU5FVENfTUFDX0ZJTFRFUl9UWVBFX01DKSB7XG4tXHRcdG1hY19maWx0ZXIgPSBcdTAwMjZwZi1cdTAwM2VtYWNfZmlsdGVyW01DXTtcbi1cdFx0ZW5ldGNfcmVzZXRfbWFjX2FkZHJfZmlsdGVyKG1hY19maWx0ZXIpO1xuLVx0XHRuZXRkZXZfZm9yX2VhY2hfbWNfYWRkcihoYSwgbmRldilcbi1cdFx0XHRlbmV0Y19hZGRfbWFjX2FkZHJfaHRfZmlsdGVyKG1hY19maWx0ZXIsIGhhLVx1MDAzZWFkZHIpO1xuLVxuLVx0XHRlbmV0YzRfcGZfc2V0X3NpX21jX2hhc2hfZmlsdGVyKGh3LCAwLFxuLVx0XHRcdFx0XHRcdCptYWNfZmlsdGVyLVx1MDAzZW1hY19oYXNoX3RhYmxlKTtcbi1cdH1cbi1cdG5ldGlmX2FkZHJfdW5sb2NrX2JoKG5kZXYpO1xuK1x0Yml0bWFwX3RvX2FycjY0KFx1MDAyNmhhc2gsIG1hY19maWx0ZXItXHUwMDNlbWFjX2hhc2hfdGFibGUsXG4rXHRcdFx0RU5FVENfTUFERFJfSEFTSF9UQkxfU1opO1xuK1x0ZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHBmLVx1MDAzZXNpLCAwLCBoYXNoKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9tYWNfZmlsdGVyKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCB0eXBlKVxuK3N0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbWFjX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgdHlwZSxcbitcdFx0XHRcdCAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLFxuK1x0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqbWMpXG4ge1xuIFx0LyogQ3VycmVudGx5LCB0aGUgTUFDIGFkZHJlc3MgZmlsdGVyIHRhYmxlIChNQUZUKSBvbmx5IGhhcyA0IGVudHJpZXMsXG4gXHQgKiBhbmQgbXVsdGlwbGUgbXVsdGljYXN0IGFkZHJlc3NlcyBmb3IgZmlsdGVyaW5nIHdpbGwgYmUgY29uZmlndXJlZFxuQEAgLTI1OCwxNSArMjA1LDE2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfbWFjX2ZpbHRlcihzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgdHlwZSlcbiBcdCAqIHVuaWNhc3QgZmlsdGVyaW5nLiBJZiB0aGUgbnVtYmVyIG9mIHVuaWNhc3QgYWRkcmVzc2VzIGV4Y2VlZHMgdGhlXG4gXHQgKiB0YWJsZSBjYXBhY2l0eSwgdGhlIE1BQyBoYXNoIGZpbHRlciB3aWxsIGJlIHVzZWQuXG4gXHQgKi9cbi1cdGlmICh0eXBlIFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfVUMgXHUwMDI2XHUwMDI2IGVuZXRjNF9wZl9zZXRfdWNfZXhhY3RfZmlsdGVyKHBmKSkge1xuK1x0aWYgKHR5cGUgXHUwMDI2IEVORVRDX01BQ19GSUxURVJfVFlQRV9VQyBcdTAwMjZcdTAwMjZcbitcdCAgICBlbmV0YzRfcGZfc2V0X3VjX2V4YWN0X2ZpbHRlcihwZiwgdWMpKSB7XG4gXHRcdC8qIEZhbGwgYmFjayB0byB0aGUgTUFDIGhhc2ggZmlsdGVyICovXG4tXHRcdGVuZXRjNF9wZl9zZXRfbWFjX2hhc2hfZmlsdGVyKHBmLCBFTkVUQ19NQUNfRklMVEVSX1RZUEVfVUMpO1xuK1x0XHRlbmV0YzRfcGZfc2V0X3VjX2hhc2hfZmlsdGVyKHBmLCB1Yyk7XG4gXHRcdC8qIENsZWFyIHRoZSBvbGQgTUFDIGV4YWN0IGZpbHRlciAqL1xuIFx0XHRlbmV0YzRfcGZfY2xlYXJfbWFmdF9lbnRyaWVzKHBmKTtcbiBcdH1cbiBcbiBcdGlmICh0eXBlIFx1MDAyNiBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpXG4tXHRcdGVuZXRjNF9wZl9zZXRfbWFjX2hhc2hfZmlsdGVyKHBmLCBFTkVUQ19NQUNfRklMVEVSX1RZUEVfTUMpO1xuK1x0XHRlbmV0YzRfcGZfc2V0X21jX2hhc2hfZmlsdGVyKHBmLCBtYyk7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZW5ldGNfcGZfb3BzIGVuZXRjNF9wZl9vcHMgPSB7XG5AQCAtMzA2LDM0ICsyNTQsMzUgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbihzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIHtcbiBcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VodztcbiBcdHUzMiBudW1fcnhfYmRyLCBudW1fdHhfYmRyLCB2YWw7XG4rXHRpbnQgbnVtX3ZmcyA9IHBmLVx1MDAzZXRvdGFsX3ZmcztcbiBcdHUzMiB2Zl90eF9iZHIsIHZmX3J4X2JkcjtcbiBcdGludCBpLCByeF9yZW0sIHR4X3JlbTtcbiBcbi1cdGlmIChwZi1cdTAwM2VjYXBzLm51bV9yeF9iZHIgXHUwMDNjIEVORVRDX1NJX01BWF9SSU5HX05VTSArIHBmLVx1MDAzZWNhcHMubnVtX3ZzaSlcbi1cdFx0bnVtX3J4X2JkciA9IHBmLVx1MDAzZWNhcHMubnVtX3J4X2JkciAtIHBmLVx1MDAzZWNhcHMubnVtX3ZzaTtcbitcdGlmIChwZi1cdTAwM2VjYXBzLm51bV9yeF9iZHIgXHUwMDNjIEVORVRDX1NJX01BWF9SSU5HX05VTSArIG51bV92ZnMpXG4rXHRcdG51bV9yeF9iZHIgPSBwZi1cdTAwM2VjYXBzLm51bV9yeF9iZHIgLSBudW1fdmZzO1xuIFx0ZWxzZVxuIFx0XHRudW1fcnhfYmRyID0gRU5FVENfU0lfTUFYX1JJTkdfTlVNO1xuIFxuLVx0aWYgKHBmLVx1MDAzZWNhcHMubnVtX3R4X2JkciBcdTAwM2MgRU5FVENfU0lfTUFYX1JJTkdfTlVNICsgcGYtXHUwMDNlY2Fwcy5udW1fdnNpKVxuLVx0XHRudW1fdHhfYmRyID0gcGYtXHUwMDNlY2Fwcy5udW1fdHhfYmRyIC0gcGYtXHUwMDNlY2Fwcy5udW1fdnNpO1xuK1x0aWYgKHBmLVx1MDAzZWNhcHMubnVtX3R4X2JkciBcdTAwM2MgRU5FVENfU0lfTUFYX1JJTkdfTlVNICsgbnVtX3ZmcylcbitcdFx0bnVtX3R4X2JkciA9IHBmLVx1MDAzZWNhcHMubnVtX3R4X2JkciAtIG51bV92ZnM7XG4gXHRlbHNlXG4gXHRcdG51bV90eF9iZHIgPSBFTkVUQ19TSV9NQVhfUklOR19OVU07XG4gXG4gXHR2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdChmYWxzZSwgbnVtX3R4X2JkciwgbnVtX3J4X2Jkcik7XG4gXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjAoMCksIHZhbCk7XG4gXG4tXHRpZiAoIXBmLVx1MDAzZWNhcHMubnVtX3ZzaSlcbitcdGlmICghbnVtX3ZmcylcbiBcdFx0cmV0dXJuO1xuIFxuIFx0bnVtX3J4X2JkciA9IHBmLVx1MDAzZWNhcHMubnVtX3J4X2JkciAtIG51bV9yeF9iZHI7XG4tXHRyeF9yZW0gPSBudW1fcnhfYmRyICUgcGYtXHUwMDNlY2Fwcy5udW1fdnNpO1xuLVx0bnVtX3J4X2JkciA9IG51bV9yeF9iZHIgLyBwZi1cdTAwM2VjYXBzLm51bV92c2k7XG4rXHRyeF9yZW0gPSBudW1fcnhfYmRyICUgbnVtX3ZmcztcbitcdG51bV9yeF9iZHIgPSBudW1fcnhfYmRyIC8gbnVtX3ZmcztcbiBcbiBcdG51bV90eF9iZHIgPSBwZi1cdTAwM2VjYXBzLm51bV90eF9iZHIgLSBudW1fdHhfYmRyO1xuLVx0dHhfcmVtID0gbnVtX3R4X2JkciAlIHBmLVx1MDAzZWNhcHMubnVtX3ZzaTtcbi1cdG51bV90eF9iZHIgPSBudW1fdHhfYmRyIC8gcGYtXHUwMDNlY2Fwcy5udW1fdnNpO1xuK1x0dHhfcmVtID0gbnVtX3R4X2JkciAlIG51bV92ZnM7XG4rXHRudW1fdHhfYmRyID0gbnVtX3R4X2JkciAvIG51bV92ZnM7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZi1cdTAwM2VjYXBzLm51bV92c2k7IGkrKykge1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3ZmczsgaSsrKSB7XG4gXHRcdHZmX3R4X2JkciA9IChpIFx1MDAzYyB0eF9yZW0pID8gbnVtX3R4X2JkciArIDEgOiBudW1fdHhfYmRyO1xuIFx0XHR2Zl9yeF9iZHIgPSAoaSBcdTAwM2MgcnhfcmVtKSA/IG51bV9yeF9iZHIgKyAxIDogbnVtX3J4X2JkcjtcbiBcdFx0dmFsID0gZW5ldGM0X3BzaWNmZ3IwX3ZhbF9jb25zdHJ1Y3QodHJ1ZSwgdmZfdHhfYmRyLCB2Zl9yeF9iZHIpO1xuQEAgLTM0Niw1MyArMjk1LDcwIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5ncyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0ZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbihwZik7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSwgYm9vbCBlbilcbi17XG4tXHR1MzIgdmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSVBWTVIpO1xuLVxuLVx0aWYgKGVuKVxuLVx0XHR2YWwgfD0gQklUKHNpKTtcbi1cdGVsc2Vcbi1cdFx0dmFsIFx1MDAyNj0gfkJJVChzaSk7XG4tXG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJUFZNUiwgdmFsKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZW5ldGM0X3NldF9kZWZhdWx0X3NpX3ZsYW5fcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuLXtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2Vodztcbi1cdGludCBudW1fc2kgPSBwZi1cdTAwM2VjYXBzLm51bV92c2kgKyAxO1xuLVx0aW50IGk7XG4tXG4tXHQvKiBlbmZvcmNlIFZMQU4gcHJvbWlzY3VvdXMgbW9kZSBmb3IgYWxsIFNJcyAqL1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3NpOyBpKyspXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKGh3LCBpLCB0cnVlKTtcbi19XG4tXG4gLyogQWxsb2NhdGUgdGhlIG51bWJlciBvZiBNU0ktWCB2ZWN0b3JzIGZvciBwZXIgU0kuICovXG4gc3RhdGljIHZvaWQgZW5ldGM0X3NldF9zaV9tc2l4X251bShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIHtcbitcdGludCB2YWxpZF9udW1fc2kgPSBwZi1cdTAwM2V0b3RhbF92ZnMgKyAxO1xuIFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZWh3O1xuLVx0aW50IGksIG51bV9tc2l4LCB0b3RhbF9zaTtcbitcdGludCBpLCBudW1fbXNpeCwgbnVtX3ZzaTtcbiBcdHUzMiB2YWw7XG4gXG4tXHR0b3RhbF9zaSA9IHBmLVx1MDAzZWNhcHMubnVtX3ZzaSArIDE7XG4rXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBFTkVUQzRfRUNBUFIxKTtcbitcdG51bV92c2kgPSBGSUVMRF9HRVQoRUNBUFIxX05VTV9WU0ksIHZhbCk7XG4rXG4rXHQvKiBUaGUgUFNJYUNGR1IyW05VTV9NU0lYXSBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBNU0ktWCBhbGxvY2F0ZWQgdG9cbitcdCAqIHRoZSBTSSBpcyBOVU1fTVNJWCArIDEsIHNvIHRoZSBtaW5pbXVtIG51bWJlciBvZiBNU0ktWCBhbGxvY2F0ZWQgdG9cbitcdCAqIGVhY2ggU0kgaXMgMS4gVGhlIHRvdGFsIG51bWJlciBvZiBNU0ktWCBhbGxvY2F0ZWQgdG8gUFNJIGFuZCBWU0lzXG4rXHQgKiBjYW5ub3QgZXhjZWVkIHRoZSB0b3RhbCBudW1iZXIgb2YgTVNJLVggb3duZWQgYnkgdGhpcyBFTkVUQywgd2hpY2hcbitcdCAqIGlzIEVDQVBSMVtOVU1fTVNJWF0uIE90aGVyd2lzZSwgd2hlbiBtdWx0aXBsZSBFTkVUQyBpbnN0YW5jZXMgZXhpc3QsXG4rXHQgKiBpdCB3aWxsIGFmZmVjdCBvdGhlciBFTkVUQ3Mgd2hvc2UgTVNJLVggaW50ZXJydXB0cyBjYW5ub3QgYmVcbitcdCAqIGdlbmVyYXRlZC4gVGhpcyBpcyBzaW1pbGFyIHRvIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzOiB0aGUgYXJyYXlcbitcdCAqIGl0c2VsZiBpcyBub3QgYWZmZWN0ZWQsIGJ1dCBhZGphY2VudCBhcnJheXMgd2lsbCBiZSBjb3JydXB0ZWQuXG4rXHQgKlxuK1x0ICogcGYtXHUwMDNldG90YWxfdmZzIGlzIDAgaWYgQ09ORklHX1BDSV9JT1YgaXMgZGlzYWJsZWQuIElmIHRoZSBoYXJkd2FyZVxuK1x0ICogaXRzZWxmIHN1cHBvcnRzIFNSLUlPViwgdGhlbiB3aGVuIGFsbG9jYXRpbmcgdGhlIG51bWJlciBvZiBNU0lYcyB0b1xuK1x0ICogdGhlIFNJLCBpdCBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudCB0aGF0IHRoZSBWU0kgaGFzIGF0IGxlYXN0IDFcbitcdCAqIE1TSVgsIGFuZCB0aGUgdG90YWwgbnVtYmVyIG9mIE1TSVhzIG9mIGFsbCBTSXMgY2Fubm90IGV4Y2VlZFxuK1x0ICogRUNBUFIxW05VTV9NU0lYXS5cbitcdCAqL1xuK1x0aWYgKCFwZi1cdTAwM2V0b3RhbF92ZnMgXHUwMDI2XHUwMDI2IG51bV92c2kpIHtcbitcdFx0LyogQmVjYXVzZSBlYWNoIFNJIGhhcyBhdCBsZWFzdCBvbmUgTVNJWCwgYW5kIGZyb20gdGhlIGhhcmR3YXJlXG4rXHRcdCAqIHBlcnNwZWN0aXZlLCBwZi1cdTAwM2VjYXBzLm51bV9tc2l4IHdpbGwgYWx3YXlzIGJlIGdyZWF0ZXIgdGhhblxuK1x0XHQgKiBudW1fdnNpLiBTbyBudW1fbXNpeCBpcyBhbHdheXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAuXG4rXHRcdCAqL1xuK1x0XHRudW1fbXNpeCA9IHBmLVx1MDAzZWNhcHMubnVtX21zaXggLSBudW1fdnNpIC0gMTtcbitcdFx0aWYgKG51bV9tc2l4IFx1MDAzZSBQU0lDRkdSMl9OVU1fTVNJWClcbitcdFx0XHRudW1fbXNpeCA9IFBTSUNGR1IyX05VTV9NU0lYO1xuK1x0XHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoMCksIG51bV9tc2l4KTtcbiBcbi1cdG51bV9tc2l4ID0gcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAvIHRvdGFsX3NpICtcbi1cdFx0ICAgcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAlIHRvdGFsX3NpIC0gMTtcbi1cdHZhbCA9IG51bV9tc2l4IFx1MDAyNiBQU0lDRkdSMl9OVU1fTVNJWDtcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMigwKSwgdmFsKTtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3ZzaTsgaSsrKVxuK1x0XHRcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMihpICsgMSksIDApO1xuIFxuLVx0bnVtX21zaXggPSBwZi1cdTAwM2VjYXBzLm51bV9tc2l4IC8gdG90YWxfc2kgLSAxO1xuLVx0dmFsID0gbnVtX21zaXggXHUwMDI2IFBTSUNGR1IyX05VTV9NU0lYO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNlY2Fwcy5udW1fdnNpOyBpKyspXG4tXHRcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lDRkdSMihpICsgMSksIHZhbCk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdC8qIExpa2V3aXNlLCBmcm9tIHRoZSBoYXJkd2FyZSBwZXJzcGVjdGl2ZSBwZi1cdTAwM2VjYXBzLm51bV9tc2l4IGlzIGFsd2F5c1xuK1x0ICogZ3JlYXRlciB0aGFuIHZhbGlkX251bV9zaS4gU28gbnVtX21zaXggaXMgYWx3YXlzIGdyZWF0ZXIgdGhhbiBvclxuK1x0ICogZXF1YWwgdG8gMC5cbitcdCAqL1xuK1x0bnVtX21zaXggPSBwZi1cdTAwM2VjYXBzLm51bV9tc2l4IC8gdmFsaWRfbnVtX3NpICtcbitcdFx0ICAgcGYtXHUwMDNlY2Fwcy5udW1fbXNpeCAlIHZhbGlkX251bV9zaSAtIDE7XG4rXHRpZiAobnVtX21zaXggXHUwMDNlIFBTSUNGR1IyX05VTV9NU0lYKVxuK1x0XHRudW1fbXNpeCA9IFBTSUNGR1IyX05VTV9NU0lYO1xuK1x0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSUNGR1IyKDApLCBudW1fbXNpeCk7XG4rXG4rXHRudW1fbXNpeCA9IHBmLVx1MDAzZWNhcHMubnVtX21zaXggLyB2YWxpZF9udW1fc2kgLSAxO1xuK1x0aWYgKG51bV9tc2l4IFx1MDAzZSBQU0lDRkdSMl9OVU1fTVNJWClcbitcdFx0bnVtX21zaXggPSBQU0lDRkdSMl9OVU1fTVNJWDtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBmLVx1MDAzZXRvdGFsX3ZmczsgaSsrKVxuK1x0XHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjIoaSArIDEpLCBudW1fbXNpeCk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGVuZXRjNF9lbmFibGVfYWxsX3NpKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4ge1xuIFx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZWh3O1xuLVx0aW50IG51bV9zaSA9IHBmLVx1MDAzZWNhcHMubnVtX3ZzaSArIDE7XG4rXHRpbnQgbnVtX3NpID0gcGYtXHUwMDNldG90YWxfdmZzICsgMTtcbiBcdHUzMiBzaV9iaXRtYXAgPSAwO1xuIFx0aW50IGk7XG4gXG5AQCAtNDEyLDcgKzM3OCw5IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9jb25maWd1cmVfcG9ydF9zaShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0LyogT3V0ZXIgVkxBTiB0YWcgd2lsbCBiZSB1c2VkIGZvciBWTEFOIGZpbHRlcmluZyAqL1xuIFx0ZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSVZMQU5GTVIsIFBTSVZMQU5GTVJfVlMpO1xuIFxuLVx0ZW5ldGM0X3NldF9kZWZhdWx0X3NpX3ZsYW5fcHJvbWlzYyhwZik7XG4rXHQvKiBFbmZvcmNlIFZMQU4gcHJvbWlzY3VvdXMgbW9kZSBmb3IgYWxsIFNJcyAqL1xuK1x0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIHBmLVx1MDAzZXRvdGFsX3ZmcyArIDE7IGkrKylcbitcdFx0ZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhwZi1cdTAwM2VzaSwgaSwgdHJ1ZSk7XG4gXG4gXHQvKiBEaXNhYmxlIFNJIE1BQyBtdWx0aWNhc3QgXHUwMDI2IHVuaWNhc3QgcHJvbWlzY3VvdXMgKi9cbiBcdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDNF9QU0lQTU1SLCAwKTtcbkBAIC00NTAsMTggKzQxOCw2MCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfY29uZmlndXJlX3BvcnQoc3RydWN0IGVuZXRjX3BmICpwZilcbiBcdGVuZXRjX3NldF9kZWZhdWx0X3Jzc19rZXkocGYpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBlbmV0YzRfZ2V0X250bXBfY2FwcyhzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxuK3tcbitcdHN0cnVjdCBudG1wX3VzZXIgKnVzZXIgPSBcdTAwMjZzaS1cdTAwM2VudG1wX3VzZXI7XG4rXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2c2ktXHUwMDNlaHc7XG4rXHR1MzIgdmFsO1xuK1xuK1x0dmFsID0gZW5ldGNfcG9ydF9yZChodywgRU5FVEM0X1BTSU1BRkNBUFIpO1xuK1x0dXNlci1cdTAwM2VtYWZ0X251bV9lbnRyaWVzID0gRklFTERfR0VUKFBTSU1BRkNBUFJfTlVNX01BQ19BRlRFLCB2YWwpO1xuK31cbitcbitzdGF0aWMgaW50IGVuZXRjNF9udG1wX2JpdG1hcF9pbml0KHN0cnVjdCBudG1wX3VzZXIgKnVzZXIpXG4re1xuK1x0dXNlci1cdTAwM2VtYWZ0X2VpZF9iaXRtYXAgPSBiaXRtYXBfemFsbG9jKHVzZXItXHUwMDNlbWFmdF9udW1fZW50cmllcyxcbitcdFx0XHRcdFx0ICAgICAgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIXVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgdm9pZCBlbmV0YzRfbnRtcF9iaXRtYXBfZnJlZShzdHJ1Y3QgbnRtcF91c2VyICp1c2VyKVxuK3tcbitcdGJpdG1hcF9mcmVlKHVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwKTtcbitcdHVzZXItXHUwMDNlbWFmdF9laWRfYml0bWFwID0gTlVMTDtcbit9XG4rXG4gc3RhdGljIGludCBlbmV0YzRfaW5pdF9udG1wX3VzZXIoc3RydWN0IGVuZXRjX3NpICpzaSlcbiB7XG4gXHRzdHJ1Y3QgbnRtcF91c2VyICp1c2VyID0gXHUwMDI2c2ktXHUwMDNlbnRtcF91c2VyO1xuK1x0aW50IGVycjtcbiBcbiBcdC8qIEZvciBFTkVUQyA0LjEsIGFsbCB0YWJsZSB2ZXJzaW9ucyBhcmUgMCAqL1xuIFx0bWVtc2V0KFx1MDAyNnVzZXItXHUwMDNldGJsLCAwLCBzaXplb2YodXNlci1cdTAwM2V0YmwpKTtcbiBcbi1cdHJldHVybiBlbmV0YzRfc2V0dXBfY2JkcihzaSk7XG4rXHRlcnIgPSBlbmV0YzRfc2V0dXBfY2JkcihzaSk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0ZW5ldGM0X2dldF9udG1wX2NhcHMoc2kpO1xuK1x0ZXJyID0gZW5ldGM0X250bXBfYml0bWFwX2luaXQodXNlcik7XG4rXHRpZiAoZXJyKVxuK1x0XHRnb3RvIHRlYXJkb3duX2NiZHI7XG4rXG4rXHRyZXR1cm4gMDtcbitcbit0ZWFyZG93bl9jYmRyOlxuK1x0ZW5ldGM0X3RlYXJkb3duX2NiZHIoc2kpO1xuK1xuK1x0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW5ldGM0X2ZyZWVfbnRtcF91c2VyKHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4ge1xuK1x0ZW5ldGM0X250bXBfYml0bWFwX2ZyZWUoXHUwMDI2c2ktXHUwMDNlbnRtcF91c2VyKTtcbiBcdGVuZXRjNF90ZWFyZG93bl9jYmRyKHNpKTtcbiB9XG4gXG5AQCAtNDc5LDcgKzQ4OSw3IEBAIHN0YXRpYyBpbnQgZW5ldGM0X3BmX2luaXQoc3RydWN0IGVuZXRjX3BmICpwZilcbiBcbiBcdGVyciA9IGVuZXRjNF9pbml0X250bXBfdXNlcihwZi1cdTAwM2VzaSk7XG4gXHRpZiAoZXJyKSB7XG4tXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byBpbml0IENCRFJcXG5cIik7XG4rXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byBpbml0IE5UTVAgdXNlclxcblwiKTtcbiBcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcbkBAIC00OTMsMTggKzUwMywxNyBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGZfZnJlZShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0ZW5ldGM0X2ZyZWVfbnRtcF91c2VyKHBmLVx1MDAzZXNpKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BzaV9kb19zZXRfcnhfbW9kZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4rc3RhdGljIGludCBlbmV0YzRfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4rXHRcdFx0XHQgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLFxuK1x0XHRcdFx0IHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYylcbiB7XG4tXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBlbmV0Y19zaSwgcnhfbW9kZV90YXNrKTtcbi1cdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBlbmV0Y19zaV9wcml2KHNpKTtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gc2ktXHUwMDNlbmRldjtcbi1cdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZzaS1cdTAwM2VodztcbitcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbitcdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBlbmV0Y19zaV9wcml2KHByaXYtXHUwMDNlc2kpO1xuK1x0c3RydWN0IGVuZXRjX3NpICpzaSA9IHByaXYtXHUwMDNlc2k7XG4gXHRib29sIHVjX3Byb21pc2MgPSBmYWxzZTtcbiBcdGJvb2wgbWNfcHJvbWlzYyA9IGZhbHNlO1xuIFx0aW50IHR5cGUgPSAwO1xuIFxuLVx0cnRubF9sb2NrKCk7XG4tXG4gXHRpZiAobmRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BST01JU0MpIHtcbiBcdFx0dWNfcHJvbWlzYyA9IHRydWU7XG4gXHRcdG1jX3Byb21pc2MgPSB0cnVlO1xuQEAgLTUxNSwyOCArNTI0LDIxIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wc2lfZG9fc2V0X3J4X21vZGUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHR0eXBlID0gRU5FVENfTUFDX0ZJTFRFUl9UWVBFX0FMTDtcbiBcdH1cbiBcbi1cdGVuZXRjNF9wZl9zZXRfc2lfbWFjX3Byb21pc2MoaHcsIDAsIHVjX3Byb21pc2MsIG1jX3Byb21pc2MpO1xuK1x0ZW5ldGNfc2V0X3NpX3VjX3Byb21pc2Moc2ksIDAsIHVjX3Byb21pc2MpO1xuK1x0ZW5ldGNfc2V0X3NpX21jX3Byb21pc2Moc2ksIDAsIG1jX3Byb21pc2MpO1xuIFxuIFx0aWYgKHVjX3Byb21pc2MpIHtcbi1cdFx0ZW5ldGM0X3BmX3NldF9zaV91Y19oYXNoX2ZpbHRlcihodywgMCwgMCk7XG4rXHRcdGVuZXRjX3NldF9zaV91Y19oYXNoX2ZpbHRlcihzaSwgMCwgMCk7XG4gXHRcdGVuZXRjNF9wZl9jbGVhcl9tYWZ0X2VudHJpZXMocGYpO1xuIFx0fVxuIFxuIFx0aWYgKG1jX3Byb21pc2MpXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfbWNfaGFzaF9maWx0ZXIoaHcsIDAsIDApO1xuK1x0XHRlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuIFxuIFx0LyogU2V0IG5ldyBNQUMgZmlsdGVyICovXG4tXHRlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIocGYsIHR5cGUpO1xuK1x0ZW5ldGM0X3BmX3NldF9tYWNfZmlsdGVyKHBmLCB0eXBlLCB1YywgbWMpO1xuIFxuLVx0cnRubF91bmxvY2soKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZW5ldGM0X3BmX3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLXtcbi1cdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbi1cdHN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwcml2LVx1MDAzZXNpO1xuLVxuLVx0cXVldWVfd29yayhzaS1cdTAwM2V3b3JrcXVldWUsIFx1MDAyNnNpLVx1MDAzZXJ4X21vZGVfdGFzayk7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBlbmV0YzRfcGZfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuQEAgLTU0NCwxMiArNTQ2LDExIEBAIHN0YXRpYyBpbnQgZW5ldGM0X3BmX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiB7XG4gXHRuZXRkZXZfZmVhdHVyZXNfdCBjaGFuZ2VkID0gbmRldi1cdTAwM2VmZWF0dXJlcyBeIGZlYXR1cmVzO1xuIFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuLVx0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnByaXYtXHUwMDNlc2ktXHUwMDNlaHc7XG4gXG4gXHRpZiAoY2hhbmdlZCBcdTAwMjYgTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSKSB7XG4gXHRcdGJvb2wgcHJvbWlzY19lbiA9ICEoZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUik7XG4gXG4tXHRcdGVuZXRjNF9wZl9zZXRfc2lfdmxhbl9wcm9taXNjKGh3LCAwLCBwcm9taXNjX2VuKTtcbitcdFx0ZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhwcml2LVx1MDAzZXNpLCAwLCBwcm9taXNjX2VuKTtcbiBcdH1cbiBcbiBcdGlmIChjaGFuZ2VkIFx1MDAyNiBORVRJRl9GX0xPT1BCQUNLKVxuQEAgLTU2Niw3ICs1NjcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVuZXRjNF9uZGV2X29wcyA9IHtcbiBcdC5uZG9fc3RhcnRfeG1pdFx0XHQ9IGVuZXRjX3htaXQsXG4gXHQubmRvX2dldF9zdGF0c1x0XHQ9IGVuZXRjX2dldF9zdGF0cyxcbiBcdC5uZG9fc2V0X21hY19hZGRyZXNzXHQ9IGVuZXRjX3BmX3NldF9tYWNfYWRkcixcbi1cdC5uZG9fc2V0X3J4X21vZGVcdD0gZW5ldGM0X3BmX3NldF9yeF9tb2RlLFxuK1x0Lm5kb19zZXRfcnhfbW9kZV9hc3luY1x0PSBlbmV0YzRfcGZfc2V0X3J4X21vZGUsXG4gXHQubmRvX3NldF9mZWF0dXJlc1x0PSBlbmV0YzRfcGZfc2V0X2ZlYXR1cmVzLFxuIFx0Lm5kb192bGFuX3J4X2FkZF92aWRcdD0gZW5ldGNfdmxhbl9yeF9hZGRfdmlkLFxuIFx0Lm5kb192bGFuX3J4X2tpbGxfdmlkXHQ9IGVuZXRjX3ZsYW5fcnhfZGVsX3ZpZCxcbkBAIC02MDIsMTEgKzYwMyw2IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9tYWNfY29uZmlnKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHVuc2lnbmVkIGludCBtb2RlLFxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQ6XG4gXHRcdHZhbCB8PSBJRk1PREVfUkdNSUk7XG4tXHRcdC8qIFdlIG5lZWQgdG8gZW5hYmxlIGF1dG8tbmVnb3RpYXRpb24gZm9yIHRoZSBNQUNcbi1cdFx0ICogaWYgaXRzIFJHTUlJIGludGVyZmFjZSBzdXBwb3J0IEluLUJhbmQgc3RhdHVzLlxuLVx0XHQgKi9cbi1cdFx0aWYgKHBoeWxpbmtfYXV0b25lZ19pbmJhbmQobW9kZSkpXG4tXHRcdFx0dmFsIHw9IFBNX0lGX01PREVfRU5BO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk6XG4gXHRcdHZhbCB8PSBJRk1PREVfUk1JSTtcbkBAIC02MTYsNyArNjEyLDYgQEAgc3RhdGljIHZvaWQgZW5ldGM0X21hY19jb25maWcoc3RydWN0IGVuZXRjX3BmICpwZiwgdW5zaWduZWQgaW50IG1vZGUsXG4gXHRcdHZhbCB8PSBJRk1PREVfU0dNSUk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XG4tXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9YR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUk6XG4gXHRcdHZhbCB8PSBJRk1PREVfWEdNSUk7XG4gXHRcdGJyZWFrO1xuQEAgLTY0MiwyNiArNjM3LDE5IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfcG9ydF9zcGVlZChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBpbnQgc3BlZWQpXG4gXHR1MzIgb2xkX3NwZWVkID0gcHJpdi1cdTAwM2VzcGVlZDtcbiBcdHUzMiB2YWw7XG4gXG4rXHQvKiBJZiB0aGUgc3BlZWQgaXMgdW5rbm93biwgdXNlIHRoZSBtaW5pbXVtIHZhbHVlICovXG4rXHRpZiAoc3BlZWQgPT0gU1BFRURfVU5LTk9XTikge1xuK1x0XHRzcGVlZCA9IFNQRUVEXzEwO1xuK1x0XHRkZXZfd2Fybihwcml2LVx1MDAzZWRldiwgXCJTcGVlZCB1bmtub3duLCBkZWZhdWx0IGlzIDEwTWJwc1xcblwiKTtcbitcdH1cbitcbiBcdGlmIChzcGVlZCA9PSBvbGRfc3BlZWQpXG4gXHRcdHJldHVybjtcbiBcbi1cdHZhbCA9IGVuZXRjX3BvcnRfcmQoXHUwMDI2cHJpdi1cdTAwM2VzaS1cdTAwM2VodywgRU5FVEM0X1BDUik7XG4tXHR2YWwgXHUwMDI2PSB+UENSX1BTUEVFRDtcbi1cbi1cdHN3aXRjaCAoc3BlZWQpIHtcbi1cdGNhc2UgU1BFRURfMTAwOlxuLVx0Y2FzZSBTUEVFRF8xMDAwOlxuLVx0Y2FzZSBTUEVFRF8yNTAwOlxuLVx0Y2FzZSBTUEVFRF8xMDAwMDpcbi1cdFx0dmFsIHw9IChQQ1JfUFNQRUVEIFx1MDAyNiBQQ1JfUFNQRUVEX1ZBTChzcGVlZCkpO1xuLVx0XHRicmVhaztcbi1cdGNhc2UgU1BFRURfMTA6XG4tXHRkZWZhdWx0OlxuLVx0XHR2YWwgfD0gKFBDUl9QU1BFRUQgXHUwMDI2IFBDUl9QU1BFRURfVkFMKFNQRUVEXzEwKSk7XG4tXHR9XG4tXG4tXHRwcml2LVx1MDAzZXNwZWVkID0gc3BlZWQ7XG4rXHR2YWwgPSBlbmV0Y19wb3J0X3JkKFx1MDAyNnByaXYtXHUwMDNlc2ktXHUwMDNlaHcsIEVORVRDNF9QQ1IpIFx1MDAyNiAoflBDUl9QU1BFRUQpO1xuK1x0dmFsIHw9IFBDUl9QU1BFRURfVkFMKHNwZWVkKTtcbiBcdGVuZXRjX3BvcnRfd3IoXHUwMDI2cHJpdi1cdTAwM2VzaS1cdTAwM2VodywgRU5FVEM0X1BDUiwgdmFsKTtcbitcdHByaXYtXHUwMDNlc3BlZWQgPSBzcGVlZDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW5ldGM0X3NldF9yZ21paV9tYWMoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHNwZWVkLCBpbnQgZHVwbGV4KVxuQEAgLTcxNywyMiArNzA1LDYgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3NldF9ybWlpX21hYyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgc3BlZWQsIGludCBkdXBsZXgpXG4gXHRlbmV0Y19wb3J0X21hY193cihzaSwgRU5FVEM0X1BNX0lGX01PREUoMCksIHZhbCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfaGRfZmxvd19jb250cm9sKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGJvb2wgZW5hYmxlKVxuLXtcbi1cdHN0cnVjdCBlbmV0Y19zaSAqc2kgPSBwZi1cdTAwM2VzaTtcbi1cdHUzMiBvbGRfdmFsLCB2YWw7XG4tXG4tXHRpZiAoIXBmLVx1MDAzZWNhcHMuaGFsZl9kdXBsZXgpXG4tXHRcdHJldHVybjtcbi1cbi1cdG9sZF92YWwgPSBlbmV0Y19wb3J0X21hY19yZChzaSwgRU5FVEM0X1BNX0NNRF9DRkcoMCkpO1xuLVx0dmFsID0gdTMyX3JlcGxhY2VfYml0cyhvbGRfdmFsLCBlbmFibGUgPyAxIDogMCwgUE1fQ01EX0NGR19IRF9GQ0VOKTtcbi1cdGlmICh2YWwgPT0gb2xkX3ZhbClcbi1cdFx0cmV0dXJuO1xuLVxuLVx0ZW5ldGNfcG9ydF9tYWNfd3Ioc2ksIEVORVRDNF9QTV9DTURfQ0ZHKDApLCB2YWwpO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3J4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGJvb2wgcnhfcGF1c2UpXG4ge1xuIFx0c3RydWN0IGVuZXRjX3NpICpzaSA9IHBmLVx1MDAzZXNpO1xuQEAgLTkwOCwxMyArODgwLDExIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wbF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBwaHlsaW5rX3RvX2VuZXRjX3BmKGNvbmZpZyk7XG4gXHRzdHJ1Y3QgZW5ldGNfc2kgKnNpID0gcGYtXHUwMDNlc2k7XG4gXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2O1xuLVx0Ym9vbCBoZF9mYyA9IGZhbHNlO1xuIFxuIFx0cHJpdiA9IG5ldGRldl9wcml2KHNpLVx1MDAzZW5kZXYpO1xuIFx0ZW5ldGM0X3NldF9wb3J0X3NwZWVkKHByaXYsIHNwZWVkKTtcbiBcbi1cdGlmICghcGh5bGlua19hdXRvbmVnX2luYmFuZChtb2RlKSBcdTAwMjZcdTAwMjZcbi1cdCAgICBwaHlfaW50ZXJmYWNlX21vZGVfaXNfcmdtaWkoaW50ZXJmYWNlKSlcbitcdGlmIChwaHlfaW50ZXJmYWNlX21vZGVfaXNfcmdtaWkoaW50ZXJmYWNlKSlcbiBcdFx0ZW5ldGM0X3NldF9yZ21paV9tYWMocGYsIHNwZWVkLCBkdXBsZXgpO1xuIFxuIFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUk1JSSlcbkBAIC05MjYsMTggKzg5Niw4IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wbF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcdFx0ICovXG4gXHRcdGlmIChwcml2LVx1MDAzZWFjdGl2ZV9vZmZsb2FkcyBcdTAwMjYgRU5FVENfRl9RQlUpXG4gXHRcdFx0dHhfcGF1c2UgPSBmYWxzZTtcbi1cdH0gZWxzZSB7IC8qIERVUExFWF9IQUxGICovXG4tXHRcdGlmICh0eF9wYXVzZSB8fCByeF9wYXVzZSlcbi1cdFx0XHRoZF9mYyA9IHRydWU7XG4tXG4tXHRcdC8qIEFzIHBlciA4MDIuMyBhbm5leCAzMUIsIFBBVVNFIGZyYW1lcyBhcmUgb25seSBzdXBwb3J0ZWRcbi1cdFx0ICogd2hlbiB0aGUgbGluayBpcyBjb25maWd1cmVkIGZvciBmdWxsIGR1cGxleCBvcGVyYXRpb24uXG4tXHRcdCAqL1xuLVx0XHR0eF9wYXVzZSA9IGZhbHNlO1xuLVx0XHRyeF9wYXVzZSA9IGZhbHNlO1xuIFx0fVxuIFxuLVx0ZW5ldGM0X3NldF9oZF9mbG93X2NvbnRyb2wocGYsIGhkX2ZjKTtcbiBcdGVuZXRjNF9zZXRfdHhfcGF1c2UocGYsIHByaXYtXHUwMDNlbnVtX3J4X3JpbmdzLCB0eF9wYXVzZSk7XG4gXHRlbmV0YzRfc2V0X3J4X3BhdXNlKHBmLCByeF9wYXVzZSk7XG4gXHRlbmV0YzRfbWFjX3R4X2VuYWJsZShwZik7XG5AQCAtMTAwOSwxOSArOTY5LDYgQEAgc3RhdGljIHZvaWQgZW5ldGM0X2xpbmtfZGVpbml0KHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYpXG4gXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGVuZXRjNF9wc2lfd3FfdGFza19pbml0KHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4te1xuLVx0Y2hhciB3cV9uYW1lWzI0XTtcbi1cbi1cdElOSVRfV09SSyhcdTAwMjZzaS1cdTAwM2VyeF9tb2RlX3Rhc2ssIGVuZXRjNF9wc2lfZG9fc2V0X3J4X21vZGUpO1xuLVx0c25wcmludGYod3FfbmFtZSwgc2l6ZW9mKHdxX25hbWUpLCBcImVuZXRjLSVzXCIsIHBjaV9uYW1lKHNpLVx1MDAzZXBkZXYpKTtcbi1cdHNpLVx1MDAzZXdvcmtxdWV1ZSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKHdxX25hbWUpO1xuLVx0aWYgKCFzaS1cdTAwM2V3b3JrcXVldWUpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuLVxuIHN0YXRpYyBpbnQgZW5ldGM0X3BmX25ldGRldl9jcmVhdGUoc3RydWN0IGVuZXRjX3NpICpzaSlcbiB7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZzaS1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbkBAIC0xMDYyLDEyICsxMDA5LDYgQEAgc3RhdGljIGludCBlbmV0YzRfcGZfbmV0ZGV2X2NyZWF0ZShzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJfbGlua19pbml0O1xuIFxuLVx0ZXJyID0gZW5ldGM0X3BzaV93cV90YXNrX2luaXQoc2kpO1xuLVx0aWYgKGVycikge1xuLVx0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gaW5pdCB3b3JrcXVldWVcXG5cIik7XG4tXHRcdGdvdG8gZXJyX3dxX2luaXQ7XG4tXHR9XG4tXG4gXHRlcnIgPSByZWdpc3Rlcl9uZXRkZXYobmRldik7XG4gXHRpZiAoZXJyKSB7XG4gXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byByZWdpc3RlciBuZXRkZXZcXG5cIik7XG5AQCAtMTA3Nyw4ICsxMDE4LDYgQEAgc3RhdGljIGludCBlbmV0YzRfcGZfbmV0ZGV2X2NyZWF0ZShzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyX3JlZ19uZXRkZXY6XG4tXHRkZXN0cm95X3dvcmtxdWV1ZShzaS1cdTAwM2V3b3JrcXVldWUpO1xuLWVycl93cV9pbml0OlxuIFx0ZW5ldGM0X2xpbmtfZGVpbml0KHByaXYpO1xuIGVycl9saW5rX2luaXQ6XG4gXHRlbmV0Y19mcmVlX21zaXgocHJpdik7XG5AQCAtMTA5Niw4ICsxMDM1LDYgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3BmX25ldGRldl9kZXN0cm95KHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHNpLVx1MDAzZW5kZXY7XG4gXG4gXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcbi1cdGNhbmNlbF93b3JrKFx1MDAyNnNpLVx1MDAzZXJ4X21vZGVfdGFzayk7XG4tXHRkZXN0cm95X3dvcmtxdWV1ZShzaS1cdTAwM2V3b3JrcXVldWUpO1xuIFx0ZW5ldGM0X2xpbmtfZGVpbml0KHByaXYpO1xuIFx0ZW5ldGNfZnJlZV9tc2l4KHByaXYpO1xuIFx0ZnJlZV9uZXRkZXYobmRldik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmNcbmluZGV4IDcxZjM3NmVmMWJlMWM5Li4wN2I3ODMyZjI0Mjc2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmNcbkBAIC0yOSw3ICsyOSw3IEBAIHN0YXRpYyBjb25zdCB1MzIgZW5ldGNfcnhiZHJfcmVnc1tdID0ge1xuIH07XG4gXG4gc3RhdGljIGNvbnN0IHUzMiBlbmV0Y19wb3J0X3JlZ3NbXSA9IHtcbi1cdEVORVRDX1BNUiwgRU5FVENfUFNSLCBFTkVUQ19QU0lQTVIsIEVORVRDX1BTSVBNQVIwKDApLFxuK1x0RU5FVENfUE1SLCBFTkVUQ19QU1IsIEVORVRDX1BTSVBNTVIsIEVORVRDX1BTSVBNQVIwKDApLFxuIFx0RU5FVENfUFNJUE1BUjEoMCksIEVORVRDX1BUWE1CQVIsIEVORVRDX1BDQVBSMCwgRU5FVENfUENBUFIxLFxuIFx0RU5FVENfUFNJQ0ZHUjAoMCksIEVORVRDX1BSRlNDQVBSLCBFTkVUQ19QVENNU0RVUigwKSxcbiBcdEVORVRDX1BNMF9DTURfQ0ZHLCBFTkVUQ19QTTBfTUFYRlJNLCBFTkVUQ19QTTBfSUZfTU9ERVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmhcbmluZGV4IGJmOTliNjVkNzU5OGFiLi4xNmRhNzMyZGM1ZGU4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfaHcuaFxuQEAgLTE4MCwxMyArMTgwLDEzIEBAIGVudW0gZW5ldGNfYmRyX3R5cGUge1RYLCBSWH07XG4gI2RlZmluZSBFTkVUQ19QTVJfUFNQRUVEXzEwMDBNXHRCSVQoOSlcbiAjZGVmaW5lIEVORVRDX1BNUl9QU1BFRURfMjUwME1cdEJJVCgxMClcbiAjZGVmaW5lIEVORVRDX1BTUlx0XHQweDAwMDQgLyogUk8gKi9cbi0jZGVmaW5lIEVORVRDX1BTSVBNUlx0XHQweDAwMThcbi0jZGVmaW5lIEVORVRDX1BTSVBNUl9TRVRfVVAobilcdEJJVChuKSAvKiBuID0gU0kgaW5kZXggKi9cbi0jZGVmaW5lIEVORVRDX1BTSVBNUl9TRVRfTVAobilcdEJJVCgobikgKyAxNilcbisjZGVmaW5lIEVORVRDX1BTSVBNTVJcdFx0MHgwMDE4XG4rI2RlZmluZSAgUFNJUE1NUl9TSV9NQUNfVVAobilcdEJJVChuKSAvKiBuID0gU0kgaW5kZXggKi9cbisjZGVmaW5lICBQU0lQTU1SX1NJX01BQ19NUChuKVx0QklUKChuKSArIDE2KVxuK1xuICNkZWZpbmUgRU5FVENfUFNJUFZNUlx0XHQweDAwMWNcbi0jZGVmaW5lIEVORVRDX1ZMQU5fUFJPTUlTQ19NQVBfQUxMXHQweDdcbi0jZGVmaW5lIEVORVRDX1BTSVBWTVJfU0VUX1ZQKHNpbWFwKVx0KChzaW1hcCkgXHUwMDI2IDB4Nylcbi0jZGVmaW5lIEVORVRDX1BTSVBWTVJfU0VUX1ZVVEEoc2ltYXApXHQoKChzaW1hcCkgXHUwMDI2IDB4NykgXHUwMDNjXHUwMDNjIDE2KVxuKyNkZWZpbmUgIFBTSVBWTVJfU0lfVkxBTl9QKG4pXHRCSVQobikgLyogbiA9IFNJIGluZGV4ICovXG4rXG4gI2RlZmluZSBFTkVUQ19QU0lQTUFSMChuKVx0KDB4MDEwMCArIChuKSAqIDB4OCkgLyogbiA9IFNJIGluZGV4ICovXG4gI2RlZmluZSBFTkVUQ19QU0lQTUFSMShuKVx0KDB4MDEwNCArIChuKSAqIDB4OClcbiAjZGVmaW5lIEVORVRDX1BWQ0xDVFJcdFx0MHgwMjA4XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuY1xuaW5kZXggMmQ2ODdiYjhjM2EwNjMuLmE1MDk5MjlmODlmMjVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jXG5AQCAtNDIsMjYgKzQyLDYgQEAgc3RhdGljIHZvaWQgZW5ldGNfcGZfZGVzdHJveV9wY3Moc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG4gXHRseW54X3Bjc19kZXN0cm95KHBjcyk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGVuZXRjX3NldF92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX2h3ICpodywgY2hhciBzaV9tYXApXG4te1xuLVx0dTMyIHZhbCA9IGVuZXRjX3BvcnRfcmQoaHcsIEVORVRDX1BTSVBWTVIpO1xuLVxuLVx0dmFsIFx1MDAyNj0gfkVORVRDX1BTSVBWTVJfU0VUX1ZQKEVORVRDX1ZMQU5fUFJPTUlTQ19NQVBfQUxMKTtcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BTSVBWTVIsIEVORVRDX1BTSVBWTVJfU0VUX1ZQKHNpX21hcCkgfCB2YWwpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBlbmV0Y19lbmFibGVfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBzaV9pZHgpXG4te1xuLVx0cGYtXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwIHw9IEJJVChzaV9pZHgpO1xuLVx0ZW5ldGNfc2V0X3ZsYW5fcHJvbWlzYyhcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VodywgcGYtXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZW5ldGNfZGlzYWJsZV9zaV92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHNpX2lkeClcbi17XG4tXHRwZi1cdTAwM2V2bGFuX3Byb21pc2Nfc2ltYXAgXHUwMDI2PSB+QklUKHNpX2lkeCk7XG4tXHRlbmV0Y19zZXRfdmxhbl9wcm9taXNjKFx1MDAyNnBmLVx1MDAzZXNpLVx1MDAzZWh3LCBwZi1cdTAwM2V2bGFuX3Byb21pc2Nfc2ltYXApO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBlbmV0Y19zZXRfaXNvbF92bGFuKHN0cnVjdCBlbmV0Y19odyAqaHcsIGludCBzaSwgdTE2IHZsYW4sIHU4IHFvcylcbiB7XG4gXHR1MzIgdmFsID0gMDtcbkBAIC04MCwzNyArNjAsNiBAQCBzdGF0aWMgdm9pZCBlbmV0Y19hZGRfbWFjX2FkZHJfZW1fZmlsdGVyKHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICpmaWx0ZXIsXG4gXHRmaWx0ZXItXHUwMDNlbWFjX2FkZHJfY250Kys7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGVuZXRjX2NsZWFyX21hY19odF9mbHQoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkeCwgaW50IHR5cGUpXG4te1xuLVx0Ym9vbCBlcnIgPSBzaS1cdTAwM2VlcnJhdGEgXHUwMDI2IEVORVRDX0VSUl9VQ01DU1dQO1xuLVxuLVx0aWYgKHR5cGUgPT0gVUMpIHtcbi1cdFx0ZW5ldGNfcG9ydF93cihcdTAwMjZzaS1cdTAwM2VodywgRU5FVENfUFNJVU1IRlIwKHNpX2lkeCwgZXJyKSwgMCk7XG4tXHRcdGVuZXRjX3BvcnRfd3IoXHUwMDI2c2ktXHUwMDNlaHcsIEVORVRDX1BTSVVNSEZSMShzaV9pZHgpLCAwKTtcbi1cdH0gZWxzZSB7IC8qIE1DICovXG4tXHRcdGVuZXRjX3BvcnRfd3IoXHUwMDI2c2ktXHUwMDNlaHcsIEVORVRDX1BTSU1NSEZSMChzaV9pZHgsIGVyciksIDApO1xuLVx0XHRlbmV0Y19wb3J0X3dyKFx1MDAyNnNpLVx1MDAzZWh3LCBFTkVUQ19QU0lNTUhGUjEoc2lfaWR4KSwgMCk7XG4tXHR9XG4tfVxuLVxuLXN0YXRpYyB2b2lkIGVuZXRjX3NldF9tYWNfaHRfZmx0KHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZHgsIGludCB0eXBlLFxuLVx0XHRcdFx0IHVuc2lnbmVkIGxvbmcgaGFzaClcbi17XG4tXHRib29sIGVyciA9IHNpLVx1MDAzZWVycmF0YSBcdTAwMjYgRU5FVENfRVJSX1VDTUNTV1A7XG4tXG4tXHRpZiAodHlwZSA9PSBVQykge1xuLVx0XHRlbmV0Y19wb3J0X3dyKFx1MDAyNnNpLVx1MDAzZWh3LCBFTkVUQ19QU0lVTUhGUjAoc2lfaWR4LCBlcnIpLFxuLVx0XHRcdCAgICAgIGxvd2VyXzMyX2JpdHMoaGFzaCkpO1xuLVx0XHRlbmV0Y19wb3J0X3dyKFx1MDAyNnNpLVx1MDAzZWh3LCBFTkVUQ19QU0lVTUhGUjEoc2lfaWR4KSxcbi1cdFx0XHQgICAgICB1cHBlcl8zMl9iaXRzKGhhc2gpKTtcbi1cdH0gZWxzZSB7IC8qIE1DICovXG4tXHRcdGVuZXRjX3BvcnRfd3IoXHUwMDI2c2ktXHUwMDNlaHcsIEVORVRDX1BTSU1NSEZSMChzaV9pZHgsIGVyciksXG4tXHRcdFx0ICAgICAgbG93ZXJfMzJfYml0cyhoYXNoKSk7XG4tXHRcdGVuZXRjX3BvcnRfd3IoXHUwMDI2c2ktXHUwMDNlaHcsIEVORVRDX1BTSU1NSEZSMShzaV9pZHgpLFxuLVx0XHRcdCAgICAgIHVwcGVyXzMyX2JpdHMoaGFzaCkpO1xuLVx0fVxuLX1cbi1cbiBzdGF0aWMgdm9pZCBlbmV0Y19zeW5jX21hY19maWx0ZXJzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4ge1xuIFx0c3RydWN0IGVuZXRjX21hY19maWx0ZXIgKmYgPSBwZi1cdTAwM2VtYWNfZmlsdGVyO1xuQEAgLTEyMiwxMiArNzEsMTYgQEAgc3RhdGljIHZvaWQgZW5ldGNfc3luY19tYWNfZmlsdGVycyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFERFJfVFlQRTsgaSsrLCBmKyspIHtcbiBcdFx0Ym9vbCBlbSA9IChmLVx1MDAzZW1hY19hZGRyX2NudCA9PSAxKSBcdTAwMjZcdTAwMjYgKGkgPT0gVUMpO1xuIFx0XHRib29sIGNsZWFyID0gIWYtXHUwMDNlbWFjX2FkZHJfY250O1xuK1x0XHR1NjQgaGFzaDtcbiBcbiBcdFx0aWYgKGNsZWFyKSB7XG4tXHRcdFx0aWYgKGkgPT0gVUMpXG4rXHRcdFx0aWYgKGkgPT0gVUMpIHtcbiBcdFx0XHRcdGVuZXRjX2NsZWFyX21hY19mbHRfZW50cnkoc2ksIHBvcyk7XG4rXHRcdFx0XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIoc2ksIDAsIDApO1xuK1x0XHRcdH1cbiBcbi1cdFx0XHRlbmV0Y19jbGVhcl9tYWNfaHRfZmx0KHNpLCAwLCBpKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuQEAgLTEzNSw3ICs4OCw3IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3N5bmNfbWFjX2ZpbHRlcnMoc3RydWN0IGVuZXRjX3BmICpwZilcbiBcdFx0aWYgKGVtKSB7XG4gXHRcdFx0aW50IGVycjtcbiBcbi1cdFx0XHRlbmV0Y19jbGVhcl9tYWNfaHRfZmx0KHNpLCAwLCBVQyk7XG4rXHRcdFx0ZW5ldGNfc2V0X3NpX3VjX2hhc2hfZmlsdGVyKHNpLCAwLCAwKTtcbiBcbiBcdFx0XHRlcnIgPSBlbmV0Y19zZXRfbWFjX2ZsdF9lbnRyeShzaSwgcG9zLCBmLVx1MDAzZW1hY19hZGRyLFxuIFx0XHRcdFx0XHRcdCAgICAgIEJJVCgwKSk7XG5AQCAtMTQ3LDExICsxMDAsMTUgQEAgc3RhdGljIHZvaWQgZW5ldGNfc3luY19tYWNfZmlsdGVycyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0XHRcdFx0IGVycik7XG4gXHRcdH1cbiBcbitcdFx0Yml0bWFwX3RvX2FycjY0KFx1MDAyNmhhc2gsIGYtXHUwMDNlbWFjX2hhc2hfdGFibGUsXG4rXHRcdFx0XHRFTkVUQ19NQUREUl9IQVNIX1RCTF9TWik7XG4gXHRcdC8qIGhhc2ggdGFibGUgZmlsdGVyLCBjbGVhciBFTSBmaWx0ZXIgZm9yIFVDIGVudHJpZXMgKi9cbi1cdFx0aWYgKGkgPT0gVUMpXG4rXHRcdGlmIChpID09IFVDKSB7XG4gXHRcdFx0ZW5ldGNfY2xlYXJfbWFjX2ZsdF9lbnRyeShzaSwgcG9zKTtcbi1cbi1cdFx0ZW5ldGNfc2V0X21hY19odF9mbHQoc2ksIDAsIGksICpmLVx1MDAzZW1hY19oYXNoX3RhYmxlKTtcbitcdFx0XHRlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc2ksIDAsIGhhc2gpO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdGVuZXRjX3NldF9zaV9tY19oYXNoX2ZpbHRlcihzaSwgMCwgaGFzaCk7XG4rXHRcdH1cbiBcdH1cbiB9XG4gXG5AQCAtMTU5LDIxICsxMTYsMTcgQEAgc3RhdGljIHZvaWQgZW5ldGNfcGZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuIFx0c3RydWN0IGVuZXRjX3BmICpwZiA9IGVuZXRjX3NpX3ByaXYocHJpdi1cdTAwM2VzaSk7XG4tXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2cHJpdi1cdTAwM2VzaS1cdTAwM2VodztcbiBcdGJvb2wgdXByb20gPSBmYWxzZSwgbXByb20gPSBmYWxzZTtcbiBcdHN0cnVjdCBlbmV0Y19tYWNfZmlsdGVyICpmaWx0ZXI7XG4gXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xuLVx0dTMyIHBzaXBtciA9IDA7XG4gXHRib29sIGVtO1xuIFxuIFx0aWYgKG5kZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9QUk9NSVNDKSB7XG4gXHRcdC8qIGVuYWJsZSBwcm9taXNjIG1vZGUgZm9yIFNJMCAoUEYpICovXG4tXHRcdHBzaXBtciA9IEVORVRDX1BTSVBNUl9TRVRfVVAoMCkgfCBFTkVUQ19QU0lQTVJfU0VUX01QKDApO1xuIFx0XHR1cHJvbSA9IHRydWU7XG4gXHRcdG1wcm9tID0gdHJ1ZTtcbiBcdH0gZWxzZSBpZiAobmRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0FMTE1VTFRJKSB7XG4gXHRcdC8qIGVuYWJsZSBtdWx0aSBjYXN0IHByb21pc2MgbW9kZSBmb3IgU0kwIChQRikgKi9cbi1cdFx0cHNpcG1yID0gRU5FVENfUFNJUE1SX1NFVF9NUCgwKTtcbiBcdFx0bXByb20gPSB0cnVlO1xuIFx0fVxuIFxuQEAgLTIxMSw5ICsxNjQsOCBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wZl9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdFx0LyogdXBkYXRlIFBGIGVudHJpZXMgKi9cbiBcdFx0ZW5ldGNfc3luY19tYWNfZmlsdGVycyhwZik7XG4gXG4tXHRwc2lwbXIgfD0gZW5ldGNfcG9ydF9yZChodywgRU5FVENfUFNJUE1SKSBcdTAwMjZcbi1cdFx0ICB+KEVORVRDX1BTSVBNUl9TRVRfVVAoMCkgfCBFTkVUQ19QU0lQTVJfU0VUX01QKDApKTtcbi1cdGVuZXRjX3BvcnRfd3IoaHcsIEVORVRDX1BTSVBNUiwgcHNpcG1yKTtcbitcdGVuZXRjX3NldF9zaV91Y19wcm9taXNjKHByaXYtXHUwMDNlc2ksIDAsIHVwcm9tKTtcbitcdGVuZXRjX3NldF9zaV9tY19wcm9taXNjKHByaXYtXHUwMDNlc2ksIDAsIG1wcm9tKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW5ldGNfc2V0X2xvb3BiYWNrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBib29sIGVuKVxuQEAgLTQ2OSwxMiArNDIxLDExIEBAIHN0YXRpYyB2b2lkIGVuZXRjX2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXG4gXHQvKiBzcGxpdCB1cCBSRlMgZW50cmllcyAqL1xuIFx0ZW5ldGNfcG9ydF9hc3NpZ25fcmZzX2VudHJpZXMocGYtXHUwMDNlc2kpO1xuLVxuIFx0LyogZW5mb3JjZSBWTEFOIHByb21pc2MgbW9kZSBmb3IgYWxsIFNJcyAqL1xuLVx0cGYtXHUwMDNldmxhbl9wcm9taXNjX3NpbWFwID0gRU5FVENfVkxBTl9QUk9NSVNDX01BUF9BTEw7XG4tXHRlbmV0Y19zZXRfdmxhbl9wcm9taXNjKGh3LCBwZi1cdTAwM2V2bGFuX3Byb21pc2Nfc2ltYXApO1xuK1x0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIHBmLVx1MDAzZXRvdGFsX3ZmcyArIDE7IGkrKylcbitcdFx0ZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyhwZi1cdTAwM2VzaSwgaSwgdHJ1ZSk7XG4gXG4tXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQ19QU0lQTVIsIDApO1xuK1x0ZW5ldGNfcG9ydF93cihodywgRU5FVENfUFNJUE1NUiwgMCk7XG4gXG4gXHQvKiBlbmFibGUgcG9ydCAqL1xuIFx0ZW5ldGNfcG9ydF93cihodywgRU5FVENfUE1SLCBFTkVUQ19QTVJfRU4pO1xuQEAgLTQ5NCwxMiArNDQ1LDkgQEAgc3RhdGljIGludCBlbmV0Y19wZl9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHR9XG4gXG4gXHRpZiAoY2hhbmdlZCBcdTAwMjYgTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSKSB7XG4tXHRcdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBlbmV0Y19zaV9wcml2KHByaXYtXHUwMDNlc2kpO1xuK1x0XHRib29sIHByb21pc2MgPSAhKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19GSUxURVIpO1xuIFxuLVx0XHRpZiAoISEoZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUikpXG4tXHRcdFx0ZW5ldGNfZGlzYWJsZV9zaV92bGFuX3Byb21pc2MocGYsIDApO1xuLVx0XHRlbHNlXG4tXHRcdFx0ZW5ldGNfZW5hYmxlX3NpX3ZsYW5fcHJvbWlzYyhwZiwgMCk7XG4rXHRcdGVuZXRjX3NldF9zaV92bGFuX3Byb21pc2MocHJpdi1cdTAwM2VzaSwgMCwgcHJvbWlzYyk7XG4gXHR9XG4gXG4gXHRpZiAoY2hhbmdlZCBcdTAwMjYgTkVUSUZfRl9MT09QQkFDSylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5oXG5pbmRleCAyODViN2U1YzQ4ZmRjNy4uNTZkMjNhOGExMWEwNjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmhcbkBAIC0xNywxMiArMTcsOSBAQCBzdHJ1Y3QgZW5ldGNfdmZfc3RhdGUge1xuIH07XG4gXG4gc3RydWN0IGVuZXRjX3BvcnRfY2FwcyB7XG4tXHR1MzIgaGFsZl9kdXBsZXg6MTtcbi1cdGludCBudW1fdnNpO1xuIFx0aW50IG51bV9tc2l4O1xuIFx0aW50IG51bV9yeF9iZHI7XG4gXHRpbnQgbnVtX3R4X2Jkcjtcbi1cdGludCBtYWNfZmlsdGVyX251bTtcbiB9O1xuIFxuIHN0cnVjdCBlbmV0Y19wZjtcbkBAIC00Nyw3ICs0NCw2IEBAIHN0cnVjdCBlbmV0Y19wZiB7XG4gXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgbXNnX3Rhc2s7XG4gXHRjaGFyIG1zZ19pbnRfbmFtZVtFTkVUQ19JTlRfTkFNRV9NQVhdO1xuIFxuLVx0Y2hhciB2bGFuX3Byb21pc2Nfc2ltYXA7IC8qIGJpdG1hcCBvZiBTSXMgaW4gVkxBTiBwcm9taXNjIG1vZGUgKi9cbiBcdERFQ0xBUkVfQklUTUFQKHZsYW5faHRfZmlsdGVyLCBFTkVUQ19WTEFOX0hUX1NJWkUpO1xuIFx0REVDTEFSRV9CSVRNQVAoYWN0aXZlX3ZsYW5zLCBWTEFOX05fVklEKTtcbiBcbkBAIC02MCw4ICs1Niw2IEBAIHN0cnVjdCBlbmV0Y19wZiB7XG4gXG4gXHRzdHJ1Y3QgZW5ldGNfcG9ydF9jYXBzIGNhcHM7XG4gXHRjb25zdCBzdHJ1Y3QgZW5ldGNfcGZfb3BzICpvcHM7XG4tXG4tXHRpbnQgbnVtX21mZTtcdC8qIG51bWJlciBvZiBtYWMgYWRkcmVzcyBmaWx0ZXIgdGFibGUgZW50cmllcyAqL1xuIH07XG4gXG4gI2RlZmluZSBwaHlsaW5rX3RvX2VuZXRjX3BmKGNvbmZpZykgXFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmNcbmluZGV4IDZlNWQyZjg2OTkxNTBiLi5kMzJhMTk1YTA0Yzk3ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jXG5AQCAtMSw1ICsxLDUgQEBcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjArIE9SIEJTRC0zLUNsYXVzZSlcbi0vKiBDb3B5cmlnaHQgMjAyNCBOWFAgKi9cbisvKiBDb3B5cmlnaHQgMjAyNC0yMDI2IE5YUCAqL1xuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzbC9lbmV0Y19tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbkBAIC04Nyw2ICs4NywxMTIgQEAgaW50IGVuZXRjX3NldHVwX21hY19hZGRyZXNzZXMoc3RydWN0IGRldmljZV9ub2RlICpucCwgc3RydWN0IGVuZXRjX3BmICpwZilcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0dXBfbWFjX2FkZHJlc3Nlcyk7XG4gXG4rdm9pZCBlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYylcbit7XG4rXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2c2ktXHUwMDNlaHc7XG4rXHRpbnQgcHNpcG1tcl9vZmY7XG4rXHR1MzIgdmFsO1xuK1xuK1x0aWYgKGlzX2VuZXRjX3JldjEoc2kpKVxuK1x0XHRwc2lwbW1yX29mZiA9IEVORVRDX1BTSVBNTVI7XG4rXHRlbHNlXG4rXHRcdHBzaXBtbXJfb2ZmID0gRU5FVEM0X1BTSVBNTVI7XG4rXG4rXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBwc2lwbW1yX29mZik7XG4rXG4rXHRpZiAocHJvbWlzYylcbitcdFx0dmFsIHw9IFBTSVBNTVJfU0lfTUFDX1VQKHNpX2lkKTtcbitcdGVsc2VcbitcdFx0dmFsIFx1MDAyNj0gflBTSVBNTVJfU0lfTUFDX1VQKHNpX2lkKTtcbitcbitcdGVuZXRjX3BvcnRfd3IoaHcsIHBzaXBtbXJfb2ZmLCB2YWwpO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyk7XG4rXG4rdm9pZCBlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYylcbit7XG4rXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2c2ktXHUwMDNlaHc7XG4rXHRpbnQgcHNpcG1tcl9vZmY7XG4rXHR1MzIgdmFsO1xuK1xuK1x0aWYgKGlzX2VuZXRjX3JldjEoc2kpKVxuK1x0XHRwc2lwbW1yX29mZiA9IEVORVRDX1BTSVBNTVI7XG4rXHRlbHNlXG4rXHRcdHBzaXBtbXJfb2ZmID0gRU5FVEM0X1BTSVBNTVI7XG4rXG4rXHR2YWwgPSBlbmV0Y19wb3J0X3JkKGh3LCBwc2lwbW1yX29mZik7XG4rXG4rXHRpZiAocHJvbWlzYylcbitcdFx0dmFsIHw9IFBTSVBNTVJfU0lfTUFDX01QKHNpX2lkKTtcbitcdGVsc2VcbitcdFx0dmFsIFx1MDAyNj0gflBTSVBNTVJfU0lfTUFDX01QKHNpX2lkKTtcbitcbitcdGVuZXRjX3BvcnRfd3IoaHcsIHBzaXBtbXJfb2ZmLCB2YWwpO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyk7XG4rXG4rdm9pZCBlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCB1NjQgaGFzaClcbit7XG4rXHRpbnQgcHNpdW1oZnIwX29mZiwgcHNpdW1oZnIxX29mZjtcbitcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZzaS1cdTAwM2VodztcbitcbitcdGlmIChpc19lbmV0Y19yZXYxKHNpKSkge1xuK1x0XHRib29sIGVyciA9IHNpLVx1MDAzZWVycmF0YSBcdTAwMjYgRU5FVENfRVJSX1VDTUNTV1A7XG4rXG4rXHRcdHBzaXVtaGZyMF9vZmYgPSBFTkVUQ19QU0lVTUhGUjAoc2lfaWQsIGVycik7XG4rXHRcdHBzaXVtaGZyMV9vZmYgPSBFTkVUQ19QU0lVTUhGUjEoc2lfaWQpO1xuK1x0fSBlbHNlIHtcbitcdFx0cHNpdW1oZnIwX29mZiA9IEVORVRDNF9QU0lVTUhGUjAoc2lfaWQpO1xuK1x0XHRwc2l1bWhmcjFfb2ZmID0gRU5FVEM0X1BTSVVNSEZSMShzaV9pZCk7XG4rXHR9XG4rXG4rXHRlbmV0Y19wb3J0X3dyKGh3LCBwc2l1bWhmcjBfb2ZmLCBsb3dlcl8zMl9iaXRzKGhhc2gpKTtcbitcdGVuZXRjX3BvcnRfd3IoaHcsIHBzaXVtaGZyMV9vZmYsIHVwcGVyXzMyX2JpdHMoaGFzaCkpO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIpO1xuK1xuK3ZvaWQgZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgdTY0IGhhc2gpXG4re1xuK1x0aW50IHBzaW1taGZyMF9vZmYsIHBzaW1taGZyMV9vZmY7XG4rXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXHUwMDI2c2ktXHUwMDNlaHc7XG4rXG4rXHRpZiAoaXNfZW5ldGNfcmV2MShzaSkpIHtcbitcdFx0Ym9vbCBlcnIgPSBzaS1cdTAwM2VlcnJhdGEgXHUwMDI2IEVORVRDX0VSUl9VQ01DU1dQO1xuK1xuK1x0XHRwc2ltbWhmcjBfb2ZmID0gRU5FVENfUFNJTU1IRlIwKHNpX2lkLCBlcnIpO1xuK1x0XHRwc2ltbWhmcjFfb2ZmID0gRU5FVENfUFNJTU1IRlIxKHNpX2lkKTtcbitcdH0gZWxzZSB7XG4rXHRcdHBzaW1taGZyMF9vZmYgPSBFTkVUQzRfUFNJTU1IRlIwKHNpX2lkKTtcbitcdFx0cHNpbW1oZnIxX29mZiA9IEVORVRDNF9QU0lNTUhGUjEoc2lfaWQpO1xuK1x0fVxuK1xuK1x0ZW5ldGNfcG9ydF93cihodywgcHNpbW1oZnIwX29mZiwgbG93ZXJfMzJfYml0cyhoYXNoKSk7XG4rXHRlbmV0Y19wb3J0X3dyKGh3LCBwc2ltbWhmcjFfb2ZmLCB1cHBlcl8zMl9iaXRzKGhhc2gpKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX21jX2hhc2hfZmlsdGVyKTtcbitcbit2b2lkIGVuZXRjX3NldF9zaV92bGFuX3Byb21pc2Moc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCBib29sIHByb21pc2MpXG4re1xuK1x0c3RydWN0IGVuZXRjX2h3ICpodyA9IFx1MDAyNnNpLVx1MDAzZWh3O1xuK1x0aW50IHBzaXB2bXJfb2ZmO1xuK1x0dTMyIHZhbDtcbitcbitcdGlmIChpc19lbmV0Y19yZXYxKHNpKSlcbitcdFx0cHNpcHZtcl9vZmYgPSBFTkVUQ19QU0lQVk1SO1xuK1x0ZWxzZVxuK1x0XHRwc2lwdm1yX29mZiA9IEVORVRDNF9QU0lQVk1SO1xuK1xuK1x0dmFsID0gZW5ldGNfcG9ydF9yZChodywgcHNpcHZtcl9vZmYpO1xuK1xuK1x0aWYgKHByb21pc2MpXG4rXHRcdHZhbCB8PSBQU0lQVk1SX1NJX1ZMQU5fUChzaV9pZCk7XG4rXHRlbHNlXG4rXHRcdHZhbCBcdTAwMjY9IH5QU0lQVk1SX1NJX1ZMQU5fUChzaV9pZCk7XG4rXG4rXHRlbmV0Y19wb3J0X3dyKGh3LCBwc2lwdm1yX29mZiwgdmFsKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfc2V0X3NpX3ZsYW5fcHJvbWlzYyk7XG4rXG4gdm9pZCBlbmV0Y19wZl9uZXRkZXZfc2V0dXAoc3RydWN0IGVuZXRjX3NpICpzaSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdFx0ICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzICpuZGV2X29wcylcbiB7XG5AQCAtMjc1LDcgKzM4MSw4IEBAIHN0YXRpYyBib29sIGVuZXRjX3BvcnRfaGFzX3BjcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuIFx0cmV0dXJuIChwZi1cdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSB8fFxuIFx0XHRwZi1cdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggfHxcbiBcdFx0cGYtXHUwMDNlaWZfbW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYIHx8XG4tXHRcdHBmLVx1MDAzZWlmX21vZGUgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUkpO1xuK1x0XHRwZi1cdTAwM2VpZl9tb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJIHx8XG4rXHRcdHBmLVx1MDAzZWlmX21vZGUgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSKTtcbiB9XG4gXG4gaW50IGVuZXRjX21kaW9idXNfY3JlYXRlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbkBAIC0zMTYsMjUgKzQyMyw0MiBAQCBpbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuIHtcbiBcdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBlbmV0Y19zaV9wcml2KHByaXYtXHUwMDNlc2kpO1xuIFx0c3RydWN0IHBoeWxpbmsgKnBoeWxpbms7XG4rXHR1bnNpZ25lZCBsb25nIG1hY19jYXBzO1xuIFx0aW50IGVycjtcbiBcbiBcdHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFx1MDAyNnByaXYtXHUwMDNlbmRldi1cdTAwM2VkZXY7XG4gXHRwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XG4tXHRwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFIHxcbi1cdFx0TUFDXzEwIHwgTUFDXzEwMCB8IE1BQ18xMDAwIHwgTUFDXzI1MDBGRDtcbiBcbiBcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4gXHRcdCAgcGYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuLVx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSxcbi1cdFx0ICBwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4tXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCxcbi1cdFx0ICBwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4tXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcbi1cdFx0ICBwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4tXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUksXG4tXHRcdCAgcGYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuLVx0cGh5X2ludGVyZmFjZV9zZXRfcmdtaWkocGYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuIFxuK1x0bWFjX2NhcHMgPSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0U7XG4rXHRpZiAoIWVuZXRjX2lzX3BzZXVkb19tYWMocHJpdi1cdTAwM2VzaSkpIHtcbitcdFx0bWFjX2NhcHMgfD0gTUFDXzEwIHwgTUFDXzEwMCB8IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEO1xuK1xuK1x0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLFxuK1x0XHRcdCAgcGYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuK1x0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCxcbitcdFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbitcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsXG4rXHRcdFx0ICBwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4rXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSSxcbitcdFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbitcbitcdFx0aWYgKCFpc19lbmV0Y19yZXYxKHByaXYtXHUwMDNlc2kpKSB7XG4rXHRcdFx0bWFjX2NhcHMgfD0gTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEO1xuK1x0XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIsXG4rXHRcdFx0XHQgIHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbitcdFx0fVxuK1xuK1x0XHRwaHlfaW50ZXJmYWNlX3NldF9yZ21paShwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4rXHR9IGVsc2Uge1xuK1x0XHRtYWNfY2FwcyB8PSBNQUNfMTBGRCB8IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEIHxcbitcdFx0XHQgICAgTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEIHwgTUFDXzIwMDAwRkQgfFxuK1x0XHRcdCAgICBNQUNfMjUwMDBGRDtcbitcdH1cbitcbitcdHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBtYWNfY2FwcztcbiBcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShub2RlKSxcbiBcdFx0XHRcdCBwZi1cdTAwM2VpZl9tb2RlLCBvcHMpO1xuIFx0aWYgKElTX0VSUihwaHlsaW5rKSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaFxuaW5kZXggNTdkMmUwZWJkMmIwYmIuLjgyNDNjZTBkZTU3ZjY0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmhcbkBAIC0xNyw2ICsxNywxMSBAQCB2b2lkIGVuZXRjX3NldF9kZWZhdWx0X3Jzc19rZXkoc3RydWN0IGVuZXRjX3BmICpwZik7XG4gaW50IGVuZXRjX3ZsYW5fcnhfYWRkX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgX19iZTE2IHByb3QsIHUxNiB2aWQpO1xuIGludCBlbmV0Y192bGFuX3J4X2RlbF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIF9fYmUxNiBwcm90LCB1MTYgdmlkKTtcbiBpbnQgZW5ldGNfaW5pdF9zcmlvdl9yZXNvdXJjZXMoc3RydWN0IGVuZXRjX3BmICpwZik7XG4rdm9pZCBlbmV0Y19zZXRfc2lfdWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYyk7XG4rdm9pZCBlbmV0Y19zZXRfc2lfbWNfcHJvbWlzYyhzdHJ1Y3QgZW5ldGNfc2kgKnNpLCBpbnQgc2lfaWQsIGJvb2wgcHJvbWlzYyk7XG4rdm9pZCBlbmV0Y19zZXRfc2lfdWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCB1NjQgaGFzaCk7XG4rdm9pZCBlbmV0Y19zZXRfc2lfbWNfaGFzaF9maWx0ZXIoc3RydWN0IGVuZXRjX3NpICpzaSwgaW50IHNpX2lkLCB1NjQgaGFzaCk7XG4rdm9pZCBlbmV0Y19zZXRfc2lfdmxhbl9wcm9taXNjKHN0cnVjdCBlbmV0Y19zaSAqc2ksIGludCBzaV9pZCwgYm9vbCBwcm9taXNjKTtcbiBcbiBzdGF0aWMgaW5saW5lIHUxNiBlbmV0Y19nZXRfaXBfcmV2aXNpb24oc3RydWN0IGVuZXRjX2h3ICpodylcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3Fvcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3Fvcy5jXG5pbmRleCA3YjE3YmNhMjRmMjYwZi4uMmFhMGZjYWFmY2QyM2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcW9zLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19xb3MuY1xuQEAgLTExMzUsNyArMTEzNSw2IEBAIHN0YXRpYyBpbnQgZW5ldGNfcHNmcF9wYXJzZV9jbHNmbG93ZXIoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBmbG93X2FjdGlvbl9lbnRyeSAqZW50cnk7XG4gXHRzdHJ1Y3QgYWN0aW9uX2dhdGVfZW50cnkgKmU7XG4gXHR1OCBzZmlfb3ZlcndyaXRlID0gMDtcbi1cdGludCBlbnRyaWVzX3NpemU7XG4gXHRpbnQgaSwgZXJyO1xuIFxuIFx0aWYgKGYtXHUwMDNlY29tbW9uLmNoYWluX2luZGV4IFx1MDAzZT0gcHJpdi1cdTAwM2Vwc2ZwX2NhcC5tYXhfc3RyZWFtaWQpIHtcbkBAIC0xMjQyLDggKzEyNDEsNyBAQCBzdGF0aWMgaW50IGVuZXRjX3BzZnBfcGFyc2VfY2xzZmxvd2VyKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsXG4gXHRcdGdvdG8gZnJlZV9maWx0ZXI7XG4gXHR9XG4gXG4tXHRlbnRyaWVzX3NpemUgPSBzdHJ1Y3Rfc2l6ZShzZ2ksIGVudHJpZXMsIGVudHJ5Zy1cdTAwM2VnYXRlLm51bV9lbnRyaWVzKTtcbi1cdHNnaSA9IGt6YWxsb2MoZW50cmllc19zaXplLCBHRlBfS0VSTkVMKTtcbitcdHNnaSA9IGt6YWxsb2NfZmxleCgqc2dpLCBlbnRyaWVzLCBlbnRyeWctXHUwMDNlZ2F0ZS5udW1fZW50cmllcyk7XG4gXHRpZiAoIXNnaSkge1xuIFx0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIGZyZWVfZmlsdGVyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmNcbmluZGV4IDljZGIwYTRkNmJhZmI3Li43ZGNiNGEwMjQ2ZjUyOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuY1xuQEAgLTMxNyw3ICszMTcsMTQgQEAgc3RhdGljIGludCBlbmV0Y192Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcbiBcdGVuZXRjX2dldF9zaV9jYXBzKHNpKTtcbiBcbi1cdG5kZXYgPSBhbGxvY19ldGhlcmRldl9tcShzaXplb2YoKnByaXYpLCBFTkVUQ19NQVhfTlVNX1RYUVMpO1xuK1x0LyogQ3VycmVudGx5LCB0aGUgc3VwcG9ydGVkIFNvQ3MgaGF2ZSBhIG1heCBvZiA2IENQVXMgYW5kIHRoZSBWRnNcbitcdCAqIGhhdmUgbGVzcyB0aGFuIDYgUlgvVFggcmluZ3MuIFNvIG5vIGlzc3VlcyBmb3IgdGhlc2Ugc3VwcG9ydGVkXG4rXHQgKiBTb0NzLCBidXQgZm9yIGZ1dHVyZSBTb0NzIHdoaWNoIGhhdmUgbW9yZSBDUFVzIG9yIG1vcmUgVFgvUlhcbitcdCAqIHJpbmdzLCBhbGwgdGhlIHJlbGF0ZWQgbG9naWMgbmVlZHMgdG8gYmUgaW1wcm92ZWQuXG4rXHQgKi9cbitcdG5kZXYgPSBhbGxvY19ldGhlcmRldl9tcXMoc2l6ZW9mKCpwcml2KSxcbitcdFx0XHRcdCAgbWluKHNpLVx1MDAzZW51bV90eF9yaW5ncywgRU5FVENfTUFYX05VTV9UWFFTKSxcbitcdFx0XHRcdCAgbWluKHNpLVx1MDAzZW51bV9yeF9yaW5ncywgRU5FVENfTUFYX05VTV9UWFFTKSk7XG4gXHRpZiAoIW5kZXYpIHtcbiBcdFx0ZXJyID0gLUVOT01FTTtcbiBcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCJuZXRkZXYgY3JlYXRpb24gZmFpbGVkXFxuXCIpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZnNsL250bXAuaCBiL2luY2x1ZGUvbGludXgvZnNsL250bXAuaFxuaW5kZXggZDNiNmM0NzZiOTFhMmQuLjc2NGVmMjg5MjYwODVlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9mc2wvbnRtcC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2ZzbC9udG1wLmhcbkBAIC03NSw4ICs3NSwxMCBAQCBzdHJ1Y3QgbnRtcF91c2VyIHtcbiBcdC8qIE5UTVAgdGFibGUgYml0bWFwcyBmb3IgcmVzb3VyY2UgbWFuYWdlbWVudCAqL1xuIFx0dTMyIGV0dF9iaXRtYXBfc2l6ZTtcbiBcdHUzMiBlY3RfYml0bWFwX3NpemU7XG4rXHR1MTYgbWFmdF9udW1fZW50cmllcztcbiBcdHVuc2lnbmVkIGxvbmcgKmV0dF9naWRfYml0bWFwOyAvKiBvbmx5IHZhbGlkIGZvciBzd2l0Y2ggKi9cbiBcdHVuc2lnbmVkIGxvbmcgKmVjdF9naWRfYml0bWFwOyAvKiBvbmx5IHZhbGlkIGZvciBzd2l0Y2ggKi9cbitcdHVuc2lnbmVkIGxvbmcgKm1hZnRfZWlkX2JpdG1hcDsgLyogb25seSB2YWxpZCBmb3IgRU5FVEMgKi9cbiB9O1xuIFxuIHN0cnVjdCBtYWZ0X2VudHJ5X2RhdGEge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDY6NTUuMDIyMjc4Nzc2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU0OTM1MDgyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZyZWVzY2FsZSBFTkVUQyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJIGhhdmUgYSBwYXRjaCBmb3IgdGhlIEZyZWVzY2FsZSBFTkVUQyBldGhlcm5ldCBkcml2ZXIuIEl0IHRvdWNoZXMgYSBzaWduaWZpY2FudCBjaHVuayBvZiB0aGUgZHJpdmVyOiBgZW5ldGMuaGAsIGBlbmV0YzRfZGVidWdmcy5jYCwgYGVuZXRjNF9ody5oYCwgYGVuZXRjNF9wZi5jYCwgYW5kIHNvIG9uLCBhbGwgdGhlIHdheSB0aHJvdWdoIHRvIGBudG1wLmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJJcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U/XCIgWWVzLCBpdCBhcHBlYXJzIHRvIGJlLiBNQUMgZmlsdGVyaW5nLCBSWCBtb2RlIHNldHRpbmdzLCBOVE1QIGJpdG1hcCBpbml0aWFsaXphdGlvbiwgYW5kIGxpbmsgdXAgbG9naWMgYXJlIGFsbCBiZWluZyBtb2RpZmllZC4gVGhhdCBzY3JlYW1zIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgbmV0d29yayBkcml2ZXIsIHdoaWNoIHJhaXNlcyBzb21lIHJlZCBmbGFncywgYnV0IGFsc28gcG90ZW50aWFsIHRhcmdldHMgZm9yIHRlc3RpbmcuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogaG93IHJlYWNoYWJsZSBpcyB0aGlzIGNvZGU/IFRoZSBkcml2ZXIgaXMgYGZyZWVzY2FsZS9lbmV0Y2AsIHNvIGl0J3MgYSBGcmVlc2NhbGUgKG5vdyBOWFApIEVORVRDIGRyaXZlci4gTmV0d29yayBkcml2ZXJzIGFyZSBvZnRlbiB0cmlja3kgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBHZW5lcmFsbHksIGhhcmR3YXJlLXNwZWNpZmljIGV0aGVybmV0IGRyaXZlcnMgYXJlbid0IHJlYWNoYWJsZSB1bmxlc3MgdGhlcmUncyBhbiBlbXVsYXRvci4gVGhlIGRyaXZlcidzIGhhcmR3YXJlLWRlcGVuZGVudCBuYXR1cmUgbWVhbnMgSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBhY2Nlc3NpYmlsaXR5LiBRRU1VIGRvZXMgaGF2ZSBzb21lIHN1cHBvcnQgZm9yIE5YUCBib2FyZHMsIGJ1dCBkb2VzIGl0IGVtdWxhdGUgRU5FVEM/IEl0J3MgYSBQQ0llIGRldmljZSwgc28gdGhhdCBtaWdodCBjb21wbGljYXRlIHRoaW5ncy4gSSBkb24ndCBuZWVkIHRvIGRlZmluaXRpdmVseSBrbm93IGlmIFFFTVUgZW11bGF0ZXMgaXQgcGVyZmVjdGx5OyBpbnN0ZWFkLCBJIGp1c3QgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgbGlrZWx5IHRvIGJlIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cywgc3VjaCBhcyBHQ0Ugb3IgZXZlbiBRRU1VIHdpdGhvdXQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgZW11bGF0aW9uLlxuXG5UaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBcImNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIiBUaGlzIGlzIGV4YWN0bHkgd2hhdCBJJ20gbG9va2luZyBmb3IuIFNvLCBpcyBFTkVUQyBlbXVsYXRlZCBpbiBRRU1VPyBMZXQncyBjaGVjayBpZiBpdCdzIGEgUENJIGRldmljZSB3aXRoaW4gUUVNVSdzIGZyYW1ld29yay4gU2luY2UgaXQgaXMgYSBQQ0llIGRldmljZSwgaXQncyBsZXNzIGxpa2VseSB0byBiZSBlbXVsYXRlZC4gU2VhcmNoaW5nIFFFTVUncyBzb3VyY2UgY29kZSwgb3IganVzdCBhc3N1bWluZyBpdCdzIG5vdCBjb21tb25seSBmdXp6ZWQsIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gV2FpdCwgc3l6a2FsbGVyIHByb2JhYmx5IGRvZXNuJ3QgaGF2ZSBhbiBFTkVUQyBlbXVsYXRvci4gTGV0J3MgY2hlY2suIERvZXMgc3l6a2FsbGVyIGhhdmUgYSBkZWZpbml0aW9uP1xuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA5MSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA3OjAzLjU3MTYzMjA5NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjk4OTkxNTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVuZXRjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg0NzEgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLHhnZW5lLWVuZXQueWFtbD04OT1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLHhnZW5lLWVuZXQueWFtbC05OS0gICAgICAgIHBvcnQtaWQgPSBcXHUwMDNjMFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hcG0seGdlbmUtZW5ldC55YW1sOjEwMDogICAgICAgIGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2bWVuZXRjbGsgMFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hcG0seGdlbmUtZW5ldC55YW1sLTEwMS0gICAgICAgIGxvY2FsLW1hYy1hZGRyZXNzID0gWzAwIDAxIDczIDAwIDAwIDAxXTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLHhnZW5lLW1kaW8tcmdtaWkueWFtbD0zNj1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLHhnZW5lLW1kaW8tcmdtaWkueWFtbC00Mi0gICAgICAgIHJlZyA9IFxcdTAwM2MweDE3MDIwMDAwIDB4ZDEwMFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hcG0seGdlbmUtbWRpby1yZ21paS55YW1sOjQzOiAgICAgICAgY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZtZW5ldGNsayAwXFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FwbSx4Z2VuZS1tZGlvLXJnbWlpLnlhbWwtNDQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sPTE1PWRlc2NyaXB0aW9uOiB8XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTM4LSAgICBUaGlzIGlzIGZvdW5kIGluIHRoZSBOWFAgTFMxMDI4QS4gSXQgaXMgYSBQQ0kgZGV2aWNlLCBwYXJ0IG9mIHRoZSBsYXJnZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sOjM5OiAgICBlbmV0YyByb290IGNvbXBsZXguIEFzIGEgcmVzdWx0LCB0aGUgZXRoZXJuZXQtc3dpdGNoIG5vZGUgaXMgYSBzdWItbm9kZSBvZlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWwtNDAtICAgIHRoZSBQQ0llIHJvb3QgY29tcGxleCBub2RlIGFuZCBpdHMgXFxcInJlZ1xcXCIgcHJvcGVydHkgY29uZm9ybXMgdG8gdGhlIHBhcmVudFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbC00Mi1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sOjQzOiAgICBJZiBhbnkgZXh0ZXJuYWwgc3dpdGNoIHBvcnQgaXMgZW5hYmxlZCwgdGhlIGVuZXRjIFBGMiAoZW5ldGNfcG9ydDIpIHNob3VsZFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWwtNDQtICAgIGJlIGVuYWJsZWQgYXMgd2VsbC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBpbnRlcm5hbCBNRElPIGJ1cyAoZXhwb3NlZCB0aHJvdWdoXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbDo0NTogICAgRUEgQkFSIDApIHVzZWQgdG8gYWNjZXNzIHRoZSBNQUMgUENTIHJlZ2lzdGVycyB0cnVseSBiZWxvbmdzIHRvIHRoZSBlbmV0Y1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWwtNDYtICAgIHBvcnQgMiBhbmQgbm90IHRvIEZlbGl4Llxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbXNjYyxvY2Vsb3QueWFtbD05Mj1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWwtMTM5LSAgICAgICAgICAgICAgICAgICAgcmVnID0gXFx1MDAzYzRcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWw6MTQwOiAgICAgICAgICAgICAgICAgICAgZXRoZXJuZXQgPSBcXHUwMDNjXFx1MDAyNmVuZXRjX3BvcnQyXFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTE0MS0gICAgICAgICAgICAgICAgICAgIHBoeS1tb2RlID0gXFxcImludGVybmFsXFxcIjtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWwtMTUxLSAgICAgICAgICAgICAgICAgICAgcmVnID0gXFx1MDAzYzVcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21zY2Msb2NlbG90LnlhbWw6MTUyOiAgICAgICAgICAgICAgICAgICAgZXRoZXJuZXQgPSBcXHUwMDNjXFx1MDAyNmVuZXRjX3BvcnQzXFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tc2NjLG9jZWxvdC55YW1sLTE1My0gICAgICAgICAgICAgICAgICAgIHBoeS1tb2RlID0gXFxcImludGVybmFsXFxcIjtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL254cCxuZXRjLXN3aXRjaC55YW1sPTgxPWV4YW1wbGVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbnhwLG5ldGMtc3dpdGNoLnlhbWwtMTE5LSAgICAgICAgICAgICAgICAgICAgcmVnID0gXFx1MDAzYzNcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL254cCxuZXRjLXN3aXRjaC55YW1sOjEyMDogICAgICAgICAgICAgICAgICAgIGV0aGVybmV0ID0gXFx1MDAzY1xcdTAwMjZlbmV0YzNcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL254cCxuZXRjLXN3aXRjaC55YW1sLTEyMS0gICAgICAgICAgICAgICAgICAgIHBoeS1tb2RlID0gXFxcImludGVybmFsXFxcIjtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbC0zLS0tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWw9OT1kZXNjcmlwdGlvbjpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWw6MTA6ICBUaGUgZnNsX2VuZXRjIGRyaXZlciBjYW4gcHJvYmUgb24gdGhlIEludGVncmF0ZWQgRW5kcG9pbnQgUmVnaXN0ZXIgQmxvY2ssXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sLTExLSAgd2hpY2ggcHJlY29uZmlndXJlcyB0aGUgRklGTyBsaW1pdHMgZm9yIHRoZSBFTkVUQyBwb3J0cy5cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbD0xOT1wcm9wZXJ0aWVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sLTIxLSAgICBlbnVtOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLWllcmIueWFtbDoyMjogICAgICAtIGZzbCxsczEwMjhhLWVuZXRjLWllcmJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWwtMjMtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWw9MzM9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWwtMzUtICAgIGVuZHBvaW50LWNvbmZpZ0BmMDgwMDAwMCB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtaWVyYi55YW1sOjM2OiAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJmc2wsbHMxMDI4YS1lbmV0Yy1pZXJiXFxcIjtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1pZXJiLnlhbWwtMzctICAgICAgICByZWcgPSBcXHUwMDNjMHhmMDgwMDAwMCAweDEwMDAwXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbC0zLS0tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2ZzbCxlbmV0Yy1tZGlvLnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy1tZGlvLnlhbWw9MjE9cHJvcGVydGllczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbC0yNi0gICAgICAgICAgICAgIC0gcGNpMTk1NyxlZTAxXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sOjI3OiAgICAgICAgICAtIGNvbnN0OiBmc2wsZW5ldGMtbWRpb1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbC0yOC0gICAgICAtIGl0ZW1zOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sPTQ0PWV4YW1wbGVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sLTUwLSAgICAgICAgbWRpb0AwLDMge1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLW1kaW8ueWFtbDo1MTogICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcInBjaTE5NTcsZWUwMVxcXCIsIFxcXCJmc2wsZW5ldGMtbWRpb1xcXCI7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMtbWRpby55YW1sLTUyLSAgICAgICAgICAgIHJlZyA9IFxcdTAwM2MweDAwMDMwMCAwIDAgMCAwXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLnlhbWwtMy0tLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sOjQ6JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZnNsLGVuZXRjLnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbC01LSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbD0yMT1wcm9wZXJ0aWVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbC0yNi0gICAgICAgICAgICAgIC0gcGNpMTk1NyxlMTAwXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbDoyNzogICAgICAgICAgLSBjb25zdDogZnNsLGVuZXRjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbC0yOC0gICAgICAtIGVudW06XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxlbmV0Yy55YW1sPTY5PWV4YW1wbGVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbC03NS0gICAgICAgIGV0aGVybmV0QDAsMCB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMueWFtbDo3NjogICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcInBjaTE5NTcsZTEwMFxcXCIsIFxcXCJmc2wsZW5ldGNcXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjLnlhbWwtNzctICAgICAgICAgICAgcmVnID0gXFx1MDAzYzB4MDAwMDAwIDAgMCAwIDBcXHUwMDNlO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9mc2wscHRwLnlhbWw9MTI9cHJvcGVydGllczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvZnNsLHB0cC55YW1sLTIwLSAgICAgICAgICAtIGNvbnN0OiBwY2kxOTU3LGVlMDJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL2ZzbCxwdHAueWFtbDoyMTogICAgICAgICAgLSBjb25zdDogZnNsLGVuZXRjLXB0cFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvZnNsLHB0cC55YW1sLTIyLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9mc2wscHRwLnlhbWw9MTI5PWFsbE9mOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9mc2wscHRwLnlhbWwtMTMzLSAgICAgICAgICBjb250YWluczpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL2ZzbCxwdHAueWFtbDoxMzQ6ICAgICAgICAgICAgY29uc3Q6IGZzbCxlbmV0Yy1wdHBcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL2ZzbCxwdHAueWFtbC0xMzUtICAgIHRoZW46XFxuLS1cXG5NQUlOVEFJTkVSUz0xMDMyNT1TOlxcdE1haW50YWluZWRcXG5NQUlOVEFJTkVSUzoxMDMyNjpGOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGVuZXRjKi55YW1sXFxuTUFJTlRBSU5FUlMtMTAzMjctRjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxuZXRjLWJsay1jdHJsLnlhbWxcXG5NQUlOVEFJTkVSUzoxMDMyODpGOlxcdGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9cXG5NQUlOVEFJTkVSUzoxMDMyOTpGOlxcdGluY2x1ZGUvbGludXgvZnNsL2VuZXRjX21kaW8uaFxcbk1BSU5UQUlORVJTLTEwMzMwLUY6XFx0aW5jbHVkZS9saW51eC9mc2wvbmV0Y19nbG9iYWwuaFxcbi0tXFxuTUFJTlRBSU5FUlM9MTA0MzY9RjpcXHRkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBydGMqXFxuTUFJTlRBSU5FUlM6MTA0Mzc6RjpcXHRkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcHRwLmNcXG5NQUlOVEFJTkVSUy0xMDQzOC1GOlxcdGRyaXZlcnMvcHRwL3B0cF9xb3JpcS5jXFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaT0yMTU9XFx0XFx0XFx0ZXRoY2xrOiBldGhjbGsge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2ktMjI3LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpOjIyODpcXHRcXHRcXHRtZW5ldGNsazogbWVuZXRjbGsge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpLTIyOS1cXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcImFwbSx4Z2VuZS1kZXZpY2UtY2xvY2tcXFwiO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2ktMjMzLVxcdFxcdFxcdFxcdHJlZy1uYW1lcyA9IFxcXCJjc3ItcmVnXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaToyMzQ6XFx0XFx0XFx0XFx0Y2xvY2stb3V0cHV0LW5hbWVzID0gXFxcIm1lbmV0Y2xrXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaS0yMzUtXFx0XFx0XFx0fTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpPTk3MT1cXHRcXHRtZGlvOiBtZGlvQDE3MDIwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpLTk3NS1cXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwIDB4MTcwMjAwMDAgMHgwIDB4ZDEwMFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2k6OTc2OlxcdFxcdFxcdGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2bWVuZXRjbGsgMFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2ktOTc3LVxcdFxcdH07XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FwbS9hcG0tc3Rvcm0uZHRzaT05Nzk9XFx0XFx0bWVuZXQ6IGV0aGVybmV0QDE3MDIwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYXBtL2FwbS1zdG9ybS5kdHNpLTk4Ny1cXHRcXHRcXHRkbWEtY29oZXJlbnQ7XFxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2k6OTg4OlxcdFxcdFxcdGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2bWVuZXRjbGsgMFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9hcG0vYXBtLXN0b3JtLmR0c2ktOTg5LVxcdFxcdFxcdC8qIG1hYyBhZGRyZXNzIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIGJvb3Rsb2FkZXIgKi9cXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHM9MzA9XFx0XFx0cG93ZXItbGVkIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtMzgtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1rYm94LWEtMjMwLWxzLmR0czozOTpcXHUwMDI2ZW5ldGNfbWRpb19wZjMge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtNDAtXFx0LyogQkNNNTQxNDAgUVNHTUlJIHF1YWQgUEhZICovXFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLWtib3gtYS0yMzAtbHMuZHRzPTUzPVxcdHFzZ21paV9waHkzOiBldGhlcm5ldC1waHlAMTAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1rYm94LWEtMjMwLWxzLmR0cy01Ny1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLWtib3gtYS0yMzAtbHMuZHRzOjU4OlxcdTAwMjZlbmV0Y19wb3J0MiB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1rYm94LWEtMjMwLWxzLmR0cy01OS1cXHRudm1lbS1jZWxscyA9IFxcdTAwM2NcXHUwMDI2YmFzZV9tYWNfYWRkcmVzcyAyXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtNjMtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1rYm94LWEtMjMwLWxzLmR0czo2NDpcXHUwMDI2ZW5ldGNfcG9ydDMge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24ta2JveC1hLTIzMC1scy5kdHMtNjUtXFx0bnZtZW0tY2VsbHMgPSBcXHUwMDNjXFx1MDAyNmJhc2VfbWFjX2FkZHJlc3MgM1xcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHM9MTk9LyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHMtMjMtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzOjI0OlxcdTAwMjZlbmV0Y19tZGlvX3BmMyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzLTI1LVxcdC8qIERlbGV0ZSB1bnVzZWQgcGh5IG5vZGUgKi9cXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIxLmR0cz00Mz1cXHRcXHR2ZGRoOiB2ZGRoLXJlZ3VsYXRvciB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHMtNDgtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzOjQ5OlxcdTAwMjZlbmV0Y19wb3J0MCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzLTUwLVxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMS5kdHMtNTQtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzOjU1OlxcdTAwMjZlbmV0Y19wb3J0MSB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjEuZHRzLTU2LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnBoeTBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzPTE1PS8ge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzLTE5LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0czoyMDpcXHUwMDI2ZW5ldGNfbWRpb19wZjMge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0cy0yMS1cXHRwaHkxOiBldGhlcm5ldC1waHlANCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMi5kdHMtMjctXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzOjI4OlxcdTAwMjZlbmV0Y19wb3J0MCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzLTI5LVxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyMi5kdHMtMzctXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzOjM4OlxcdTAwMjZlbmV0Y19wb3J0MiB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzLTM5LVxcdG52bWVtLWNlbGxzID0gXFx1MDAzY1xcdTAwMjZiYXNlX21hY19hZGRyZXNzIDJcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjIuZHRzLTQzLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0czo0NDpcXHUwMDI2ZW5ldGNfcG9ydDMge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXIyLmR0cy00NS1cXHRudm1lbS1jZWxscyA9IFxcdTAwM2NcXHUwMDI2YmFzZV9tYWNfYWRkcmVzcyAzXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXI0LmR0cz0xNj0vIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXI0LmR0cy0yMC1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyNC5kdHM6MjE6XFx1MDAyNmVuZXRjX21kaW9fcGYzIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyNC5kdHMtMjItXFx0cGh5MTogZXRoZXJuZXQtcGh5QDQge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LXZhcjQuZHRzPTM3PVxcdFxcdHZkZGg6IHZkZGgtcmVndWxhdG9yIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC12YXI0LmR0cy00Mi1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyNC5kdHM6NDM6XFx1MDAyNmVuZXRjX3BvcnQxIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjgtdmFyNC5kdHMtNDQtXFx0cGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2cGh5MVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjguZHRzPTc5PVxcdTAwMjZkdWFydDEge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LmR0cy04Mi1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjguZHRzOjgzOlxcdTAwMjZlbmV0Y19tZGlvX3BmMyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEta29udHJvbi1zbDI4LmR0cy04NC1cXHRwaHkwOiBldGhlcm5ldC1waHlANSB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjguZHRzLTkwLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLWtvbnRyb24tc2wyOC5kdHM6OTE6XFx1MDAyNmVuZXRjX3BvcnQwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1rb250cm9uLXNsMjguZHRzLTkyLVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnBoeTBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTEzYmIuZHRzbz0xOT1cXHRzbG90MV9zZ21paTogZXRoZXJuZXQtcGh5QDIge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTEzYmIuZHRzby0yNS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtMTNiYi5kdHNvOjI2OlxcdTAwMjZlbmV0Y19wb3J0MCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTEzYmIuZHRzby0yNy1cXHRwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZzbG90MV9zZ21paVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtNjViYi5kdHNvPTE4PVxcdHNsb3QxX3NnbWlpOiBldGhlcm5ldC1waHlAMiB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtNjViYi5kdHNvLTI0LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy02NWJiLmR0c286MjU6XFx1MDAyNmVuZXRjX3BvcnQwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtNjViYi5kdHNvLTI2LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnNsb3QxX3NnbWlpXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy04NWJiLmR0c289MTg9XFx0c2xvdDFfc2dtaWk6IGV0aGVybmV0LXBoeUAxYyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtODViYi5kdHNvLTIzLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy04NWJiLmR0c286MjQ6XFx1MDAyNmVuZXRjX3BvcnQwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtODViYi5kdHNvLTI1LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnNsb3QxX3NnbWlpXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy04OTliLmR0c289MzE9XFx0c2xvdDFfc2dtaWkzOiBldGhlcm5ldC1waHlAMWYge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTg5OWIuZHRzby0zNS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMtODk5Yi5kdHNvOjM2OlxcdTAwMjZlbmV0Y19wb3J0MCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLTg5OWIuZHRzby0zNy1cXHRwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZzbG90MV9zZ21paTBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLmR0cz05Mj1cXHRtZGlvLW11eCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzLTk0LVxcdFxcdG11eC1jb250cm9scyA9IFxcdTAwM2NcXHUwMDI2bXV4IDBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHM6OTU6XFx0XFx0bWRpby1wYXJlbnQtYnVzID0gXFx1MDAzY1xcdTAwMjZlbmV0Y19tZGlvX3BmM1xcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLmR0cy05Ni1cXHRcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHM9MjM0PVxcdTAwMjZkdWFydDEge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLmR0cy0yMzctXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcWRzLmR0czoyMzg6XFx1MDAyNmVuZXRjX3BvcnQxIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzLTIzOS1cXHRwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZxZHNfcGh5MVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzLTI0My1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzOjI0NDpcXHUwMDI2ZW5ldGNfcG9ydDIge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHMtMjQ1LVxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHM9MzcxPVxcdTAwMjZtc2NjX2ZlbGl4X3BvcnQ0IHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1xZHMuZHRzOjM3MjpcXHRldGhlcm5ldCA9IFxcdTAwM2NcXHUwMDI2ZW5ldGNfcG9ydDJcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXFkcy5kdHMtMzczLVxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHM9MTg9XFx0YWxpYXNlcyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTI1LVxcdFxcdHNwaTAgPSBcXHUwMDI2ZnNwaTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjI2OlxcdFxcdGV0aGVybmV0MCA9IFxcdTAwMjZlbmV0Y19wb3J0MDtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjI3OlxcdFxcdGV0aGVybmV0MSA9IFxcdTAwMjZlbmV0Y19wb3J0MjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTI4LVxcdFxcdGV0aGVybmV0MiA9IFxcdTAwMjZtc2NjX2ZlbGl4X3BvcnQwO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0zMy1cXHRcXHRldGhlcm5ldDcgPSBcXHUwMDI2bXNjY19mZWxpeF9wb3J0NTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjM0OlxcdFxcdGV0aGVybmV0OCA9IFxcdTAwMjZlbmV0Y19wb3J0MztcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTM1LVxcdH07XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzPTExOT1cXHUwMDI2ZHVhcnQxIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHMtMTIyLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHM6MTIzOlxcdTAwMjZlbmV0Y19tZGlvX3BmMyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0xMjQtXFx0c2dtaWlfcGh5MDogZXRoZXJuZXQtcGh5QDIge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cz0xNDE9XFx0cXNnbWlpX3BoeTM6IGV0aGVybmV0LXBoeUAxMyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTE0NS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjE0NjpcXHUwMDI2ZW5ldGNfcG9ydDAge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHMtMTQ3LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnNnbWlpX3BoeTBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0cy0xNTItXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtcmRiLmR0czoxNTM6XFx1MDAyNmVuZXRjX3BvcnQyIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTE1NC1cXHRzdGF0dXMgPSBcXFwib2theVxcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzLTE1Ni1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS1yZGIuZHRzOjE1NzpcXHUwMDI2ZW5ldGNfcG9ydDMge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXJkYi5kdHMtMTU4LVxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2k9MTQxPVxcdFxcdHFzZ21paS1yc3RuLWhvZyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpLTE0OS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpOjE1MDpcXHUwMDI2ZW5ldGNfbWRpb19wZjMge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2ktMTUxLVxcdG1kaW8wX3JnbWlpX3BoeTAwOiBldGhlcm5ldC1waHlAMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpPTE5Mz1cXHRxc2dtaWlfcGh5NDogZXRoZXJuZXQtcGh5QDFmIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2ktMTk3LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2k6MTk4OlxcdTAwMjZlbmV0Y19wb3J0MCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaS0xOTktXFx0cGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2bWRpbzBfc2dtaWlfcGh5MDNcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaS0yMDQtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEtdHFtbHMxMDI4YS1tYmxzMTAyOGEuZHRzaToyMDU6XFx1MDAyNmVuZXRjX3BvcnQxIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpLTIwNi1cXHRwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZtZGlvMF9yZ21paV9waHkwMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpLTIxMC1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpOjIxMTpcXHUwMDI2ZW5ldGNfcG9ydDIge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2ktMjEyLVxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2k9MjQ0PVxcdTAwMjZtc2NjX2ZlbGl4X3BvcnQ0IHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS10cW1sczEwMjhhLW1ibHMxMDI4YS5kdHNpOjI0NTpcXHRldGhlcm5ldCA9IFxcdTAwM2NcXHUwMDI2ZW5ldGNfcG9ydDJcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLXRxbWxzMTAyOGEtbWJsczEwMjhhLmR0c2ktMjQ2LVxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k9MTA3ND1cXHRcXHRwY2llQDFmMDAwMDAwMCB7IC8qIEludGVncmF0ZWQgRW5kcG9pbnQgUm9vdCBDb21wbGV4ICovXFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTExMDMtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTA0OlxcdFxcdFxcdGVuZXRjX3BvcnQwOiBldGhlcm5ldEAwLDAge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTEwNTpcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcInBjaTE5NTcsZTEwMFxcXCIsIFxcXCJmc2wsZW5ldGNcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTEwNi1cXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwMDAwMDAgMCAwIDAgMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTExMDktXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTEwOlxcdFxcdFxcdGVuZXRjX3BvcnQxOiBldGhlcm5ldEAwLDEge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTExMTpcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcInBjaTE5NTcsZTEwMFxcXCIsIFxcXCJmc2wsZW5ldGNcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTExMi1cXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwMDAxMDAgMCAwIDAgMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTExMTUtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTE2OlxcdFxcdFxcdGVuZXRjX3BvcnQyOiBldGhlcm5ldEAwLDIge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTExNzpcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcInBjaTE5NTcsZTEwMFxcXCIsIFxcXCJmc2wsZW5ldGNcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTExOC1cXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwMDAyMDAgMCAwIDAgMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTExMjI9XFx0XFx0XFx0XFx0Zml4ZWQtbGluayB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTExMjgtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTI5OlxcdFxcdFxcdGVuZXRjX21kaW9fcGYzOiBtZGlvQDAsMyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTMwOlxcdFxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwicGNpMTk1NyxlZTAxXFxcIiwgXFxcImZzbCxlbmV0Yy1tZGlvXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTExMzEtXFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4MDAwMzAwIDAgMCAwIDBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaT0xMTM2PVxcdFxcdFxcdGV0aGVybmV0QDAsNCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTM3OlxcdFxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwicGNpMTk1NyxlZTAyXFxcIiwgXFxcImZzbCxlbmV0Yy1wdHBcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTEzOC1cXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwMDA0MDAgMCAwIDAgMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTExNzY9XFx0XFx0XFx0XFx0XFx0bXNjY19mZWxpeF9wb3J0NDogcG9ydEA0IHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTE3OC1cXHRcXHRcXHRcXHRcXHRcXHRwaHktbW9kZSA9IFxcXCJpbnRlcm5hbFxcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTc5OlxcdFxcdFxcdFxcdFxcdFxcdGV0aGVybmV0ID0gXFx1MDAzY1xcdTAwMjZlbmV0Y19wb3J0MlxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTgwLVxcdFxcdFxcdFxcdFxcdFxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTExODk9XFx0XFx0XFx0XFx0XFx0bXNjY19mZWxpeF9wb3J0NTogcG9ydEA1IHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTE5MS1cXHRcXHRcXHRcXHRcXHRcXHRwaHktbW9kZSA9IFxcXCJpbnRlcm5hbFxcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMTkyOlxcdFxcdFxcdFxcdFxcdFxcdGV0aGVybmV0ID0gXFx1MDAzY1xcdTAwMjZlbmV0Y19wb3J0M1xcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaS0xMTkzLVxcdFxcdFxcdFxcdFxcdFxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTExOTU9XFx0XFx0XFx0XFx0XFx0XFx0Zml4ZWQtbGluayB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpLTEyMDMtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTAyOGEuZHRzaToxMjA0OlxcdFxcdFxcdGVuZXRjX3BvcnQzOiBldGhlcm5ldEAwLDYge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTIwNTpcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcInBjaTE5NTcsZTEwMFxcXCIsIFxcXCJmc2wsZW5ldGNcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTIwNi1cXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwMDA2MDAgMCAwIDAgMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDI4YS5kdHNpPTEyMjU9XFx0XFx0aWVyYkAxZjA4MDAwMDAge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2k6MTIyNjpcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcImZzbCxsczEwMjhhLWVuZXRjLWllcmJcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwMjhhLmR0c2ktMTIyNy1cXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwMSAweGYwODAwMDAwIDB4MCAweDEwMDAwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k9MTQ1Nz1cXHRcXHRcXHRuZXRjX2J1czA6IHBjaWVANGNhMDAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNDg1LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k6MTQ4NjpcXHRcXHRcXHRcXHRlbmV0YzM6IGV0aGVybmV0QDAsMCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNDg3LVxcdFxcdFxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwicGNpMTEzMSxlMTEwXFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k9MTUxMT1cXHRcXHRcXHRuZXRjX2J1czE6IHBjaWVANGNiMDAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNTM1LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k6MTUzNjpcXHRcXHRcXHRcXHRlbmV0YzA6IGV0aGVybmV0QDAsMCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNTM3LVxcdFxcdFxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwicGNpMTEzMSxlMTAxXFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k9MTU0OD1cXHRcXHRcXHRcXHRyY2VjQDEsMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NC5kdHNpLTE1NTItXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaToxNTUzOlxcdFxcdFxcdFxcdGVuZXRjMTogZXRoZXJuZXRAOCwwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NC5kdHNpLTE1NTQtXFx0XFx0XFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJwY2kxMTMxLGUxMDFcXFwiO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQuZHRzaS0xNTU4LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2k6MTU1OTpcXHRcXHRcXHRcXHRlbmV0YzI6IGV0aGVybmV0QDEwLDAge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0LmR0c2ktMTU2MC1cXHRcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcInBjaTExMzEsZTEwMVxcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0cz0yMj1cXHRhbGlhc2VzIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0czoyMzpcXHRcXHRldGhlcm5ldDAgPSBcXHUwMDI2ZW5ldGMzO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzOjI0OlxcdFxcdGV0aGVybmV0MSA9IFxcdTAwMjZlbmV0YzE7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHM6MjU6XFx0XFx0ZXRoZXJuZXQyID0gXFx1MDAyNmVuZXRjMjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0cy0yNi1cXHRcXHRpMmMyID0gXFx1MDAyNmxwaTJjMztcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzPTIwNz1cXHRtZW1vcnlAODAwMDAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHMtMjEyLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzOjIxMzpcXHUwMDI2ZW5ldGMxIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0cy0yMTQtXFx0Y2xvY2tzID0gXFx1MDAzY1xcdTAwMjZzY21pX2NsayBJTVg5NF9DTEtfTUFDNFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0cy0yMjItXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHM6MjIzOlxcdTAwMjZlbmV0YzIge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzLTIyNC1cXHRjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNnNjbWlfY2xrIElNWDk0X0NMS19NQUM1XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk0My1ldmsuZHRzLTIzMi1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NDMtZXZrLmR0czoyMzM6XFx1MDAyNmVuZXRjMyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTQzLWV2ay5kdHMtMjM0LVxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHM9MjE9XFx0YWxpYXNlcyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtYWIyLmR0czoyMjpcXHRcXHRldGhlcm5ldDAgPSBcXHUwMDI2ZW5ldGNfcG9ydDA7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtYWIyLmR0cy0yMy1cXHRcXHRncGlvMCA9IFxcdTAwMjZncGlvMTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHM9MTU5PVxcdG1lbW9yeUA4MDAwMDAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzLTE2NC1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzOjE2NTpcXHUwMDI2ZW5ldGNfcG9ydDAge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHMtMTY2LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNmV0aHBoeTBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWFiMi5kdHMtMTY3LVxcdHBoeS1tb2RlID0gXFxcInJnbWlpLWlkXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzOjE2ODpcXHRwaW5jdHJsLTAgPSBcXHUwMDNjXFx1MDAyNnBpbmN0cmxfZW5ldGMwXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzLTE2OS1cXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtYWIyLmR0cz0zNzY9XFx0XFx0XFx0SU1YOTVfUEFEX0VORVQxX01ESU9fX05FVENNSVhfVE9QX05FVENfTURJT1xcdFxcdDB4OTBlXFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzLTM3OS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzOjM4MDpcXHRwaW5jdHJsX2VuZXRjMDogZW5ldGMwZ3JwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1hYjIuZHRzLTM4MS1cXHRcXHRmc2wscGlucyA9IFxcdTAwM2NcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM9Mjg9XFx0YWxpYXNlcyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0czoyOTpcXHRcXHRldGhlcm5ldDAgPSBcXHUwMDI2ZW5ldGNfcG9ydDA7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0czozMDpcXHRcXHRldGhlcm5ldDEgPSBcXHUwMDI2ZW5ldGNfcG9ydDE7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy0zMS1cXHRcXHRncGlvMCA9IFxcdTAwMjZncGlvMTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM9Mjk1PVxcdTAwMjZhZGMxIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtMjk5LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM6MzAwOlxcdTAwMjZlbmV0Y19wb3J0MCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy0zMDEtXFx0cGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2ZXRocGh5MFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cy0zMDItXFx0cGh5LW1vZGUgPSBcXFwicmdtaWktaWRcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM6MzAzOlxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2cGluY3RybF9lbmV0YzBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtMzA0LVxcdHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTMwNy1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzOjMwODpcXHUwMDI2ZW5ldGNfcG9ydDEge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtMzA5LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNmV0aHBoeTFcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtMzEwLVxcdHBoeS1tb2RlID0gXFxcInJnbWlpLWlkXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzOjMxMTpcXHRwaW5jdHJsLTAgPSBcXHUwMDNjXFx1MDAyNnBpbmN0cmxfZW5ldGMxXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTMxMi1cXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZXZrLmR0cz02MDk9XFx0XFx0XFx0SU1YOTVfUEFEX0VORVQyX01ESU9fX05FVENNSVhfVE9QX05FVENfTURJT1xcdFxcdDB4OTBlXFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTYxMi1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzOjYxMzpcXHRwaW5jdHJsX2VuZXRjMDogZW5ldGMwZ3JwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1ldmsuZHRzLTYxNC1cXHRcXHRmc2wscGlucyA9IFxcdTAwM2NcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM9NjI2PVxcdFxcdFxcdElNWDk1X1BBRF9FTkVUMV9SRDNfX05FVENNSVhfVE9QX0VUSDBfUkdNSUlfUkQzXFx0XFx0MHg1N2VcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtNjI5LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHM6NjMwOlxcdHBpbmN0cmxfZW5ldGMxOiBlbmV0YzFncnAge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWV2ay5kdHMtNjMxLVxcdFxcdGZzbCxwaW5zID0gXFx1MDAzY1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM9MjQ9XFx0YWxpYXNlcyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM6MjU6XFx0XFx0ZXRoZXJuZXQwID0gXFx1MDAyNmVuZXRjX3BvcnQwO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzOjI2OlxcdFxcdGV0aGVybmV0MSA9IFxcdTAwMjZlbmV0Y19wb3J0MTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy0yNy1cXHRcXHRncGlvMCA9IFxcdTAwMjZncGlvMTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzPTI2Mz1cXHUwMDI2YWRjMSB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy0yNjctXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM6MjY4OlxcdTAwMjZlbmV0Y19wb3J0MCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHMtMjY5LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNmV0aHBoeTBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI3MC1cXHRwaHktbW9kZSA9IFxcXCJyZ21paS1pZFxcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM6MjcxOlxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2cGluY3RybF9lbmV0YzBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI3Mi1cXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHMtMjc1LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzOjI3NjpcXHUwMDI2ZW5ldGNfcG9ydDEge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTI3Ny1cXHRwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZldGhwaHkxXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy0yNzgtXFx0cGh5LW1vZGUgPSBcXFwicmdtaWktaWRcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzOjI3OTpcXHRwaW5jdHJsLTAgPSBcXHUwMDNjXFx1MDAyNnBpbmN0cmxfZW5ldGMxXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0cy0yODAtXFx0cGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzPTYwNz1cXHRcXHRcXHRJTVg5NV9QQURfRU5FVDJfTURJT19fTkVUQ01JWF9UT1BfTkVUQ19NRElPXFx0XFx0MHg5MGVcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTYxMC1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0czo2MTE6XFx0cGluY3RybF9lbmV0YzA6IGVuZXRjMGdycCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHMtNjEyLVxcdFxcdGZzbCxwaW5zID0gXFx1MDAzY1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHM9NjI0PVxcdFxcdFxcdElNWDk1X1BBRF9FTkVUMV9SRDNfX05FVENNSVhfVE9QX0VUSDBfUkdNSUlfUkQzXFx0XFx0MHg1N2VcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE1eDE1LWZyZG0uZHRzLTYyNy1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xNXgxNS1mcmRtLmR0czo2Mjg6XFx0cGluY3RybF9lbmV0YzE6IGVuZXRjMWdycCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTV4MTUtZnJkbS5kdHMtNjI5LVxcdFxcdGZzbCxwaW5zID0gXFx1MDAzY1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0cz0yNT1cXHRhbGlhc2VzIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xOXgxOS1ldmsuZHRzOjI2OlxcdFxcdGV0aGVybmV0MCA9IFxcdTAwMjZlbmV0Y19wb3J0MDtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xOXgxOS1ldmsuZHRzLTI3LVxcdFxcdGdwaW8wID0gXFx1MDAyNmdwaW8xO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0cz0yMzg9XFx1MDAyNmFkYzEge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0cy0yNDItXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0czoyNDM6XFx1MDAyNmVuZXRjX3BvcnQwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg5NS0xOXgxOS1ldmsuZHRzLTI0NC1cXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE5eDE5LWV2ay5kdHM6MjQ1OlxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2cGluY3RybF9lbmV0YzBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDk1LTE5eDE5LWV2ay5kdHMtMjQ2LVxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNmV0aHBoeTBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OTUtMTl4MTktZXZrLmR0cz03MTI9XFx0XFx0XFx0SU1YOTVfUEFEX0VORVQxX01ESU9fX05FVENNSVhfVE9QX05FVENfTURJT1xcdFxcdDB4OTBlXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6MTAuODcwNjI5NDE5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU2NTk1NDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBFTkVUQyBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgRU5FVEMgZHJpdmVyIOKAkyBpdCdzIE5YUCdzIEV0aGVybmV0IE5ldHdvcmsgQ29udHJvbGxlciwgZm91bmQgb24gc29tZSBvZiB0aGVpciBTeXN0ZW0gb24gQ2hpcHMsIGxpa2UgdGhlIExTMTAyOEEgYW5kIGkuTVg5NS4gVGhlIHRoaW5nIGlzLCBldmVuIHRob3VnaCBpdCdzIGEgUENJZSBkZXZpY2UsIGl0J3MgaW50ZWdyYXRlZCBpbnRvIHRoZSBTb0MsIHdoaWNoIG1lYW5zIG15IHR5cGljYWwgUUVNVSBhcHByb2FjaCBtaWdodCBub3Qgd29yay4gRmlyc3QgdGhvdWdodDogaXMgdGhpcyBldmVuIHJlYWNoYWJsZSBpbiBRRU1VPyBBbmQgdGhlIGFuc3dlciwgYXMgSSBleHBlY3RlZCwgaXMgbm8uIFFFTVUgZG9lc24ndCBlbXVsYXRlIEVORVRDIGRpcmVjdGx5LlxuXG5TbywgdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBmdXp6YWJpbGl0eS4gQXJlIHRoZXJlIEVORVRDIGZ1enplcnMgb3V0IHRoZXJlLCBvciBpcyB0aGlzIGVzc2VudGlhbGx5IGEgaGFyZHdhcmUgZHJpdmVyIHRoYXQncyB1c3VhbGx5IG9ubHkgdGFyZ2V0ZWQgd2l0aCBzcGVjaWZpYyBlbXVsYXRvcnM/IEluIG15IGV4cGVyaWVuY2UsIHRoZXNlIGRyaXZlcnMgYXJlIHJhcmVseSBmdXp6ZWQgKnVubGVzcyogdGhleSdyZSBleHBsaWNpdGx5IGVtdWxhdGVkLCBvciB0aGVyZeKAmXMgYSBiZXNwb2tlIGZ1enplci5cblxuQnV0IHRoZW4sIEkgbmVlZCB0byBjb25zaWRlciB0aGUgY29uc3RyYWludHMgaW4gdGhlIGluc3RydWN0aW9uczogdGhleSBzYWlkLCBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnPigKZcIiBhbmQgSSByZW1lbWJlciB0aGUga2V5IHBvaW50IGlzIGFib3V0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXMgRU5FVEMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBRRU1VPyBXZWxsLCB5ZWFoLCB1bmxlc3MgUUVNVSBlbXVsYXRlcyBpdCwgd2hpY2ggaXQgZG9lc24ndC4gQ2FuIEkgY29uZmlybT8gSSBjYW4ndCBlYXNpbHkgc2VhcmNoIFFFTVUgY29kZSBoZXJlIGZvciBcImVuZXRjXCIgdG8gYmUgY2VydGFpbi5cblxuSG93ZXZlciwgSSdtIG5vdyB0aGlua2luZyBhYm91dCBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIGhhdmUgc3VwcG9ydCBmb3IgRU5FVEM/IFRoYXQncyBhIHJlYXNvbmFibGUgcGxhY2UgdG8gY2hlY2ssIGFuZCBpdCBtaWdodCBiZSBteSBiZXN0IGJldCBmb3IgYSBxdWljayBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NzcyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA3OjE5LjQzNjU4NzMyOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTI5Njg5OTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVuZXRjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA3OjE5LjY0OTU2OTA5OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMTQ1MjA5Mjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBFTkVUQyBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoZSBncmVwcGVyIHdhcyBsb29raW5nIGZvciBgZW5ldGNgIHVuZGVyIGBuZXQvYCwgYnV0IHRoZSByZWxldmFudCBjb2RlIGlzIGFjdHVhbGx5IGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uLCBhcyBhbHdheXMsIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGlzIGV2ZW4gKnJlYWNoYWJsZSogZm9yIGZ1enppbmcuIEhhcmR3YXJlIGRyaXZlcnMsIGVzcGVjaWFsbHkgdGhvc2UgbGlrZSB0aGlzLCBhcmUgdHlwaWNhbGx5IHByb2JsZW1hdGljIGluIHN0YW5kYXJkIFFFTVUgc2V0dXBzLCB1bmxlc3MgdGhlcmUncyBhbiBlbXVsYXRlZCBQQ0kgZGV2aWNlIG9yIHNpbWlsYXIuXG5cbkxldCBtZSB0aGluay4uLiBpcyBFTkVUQyBlbXVsYXRlZD8gTXkga25vd2xlZGdlIG9mIFFFTVUncyBzdXBwb3J0ZWQgZGV2aWNlcyBpcyBwcmV0dHkgZ29vZC4gSSBrbm93IGl0IGhhbmRsZXMgdGhlIGUxMDAwIGZhbWlseSwgUlRMODEzOSwgVmlydElPLCBWTVhORVQzLCBhbmQgYSBmZXcgb3RoZXJzLiBJIG5lZWQgdG8gY2hlY2sgdGhlIFBDSSBJRHMg4oCTIEZyZWVzY2FsZSB1c3VhbGx5IHVzZXMgMHgxOTU3LiBZZXMsIGFuZCB0aGUgZGV2aWNlIElEcyBpbmNsdWRlIDB4ZTEwMCwgMHhlZTAxLCBhbmQgc28gb24uIEJ1dCBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYW4gRU5FVEMtc3BlY2lmaWMgZW11bGF0aW9uLiBJdCBpc24ndCBhbW9uZyB0aGUgc3RhbmRhcmQgZW11bGF0ZWQgZGV2aWNlcy5cblxuVGhlIHRleHQgYWxzbyBtZW50aW9ucyBlbnZpcm9ubWVudHMgbGlrZSBHQ0UuIEJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIEVORVRDLCBiZWluZyBhIGhhcmR3YXJlLXNwZWNpZmljIGJsb2NrLCBpcyB1bmxpa2VseSB0byBiZSByZWFjaGFibGUgaW4gR0NFIGVpdGhlciwgb3IgaW4gYSBzdGFuZGFyZCB4ODYgUUVNVSBzZXR1cC5cblxuQWxyaWdodCwgd2hhdCBhYm91dCBhIHBsYXRmb3JtIGRldmljZT8gSXMgdGhlcmUgc29tZXRoaW5nIHRoYXQgKmlzbid0KiBhIFBDSSBkZXZpY2UsIGJ1dCBzdGlsbCBoYXJkd2FyZSBkZXBlbmRlbnQ/IE5vLCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRoYXQgY29kZSB1bnJlYWNoYWJsZSBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uIChsaWtlIGB1c2IgZ2FkZ2V0YCBvciBgbWFjODAyMTFfaHdzaW1gKSBzaG91bGQgYmUgbWFya2VkIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgRU5FVEMgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIGFuIE5YUCBTb0MsIHN1Y2ggYXMgdGhlIExTMTAyOEEgb3IgaS5NWDk1LiBJdCdzIGEgcmVhbCBoYXJkd2FyZSBibG9jazsgdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gbGlrZSB0aGVyZSBpcyBmb3IgYG1hYzgwMjExX2h3c2ltYC5cblxuTGV0J3MgY29uZmlybSB0aGF0LiBJIGRvbid0IHJlY2FsbCBldmVyIHNlZWluZyBhIGBuZXRkZXZzaW1gIG9yIHNpbWlsYXIgbW9jayBmb3IgRU5FVEMuIE5vLCBpdCdzIGEgcmVhbCBoYXJkd2FyZSBkcml2ZXIuXG5cbkxldCdzIHJldmlldyB0aGUgcHJvbXB0IGFnYWluOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi4gLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cIlxuXG5HaXZlbiB0aGF0IGl0IG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZXRoZXJuZXQgZHJpdmVyIOKAkyBhbmQgaXQncyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBkZXNpZ25lZCBmb3IgTlhQIFNvQ3Mg4oCTIGl0J3MgY2xlYXJseSAqbm90KiByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBObyB4ODYgUUVNVSwgbm8gR0NFIGluc3RhbmNlIGlzIGdvaW5nIHRvIGJlIGFibGUgdG8gaGl0IHRoaXMgY29kZSwgYXQgbGVhc3Qgbm90IHdpdGhvdXQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgc2V0dXBzIG9yIGV4dHJlbWVseSBzb3BoaXN0aWNhdGVkIGVtdWxhdGlvbi4gSSBzZWUgbm8gYG5ldGRldnNpbWAgbW9jaywgbm9yIGEgc2ltaWxhciBzb2Z0d2FyZS1lbXVsYXRlZCBkcml2ZXIuIFRoZXJlZm9yZSwgZnV6emluZyB0aGlzIGNvZGUgaXMgZXNzZW50aWFsbHkgaW1wb3NzaWJsZSBpbiB0aG9zZSBlbnZpcm9ubWVudHMuXG5cbkxldCBtZSBkb3VibGUtY2hlY2sgZm9yIHNvbWUgZWRnZSBjYXNlLiBBIFBDSSBzdHViIHBlcmhhcHM/IE5vcGUuIFBDSSBkcml2ZXJzIG5lZWQgdGhlIGFjdHVhbCBoYXJkd2FyZSwgb3IgYW4gZW11bGF0b3IsIHRvIGJlIHByb2JlZC4gV2l0aG91dCB0aGF0LCB0aGUgZHJpdmVyJ3MgYHByb2JlYCBmdW5jdGlvbiB3aWxsICpuZXZlciogYmUgY2FsbGVkLiBUaGlzIG1lYW5zIHRoYXQgbm9uZSBvZiB0aGUgbW9kaWZpZWQgY29kZSDigJMgYGVuZXRjNF9wZl9zZXRfcnhfbW9kZWAsIGBlbmV0Y19wZl9zZXRfcnhfbW9kZWAsIGBlbmV0YzRfcGZfc2V0X2ZlYXR1cmVzYCwgZXRjLiDigJMgd2lsbCBiZSBleGVjdXRlZC5cblxuSSdtIGNvbmZpZGVudC4gVGhlIGFuYWx5c2lzIGlzIHRoYXQgYmVjYXVzZSBpdCBpcyBhbiBFTkVUQyBkcml2ZXIgc3BlY2lmaWMgdG8gTlhQIGhhcmR3YXJlLCBhbmQgbm90IGVtdWxhdGVkLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUsIGFuZCBzbyBJIHNob3VsZCBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgYW0gZ29pbmcgdG8gd3JpdGUgdGhlIGZvbGxvd2luZyByZWFzb25pbmc6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBoYXJkd2FyZS1zcGVjaWZpYyAoTlhQIFNvQ3MpIGFuZCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNTE3LCJPdXRwdXRUb2tlbnMiOjgzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA3OjMyLjc5NDc4MDk4MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBFTkVUQyBldGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGhhcmR3YXJlLXNwZWNpZmljIHRvIE5YUCBTb0NzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBFTkVUQyBldGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGhhcmR3YXJlLXNwZWNpZmljIHRvIE5YUCBTb0NzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbkl6m[1] Phase: Running StartedAt: 2026-07-07 16:07:44 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbkl6m[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-07 16:07:44 +0000 UTC FinishedAt: 2026-07-07 16:08:07 +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,}