Name: series-workflow8mphq Phase: Succeeded StartedAt: 2026-07-26 12:00:55 +0000 UTC FinishedAt: 2026-07-26 16:47:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[0] Phase: Succeeded StartedAt: 2026-07-26 12:00:55 +0000 UTC FinishedAt: 2026-07-26 12:25:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 12:00:55 +0000 UTC FinishedAt: 2026-07-26 12:25:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "03b0bcd2440b4ace0fb4bdf93e444db6454e7370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "03b0bcd2440b4ace0fb4bdf93e444db6454e7370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "3cbcd24c-2ce5-4928-a6b1-a894e00da13a" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "nullb_update_nr_hw_queues", "nullb_apply_submit_queues", "nullb_apply_poll_queues", "nullb_device_power_store", "nullb_device_zone_readonly_store", "nullb_device_zone_offline_store", "nullb_group_drop_item", "null_del_dev", "null_find_dev_by_name", "null_create_dev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDEyOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlJiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlJiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZ3JvdXBfZHJvcF9pdGVtJiMzNDssCiAgICAmIzM0O251bGxfZGVsX2RldiYjMzQ7LAogICAgJiMzNDtudWxsX2ZpbmRfZGV2X2J5X25hbWUmIzM0OywKICAgICYjMzQ7bnVsbF9jcmVhdGVfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBudWxsX2JsayBkcml2ZXIsIGZpeGluZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgLCBhZGp1c3RpbmcgbG9ja2luZyB3aXRoIGBndWFyZChtdXRleClgLCBhbmQgY2hhbmdpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9yZGVyIGFuZCBkZXZpY2UgZGVsZXRpb24gbG9naWMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gYSBzb2Z0d2FyZSBibG9jayBkZXZpY2UgdGhhdCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMjoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRlMzk3OGY2ZWNjOTYzNGNlNzM1MGU4YmI1MjMwNWYyMTM1OGM3YjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxMjoyNDoxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uMWMyMGQ3NzNkZDBjOGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC02Niw3ICYjNDM7NjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7XG4gI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpXG4gXG4gc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTtcbi1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7XG4mIzQzO3N0YXRpYyBERUZJTkVfTVVURVgobG9jayk7XG4gc3RhdGljIGludCBudWxsX21ham9yO1xuIHN0YXRpYyBERUZJTkVfSURBKG51bGxiX2luZGV4ZXMpO1xuIHN0YXRpYyBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDtcbkBAIC0zNDUsNiAmIzQzOzM0NSw3IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLFxuIHN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG4gbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVx0XFxcbiB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRndWFyZChtdXRleCkoXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdHJldHVybiBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KFx0XHRcdFx0XFxcbiBcdFx0XHRcdHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2VOQU1FLCBwYWdlKTtcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5AQCAtMzYwLDYgJiM0MzszNjEsNyBAQCBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFx0XFxcbiBcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlKFx1MDAyNm5ld192YWx1ZSwgcGFnZSwgY291bnQpO1xcXG4gXHRpZiAocmV0IFx1MDAzYyAwKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGd1YXJkKG11dGV4KShcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKGFwcGx5X2ZuKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1x0XHRcdFx0XFxcbiBcdGVsc2UgaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSBcdFxcXG5AQCAtMzgyLDYgJiM0MzszODQsMTUgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdGlmICghZGV2LVx1MDAzZW51bGxiKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEEgc2hhcmVkIHRhZ19zZXQgaXMgbWFwcGVkIHZpYSB0aGUgbW9kdWxlLXdpZGUgcXVldWUgY291bnRzLCBzbyBhXG4mIzQzO1x0ICogcGVyLWRldmljZSByZXNpemUgaXMgbWVhbmluZ2xlc3MuIE9uIHNocmluayBpdCB3b3VsZCBhbHNvIGxlYXZlXG4mIzQzO1x0ICogbXFfbWFwW10gcG9pbnRpbmcgYXQgTlVMTGVkIGhjdHggc2xvdHMsIGNhdXNpbmcgYSBOVUxMIGRlcmVmIGluXG4mIzQzO1x0ICogYmxrX21xX21hcF9zd3F1ZXVlKCkuIFJlamVjdCBpdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoZGV2LVx1MDAzZXNoYXJlZF90YWdzKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0LypcbiBcdCAqIE1ha2Ugc3VyZSBhdCBsZWFzdCBvbmUgc3VibWl0IHF1ZXVlIGV4aXN0cy5cbiBcdCAqL1xuQEAgLTQyMSwyNSAmIzQzOzQzMiwxMyBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzKVxuIHtcbi1cdGludCByZXQ7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4tXG4tXHRyZXR1cm4gcmV0O1xuJiM0MztcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbiB9XG4gXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4mIzQzO1x0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuIH1cbiBcbiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7XG5AQCAtNDc4LDYgJiM0Mzs0NzcsNyBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XG4gXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuIHtcbiYjNDM7XHRndWFyZChtdXRleCkoXHUwMDI2bG9jayk7XG4gXHRyZXR1cm4gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2Vwb3dlciwgcGFnZSk7XG4gfVxuIFxuQEAgLTQ5MywxNSAmIzQzOzQ5MywxNSBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuIFx0cmV0ID0gY291bnQ7XG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuJiM0MztcdGd1YXJkKG11dGV4KShcdTAwMjZsb2NrKTtcbiBcdGlmICghZGV2LVx1MDAzZXBvd2VyIFx1MDAyNlx1MDAyNiBuZXdwKSB7XG4gXHRcdGlmICh0ZXN0X2FuZF9zZXRfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSlcbi1cdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiBcbiBcdFx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XG4gXHRcdGlmIChyZXQpIHtcbiBcdFx0XHRjbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuLVx0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHR9XG4gXG4gXHRcdHNldF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG5AQCAtNTE1LDggJiM0Mzs1MTUsNiBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIFx0XHRjbGVhcl9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG4gXHR9XG4gXG4tb3V0OlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtNTgwLDYgJiM0Mzs1NzgsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4ge1xuIFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xuIFxuJiM0MztcdGd1YXJkKG11dGV4KShcdTAwMjZsb2NrKTtcbiBcdHJldHVybiB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9SRUFET05MWSk7XG4gfVxuIENPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9yZWFkb25seSk7XG5AQCAtNTg5LDYgJiM0Mzs1ODgsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbiB7XG4gXHRzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYgPSB0b19udWxsYl9kZXZpY2UoaXRlbSk7XG4gXG4mIzQzO1x0Z3VhcmQobXV0ZXgpKFx1MDAyNmxvY2spO1xuIFx0cmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX09GRkxJTkUpO1xuIH1cbiBDT05GSUdGU19BVFRSX1dPKG51bGxiX2RldmljZV8sIHpvbmVfb2ZmbGluZSk7XG5AQCAtNzA3LDEwICYjNDM7NzA3LDkgQEAgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXG4gXHRzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYgPSB0b19udWxsYl9kZXZpY2UoaXRlbSk7XG4gXG4gXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuJiM0MztcdFx0Z3VhcmQobXV0ZXgpKFx1MDAyNmxvY2spO1xuIFx0XHRkZXYtXHUwMDNlcG93ZXIgPSBmYWxzZTtcbiBcdFx0bnVsbF9kZWxfZGV2KGRldi1cdTAwM2VudWxsYik7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcdH1cbiBcdG51bGxiX2RlbF9mYXVsdF9jb25maWcoZGV2KTtcbiBcdGNvbmZpZ19pdGVtX3B1dChpdGVtKTtcbkBAIC04MzYsNyAmIzQzOzgzNSw2IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuIFx0aWYgKCFkZXYpXG4gXHRcdHJldHVybjtcbiBcbi1cdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGJhZGJsb2Nrc19leGl0KFx1MDAyNmRldi1cdTAwM2ViYWRibG9ja3MpO1xuIFx0a2ZyZWUoZGV2KTtcbiB9XG5AQCAtMTc3MCwxOCAmIzQzOzE3NjgsMTkgQEAgc3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXG4gXG4gXHRkZWxfZ2VuZGlzayhudWxsYi1cdTAwM2VkaXNrKTtcbiBcbi1cdGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCBcdTAwMjZudWxsYi1cdTAwM2VkZXYtXHUwMDNlZmxhZ3MpKSB7XG4mIzQzO1x0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpIHtcbiBcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2bnVsbGItXHUwMDNlYndfdGltZXIpO1xuIFx0XHRhdG9taWNfbG9uZ19zZXQoXHUwMDI2bnVsbGItXHUwMDNlY3VyX2J5dGVzLCBMT05HX01BWCk7XG4gXHRcdGJsa19tcV9zdGFydF9zdG9wcGVkX2h3X3F1ZXVlcyhudWxsYi1cdTAwM2VxLCB0cnVlKTtcbiBcdH1cbiBcbiBcdHB1dF9kaXNrKG51bGxiLVx1MDAzZWRpc2spO1xuJiM0MztcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGlmIChudWxsYi1cdTAwM2V0YWdfc2V0ID09IFx1MDAyNm51bGxiLVx1MDAzZV9fdGFnX3NldClcbiBcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi1cdTAwM2V0YWdfc2V0KTtcbiBcdGtmcmVlKG51bGxiLVx1MDAzZXF1ZXVlcyk7XG4gXHRpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKVxuLVx0XHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UobnVsbGItXHUwMDNlZGV2LCB0cnVlKTtcbiYjNDM7XHRcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIHRydWUpO1xuIFx0a2ZyZWUobnVsbGIpO1xuIFx0ZGV2LVx1MDAzZW51bGxiID0gTlVMTDtcbiB9XG5AQCAtMjA4MSwxNCAmIzQzOzIwODAsMTMgQEAgc3RhdGljIHN0cnVjdCBudWxsYiAqbnVsbF9maW5kX2Rldl9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpXG4ge1xuIFx0c3RydWN0IG51bGxiICpudWxsYiA9IE5VTEwsICpuYjtcbiBcbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4mIzQzO1x0Z3VhcmQobXV0ZXgpKFx1MDAyNmxvY2spO1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeShuYiwgXHUwMDI2bnVsbGJfbGlzdCwgbGlzdCkge1xuIFx0XHRpZiAoc3RyY21wKG5iLVx1MDAzZWRpc2tfbmFtZSwgbmFtZSkgPT0gMCkge1xuIFx0XHRcdG51bGxiID0gbmI7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdH1cbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcbiBcdHJldHVybiBudWxsYjtcbiB9XG5AQCAtMjEwMiw5ICYjNDM7MjEwMCw5IEBAIHN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpXG4gXHRpZiAoIWRldilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4mIzQzO1x0c2NvcGVkX2d1YXJkKG11dGV4LCBcdTAwMjZsb2NrKSB7XG4mIzQzO1x0XHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcbiYjNDM7XHR9XG4gXHRpZiAocmV0KSB7XG4gXHRcdG51bGxfZnJlZV9kZXYoZGV2KTtcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0yMTYyLDE3ICYjNDM7MjE2MCw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0Y29uZmlnX2dyb3VwX2luaXQoXHUwMDI2bnVsbGJfc3Vic3lzLnN1X2dyb3VwKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2bnVsbGJfc3Vic3lzLnN1X211dGV4KTtcbiBcbi1cdHJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbi1cbi1cdG11dGV4X2luaXQoXHUwMDI2bG9jayk7XG4tXG4gXHRudWxsX21ham9yID0gcmVnaXN0ZXJfYmxrZGV2KDAsIFwmIzM0O251bGxiXCYjMzQ7KTtcbi1cdGlmIChudWxsX21ham9yIFx1MDAzYyAwKSB7XG4tXHRcdHJldCA9IG51bGxfbWFqb3I7XG4tXHRcdGdvdG8gZXJyX2NvbmY7XG4tXHR9XG4mIzQzO1x0aWYgKG51bGxfbWFqb3IgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gbnVsbF9tYWpvcjtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2RldmljZXM7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHJldCA9IG51bGxfY3JlYXRlX2RldigpO1xuQEAgLTIxODAsNiAmIzQzOzIxNzAsMTAgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRcdFx0Z290byBlcnJfZGV2O1xuIFx0fVxuIFxuJiM0MztcdHJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRnb3RvIGVycl9kZXY7XG4mIzQzO1xuIFx0cHJfaW5mbyhcJiMzNDttb2R1bGUgbG9hZGVkXFxuXCYjMzQ7KTtcbiBcdHJldHVybiAwO1xuIFxuQEAgLTIxODksOCAmIzQzOzIxODMsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdFx0bnVsbF9kZXN0cm95X2RldihudWxsYik7XG4gXHR9XG4gXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcJiMzNDtudWxsYlwmIzM0Oyk7XG4tZXJyX2NvbmY6XG4tXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuJiM0MztcdGlmICh0YWdfc2V0Lm9wcylcbiYjNDM7XHRcdGJsa19tcV9mcmVlX3RhZ19zZXQoXHUwMDI2dGFnX3NldCk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0yMjAwLDE0ICYjNDM7MjE5NCwxNCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXG4gXG4gXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuIFxuLVx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHdoaWxlICghbGlzdF9lbXB0eShcdTAwMjZudWxsYl9saXN0KSkge1xuLVx0XHRudWxsYiA9IGxpc3RfZW50cnkobnVsbGJfbGlzdC5uZXh0LCBzdHJ1Y3QgbnVsbGIsIGxpc3QpO1xuLVx0XHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcbiYjNDM7XHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNmxvY2spIHtcbiYjNDM7XHRcdHdoaWxlICghbGlzdF9lbXB0eShcdTAwMjZudWxsYl9saXN0KSkge1xuJiM0MztcdFx0XHRudWxsYiA9IGxpc3RfZW50cnkobnVsbGJfbGlzdC5uZXh0LCBzdHJ1Y3QgbnVsbGIsIGxpc3QpO1xuJiM0MztcdFx0XHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcbiYjNDM7XHRcdH1cbiBcdH1cbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiYjNDM7XG4mIzQzO1x0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuIFxuIFx0aWYgKHRhZ19zZXQub3BzKVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDEyOjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX05VTExfQkxLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3BvbGxfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlJiMzNDssCiAgICAmIzM0O251bGxiX2dyb3VwX2Ryb3BfaXRlbSYjMzQ7LAogICAgJiMzNDtudWxsX2RlbF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9maW5kX2Rldl9ieV9uYW1lJiMzNDssCiAgICAmIzM0O251bGxfY3JlYXRlX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyLCBmaXhpbmcgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgYWRqdXN0aW5nIGxvY2tpbmcgd2l0aCBgZ3VhcmQobXV0ZXgpYCwgYW5kIGNoYW5naW5nIHRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBhbmQgZGV2aWNlIGRlbGV0aW9uIGxvZ2ljLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGEgc29mdHdhcmUgYmxvY2sgZGV2aWNlIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZTM5NzhmNmVjYzk2MzRjZTczNTBlOGJiNTIzMDVmMjEzNThjN2IyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMjYgMTI6MjQ6MTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jCmluZGV4IGY4YzBmZDU3ZTA0MWE4Li4xYzIwZDc3M2RkMGM4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKQEAgLTY2LDcgJiM0Mzs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHsKICNkZWZpbmUgTlVMTEJfUEFHRV9GUkVFIChNQVBfU1ogLSAyKQogCiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpOwotc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrOwomIzQzO3N0YXRpYyBERUZJTkVfTVVURVgobG9jayk7CiBzdGF0aWMgaW50IG51bGxfbWFqb3I7CiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTsKIHN0YXRpYyBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDsKQEAgLTM0NSw2ICYjNDM7MzQ1LDcgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsCiBzdGF0aWMgc3NpemVfdAkJCQkJCQkJXAogbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKQlcCiB7CQkJCQkJCQkJXAomIzQzOwlndWFyZChtdXRleCkoJmFtcDtsb2NrKTsJCQkJCQlcCiAJcmV0dXJuIG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coCQkJCVwKIAkJCQl0b19udWxsYl9kZXZpY2UoaXRlbSktJmd0O05BTUUsIHBhZ2UpOwlcCiB9CQkJCQkJCQkJXApAQCAtMzYwLDYgJiM0MzszNjEsNyBAQCBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLAlcCiAJcmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoJmFtcDtuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcCiAJaWYgKHJldCAmbHQ7IDApCQkJCQkJCVwKIAkJcmV0dXJuIHJldDsJCQkJCQlcCiYjNDM7CWd1YXJkKG11dGV4KSgmYW1wO2xvY2spOwkJCQkJCVwKIAlpZiAoYXBwbHlfZm4pCQkJCQkJCVwKIAkJcmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpOwkJCQlcCiAJZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncykpIAlcCkBAIC0zODIsNiAmIzQzOzM4NCwxNSBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCWlmICghZGV2LSZndDtudWxsYikKIAkJcmV0dXJuIDA7CiAKJiM0MzsJLyoKJiM0MzsJICogQSBzaGFyZWQgdGFnX3NldCBpcyBtYXBwZWQgdmlhIHRoZSBtb2R1bGUtd2lkZSBxdWV1ZSBjb3VudHMsIHNvIGEKJiM0MzsJICogcGVyLWRldmljZSByZXNpemUgaXMgbWVhbmluZ2xlc3MuIE9uIHNocmluayBpdCB3b3VsZCBhbHNvIGxlYXZlCiYjNDM7CSAqIG1xX21hcFtdIHBvaW50aW5nIGF0IE5VTExlZCBoY3R4IHNsb3RzLCBjYXVzaW5nIGEgTlVMTCBkZXJlZiBpbgomIzQzOwkgKiBibGtfbXFfbWFwX3N3cXVldWUoKS4gUmVqZWN0IGl0LgomIzQzOwkgKi8KJiM0MzsJaWYgKGRldi0mZ3Q7c2hhcmVkX3RhZ3MpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAkvKgogCSAqIE1ha2Ugc3VyZSBhdCBsZWFzdCBvbmUgc3VibWl0IHF1ZXVlIGV4aXN0cy4KIAkgKi8KQEAgLTQyMSwyNSAmIzQzOzQzMiwxMyBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIAkJCQkgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzKQogewotCWludCByZXQ7Ci0KLQltdXRleF9sb2NrKCZhbXA7bG9jayk7Ci0JcmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi0mZ3Q7cG9sbF9xdWV1ZXMpOwotCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwotCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtJmd0O3BvbGxfcXVldWVzKTsKIH0KIAogc3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiAJCQkJICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKQogewotCWludCByZXQ7Ci0KLQltdXRleF9sb2NrKCZhbXA7bG9jayk7Ci0JcmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi0mZ3Q7c3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpOwotCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwotCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTsKIH0KIAogTlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpOwpAQCAtNDc4LDYgJiM0Mzs0NzcsNyBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7CiAKIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSkKIHsKJiM0MzsJZ3VhcmQobXV0ZXgpKCZhbXA7bG9jayk7CiAJcmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktJmd0O3Bvd2VyLCBwYWdlKTsKIH0KIApAQCAtNDkzLDE1ICYjNDM7NDkzLDE1IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCiAJCXJldHVybiByZXQ7CiAKIAlyZXQgPSBjb3VudDsKLQltdXRleF9sb2NrKCZhbXA7bG9jayk7CiYjNDM7CWd1YXJkKG11dGV4KSgmYW1wO2xvY2spOwogCWlmICghZGV2LSZndDtwb3dlciAmYW1wOyZhbXA7IG5ld3ApIHsKIAkJaWYgKHRlc3RfYW5kX3NldF9iaXQoTlVMTEJfREVWX0ZMX1VQLCAmYW1wO2Rldi0mZ3Q7ZmxhZ3MpKQotCQkJZ290byBvdXQ7CiYjNDM7CQkJcmV0dXJuIHJldDsKIAogCQlyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTsKIAkJaWYgKHJldCkgewogCQkJY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgJmFtcDtkZXYtJmd0O2ZsYWdzKTsKLQkJCWdvdG8gb3V0OwomIzQzOwkJCXJldHVybiByZXQ7CiAJCX0KIAogCQlzZXRfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCAmYW1wO2Rldi0mZ3Q7ZmxhZ3MpOwpAQCAtNTE1LDggJiM0Mzs1MTUsNiBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAogCQljbGVhcl9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncyk7CiAJfQogCi1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtNTgwLDYgJiM0Mzs1NzgsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCiB7CiAJc3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pOwogCiYjNDM7CWd1YXJkKG11dGV4KSgmYW1wO2xvY2spOwogCXJldHVybiB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9SRUFET05MWSk7CiB9CiBDT05GSUdGU19BVFRSX1dPKG51bGxiX2RldmljZV8sIHpvbmVfcmVhZG9ubHkpOwpAQCAtNTg5LDYgJiM0Mzs1ODgsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKIHsKIAlzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYgPSB0b19udWxsYl9kZXZpY2UoaXRlbSk7CiAKJiM0MzsJZ3VhcmQobXV0ZXgpKCZhbXA7bG9jayk7CiAJcmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX09GRkxJTkUpOwogfQogQ09ORklHRlNfQVRUUl9XTyhudWxsYl9kZXZpY2VfLCB6b25lX29mZmxpbmUpOwpAQCAtNzA3LDEwICYjNDM7NzA3LDkgQEAgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pCiAJc3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pOwogCiAJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsICZhbXA7ZGV2LSZndDtmbGFncykpIHsKLQkJbXV0ZXhfbG9jaygmYW1wO2xvY2spOwomIzQzOwkJZ3VhcmQobXV0ZXgpKCZhbXA7bG9jayk7CiAJCWRldi0mZ3Q7cG93ZXIgPSBmYWxzZTsKIAkJbnVsbF9kZWxfZGV2KGRldi0mZ3Q7bnVsbGIpOwotCQltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKIAl9CiAJbnVsbGJfZGVsX2ZhdWx0X2NvbmZpZyhkZXYpOwogCWNvbmZpZ19pdGVtX3B1dChpdGVtKTsKQEAgLTgzNiw3ICYjNDM7ODM1LDYgQEAgc3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpCiAJaWYgKCFkZXYpCiAJCXJldHVybjsKIAotCW51bGxfZnJlZV96b25lZF9kZXYoZGV2KTsKIAliYWRibG9ja3NfZXhpdCgmYW1wO2Rldi0mZ3Q7YmFkYmxvY2tzKTsKIAlrZnJlZShkZXYpOwogfQpAQCAtMTc3MCwxOCAmIzQzOzE3NjgsMTkgQEAgc3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpCiAKIAlkZWxfZ2VuZGlzayhudWxsYi0mZ3Q7ZGlzayk7CiAKLQlpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgJmFtcDtudWxsYi0mZ3Q7ZGV2LSZndDtmbGFncykpIHsKJiM0MzsJaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsICZhbXA7ZGV2LSZndDtmbGFncykpIHsKIAkJaHJ0aW1lcl9jYW5jZWwoJmFtcDtudWxsYi0mZ3Q7YndfdGltZXIpOwogCQlhdG9taWNfbG9uZ19zZXQoJmFtcDtudWxsYi0mZ3Q7Y3VyX2J5dGVzLCBMT05HX01BWCk7CiAJCWJsa19tcV9zdGFydF9zdG9wcGVkX2h3X3F1ZXVlcyhudWxsYi0mZ3Q7cSwgdHJ1ZSk7CiAJfQogCiAJcHV0X2Rpc2sobnVsbGItJmd0O2Rpc2spOwomIzQzOwludWxsX2ZyZWVfem9uZWRfZGV2KGRldik7CiAJaWYgKG51bGxiLSZndDt0YWdfc2V0ID09ICZhbXA7bnVsbGItJmd0O19fdGFnX3NldCkKIAkJYmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi0mZ3Q7dGFnX3NldCk7CiAJa2ZyZWUobnVsbGItJmd0O3F1ZXVlcyk7CiAJaWYgKG51bGxfY2FjaGVfYWN0aXZlKG51bGxiKSkKLQkJbnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKG51bGxiLSZndDtkZXYsIHRydWUpOwomIzQzOwkJbnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKGRldiwgdHJ1ZSk7CiAJa2ZyZWUobnVsbGIpOwogCWRldi0mZ3Q7bnVsbGIgPSBOVUxMOwogfQpAQCAtMjA4MSwxNCAmIzQzOzIwODAsMTMgQEAgc3RhdGljIHN0cnVjdCBudWxsYiAqbnVsbF9maW5kX2Rldl9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAJc3RydWN0IG51bGxiICpudWxsYiA9IE5VTEwsICpuYjsKIAotCW11dGV4X2xvY2soJmFtcDtsb2NrKTsKJiM0MzsJZ3VhcmQobXV0ZXgpKCZhbXA7bG9jayk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShuYiwgJmFtcDtudWxsYl9saXN0LCBsaXN0KSB7CiAJCWlmIChzdHJjbXAobmItJmd0O2Rpc2tfbmFtZSwgbmFtZSkgPT0gMCkgewogCQkJbnVsbGIgPSBuYjsKIAkJCWJyZWFrOwogCQl9CiAJfQotCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwogCiAJcmV0dXJuIG51bGxiOwogfQpAQCAtMjEwMiw5ICYjNDM7MjEwMCw5IEBAIHN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpCiAJaWYgKCFkZXYpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JbXV0ZXhfbG9jaygmYW1wO2xvY2spOwotCXJldCA9IG51bGxfYWRkX2RldihkZXYpOwotCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwomIzQzOwlzY29wZWRfZ3VhcmQobXV0ZXgsICZhbXA7bG9jaykgewomIzQzOwkJcmV0ID0gbnVsbF9hZGRfZGV2KGRldik7CiYjNDM7CX0KIAlpZiAocmV0KSB7CiAJCW51bGxfZnJlZV9kZXYoZGV2KTsKIAkJcmV0dXJuIHJldDsKQEAgLTIxNjIsMTcgJiM0MzsyMTYwLDkgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpCiAJY29uZmlnX2dyb3VwX2luaXQoJmFtcDtudWxsYl9zdWJzeXMuc3VfZ3JvdXApOwogCW11dGV4X2luaXQoJmFtcDtudWxsYl9zdWJzeXMuc3VfbXV0ZXgpOwogCi0JcmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKCZhbXA7bnVsbGJfc3Vic3lzKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JbXV0ZXhfaW5pdCgmYW1wO2xvY2spOwotCiAJbnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCAmIzM0O251bGxiJiMzNDspOwotCWlmIChudWxsX21ham9yICZsdDsgMCkgewotCQlyZXQgPSBudWxsX21ham9yOwotCQlnb3RvIGVycl9jb25mOwotCX0KJiM0MzsJaWYgKG51bGxfbWFqb3IgJmx0OyAwKQomIzQzOwkJcmV0dXJuIG51bGxfbWFqb3I7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgbnJfZGV2aWNlczsgaSYjNDM7JiM0MzspIHsKIAkJcmV0ID0gbnVsbF9jcmVhdGVfZGV2KCk7CkBAIC0yMTgwLDYgJiM0MzsyMTcwLDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKQogCQkJZ290byBlcnJfZGV2OwogCX0KIAomIzQzOwlyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oJmFtcDtudWxsYl9zdWJzeXMpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBlcnJfZGV2OwomIzQzOwogCXByX2luZm8oJiMzNDttb2R1bGUgbG9hZGVkXG4mIzM0Oyk7CiAJcmV0dXJuIDA7CiAKQEAgLTIxODksOCAmIzQzOzIxODMsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZCkKIAkJbnVsbF9kZXN0cm95X2RldihudWxsYik7CiAJfQogCXVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsICYjMzQ7bnVsbGImIzM0Oyk7Ci1lcnJfY29uZjoKLQljb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbSgmYW1wO251bGxiX3N1YnN5cyk7CiYjNDM7CWlmICh0YWdfc2V0Lm9wcykKJiM0MzsJCWJsa19tcV9mcmVlX3RhZ19zZXQoJmFtcDt0YWdfc2V0KTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yMjAwLDE0ICYjNDM7MjE5NCwxNCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpCiAKIAljb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbSgmYW1wO251bGxiX3N1YnN5cyk7CiAKLQl1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCAmIzM0O251bGxiJiMzNDspOwotCi0JbXV0ZXhfbG9jaygmYW1wO2xvY2spOwotCXdoaWxlICghbGlzdF9lbXB0eSgmYW1wO251bGxiX2xpc3QpKSB7Ci0JCW51bGxiID0gbGlzdF9lbnRyeShudWxsYl9saXN0Lm5leHQsIHN0cnVjdCBudWxsYiwgbGlzdCk7Ci0JCW51bGxfZGVzdHJveV9kZXYobnVsbGIpOwomIzQzOwlzY29wZWRfZ3VhcmQobXV0ZXgsICZhbXA7bG9jaykgewomIzQzOwkJd2hpbGUgKCFsaXN0X2VtcHR5KCZhbXA7bnVsbGJfbGlzdCkpIHsKJiM0MzsJCQludWxsYiA9IGxpc3RfZW50cnkobnVsbGJfbGlzdC5uZXh0LCBzdHJ1Y3QgbnVsbGIsIGxpc3QpOwomIzQzOwkJCW51bGxfZGVzdHJveV9kZXYobnVsbGIpOwomIzQzOwkJfQogCX0KLQltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKJiM0MzsKJiM0MzsJdW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgJiMzNDtudWxsYiYjMzQ7KTsKIAogCWlmICh0YWdfc2V0Lm9wcykKIAkJYmxrX21xX2ZyZWVfdGFnX3NldCgmYW1wO3RhZ19zZXQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTg5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIE51bGwgQmxvY2sgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIGl0JiMzOTtzIHJlcGxhY2luZyBgbXV0ZXhfbG9ja2AvYG11dGV4X3VubG9ja2Agd2l0aCBgZ3VhcmQobXV0ZXgpKCZhbXA7bG9jaylgIGFuZCBgc2NvcGVkX2d1YXJkKG11dGV4LCAmYW1wO2xvY2spYC4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IHNoaWZ0IGluIGxvY2tpbmcgc3RyYXRlZ3ksIGhpbnRpbmcgYXQgYSBwb3RlbnRpYWwgY2hhbmdlIGluIGhvdyBjb25jdXJyZW5jeSBpcyBoYW5kbGVkLCBvciBhbiBhdHRlbXB0IHRvIHNpbXBsaWZ5IGxvY2sgbWFuYWdlbWVudCwgd2hpY2ggY291bGQgYmUgYSBnb29kIHRoaW5nLiBUaGUgYWRkaXRpb24gb2YgdGhhdCBjaGVjayBpbiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2Ag4oCTIGBpZiAoZGV2LSZndDtzaGFyZWRfdGFncykgcmV0dXJuIC1FSU5WQUw7YCDigJMgaXMgaW50ZXJlc3RpbmcuIEl0JiMzOTtzIGxpa2VseSByZWxhdGVkIHRvIHNvbWUgbmV3IGNvbnN0cmFpbnQgb3IgcmVzdHJpY3Rpb24gb24gaGFyZHdhcmUgcXVldWUgY29uZmlndXJhdGlvbnMuIEFuZCB0aGUgcmVhcnJhbmdlbWVudCBvZiBgbnVsbF9mcmVlX3pvbmVkX2RldmAsIG1vdmluZyBpdCBmcm9tIGBudWxsX2ZyZWVfZGV2YCB0byBgbnVsbF9kZWxfZGV2YCwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgbWVtb3J5IG1hbmFnZW1lbnQgdHdlYWsgSSBuZWVkIHRvIGxvb2sgY2xvc2VyIGF0LgoKTm93LCBpcyB0aGlzIHBhdGNoIHdvcnRoIGZ1enppbmc/IEFic29sdXRlbHkuIEl04oCZcyB0aGUgbnVsbCBibG9jayBkZXZpY2UgZHJpdmVyLCB3aGljaCwgYXMgSSBrbm93LCBpcyBhIHN0YXBsZSBpbiBhIGxvdCBvZiB0ZXN0aW5nIGVudmlyb25tZW50cyBhbmQgdmlydHVhbGl6YXRpb24gc2V0dXBzLiBUb3RhbGx5IHJlYWNoYWJsZS4gR2l2ZW4gdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMsIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIG5ldyBsb2NraW5nIG1lY2hhbmlzbXMsIHRoYXQgZXJyb3IgaGFuZGxpbmcgY2hlY2ssIGFuZCB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgYWx0ZXJhdGlvbnMsIHRoZXJlJiMzOTtzIGEgc3Ryb25nIGNoYW5jZSB0aGlzIGNvdWxkIGludHJvZHVjZSBjb25jdXJyZW5jeSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgc2NlbmFyaW9zLCBvciBpdCBtaWdodCBiZSBmaXhpbmcgZXhpc3Rpbmcgb25lcy4gRnV6emluZyB0aGlzIGlzIGEgbm8tYnJhaW5lcjsgdGhlIHBvdGVudGlhbCBmb3IgdW5jb3ZlcmluZyBzdWJ0bGUgaXNzdWVzIGlzIGhpZ2guCgpUaW1lIHRvIGdyYWIgdGhlIGNvbmZpZyBvcHRpb25zLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9gIGFuZCBkaWcgaW50byBLY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDEyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX05VTExfQkxLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6Njpjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTktXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctMTEtXHRib29sIFwmIzM0O1N1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTI6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc5NQoJCQkJCQkJb3V0cHV0OiAxMzAKCQkJCQkJCXRob3VnaHRzOiA1MDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gdGhlIENvcmUgQ2hhbmdlcyBpbiB0aGUgYEJMS19ERVZfTlVMTF9CTEtgIENvbmZpZyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gYEJMS19ERVZfTlVMTF9CTEtgLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHplcm8gaW4gb24gdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gSGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdDoKCiogICBgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZWAgKG1hY3JvLWdlbmVyYXRlZCwgbGlrZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCkKKiAgIGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AKKiAgIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgCiogICBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgCiogICBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWAKKiAgIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gCiogICBgbnVsbF9mcmVlX2RldmAKKiAgIGBudWxsX2RlbF9kZXZgCiogICBgbnVsbF9maW5kX2Rldl9ieV9uYW1lYAoqICAgYG51bGxfY3JlYXRlX2RldmAKKiAgIGBudWxsX2luaXRgCiogICBgbnVsbF9leGl0YAoqICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgCiogICBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AKKiAgIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AKCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGljaCBvZiB0aGVzZSBhcmUgdGhlIG1vc3QgaW50ZXJlc3RpbmcgdG8gYW5hbHl6ZSwgZXNwZWNpYWxseSBmb3IgZnV6emluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggYXJlIGRpcmVjdGx5IHJlYWNoYWJsZSwgb3IgcG90ZW50aWFsIGVudHJ5IHBvaW50cy4gVGhlIGNvbmZpZ2ZzIGZ1bmN0aW9ucyBjb21lIHRvIG1pbmQuIEkga25vdyB0aGV5JiMzOTtyZSB0ZWNobmljYWxseSBzdGF0aWMsIGJ1dCB0aGV5JiMzOTtyZSByZWdpc3RlcmVkIGFzIGNhbGxiYWNrcywgYW5kIEkmIzM5O20gcHJldHR5IHN1cmUgc3l6a2FsbGVyIGNhbiByZWFjaCB0aGVtLiBCdXQsIG1heWJlLCBJIHNob3VsZCBmb2N1cyBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRoZW1zZWx2ZXMuCgpTbywgbGV0JiMzOTtzIGZpbHRlciBvdXQgdGhlIGluaXQvZXhpdCBmdW5jdGlvbnMgYW5kIHNlZSB3aGF0IHdlIGhhdmUuIEFsc28sIEkgbmVlZCB0byBrbm93IHdoaWNoIG9mIHRoZXNlIGFyZSBzdGF0aWMsIGFuZCB3aGV0aGVyIHRoZXkmIzM5O3JlIGlubGluZWQuCgpUaGUgZnVuY3Rpb25zIGxlZnQgYXJlOgoKKiAgIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgCiogICBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgCiogICBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWAKKiAgIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gCiogICBgbnVsbF9mcmVlX2RldmAKKiAgIGBudWxsX2RlbF9kZXZgCiogICBgbnVsbF9maW5kX2Rldl9ieV9uYW1lYAoqICAgYG51bGxfY3JlYXRlX2RldmAKKiAgIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYAoqICAgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgCiogICBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgCgpMZXQmIzM5O3MgY2hlY2sgaWYgdGhleSYjMzk7cmUgc3RhdGljIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgd2hldGhlciB0aGV5IG1pZ2h0IGJlIGlubGluZWQuIEkgbmVlZCB0byBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMsIGFzIHRoZSBpbnN0cnVjdGlvbnMgc3RhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTI6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlfG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlfG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmV8bnVsbGJfZ3JvdXBfZHJvcF9pdGVtfG51bGxfZnJlZV9kZXZ8bnVsbF9kZWxfZGV2fG51bGxfZmluZF9kZXZfYnlfbmFtZXxudWxsX2NyZWF0ZV9kZXZ8bnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc3xudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzfG51bGxiX2FwcGx5X3BvbGxfcXVldWVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjczPXN0YXRpYyBzdHJ1Y3QgbnVsbGJfZGV2aWNlICpudWxsX2FsbG9jX2Rldih2b2lkKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI3NDpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzU6c3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc2LXN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzc6c3RhdGljIHN0cnVjdCBudWxsYiAqbnVsbF9maW5kX2Rldl9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc4OnN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsIGJvb2wgaXNfY2FjaGUpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc5LVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTM3ND1DT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzc1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mzc2OnN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNzctXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQzMS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQzMjpzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDMzLVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcylcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQzNC17XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0MzU6XHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzYtfVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDM3LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDM4OnN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDM5LVx0XHRcdFx0ICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDQwLXtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0MTpcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ0Mi19XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDQ1PU5VTExCX0RFVklDRV9BVFRSKGNvbXBsZXRpb25fbnNlYywgdWxvbmcsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ2Ok5VTExCX0RFVklDRV9BVFRSKHN1Ym1pdF9xdWV1ZXMsIHVpbnQsIG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ3Ok5VTExCX0RFVklDRV9BVFRSKHBvbGxfcXVldWVzLCB1aW50LCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NDgtTlVMTEJfREVWSUNFX0FUVFIoaG9tZV9ub2RlLCB1aW50LCBOVUxMKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00Nzg9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4My1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4NDpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDg1LVx0XHRcdFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTEyLVx0XHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MTM6XHRcdFx0bnVsbF9kZWxfZGV2KGRldi1cdTAwM2VudWxsYik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MTQtXHRcdH1cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01NzQ9Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBiYWRibG9ja3MpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTc1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTc2OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU3Ny1cdFx0XHRcdFx0XHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTg0PUNPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9yZWFkb25seSk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1ODY6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODctXHRcdFx0XHRcdCAgICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NjM3PXN0YXRpYyB2b2lkIG51bGxiX2RldmljZV9yZWxlYXNlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02NDAtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2NDE6XHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UoZGV2LCBmYWxzZSk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2NDI6XHRudWxsX2ZyZWVfZGV2KGRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02NDMtfVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTY4Nz1jb25maWdfZ3JvdXAgKm51bGxiX2dyb3VwX21ha2VfZ3JvdXAoc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjkwLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NjkxOlx0aWYgKG51bGxfZmluZF9kZXZfYnlfbmFtZShuYW1lKSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY5Mi1cdFx0cmV0dXJuIEVSUl9QVFIoLUVFWElTVCk7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NzA0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3MDU6bnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MDYte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTcxMS1cdFx0ZGV2LVx1MDAzZXBvd2VyID0gZmFsc2U7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3MTI6XHRcdG51bGxfZGVsX2RldihkZXYtXHUwMDNlbnVsbGIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzEzLVx0fVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ2ZzX2dyb3VwX29wZXJhdGlvbnMgbnVsbGJfZ3JvdXBfb3BzID0ge1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzUyLVx0Lm1ha2VfZ3JvdXBcdD0gbnVsbGJfZ3JvdXBfbWFrZV9ncm91cCxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjc1MzpcdC5kcm9wX2l0ZW1cdD0gbnVsbGJfZ3JvdXBfZHJvcF9pdGVtLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzU0LX07XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9Nzc2PXN0YXRpYyBzdHJ1Y3QgbnVsbGJfZGV2aWNlICpudWxsX2FsbG9jX2Rldih2b2lkKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTgzMi1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjgzMzpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTgzNC17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9OTI0PXN0YXRpYyBzdHJ1Y3QgbnVsbGJfcGFnZSAqbnVsbF9yYWRpeF90cmVlX2luc2VydChzdHJ1Y3QgbnVsbGIgKm51bGxiLCB1NjQgaWR4LFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk0MC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjk0MTpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2Uoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LCBib29sIGlzX2NhY2hlKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTQyLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xNzQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxrX21xX29wcyBudWxsX21xX29wcyA9IHtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzU1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTc1NjpzdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3NTcte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3ODItXHRpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTc4MzpcdFx0bnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKGRldiwgdHJ1ZSk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzg0LVx0a2ZyZWUobnVsbGIpO1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE5NTQ9c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwNzgtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDc5OnN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA4MC17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA5My1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIwOTQ6c3RhdGljIGludCBudWxsX2NyZWF0ZV9kZXYodm9pZClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwOTUte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTA3Olx0XHRudWxsX2ZyZWVfZGV2KGRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTA4LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTIxMTQ9c3RhdGljIHZvaWQgbnVsbF9kZXN0cm95X2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMTctXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTE4Olx0bnVsbF9kZWxfZGV2KG51bGxiKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxMTk6XHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UoZGV2LCBmYWxzZSk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTIwOlx0bnVsbF9mcmVlX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEyMS19XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjEyMz1zdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTY3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfZGV2aWNlczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxNjg6XHRcdHJldCA9IG51bGxfY3JlYXRlX2RldigpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjE2OS1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTcwCgkJCQkJCQlvdXRwdXQ6IDIyMQoJCQkJCQkJdGhvdWdodHM6IDEzOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIG51bGxfYmxrIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIHRhcmdldGVkIGF0IGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AsIHdoaWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQmIzM5O3MgYSBzb2Z0d2FyZSBibG9jayBkZXZpY2UuIFRoYXQgbWFrZXMgaXQgcmVhZGlseSBhY2Nlc3NpYmxlIGluIGEgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggaXMgZ29vZCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4KCkZpcnN0IHRoaW5ncyBmaXJzdCwgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBiZWVmaW5nIHVwIHRoZSBsb2NraW5nIG1lY2hhbmlzbS4gVGhlIGNoYW5nZSBmcm9tIGBzdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7YCB0byBgc3RhdGljIERFRklORV9NVVRFWChsb2NrKTtgIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIHVzZSBvZiBgZ3VhcmQobXV0ZXgpKCZhbXA7bG9jayk7YCBhbmQgYHNjb3BlZF9ndWFyZChtdXRleCwgJmFtcDtsb2NrKWAgdGhyb3VnaG91dCB0aGUgY29kZSBiYXNlIGluIGZ1bmN0aW9ucyBsaWtlIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvd2AsIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgLCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgLCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlYCwgYG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmVgLCBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYCwgYG51bGxfZmluZF9kZXZfYnlfbmFtZWAsIGBudWxsX2NyZWF0ZV9kZXZgLCBhbmQgYG51bGxfZXhpdGAgc3VnZ2VzdHMgdGhleSYjMzk7cmUgYWltaW5nIGZvciBtb3JlIHJvYnVzdCBwcm90ZWN0aW9uIGFyb3VuZCBjcml0aWNhbCBzZWN0aW9ucy4gVGhpcyBjb3VsZCBiZSBkdWUgdG8gcmFjZSBjb25kaXRpb25zIGZvdW5kIGluIHByZXZpb3VzIGRldmVsb3BtZW50IGVmZm9ydHMsIG9yIHNpbXBseSBhcyBhbiBlZmZvcnQgdG8gZW5zdXJlIHRoaXMgZGV2aWNlIGlzIHNhZmUgZm9yIGhpZ2gtY29uY3VycmVuY3kgdXNhZ2VzLgoKVGhlIGFkZGl0aW9uIG9mIHRoZSBjaGVjayBpbiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2A6CmBgYGMKCWlmIChkZXYtJmd0O3NoYXJlZF90YWdzKQoJCXJldHVybiAtRUlOVkFMOwpgYGAKaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBleWUuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIHByZXZlbnQgc29tZSBraW5kIG9mIGludmFsaWQgc3RhdGUgcmVsYXRlZCB0byBzaGFyZWQgdGFncyB3aGljaCBjb3VsZCBiZSBwcm9ibGVtYXRpYy4gQ291bGQgYmUgYSBwb3RlbnRpYWwgTlVMTCBkZXJlZmVyZW5jZSwgb3IgcG9zc2libHkgYSByZXNvdXJjZSBtYW5hZ2VtZW50IGlzc3VlLgoKVGhlIHJlbW92YWwgb2YgYG11dGV4X2xvY2soJmFtcDtsb2NrKWAgYW5kIGBtdXRleF91bmxvY2soJmFtcDtsb2NrKWAgZnJvbSBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AgaXMgY3VyaW91cy4gV2hlcmUgaGFzIHRoYXQgbG9naWMgbWlncmF0ZWQgdG8/IFBlcmhhcHMgdGhlIGBndWFyZGAgYW5kIGBzY29wZWRfZ3VhcmRgIG1hY3JvcyBhcmUgbm93IGhhbmRsaW5nIHRoZSBsb2NraW5nIGF0IGEgaGlnaGVyIGxldmVsLCB3aGljaCBjb3VsZCBzaW1wbGlmeSB0aGUgY29kZSBhbmQgcmVkdWNlIHRoZSByaXNrIG9mIG1pc3NlZCB1bmxvY2tzLgoKVGhlbiB0aGVyZSYjMzk7cyB0aGUgbW92ZSBvZiBgbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO2AgZnJvbSBgbnVsbF9mcmVlX2RldmAgdG8gYG51bGxfZGVsX2RldmAuIFRoYXQmIzM5O3MgYSBkZWZpbml0ZSBzdHJ1Y3R1cmFsIGNoYW5nZS4gVGhlIHN1YnNlcXVlbnQgZml4IGluIGBudWxsX2RlbF9kZXZgIHdoZXJlIHRoZXkgY29ycmVjdCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBieSBjaGFuZ2luZyBgbnVsbGItJmd0O2RldmAgdG8gYGRldi0mZ3Q7ZmxhZ3NgIGFuZCBgZGV2YCBjb25maXJtcyB0aGVyZSB3YXMgYSByZWFsIGlzc3VlIGhlcmUsIHVzaW5nIHRoZSBkZXZpY2UgYWZ0ZXIgaXQgd2FzIHBvdGVudGlhbGx5IGZyZWVkLiBUaGlzIGlzIHNpZ25pZmljYW50IGFuZCBzb21ldGhpbmcgdGhhdCBkZW1hbmRzIGNsb3NlciBpbnNwZWN0aW9uLgoKRmluYWxseSwgdGhlIGluaXRpYWxpemF0aW9uIG9yZGVyIGNoYW5nZXMgaW4gYG51bGxfaW5pdGAsIHdpdGggYHJlZ2lzdGVyX2Jsa2RldmAgbm93IGJlZm9yZSBgbnVsbF9jcmVhdGVfZGV2YCBhbmQgYGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbWAgYWZ0ZXIgYG51bGxfY3JlYXRlX2RldmAsIHByb2JhYmx5IGhhcyB0byBkbyB3aXRoIGRlcGVuZGVuY2llcyBhbmQgZGV2aWNlIHJlZ2lzdHJhdGlvbi4gVGhpcyBjb3VsZCBiZSB0byBkbyB3aXRoIHJlc29sdmluZyBzb21lIGRlcGVuZGVuY2llcyBpbiB0aGUgb3JkZXIgb2YgaW5pdGlhbGl6YXRpb24uCgpPa2F5LCBpcyB0aGlzIGZ1enphYmxlPyBBYnNvbHV0ZWx5LiBUaGlzIGRyaXZlciBpcyByZWFjaGFibGUsIHRoZSBjaGFuZ2VzIGluY2x1ZGUgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcywgYW5kIGxvY2tpbmcgbW9kaWZpY2F0aW9ucyDigJMgYWxsIG9mIHdoaWNoIGFyZSBmZXJ0aWxlIGdyb3VuZCBmb3IgZnV6emluZy4gSSBjYW4gaW1hZ2luZSBjcmVhdGluZyBkZXZpY2VzIGFuZCB3cml0aW5nIHRvIHN5c2ZzIGF0dHJpYnV0ZXMgdG8gdHJ5IHRvIHRyaWdnZXIgdGhlc2UgY2hhbmdlcyBpbiB0aGUgbG9ja2luZyBzZW1hbnRpY3MuCgpTbywgbGV0JiMzOTtzIGlkZW50aWZ5IHJlbGV2YW50IHN5bWJvbHM6CgoqICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgOiBUaGlzIGlzIGFuIGludGVyZXN0aW5nIG9uZSBiZWNhdXNlIGl0IGlzIHN0YXRpYywgYnV0IGlzIHVzZWQgYnkgdGhlIHN1Ym1pdC9wb2xsIGZ1bmN0aW9ucy4KKiAgIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYDogU3RhdGljLCBidXQgdXNlZCBhcyBhIGNhbGxiYWNrLCB3aGljaCBtaWdodCBtYWtlIGl0IGFjY2Vzc2libGUuCiogICBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgOiBTdGF0aWMsIHNpbWlsYXIgdG8gdGhlIGFib3ZlLgoqICAgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAKKiAgIGBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZWAKKiAgIGBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlYAoqICAgYG51bGxiX2dyb3VwX2Ryb3BfaXRlbWAKKiAgIGBudWxsX2RlbF9kZXZgOiBUaGUgdXNlLWFmdGVyLWZyZWUgZml4IG1ha2VzIHRoaXMgY3JpdGljYWwuCiogICBgbnVsbF9maW5kX2Rldl9ieV9uYW1lYAoqICAgYG51bGxfY3JlYXRlX2RldmAKClRoZSBjb25maWcgaXMgYEJMS19ERVZfTlVMTF9CTEtgLgoKVGhlIGNvbmZpZ2ZzIHN0b3JlIGZ1bmN0aW9ucyBsb29rIHByb21pc2luZyDigJMgdGhleSYjMzk7cmUgYWNjZXNzZWQgdGhyb3VnaCBzeXNmcywgd2hpY2ggc3l6a2FsbGVyIGNhbiBkZWZpbml0ZWx5IHRhcmdldC4gQWx0aG91Z2ggc3RhdGljLCB0aGV5IGFyZSBlbnRyeSBwb2ludHMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHRocm91Z2ggdGhlIGZpbGVzeXN0ZW0gaW50ZXJmYWNlLiBTbywgSSB3aWxsIGZvY3VzIG9uIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIHByb3ZpZGUgdGhlIHNldC1yZXN1bHRzOgoKKiAgIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYAoqICAgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAKKiAgIGBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZWAKKgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlJiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlJiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZ3JvdXBfZHJvcF9pdGVtJiMzNDssCiAgICAmIzM0O251bGxfZGVsX2RldiYjMzQ7LAogICAgJiMzNDtudWxsX2ZpbmRfZGV2X2J5X25hbWUmIzM0OywKICAgICYjMzQ7bnVsbF9jcmVhdGVfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBudWxsX2JsayBkcml2ZXIsIGZpeGluZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgLCBhZGp1c3RpbmcgbG9ja2luZyB3aXRoIGBndWFyZChtdXRleClgLCBhbmQgY2hhbmdpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9yZGVyIGFuZCBkZXZpY2UgZGVsZXRpb24gbG9naWMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gYSBzb2Z0d2FyZSBibG9jayBkZXZpY2UgdGhhdCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OVUxMX0JMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9ncm91cF9kcm9wX2l0ZW0mIzM0OywKICAgICYjMzQ7bnVsbF9kZWxfZGV2JiMzNDssCiAgICAmIzM0O251bGxfZmluZF9kZXZfYnlfbmFtZSYjMzQ7LAogICAgJiMzNDtudWxsX2NyZWF0ZV9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG51bGxfYmxrIGRyaXZlciwgZml4aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIGFkanVzdGluZyBsb2NraW5nIHdpdGggYGd1YXJkKG11dGV4KWAsIGFuZCBjaGFuZ2luZyB0aGUgaW5pdGlhbGl6YXRpb24gb3JkZXIgYW5kIGRldmljZSBkZWxldGlvbiBsb2dpYy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBhIHNvZnR3YXJlIGJsb2NrIGRldmljZSB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjZUMTI6MjQ6MTUuMzMzMTQwODY1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU5MTc1Mjk1MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3BvbGxfcXVldWVzXCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlXCIsXG4gICAgXCJudWxsYl9ncm91cF9kcm9wX2l0ZW1cIixcbiAgICBcIm51bGxfZGVsX2RldlwiLFxuICAgIFwibnVsbF9maW5kX2Rldl9ieV9uYW1lXCIsXG4gICAgXCJudWxsX2NyZWF0ZV9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyLCBmaXhpbmcgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgYWRqdXN0aW5nIGxvY2tpbmcgd2l0aCBgZ3VhcmQobXV0ZXgpYCwgYW5kIGNoYW5naW5nIHRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBhbmQgZGV2aWNlIGRlbGV0aW9uIGxvZ2ljLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGEgc29mdHdhcmUgYmxvY2sgZGV2aWNlIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDEyOjI0OjE1LjMzMzE0NjI2NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1MDk1MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGUzOTc4ZjZlY2M5NjM0Y2U3MzUwZThiYjUyMzA1ZjIxMzU4YzdiMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAyNiAxMjoyNDoxMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXFxuaW5kZXggZjhjMGZkNTdlMDQxYTguLjFjMjBkNzczZGQwYzhkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXFxuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG5AQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7XFxuICNkZWZpbmUgTlVMTEJfUEFHRV9GUkVFIChNQVBfU1ogLSAyKVxcbiBcXG4gc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTtcXG4tc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrO1xcbitzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xcbiBzdGF0aWMgaW50IG51bGxfbWFqb3I7XFxuIHN0YXRpYyBERUZJTkVfSURBKG51bGxiX2luZGV4ZXMpO1xcbiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XFxuQEAgLTM0NSw2ICszNDUsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcXG4gc3RhdGljIHNzaXplX3RcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXHRcXFxcXFxuIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGd1YXJkKG11dGV4KShcXHUwMDI2bG9jayk7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRyZXR1cm4gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc2hvdyhcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdHRvX251bGxiX2RldmljZShpdGVtKS1cXHUwMDNlTkFNRSwgcGFnZSk7XFx0XFxcXFxcbiB9XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbkBAIC0zNjAsNiArMzYxLDcgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcXHRcXFxcXFxuIFxcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlKFxcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxcXFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0dXJuIHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGd1YXJkKG11dGV4KShcXHUwMDI2bG9jayk7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRpZiAoYXBwbHlfZm4pXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRyZXQgPSBhcHBseV9mbihkZXYsIG5ld192YWx1ZSk7XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRlbHNlIGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKSBcXHRcXFxcXFxuQEAgLTM4Miw2ICszODQsMTUgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4gXFx0aWYgKCFkZXYtXFx1MDAzZW51bGxiKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIEEgc2hhcmVkIHRhZ19zZXQgaXMgbWFwcGVkIHZpYSB0aGUgbW9kdWxlLXdpZGUgcXVldWUgY291bnRzLCBzbyBhXFxuK1xcdCAqIHBlci1kZXZpY2UgcmVzaXplIGlzIG1lYW5pbmdsZXNzLiBPbiBzaHJpbmsgaXQgd291bGQgYWxzbyBsZWF2ZVxcbitcXHQgKiBtcV9tYXBbXSBwb2ludGluZyBhdCBOVUxMZWQgaGN0eCBzbG90cywgY2F1c2luZyBhIE5VTEwgZGVyZWYgaW5cXG4rXFx0ICogYmxrX21xX21hcF9zd3F1ZXVlKCkuIFJlamVjdCBpdC5cXG4rXFx0ICovXFxuK1xcdGlmIChkZXYtXFx1MDAzZXNoYXJlZF90YWdzKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdC8qXFxuIFxcdCAqIE1ha2Ugc3VyZSBhdCBsZWFzdCBvbmUgc3VibWl0IHF1ZXVlIGV4aXN0cy5cXG4gXFx0ICovXFxuQEAgLTQyMSwyNSArNDMyLDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXFxuIHtcXG4tXFx0aW50IHJldDtcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbi1cXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVxcdTAwM2Vwb2xsX3F1ZXVlcyk7XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuLVxcbi1cXHRyZXR1cm4gcmV0O1xcbitcXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cXHUwMDNlcG9sbF9xdWV1ZXMpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKVxcbiB7XFxuLVxcdGludCByZXQ7XFxuLVxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcbi1cXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcXG4gfVxcbiBcXG4gTlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpO1xcbkBAIC00NzgsNiArNDc3LDcgQEAgTlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xcbiBcXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxcbiB7XFxuK1xcdGd1YXJkKG11dGV4KShcXHUwMDI2bG9jayk7XFxuIFxcdHJldHVybiBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVxcdTAwM2Vwb3dlciwgcGFnZSk7XFxuIH1cXG4gXFxuQEAgLTQ5MywxNSArNDkzLDE1IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbiBcXHRyZXQgPSBjb3VudDtcXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuK1xcdGd1YXJkKG11dGV4KShcXHUwMDI2bG9jayk7XFxuIFxcdGlmICghZGV2LVxcdTAwM2Vwb3dlciBcXHUwMDI2XFx1MDAyNiBuZXdwKSB7XFxuIFxcdFxcdGlmICh0ZXN0X2FuZF9zZXRfYml0KE5VTExCX0RFVl9GTF9VUCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKVxcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuIFxcdFxcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xcbiBcXHRcXHRpZiAocmV0KSB7XFxuIFxcdFxcdFxcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKTtcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdHNldF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKTtcXG5AQCAtNTE1LDggKzUxNSw2IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuIFxcdFxcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpO1xcbiBcXHR9XFxuIFxcbi1vdXQ6XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuQEAgLTU4MCw2ICs1NzgsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuIHtcXG4gXFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xcbiBcXG4rXFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZsb2NrKTtcXG4gXFx0cmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX1JFQURPTkxZKTtcXG4gfVxcbiBDT05GSUdGU19BVFRSX1dPKG51bGxiX2RldmljZV8sIHpvbmVfcmVhZG9ubHkpO1xcbkBAIC01ODksNiArNTg4LDcgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuIHtcXG4gXFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xcbiBcXG4rXFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZsb2NrKTtcXG4gXFx0cmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX09GRkxJTkUpO1xcbiB9XFxuIENPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9vZmZsaW5lKTtcXG5AQCAtNzA3LDEwICs3MDcsOSBAQCBudWxsYl9ncm91cF9kcm9wX2l0ZW0oc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsIHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcXG4gXFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xcbiBcXG4gXFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSkge1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4rXFx0XFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZsb2NrKTtcXG4gXFx0XFx0ZGV2LVxcdTAwM2Vwb3dlciA9IGZhbHNlO1xcbiBcXHRcXHRudWxsX2RlbF9kZXYoZGV2LVxcdTAwM2VudWxsYik7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuIFxcdH1cXG4gXFx0bnVsbGJfZGVsX2ZhdWx0X2NvbmZpZyhkZXYpO1xcbiBcXHRjb25maWdfaXRlbV9wdXQoaXRlbSk7XFxuQEAgLTgzNiw3ICs4MzUsNiBAQCBzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG4gXFx0aWYgKCFkZXYpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcXG4gXFx0YmFkYmxvY2tzX2V4aXQoXFx1MDAyNmRldi1cXHUwMDNlYmFkYmxvY2tzKTtcXG4gXFx0a2ZyZWUoZGV2KTtcXG4gfVxcbkBAIC0xNzcwLDE4ICsxNzY4LDE5IEBAIHN0YXRpYyB2b2lkIG51bGxfZGVsX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbiBcXG4gXFx0ZGVsX2dlbmRpc2sobnVsbGItXFx1MDAzZWRpc2spO1xcbiBcXG4tXFx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFxcdTAwMjZudWxsYi1cXHUwMDNlZGV2LVxcdTAwM2VmbGFncykpIHtcXG4rXFx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSkge1xcbiBcXHRcXHRocnRpbWVyX2NhbmNlbChcXHUwMDI2bnVsbGItXFx1MDAzZWJ3X3RpbWVyKTtcXG4gXFx0XFx0YXRvbWljX2xvbmdfc2V0KFxcdTAwMjZudWxsYi1cXHUwMDNlY3VyX2J5dGVzLCBMT05HX01BWCk7XFxuIFxcdFxcdGJsa19tcV9zdGFydF9zdG9wcGVkX2h3X3F1ZXVlcyhudWxsYi1cXHUwMDNlcSwgdHJ1ZSk7XFxuIFxcdH1cXG4gXFxuIFxcdHB1dF9kaXNrKG51bGxiLVxcdTAwM2VkaXNrKTtcXG4rXFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbiBcXHRpZiAobnVsbGItXFx1MDAzZXRhZ19zZXQgPT0gXFx1MDAyNm51bGxiLVxcdTAwM2VfX3RhZ19zZXQpXFxuIFxcdFxcdGJsa19tcV9mcmVlX3RhZ19zZXQobnVsbGItXFx1MDAzZXRhZ19zZXQpO1xcbiBcXHRrZnJlZShudWxsYi1cXHUwMDNlcXVldWVzKTtcXG4gXFx0aWYgKG51bGxfY2FjaGVfYWN0aXZlKG51bGxiKSlcXG4tXFx0XFx0bnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKG51bGxiLVxcdTAwM2VkZXYsIHRydWUpO1xcbitcXHRcXHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UoZGV2LCB0cnVlKTtcXG4gXFx0a2ZyZWUobnVsbGIpO1xcbiBcXHRkZXYtXFx1MDAzZW51bGxiID0gTlVMTDtcXG4gfVxcbkBAIC0yMDgxLDE0ICsyMDgwLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxcbiB7XFxuIFxcdHN0cnVjdCBudWxsYiAqbnVsbGIgPSBOVUxMLCAqbmI7XFxuIFxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4rXFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZsb2NrKTtcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShuYiwgXFx1MDAyNm51bGxiX2xpc3QsIGxpc3QpIHtcXG4gXFx0XFx0aWYgKHN0cmNtcChuYi1cXHUwMDNlZGlza19uYW1lLCBuYW1lKSA9PSAwKSB7XFxuIFxcdFxcdFxcdG51bGxiID0gbmI7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG4gXFxuIFxcdHJldHVybiBudWxsYjtcXG4gfVxcbkBAIC0yMTAyLDkgKzIxMDAsOSBAQCBzdGF0aWMgaW50IG51bGxfY3JlYXRlX2Rldih2b2lkKVxcbiBcXHRpZiAoIWRldilcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuK1xcdHNjb3BlZF9ndWFyZChtdXRleCwgXFx1MDAyNmxvY2spIHtcXG4rXFx0XFx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XFxuK1xcdH1cXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRudWxsX2ZyZWVfZGV2KGRldik7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuQEAgLTIxNjIsMTcgKzIxNjAsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4gXFx0Y29uZmlnX2dyb3VwX2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XFxuIFxcbi1cXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXFx1MDAyNm51bGxiX3N1YnN5cyk7XFxuLVxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcbi1cXHRtdXRleF9pbml0KFxcdTAwMjZsb2NrKTtcXG4tXFxuIFxcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXFxcIm51bGxiXFxcIik7XFxuLVxcdGlmIChudWxsX21ham9yIFxcdTAwM2MgMCkge1xcbi1cXHRcXHRyZXQgPSBudWxsX21ham9yO1xcbi1cXHRcXHRnb3RvIGVycl9jb25mO1xcbi1cXHR9XFxuK1xcdGlmIChudWxsX21ham9yIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIG51bGxfbWFqb3I7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfZGV2aWNlczsgaSsrKSB7XFxuIFxcdFxcdHJldCA9IG51bGxfY3JlYXRlX2RldigpO1xcbkBAIC0yMTgwLDYgKzIxNzAsMTAgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXFxuIFxcdFxcdFxcdGdvdG8gZXJyX2RldjtcXG4gXFx0fVxcbiBcXG4rXFx0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFxcdTAwMjZudWxsYl9zdWJzeXMpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIGVycl9kZXY7XFxuK1xcbiBcXHRwcl9pbmZvKFxcXCJtb2R1bGUgbG9hZGVkXFxcXG5cXFwiKTtcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbkBAIC0yMTg5LDggKzIxODMsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4gXFx0XFx0bnVsbF9kZXN0cm95X2RldihudWxsYik7XFxuIFxcdH1cXG4gXFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXFxcIm51bGxiXFxcIik7XFxuLWVycl9jb25mOlxcbi1cXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcXHUwMDI2bnVsbGJfc3Vic3lzKTtcXG4rXFx0aWYgKHRhZ19zZXQub3BzKVxcbitcXHRcXHRibGtfbXFfZnJlZV90YWdfc2V0KFxcdTAwMjZ0YWdfc2V0KTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5AQCAtMjIwMCwxNCArMjE5NCwxNCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXFxuIFxcbiBcXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcXHUwMDI2bnVsbGJfc3Vic3lzKTtcXG4gXFxuLVxcdHVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsIFxcXCJudWxsYlxcXCIpO1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuLVxcdHdoaWxlICghbGlzdF9lbXB0eShcXHUwMDI2bnVsbGJfbGlzdCkpIHtcXG4tXFx0XFx0bnVsbGIgPSBsaXN0X2VudHJ5KG51bGxiX2xpc3QubmV4dCwgc3RydWN0IG51bGxiLCBsaXN0KTtcXG4tXFx0XFx0bnVsbF9kZXN0cm95X2RldihudWxsYik7XFxuK1xcdHNjb3BlZF9ndWFyZChtdXRleCwgXFx1MDAyNmxvY2spIHtcXG4rXFx0XFx0d2hpbGUgKCFsaXN0X2VtcHR5KFxcdTAwMjZudWxsYl9saXN0KSkge1xcbitcXHRcXHRcXHRudWxsYiA9IGxpc3RfZW50cnkobnVsbGJfbGlzdC5uZXh0LCBzdHJ1Y3QgbnVsbGIsIGxpc3QpO1xcbitcXHRcXHRcXHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuK1xcbitcXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcXFwibnVsbGJcXFwiKTtcXG4gXFxuIFxcdGlmICh0YWdfc2V0Lm9wcylcXG4gXFx0XFx0YmxrX21xX2ZyZWVfdGFnX3NldChcXHUwMDI2dGFnX3NldCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDEyOjI0OjE1LjgyODg5MDczM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU1NDIxNzcxNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTlVMTF9CTEtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9wb2xsX3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZVwiLFxuICAgIFwibnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZVwiLFxuICAgIFwibnVsbGJfZ3JvdXBfZHJvcF9pdGVtXCIsXG4gICAgXCJudWxsX2RlbF9kZXZcIixcbiAgICBcIm51bGxfZmluZF9kZXZfYnlfbmFtZVwiLFxuICAgIFwibnVsbF9jcmVhdGVfZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG51bGxfYmxrIGRyaXZlciwgZml4aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIGFkanVzdGluZyBsb2NraW5nIHdpdGggYGd1YXJkKG11dGV4KWAsIGFuZCBjaGFuZ2luZyB0aGUgaW5pdGlhbGl6YXRpb24gb3JkZXIgYW5kIGRldmljZSBkZWxldGlvbiBsb2dpYy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBhIHNvZnR3YXJlIGJsb2NrIGRldmljZSB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZTM5NzhmNmVjYzk2MzRjZTczNTBlOGJiNTIzMDVmMjEzNThjN2IyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMTI6MjQ6MTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uMWMyMGQ3NzNkZDBjOGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHtcbiAjZGVmaW5lIE5VTExCX1BBR0VfRlJFRSAoTUFQX1NaIC0gMilcbiBcbiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpO1xuLXN0YXRpYyBzdHJ1Y3QgbXV0ZXggbG9jaztcbitzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xuIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjtcbiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTtcbiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XG5AQCAtMzQ1LDYgKzM0NSw3IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLFxuIHN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG4gbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVx0XFxcbiB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdGd1YXJkKG11dGV4KShcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coXHRcdFx0XHRcXFxuIFx0XHRcdFx0dG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVx1MDAzZU5BTUUsIHBhZ2UpO1x0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbkBAIC0zNjAsNiArMzYxLDcgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG4gXHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZShcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxuIFx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XFxcbitcdGd1YXJkKG11dGV4KShcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKGFwcGx5X2ZuKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1x0XHRcdFx0XFxcbiBcdGVsc2UgaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSBcdFxcXG5AQCAtMzgyLDYgKzM4NCwxNSBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0aWYgKCFkZXYtXHUwMDNlbnVsbGIpXG4gXHRcdHJldHVybiAwO1xuIFxuK1x0LypcbitcdCAqIEEgc2hhcmVkIHRhZ19zZXQgaXMgbWFwcGVkIHZpYSB0aGUgbW9kdWxlLXdpZGUgcXVldWUgY291bnRzLCBzbyBhXG4rXHQgKiBwZXItZGV2aWNlIHJlc2l6ZSBpcyBtZWFuaW5nbGVzcy4gT24gc2hyaW5rIGl0IHdvdWxkIGFsc28gbGVhdmVcbitcdCAqIG1xX21hcFtdIHBvaW50aW5nIGF0IE5VTExlZCBoY3R4IHNsb3RzLCBjYXVzaW5nIGEgTlVMTCBkZXJlZiBpblxuK1x0ICogYmxrX21xX21hcF9zd3F1ZXVlKCkuIFJlamVjdCBpdC5cbitcdCAqL1xuK1x0aWYgKGRldi1cdTAwM2VzaGFyZWRfdGFncylcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHQvKlxuIFx0ICogTWFrZSBzdXJlIGF0IGxlYXN0IG9uZSBzdWJtaXQgcXVldWUgZXhpc3RzLlxuIFx0ICovXG5AQCAtNDIxLDI1ICs0MzIsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcylcbiB7XG4tXHRpbnQgcmV0O1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXHUwMDNlcG9sbF9xdWV1ZXMpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuLVxuLVx0cmV0dXJuIHJldDtcbitcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbiB9XG4gXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcbkBAIC00NzgsNiArNDc3LDcgQEAgTlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xuIFxuIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbiB7XG4rXHRndWFyZChtdXRleCkoXHUwMDI2bG9jayk7XG4gXHRyZXR1cm4gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2Vwb3dlciwgcGFnZSk7XG4gfVxuIFxuQEAgLTQ5MywxNSArNDkzLDE1IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4gXHRcdHJldHVybiByZXQ7XG4gXG4gXHRyZXQgPSBjb3VudDtcbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4rXHRndWFyZChtdXRleCkoXHUwMDI2bG9jayk7XG4gXHRpZiAoIWRldi1cdTAwM2Vwb3dlciBcdTAwMjZcdTAwMjYgbmV3cCkge1xuIFx0XHRpZiAodGVzdF9hbmRfc2V0X2JpdChOVUxMQl9ERVZfRkxfVVAsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpXG4tXHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0cmV0dXJuIHJldDtcbiBcbiBcdFx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XG4gXHRcdGlmIChyZXQpIHtcbiBcdFx0XHRjbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuLVx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdHJldHVybiByZXQ7XG4gXHRcdH1cbiBcbiBcdFx0c2V0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbkBAIC01MTUsOCArNTE1LDYgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbiBcdFx0Y2xlYXJfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIFxuLW91dDpcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTU4MCw2ICs1NzgsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4ge1xuIFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xuIFxuK1x0Z3VhcmQobXV0ZXgpKFx1MDAyNmxvY2spO1xuIFx0cmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX1JFQURPTkxZKTtcbiB9XG4gQ09ORklHRlNfQVRUUl9XTyhudWxsYl9kZXZpY2VfLCB6b25lX3JlYWRvbmx5KTtcbkBAIC01ODksNiArNTg4LDcgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4ge1xuIFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xuIFxuK1x0Z3VhcmQobXV0ZXgpKFx1MDAyNmxvY2spO1xuIFx0cmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX09GRkxJTkUpO1xuIH1cbiBDT05GSUdGU19BVFRSX1dPKG51bGxiX2RldmljZV8sIHpvbmVfb2ZmbGluZSk7XG5AQCAtNzA3LDEwICs3MDcsOSBAQCBudWxsYl9ncm91cF9kcm9wX2l0ZW0oc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsIHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcbiBcdHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiA9IHRvX251bGxiX2RldmljZShpdGVtKTtcbiBcbiBcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4rXHRcdGd1YXJkKG11dGV4KShcdTAwMjZsb2NrKTtcbiBcdFx0ZGV2LVx1MDAzZXBvd2VyID0gZmFsc2U7XG4gXHRcdG51bGxfZGVsX2RldihkZXYtXHUwMDNlbnVsbGIpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4gXHR9XG4gXHRudWxsYl9kZWxfZmF1bHRfY29uZmlnKGRldik7XG4gXHRjb25maWdfaXRlbV9wdXQoaXRlbSk7XG5AQCAtODM2LDcgKzgzNSw2IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuIFx0aWYgKCFkZXYpXG4gXHRcdHJldHVybjtcbiBcbi1cdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGJhZGJsb2Nrc19leGl0KFx1MDAyNmRldi1cdTAwM2ViYWRibG9ja3MpO1xuIFx0a2ZyZWUoZGV2KTtcbiB9XG5AQCAtMTc3MCwxOCArMTc2OCwxOSBAQCBzdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcbiBcbiBcdGRlbF9nZW5kaXNrKG51bGxiLVx1MDAzZWRpc2spO1xuIFxuLVx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VmbGFncykpIHtcbitcdGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdGhydGltZXJfY2FuY2VsKFx1MDAyNm51bGxiLVx1MDAzZWJ3X3RpbWVyKTtcbiBcdFx0YXRvbWljX2xvbmdfc2V0KFx1MDAyNm51bGxiLVx1MDAzZWN1cl9ieXRlcywgTE9OR19NQVgpO1xuIFx0XHRibGtfbXFfc3RhcnRfc3RvcHBlZF9od19xdWV1ZXMobnVsbGItXHUwMDNlcSwgdHJ1ZSk7XG4gXHR9XG4gXG4gXHRwdXRfZGlzayhudWxsYi1cdTAwM2VkaXNrKTtcbitcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGlmIChudWxsYi1cdTAwM2V0YWdfc2V0ID09IFx1MDAyNm51bGxiLVx1MDAzZV9fdGFnX3NldClcbiBcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi1cdTAwM2V0YWdfc2V0KTtcbiBcdGtmcmVlKG51bGxiLVx1MDAzZXF1ZXVlcyk7XG4gXHRpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKVxuLVx0XHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UobnVsbGItXHUwMDNlZGV2LCB0cnVlKTtcbitcdFx0bnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKGRldiwgdHJ1ZSk7XG4gXHRrZnJlZShudWxsYik7XG4gXHRkZXYtXHUwMDNlbnVsbGIgPSBOVUxMO1xuIH1cbkBAIC0yMDgxLDE0ICsyMDgwLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxuIHtcbiBcdHN0cnVjdCBudWxsYiAqbnVsbGIgPSBOVUxMLCAqbmI7XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuK1x0Z3VhcmQobXV0ZXgpKFx1MDAyNmxvY2spO1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeShuYiwgXHUwMDI2bnVsbGJfbGlzdCwgbGlzdCkge1xuIFx0XHRpZiAoc3RyY21wKG5iLVx1MDAzZWRpc2tfbmFtZSwgbmFtZSkgPT0gMCkge1xuIFx0XHRcdG51bGxiID0gbmI7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdH1cbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcbiBcdHJldHVybiBudWxsYjtcbiB9XG5AQCAtMjEwMiw5ICsyMTAwLDkgQEAgc3RhdGljIGludCBudWxsX2NyZWF0ZV9kZXYodm9pZClcbiBcdGlmICghZGV2KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbitcdHNjb3BlZF9ndWFyZChtdXRleCwgXHUwMDI2bG9jaykge1xuK1x0XHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcbitcdH1cbiBcdGlmIChyZXQpIHtcbiBcdFx0bnVsbF9mcmVlX2RldihkZXYpO1xuIFx0XHRyZXR1cm4gcmV0O1xuQEAgLTIxNjIsMTcgKzIxNjAsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdGNvbmZpZ19ncm91cF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XG4gXHRtdXRleF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XG4gXG4tXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRtdXRleF9pbml0KFx1MDAyNmxvY2spO1xuLVxuIFx0bnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCBcIm51bGxiXCIpO1xuLVx0aWYgKG51bGxfbWFqb3IgXHUwMDNjIDApIHtcbi1cdFx0cmV0ID0gbnVsbF9tYWpvcjtcbi1cdFx0Z290byBlcnJfY29uZjtcbi1cdH1cbitcdGlmIChudWxsX21ham9yIFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gbnVsbF9tYWpvcjtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2RldmljZXM7IGkrKykge1xuIFx0XHRyZXQgPSBudWxsX2NyZWF0ZV9kZXYoKTtcbkBAIC0yMTgwLDYgKzIxNzAsMTAgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRcdFx0Z290byBlcnJfZGV2O1xuIFx0fVxuIFxuK1x0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4rXHRpZiAocmV0KVxuK1x0XHRnb3RvIGVycl9kZXY7XG4rXG4gXHRwcl9pbmZvKFwibW9kdWxlIGxvYWRlZFxcblwiKTtcbiBcdHJldHVybiAwO1xuIFxuQEAgLTIxODksOCArMjE4Myw4IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0XHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcbiBcdH1cbiBcdHVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsIFwibnVsbGJcIik7XG4tZXJyX2NvbmY6XG4tXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuK1x0aWYgKHRhZ19zZXQub3BzKVxuK1x0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtMjIwMCwxNCArMjE5NCwxNCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXG4gXG4gXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuIFxuLVx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCJudWxsYlwiKTtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHR3aGlsZSAoIWxpc3RfZW1wdHkoXHUwMDI2bnVsbGJfbGlzdCkpIHtcbi1cdFx0bnVsbGIgPSBsaXN0X2VudHJ5KG51bGxiX2xpc3QubmV4dCwgc3RydWN0IG51bGxiLCBsaXN0KTtcbi1cdFx0bnVsbF9kZXN0cm95X2RldihudWxsYik7XG4rXHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNmxvY2spIHtcbitcdFx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNm51bGxiX2xpc3QpKSB7XG4rXHRcdFx0bnVsbGIgPSBsaXN0X2VudHJ5KG51bGxiX2xpc3QubmV4dCwgc3RydWN0IG51bGxiLCBsaXN0KTtcbitcdFx0XHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcbitcdFx0fVxuIFx0fVxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuK1xuK1x0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCJudWxsYlwiKTtcbiBcbiBcdGlmICh0YWdfc2V0Lm9wcylcbiBcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChcdTAwMjZ0YWdfc2V0KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDEyOjI0OjE1LjgyODg5MjI4M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MDcxMzkzOTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE51bGwgQmxvY2sgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBJbW1lZGlhdGVseSwgSSBzZWUgaXQncyByZXBsYWNpbmcgYG11dGV4X2xvY2tgL2BtdXRleF91bmxvY2tgIHdpdGggYGd1YXJkKG11dGV4KShcdTAwMjZsb2NrKWAgYW5kIGBzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNmxvY2spYC4gVGhhdCdzIGEgc2lnbmlmaWNhbnQgc2hpZnQgaW4gbG9ja2luZyBzdHJhdGVneSwgaGludGluZyBhdCBhIHBvdGVudGlhbCBjaGFuZ2UgaW4gaG93IGNvbmN1cnJlbmN5IGlzIGhhbmRsZWQsIG9yIGFuIGF0dGVtcHQgdG8gc2ltcGxpZnkgbG9jayBtYW5hZ2VtZW50LCB3aGljaCBjb3VsZCBiZSBhIGdvb2QgdGhpbmcuIFRoZSBhZGRpdGlvbiBvZiB0aGF0IGNoZWNrIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCDigJMgYGlmIChkZXYtXHUwMDNlc2hhcmVkX3RhZ3MpIHJldHVybiAtRUlOVkFMO2Ag4oCTIGlzIGludGVyZXN0aW5nLiBJdCdzIGxpa2VseSByZWxhdGVkIHRvIHNvbWUgbmV3IGNvbnN0cmFpbnQgb3IgcmVzdHJpY3Rpb24gb24gaGFyZHdhcmUgcXVldWUgY29uZmlndXJhdGlvbnMuIEFuZCB0aGUgcmVhcnJhbmdlbWVudCBvZiBgbnVsbF9mcmVlX3pvbmVkX2RldmAsIG1vdmluZyBpdCBmcm9tIGBudWxsX2ZyZWVfZGV2YCB0byBgbnVsbF9kZWxfZGV2YCwgdGhhdCdzIGRlZmluaXRlbHkgYSBtZW1vcnkgbWFuYWdlbWVudCB0d2VhayBJIG5lZWQgdG8gbG9vayBjbG9zZXIgYXQuXG5cbk5vdywgaXMgdGhpcyBwYXRjaCB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBJdOKAmXMgdGhlIG51bGwgYmxvY2sgZGV2aWNlIGRyaXZlciwgd2hpY2gsIGFzIEkga25vdywgaXMgYSBzdGFwbGUgaW4gYSBsb3Qgb2YgdGVzdGluZyBlbnZpcm9ubWVudHMgYW5kIHZpcnR1YWxpemF0aW9uIHNldHVwcy4gVG90YWxseSByZWFjaGFibGUuIEdpdmVuIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBuZXcgbG9ja2luZyBtZWNoYW5pc21zLCB0aGF0IGVycm9yIGhhbmRsaW5nIGNoZWNrLCBhbmQgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGFsdGVyYXRpb25zLCB0aGVyZSdzIGEgc3Ryb25nIGNoYW5jZSB0aGlzIGNvdWxkIGludHJvZHVjZSBjb25jdXJyZW5jeSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgc2NlbmFyaW9zLCBvciBpdCBtaWdodCBiZSBmaXhpbmcgZXhpc3Rpbmcgb25lcy4gRnV6emluZyB0aGlzIGlzIGEgbm8tYnJhaW5lcjsgdGhlIHBvdGVudGlhbCBmb3IgdW5jb3ZlcmluZyBzdWJ0bGUgaXNzdWVzIGlzIGhpZ2guXG5cblRpbWUgdG8gZ3JhYiB0aGUgY29uZmlnIG9wdGlvbnMuIExldCdzIHN0YXJ0IHdpdGggYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvYCBhbmQgZGlnIGludG8gS2NvbmZpZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk4OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDEyOjI0OjMxLjkwMDI4OTEwMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTk5ODU4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9OVUxMX0JMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6Njpjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cXHRib29sIFxcXCJTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTI6MjQ6MzEuOTYwMjkzNzc3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODAwODEwNjU1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiB0aGUgQ29yZSBDaGFuZ2VzIGluIHRoZSBgQkxLX0RFVl9OVUxMX0JMS2AgQ29uZmlnKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gYEJMS19ERVZfTlVMTF9CTEtgLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHplcm8gaW4gb24gdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gSGVyZSdzIHdoYXQgSSd2ZSBnb3Q6XG5cbiogICBgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZWAgKG1hY3JvLWdlbmVyYXRlZCwgbGlrZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYClcbiogICBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgXG4qICAgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWBcbiogICBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgXG4qICAgYG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmVgXG4qICAgYG51bGxiX2dyb3VwX2Ryb3BfaXRlbWBcbiogICBgbnVsbF9mcmVlX2RldmBcbiogICBgbnVsbF9kZWxfZGV2YFxuKiAgIGBudWxsX2ZpbmRfZGV2X2J5X25hbWVgXG4qICAgYG51bGxfY3JlYXRlX2RldmBcbiogICBgbnVsbF9pbml0YFxuKiAgIGBudWxsX2V4aXRgXG4qICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgXG4qICAgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgXG4qICAgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYFxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCB3aGljaCBvZiB0aGVzZSBhcmUgdGhlIG1vc3QgaW50ZXJlc3RpbmcgdG8gYW5hbHl6ZSwgZXNwZWNpYWxseSBmb3IgZnV6emluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggYXJlIGRpcmVjdGx5IHJlYWNoYWJsZSwgb3IgcG90ZW50aWFsIGVudHJ5IHBvaW50cy4gVGhlIGNvbmZpZ2ZzIGZ1bmN0aW9ucyBjb21lIHRvIG1pbmQuIEkga25vdyB0aGV5J3JlIHRlY2huaWNhbGx5IHN0YXRpYywgYnV0IHRoZXkncmUgcmVnaXN0ZXJlZCBhcyBjYWxsYmFja3MsIGFuZCBJJ20gcHJldHR5IHN1cmUgc3l6a2FsbGVyIGNhbiByZWFjaCB0aGVtLiBCdXQsIG1heWJlLCBJIHNob3VsZCBmb2N1cyBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRoZW1zZWx2ZXMuXG5cblNvLCBsZXQncyBmaWx0ZXIgb3V0IHRoZSBpbml0L2V4aXQgZnVuY3Rpb25zIGFuZCBzZWUgd2hhdCB3ZSBoYXZlLiBBbHNvLCBJIG5lZWQgdG8ga25vdyB3aGljaCBvZiB0aGVzZSBhcmUgc3RhdGljLCBhbmQgd2hldGhlciB0aGV5J3JlIGlubGluZWQuXG5cblRoZSBmdW5jdGlvbnMgbGVmdCBhcmU6XG5cbiogICBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYFxuKiAgIGBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZWBcbiogICBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWBcbiogICBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYFxuKiAgIGBudWxsX2ZyZWVfZGV2YFxuKiAgIGBudWxsX2RlbF9kZXZgXG4qICAgYG51bGxfZmluZF9kZXZfYnlfbmFtZWBcbiogICBgbnVsbF9jcmVhdGVfZGV2YFxuKiAgIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYFxuKiAgIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYFxuKiAgIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2BcblxuTGV0J3MgY2hlY2sgaWYgdGhleSdyZSBzdGF0aWMgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB3aGV0aGVyIHRoZXkgbWlnaHQgYmUgaW5saW5lZC4gSSBuZWVkIHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucywgYXMgdGhlIGluc3RydWN0aW9ucyBzdGF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc5NSwiT3V0cHV0VG9rZW5zIjoxMzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTI6MjQ6MzkuOTY4NDAyNjU3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MTI1MTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm51bGxiX2RldmljZV9wb3dlcl9zdG9yZXxudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZXxudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlfG51bGxiX2dyb3VwX2Ryb3BfaXRlbXxudWxsX2ZyZWVfZGV2fG51bGxfZGVsX2RldnxudWxsX2ZpbmRfZGV2X2J5X25hbWV8bnVsbF9jcmVhdGVfZGV2fG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXN8bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc3xudWxsYl9hcHBseV9wb2xsX3F1ZXVlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yNzM9c3RhdGljIHN0cnVjdCBudWxsYl9kZXZpY2UgKm51bGxfYWxsb2NfZGV2KHZvaWQpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI3NDpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc1OnN0YXRpYyB2b2lkIG51bGxfZGVsX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yNzYtc3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzc6c3RhdGljIHN0cnVjdCBudWxsYiAqbnVsbF9maW5kX2Rldl9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI3ODpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2Uoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LCBib29sIGlzX2NhY2hlKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yNzktXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0zNzQ9Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNzUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mzc2OnN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzc3LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzEtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDMyOnN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDMzLVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDM0LXtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0MzU6XFx0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXFx1MDAzZXBvbGxfcXVldWVzKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzYtfVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQzNy1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Mzg6c3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDM5LVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcylcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NDAte1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0MTpcXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ0Mi19XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00NDU9TlVMTEJfREVWSUNFX0FUVFIoY29tcGxldGlvbl9uc2VjLCB1bG9uZywgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ2Ok5VTExCX0RFVklDRV9BVFRSKHN1Ym1pdF9xdWV1ZXMsIHVpbnQsIG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0NzpOVUxMQl9ERVZJQ0VfQVRUUihwb2xsX3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ0OC1OVUxMQl9ERVZJQ0VfQVRUUihob21lX25vZGUsIHVpbnQsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDc4PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4My1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODQ6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODUtXFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MTItXFx0XFx0XFx0ZGV2LVxcdTAwM2Vwb3dlciA9IG5ld3A7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTEzOlxcdFxcdFxcdG51bGxfZGVsX2RldihkZXYtXFx1MDAzZW51bGxiKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MTQtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTc0PUNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgYmFkYmxvY2tzKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01NzUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTc2OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01NzctXFx0XFx0XFx0XFx0XFx0XFx0Y29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTg0PUNPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9yZWFkb25seSk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTg1LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjU4NjpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODctXFx0XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTYzNz1zdGF0aWMgdm9pZCBudWxsYl9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02NDAtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NjQxOlxcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIGZhbHNlKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2NDI6XFx0bnVsbF9mcmVlX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY0My19XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz02ODc9Y29uZmlnX2dyb3VwICpudWxsYl9ncm91cF9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjkwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY5MTpcXHRpZiAobnVsbF9maW5kX2Rldl9ieV9uYW1lKG5hbWUpKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY5Mi1cXHRcXHRyZXR1cm4gRVJSX1BUUigtRUVYSVNUKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTcwND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjcwNTpudWxsYl9ncm91cF9kcm9wX2l0ZW0oc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsIHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MDYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzExLVxcdFxcdGRldi1cXHUwMDNlcG93ZXIgPSBmYWxzZTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3MTI6XFx0XFx0bnVsbF9kZWxfZGV2KGRldi1cXHUwMDNlbnVsbGIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTcxMy1cXHR9XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03NTE9c3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdmc19ncm91cF9vcGVyYXRpb25zIG51bGxiX2dyb3VwX29wcyA9IHtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03NTItXFx0Lm1ha2VfZ3JvdXBcXHQ9IG51bGxiX2dyb3VwX21ha2VfZ3JvdXAsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzUzOlxcdC5kcm9wX2l0ZW1cXHQ9IG51bGxiX2dyb3VwX2Ryb3BfaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03NTQtfTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc3Nj1zdGF0aWMgc3RydWN0IG51bGxiX2RldmljZSAqbnVsbF9hbGxvY19kZXYodm9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTgzMi1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4MzM6c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODM0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTkyND1zdGF0aWMgc3RydWN0IG51bGxiX3BhZ2UgKm51bGxfcmFkaXhfdHJlZV9pbnNlcnQoc3RydWN0IG51bGxiICpudWxsYiwgdTY0IGlkeCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk0MC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo5NDE6c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwgYm9vbCBpc19jYWNoZSlcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05NDIte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTc0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGJsa19tcV9vcHMgbnVsbF9tcV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzU1LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE3NTY6c3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTc1Ny17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzgyLVxcdGlmIChudWxsX2NhY2hlX2FjdGl2ZShudWxsYikpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTc4MzpcXHRcXHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UoZGV2LCB0cnVlKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzg0LVxcdGtmcmVlKG51bGxiKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE5NTQ9c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA3OC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDc5OnN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwODAte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA5My1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDk0OnN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA5NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTA2LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTA3OlxcdFxcdG51bGxfZnJlZV9kZXYoZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTA4LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMTE0PXN0YXRpYyB2b2lkIG51bGxfZGVzdHJveV9kZXYoc3RydWN0IG51bGxiICpudWxsYilcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMTctXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjExODpcXHRudWxsX2RlbF9kZXYobnVsbGIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxMTk6XFx0bnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKGRldiwgZmFsc2UpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxMjA6XFx0bnVsbF9mcmVlX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMjEtfVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjEyMz1zdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxNjctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX2RldmljZXM7IGkrKykge1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxNjg6XFx0XFx0cmV0ID0gbnVsbF9jcmVhdGVfZGV2KCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjE2OS1cXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMjoyNDo0MC4wMzQ1MzM1NDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTEzODAwNjMyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgbnVsbF9ibGsgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIHRhcmdldGVkIGF0IGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AsIHdoaWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQncyBhIHNvZnR3YXJlIGJsb2NrIGRldmljZS4gVGhhdCBtYWtlcyBpdCByZWFkaWx5IGFjY2Vzc2libGUgaW4gYSBRRU1VIGVudmlyb25tZW50LCB3aGljaCBpcyBnb29kIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLlxuXG5GaXJzdCB0aGluZ3MgZmlyc3QsIGl0IGxvb2tzIGxpa2UgdGhleSdyZSBiZWVmaW5nIHVwIHRoZSBsb2NraW5nIG1lY2hhbmlzbS4gVGhlIGNoYW5nZSBmcm9tIGBzdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7YCB0byBgc3RhdGljIERFRklORV9NVVRFWChsb2NrKTtgIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIHVzZSBvZiBgZ3VhcmQobXV0ZXgpKFx1MDAyNmxvY2spO2AgYW5kIGBzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNmxvY2spYCB0aHJvdWdob3V0IHRoZSBjb2RlIGJhc2UgaW4gZnVuY3Rpb25zIGxpa2UgYG51bGxiX2RldmljZV8jI05BTUUjI19zaG93YCwgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAsIGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AsIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLCBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgLCBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWAsIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gLCBgbnVsbF9maW5kX2Rldl9ieV9uYW1lYCwgYG51bGxfY3JlYXRlX2RldmAsIGFuZCBgbnVsbF9leGl0YCBzdWdnZXN0cyB0aGV5J3JlIGFpbWluZyBmb3IgbW9yZSByb2J1c3QgcHJvdGVjdGlvbiBhcm91bmQgY3JpdGljYWwgc2VjdGlvbnMuIFRoaXMgY291bGQgYmUgZHVlIHRvIHJhY2UgY29uZGl0aW9ucyBmb3VuZCBpbiBwcmV2aW91cyBkZXZlbG9wbWVudCBlZmZvcnRzLCBvciBzaW1wbHkgYXMgYW4gZWZmb3J0IHRvIGVuc3VyZSB0aGlzIGRldmljZSBpcyBzYWZlIGZvciBoaWdoLWNvbmN1cnJlbmN5IHVzYWdlcy5cblxuVGhlIGFkZGl0aW9uIG9mIHRoZSBjaGVjayBpbiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2A6XG5gYGBjXG5cdGlmIChkZXYtXHUwMDNlc2hhcmVkX3RhZ3MpXG5cdFx0cmV0dXJuIC1FSU5WQUw7XG5gYGBcbmltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgZXllLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgdHJ5aW5nIHRvIHByZXZlbnQgc29tZSBraW5kIG9mIGludmFsaWQgc3RhdGUgcmVsYXRlZCB0byBzaGFyZWQgdGFncyB3aGljaCBjb3VsZCBiZSBwcm9ibGVtYXRpYy4gQ291bGQgYmUgYSBwb3RlbnRpYWwgTlVMTCBkZXJlZmVyZW5jZSwgb3IgcG9zc2libHkgYSByZXNvdXJjZSBtYW5hZ2VtZW50IGlzc3VlLlxuXG5UaGUgcmVtb3ZhbCBvZiBgbXV0ZXhfbG9jayhcdTAwMjZsb2NrKWAgYW5kIGBtdXRleF91bmxvY2soXHUwMDI2bG9jaylgIGZyb20gYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgIGFuZCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgIGlzIGN1cmlvdXMuIFdoZXJlIGhhcyB0aGF0IGxvZ2ljIG1pZ3JhdGVkIHRvPyBQZXJoYXBzIHRoZSBgZ3VhcmRgIGFuZCBgc2NvcGVkX2d1YXJkYCBtYWNyb3MgYXJlIG5vdyBoYW5kbGluZyB0aGUgbG9ja2luZyBhdCBhIGhpZ2hlciBsZXZlbCwgd2hpY2ggY291bGQgc2ltcGxpZnkgdGhlIGNvZGUgYW5kIHJlZHVjZSB0aGUgcmlzayBvZiBtaXNzZWQgdW5sb2Nrcy5cblxuVGhlbiB0aGVyZSdzIHRoZSBtb3ZlIG9mIGBudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7YCBmcm9tIGBudWxsX2ZyZWVfZGV2YCB0byBgbnVsbF9kZWxfZGV2YC4gVGhhdCdzIGEgZGVmaW5pdGUgc3RydWN0dXJhbCBjaGFuZ2UuIFRoZSBzdWJzZXF1ZW50IGZpeCBpbiBgbnVsbF9kZWxfZGV2YCB3aGVyZSB0aGV5IGNvcnJlY3QgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnkgY2hhbmdpbmcgYG51bGxiLVx1MDAzZWRldmAgdG8gYGRldi1cdTAwM2VmbGFnc2AgYW5kIGBkZXZgIGNvbmZpcm1zIHRoZXJlIHdhcyBhIHJlYWwgaXNzdWUgaGVyZSwgdXNpbmcgdGhlIGRldmljZSBhZnRlciBpdCB3YXMgcG90ZW50aWFsbHkgZnJlZWQuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYW5kIHNvbWV0aGluZyB0aGF0IGRlbWFuZHMgY2xvc2VyIGluc3BlY3Rpb24uXG5cbkZpbmFsbHksIHRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBjaGFuZ2VzIGluIGBudWxsX2luaXRgLCB3aXRoIGByZWdpc3Rlcl9ibGtkZXZgIG5vdyBiZWZvcmUgYG51bGxfY3JlYXRlX2RldmAgYW5kIGBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW1gIGFmdGVyIGBudWxsX2NyZWF0ZV9kZXZgLCBwcm9iYWJseSBoYXMgdG8gZG8gd2l0aCBkZXBlbmRlbmNpZXMgYW5kIGRldmljZSByZWdpc3RyYXRpb24uIFRoaXMgY291bGQgYmUgdG8gZG8gd2l0aCByZXNvbHZpbmcgc29tZSBkZXBlbmRlbmNpZXMgaW4gdGhlIG9yZGVyIG9mIGluaXRpYWxpemF0aW9uLlxuXG5Pa2F5LCBpcyB0aGlzIGZ1enphYmxlPyBBYnNvbHV0ZWx5LiBUaGlzIGRyaXZlciBpcyByZWFjaGFibGUsIHRoZSBjaGFuZ2VzIGluY2x1ZGUgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcywgYW5kIGxvY2tpbmcgbW9kaWZpY2F0aW9ucyDigJMgYWxsIG9mIHdoaWNoIGFyZSBmZXJ0aWxlIGdyb3VuZCBmb3IgZnV6emluZy4gSSBjYW4gaW1hZ2luZSBjcmVhdGluZyBkZXZpY2VzIGFuZCB3cml0aW5nIHRvIHN5c2ZzIGF0dHJpYnV0ZXMgdG8gdHJ5IHRvIHRyaWdnZXIgdGhlc2UgY2hhbmdlcyBpbiB0aGUgbG9ja2luZyBzZW1hbnRpY3MuXG5cblNvLCBsZXQncyBpZGVudGlmeSByZWxldmFudCBzeW1ib2xzOlxuXG4qICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgOiBUaGlzIGlzIGFuIGludGVyZXN0aW5nIG9uZSBiZWNhdXNlIGl0IGlzIHN0YXRpYywgYnV0IGlzIHVzZWQgYnkgdGhlIHN1Ym1pdC9wb2xsIGZ1bmN0aW9ucy5cbiogICBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2A6IFN0YXRpYywgYnV0IHVzZWQgYXMgYSBjYWxsYmFjaywgd2hpY2ggbWlnaHQgbWFrZSBpdCBhY2Nlc3NpYmxlLlxuKiAgIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2A6IFN0YXRpYywgc2ltaWxhciB0byB0aGUgYWJvdmUuXG4qICAgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWBcbiogICBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgXG4qICAgYG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmVgXG4qICAgYG51bGxiX2dyb3VwX2Ryb3BfaXRlbWBcbiogICBgbnVsbF9kZWxfZGV2YDogVGhlIHVzZS1hZnRlci1mcmVlIGZpeCBtYWtlcyB0aGlzIGNyaXRpY2FsLlxuKiAgIGBudWxsX2ZpbmRfZGV2X2J5X25hbWVgXG4qICAgYG51bGxfY3JlYXRlX2RldmBcblxuVGhlIGNvbmZpZyBpcyBgQkxLX0RFVl9OVUxMX0JMS2AuXG5cblRoZSBjb25maWdmcyBzdG9yZSBmdW5jdGlvbnMgbG9vayBwcm9taXNpbmcg4oCTIHRoZXkncmUgYWNjZXNzZWQgdGhyb3VnaCBzeXNmcywgd2hpY2ggc3l6a2FsbGVyIGNhbiBkZWZpbml0ZWx5IHRhcmdldC4gQWx0aG91Z2ggc3RhdGljLCB0aGV5IGFyZSBlbnRyeSBwb2ludHMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHRocm91Z2ggdGhlIGZpbGVzeXN0ZW0gaW50ZXJmYWNlLiBTbywgSSB3aWxsIGZvY3VzIG9uIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIHByb3ZpZGUgdGhlIHNldC1yZXN1bHRzOlxuXG4qICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgXG4qICAgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWBcbiogICBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgXG4qXG5cbiIsIklucHV0VG9rZW5zIjo4OTcwLCJPdXRwdXRUb2tlbnMiOjIyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTI6MjU6MTEuMTcyNTQ2Njg4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODExMjI1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3BvbGxfcXVldWVzXCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlXCIsXG4gICAgXCJudWxsYl9ncm91cF9kcm9wX2l0ZW1cIixcbiAgICBcIm51bGxfZGVsX2RldlwiLFxuICAgIFwibnVsbF9maW5kX2Rldl9ieV9uYW1lXCIsXG4gICAgXCJudWxsX2NyZWF0ZV9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyLCBmaXhpbmcgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgYWRqdXN0aW5nIGxvY2tpbmcgd2l0aCBgZ3VhcmQobXV0ZXgpYCwgYW5kIGNoYW5naW5nIHRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBhbmQgZGV2aWNlIGRlbGV0aW9uIGxvZ2ljLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGEgc29mdHdhcmUgYmxvY2sgZGV2aWNlIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3BvbGxfcXVldWVzXCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlXCIsXG4gICAgXCJudWxsYl9ncm91cF9kcm9wX2l0ZW1cIixcbiAgICBcIm51bGxfZGVsX2RldlwiLFxuICAgIFwibnVsbF9maW5kX2Rldl9ieV9uYW1lXCIsXG4gICAgXCJudWxsX2NyZWF0ZV9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyLCBmaXhpbmcgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgYWRqdXN0aW5nIGxvY2tpbmcgd2l0aCBgZ3VhcmQobXV0ZXgpYCwgYW5kIGNoYW5naW5nIHRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBhbmQgZGV2aWNlIGRlbGV0aW9uIGxvZ2ljLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGEgc29mdHdhcmUgYmxvY2sgZGV2aWNlIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8mphq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 12:00:55 +0000 UTC FinishedAt: 2026-07-26 12:25:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "03b0bcd2440b4ace0fb4bdf93e444db6454e7370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "03b0bcd2440b4ace0fb4bdf93e444db6454e7370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "3cbcd24c-2ce5-4928-a6b1-a894e00da13a" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "nullb_update_nr_hw_queues", "nullb_apply_submit_queues", "nullb_apply_poll_queues", "nullb_device_power_store", "nullb_device_zone_readonly_store", "nullb_device_zone_offline_store", "nullb_group_drop_item", "null_del_dev", "null_find_dev_by_name", "null_create_dev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDEyOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlJiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlJiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZ3JvdXBfZHJvcF9pdGVtJiMzNDssCiAgICAmIzM0O251bGxfZGVsX2RldiYjMzQ7LAogICAgJiMzNDtudWxsX2ZpbmRfZGV2X2J5X25hbWUmIzM0OywKICAgICYjMzQ7bnVsbF9jcmVhdGVfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBudWxsX2JsayBkcml2ZXIsIGZpeGluZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgLCBhZGp1c3RpbmcgbG9ja2luZyB3aXRoIGBndWFyZChtdXRleClgLCBhbmQgY2hhbmdpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9yZGVyIGFuZCBkZXZpY2UgZGVsZXRpb24gbG9naWMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gYSBzb2Z0d2FyZSBibG9jayBkZXZpY2UgdGhhdCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMjoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRlMzk3OGY2ZWNjOTYzNGNlNzM1MGU4YmI1MjMwNWYyMTM1OGM3YjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxMjoyNDoxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uMWMyMGQ3NzNkZDBjOGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC02Niw3ICYjNDM7NjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7XG4gI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpXG4gXG4gc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTtcbi1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7XG4mIzQzO3N0YXRpYyBERUZJTkVfTVVURVgobG9jayk7XG4gc3RhdGljIGludCBudWxsX21ham9yO1xuIHN0YXRpYyBERUZJTkVfSURBKG51bGxiX2luZGV4ZXMpO1xuIHN0YXRpYyBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDtcbkBAIC0zNDUsNiAmIzQzOzM0NSw3IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLFxuIHN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG4gbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVx0XFxcbiB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRndWFyZChtdXRleCkoXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdHJldHVybiBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KFx0XHRcdFx0XFxcbiBcdFx0XHRcdHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2VOQU1FLCBwYWdlKTtcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5AQCAtMzYwLDYgJiM0MzszNjEsNyBAQCBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFx0XFxcbiBcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlKFx1MDAyNm5ld192YWx1ZSwgcGFnZSwgY291bnQpO1xcXG4gXHRpZiAocmV0IFx1MDAzYyAwKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGd1YXJkKG11dGV4KShcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKGFwcGx5X2ZuKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1x0XHRcdFx0XFxcbiBcdGVsc2UgaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSBcdFxcXG5AQCAtMzgyLDYgJiM0MzszODQsMTUgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdGlmICghZGV2LVx1MDAzZW51bGxiKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEEgc2hhcmVkIHRhZ19zZXQgaXMgbWFwcGVkIHZpYSB0aGUgbW9kdWxlLXdpZGUgcXVldWUgY291bnRzLCBzbyBhXG4mIzQzO1x0ICogcGVyLWRldmljZSByZXNpemUgaXMgbWVhbmluZ2xlc3MuIE9uIHNocmluayBpdCB3b3VsZCBhbHNvIGxlYXZlXG4mIzQzO1x0ICogbXFfbWFwW10gcG9pbnRpbmcgYXQgTlVMTGVkIGhjdHggc2xvdHMsIGNhdXNpbmcgYSBOVUxMIGRlcmVmIGluXG4mIzQzO1x0ICogYmxrX21xX21hcF9zd3F1ZXVlKCkuIFJlamVjdCBpdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoZGV2LVx1MDAzZXNoYXJlZF90YWdzKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0LypcbiBcdCAqIE1ha2Ugc3VyZSBhdCBsZWFzdCBvbmUgc3VibWl0IHF1ZXVlIGV4aXN0cy5cbiBcdCAqL1xuQEAgLTQyMSwyNSAmIzQzOzQzMiwxMyBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzKVxuIHtcbi1cdGludCByZXQ7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4tXG4tXHRyZXR1cm4gcmV0O1xuJiM0MztcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbiB9XG4gXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4mIzQzO1x0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuIH1cbiBcbiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7XG5AQCAtNDc4LDYgJiM0Mzs0NzcsNyBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XG4gXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuIHtcbiYjNDM7XHRndWFyZChtdXRleCkoXHUwMDI2bG9jayk7XG4gXHRyZXR1cm4gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2Vwb3dlciwgcGFnZSk7XG4gfVxuIFxuQEAgLTQ5MywxNSAmIzQzOzQ5MywxNSBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuIFx0cmV0ID0gY291bnQ7XG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuJiM0MztcdGd1YXJkKG11dGV4KShcdTAwMjZsb2NrKTtcbiBcdGlmICghZGV2LVx1MDAzZXBvd2VyIFx1MDAyNlx1MDAyNiBuZXdwKSB7XG4gXHRcdGlmICh0ZXN0X2FuZF9zZXRfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSlcbi1cdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiBcbiBcdFx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XG4gXHRcdGlmIChyZXQpIHtcbiBcdFx0XHRjbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuLVx0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHR9XG4gXG4gXHRcdHNldF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG5AQCAtNTE1LDggJiM0Mzs1MTUsNiBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIFx0XHRjbGVhcl9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG4gXHR9XG4gXG4tb3V0OlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtNTgwLDYgJiM0Mzs1NzgsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4ge1xuIFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xuIFxuJiM0MztcdGd1YXJkKG11dGV4KShcdTAwMjZsb2NrKTtcbiBcdHJldHVybiB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9SRUFET05MWSk7XG4gfVxuIENPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9yZWFkb25seSk7XG5AQCAtNTg5LDYgJiM0Mzs1ODgsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbiB7XG4gXHRzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYgPSB0b19udWxsYl9kZXZpY2UoaXRlbSk7XG4gXG4mIzQzO1x0Z3VhcmQobXV0ZXgpKFx1MDAyNmxvY2spO1xuIFx0cmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX09GRkxJTkUpO1xuIH1cbiBDT05GSUdGU19BVFRSX1dPKG51bGxiX2RldmljZV8sIHpvbmVfb2ZmbGluZSk7XG5AQCAtNzA3LDEwICYjNDM7NzA3LDkgQEAgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXG4gXHRzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYgPSB0b19udWxsYl9kZXZpY2UoaXRlbSk7XG4gXG4gXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuJiM0MztcdFx0Z3VhcmQobXV0ZXgpKFx1MDAyNmxvY2spO1xuIFx0XHRkZXYtXHUwMDNlcG93ZXIgPSBmYWxzZTtcbiBcdFx0bnVsbF9kZWxfZGV2KGRldi1cdTAwM2VudWxsYik7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcdH1cbiBcdG51bGxiX2RlbF9mYXVsdF9jb25maWcoZGV2KTtcbiBcdGNvbmZpZ19pdGVtX3B1dChpdGVtKTtcbkBAIC04MzYsNyAmIzQzOzgzNSw2IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuIFx0aWYgKCFkZXYpXG4gXHRcdHJldHVybjtcbiBcbi1cdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGJhZGJsb2Nrc19leGl0KFx1MDAyNmRldi1cdTAwM2ViYWRibG9ja3MpO1xuIFx0a2ZyZWUoZGV2KTtcbiB9XG5AQCAtMTc3MCwxOCAmIzQzOzE3NjgsMTkgQEAgc3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXG4gXG4gXHRkZWxfZ2VuZGlzayhudWxsYi1cdTAwM2VkaXNrKTtcbiBcbi1cdGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCBcdTAwMjZudWxsYi1cdTAwM2VkZXYtXHUwMDNlZmxhZ3MpKSB7XG4mIzQzO1x0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpIHtcbiBcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2bnVsbGItXHUwMDNlYndfdGltZXIpO1xuIFx0XHRhdG9taWNfbG9uZ19zZXQoXHUwMDI2bnVsbGItXHUwMDNlY3VyX2J5dGVzLCBMT05HX01BWCk7XG4gXHRcdGJsa19tcV9zdGFydF9zdG9wcGVkX2h3X3F1ZXVlcyhudWxsYi1cdTAwM2VxLCB0cnVlKTtcbiBcdH1cbiBcbiBcdHB1dF9kaXNrKG51bGxiLVx1MDAzZWRpc2spO1xuJiM0MztcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGlmIChudWxsYi1cdTAwM2V0YWdfc2V0ID09IFx1MDAyNm51bGxiLVx1MDAzZV9fdGFnX3NldClcbiBcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi1cdTAwM2V0YWdfc2V0KTtcbiBcdGtmcmVlKG51bGxiLVx1MDAzZXF1ZXVlcyk7XG4gXHRpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKVxuLVx0XHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UobnVsbGItXHUwMDNlZGV2LCB0cnVlKTtcbiYjNDM7XHRcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIHRydWUpO1xuIFx0a2ZyZWUobnVsbGIpO1xuIFx0ZGV2LVx1MDAzZW51bGxiID0gTlVMTDtcbiB9XG5AQCAtMjA4MSwxNCAmIzQzOzIwODAsMTMgQEAgc3RhdGljIHN0cnVjdCBudWxsYiAqbnVsbF9maW5kX2Rldl9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpXG4ge1xuIFx0c3RydWN0IG51bGxiICpudWxsYiA9IE5VTEwsICpuYjtcbiBcbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4mIzQzO1x0Z3VhcmQobXV0ZXgpKFx1MDAyNmxvY2spO1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeShuYiwgXHUwMDI2bnVsbGJfbGlzdCwgbGlzdCkge1xuIFx0XHRpZiAoc3RyY21wKG5iLVx1MDAzZWRpc2tfbmFtZSwgbmFtZSkgPT0gMCkge1xuIFx0XHRcdG51bGxiID0gbmI7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdH1cbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcbiBcdHJldHVybiBudWxsYjtcbiB9XG5AQCAtMjEwMiw5ICYjNDM7MjEwMCw5IEBAIHN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpXG4gXHRpZiAoIWRldilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4mIzQzO1x0c2NvcGVkX2d1YXJkKG11dGV4LCBcdTAwMjZsb2NrKSB7XG4mIzQzO1x0XHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcbiYjNDM7XHR9XG4gXHRpZiAocmV0KSB7XG4gXHRcdG51bGxfZnJlZV9kZXYoZGV2KTtcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0yMTYyLDE3ICYjNDM7MjE2MCw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0Y29uZmlnX2dyb3VwX2luaXQoXHUwMDI2bnVsbGJfc3Vic3lzLnN1X2dyb3VwKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2bnVsbGJfc3Vic3lzLnN1X211dGV4KTtcbiBcbi1cdHJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbi1cbi1cdG11dGV4X2luaXQoXHUwMDI2bG9jayk7XG4tXG4gXHRudWxsX21ham9yID0gcmVnaXN0ZXJfYmxrZGV2KDAsIFwmIzM0O251bGxiXCYjMzQ7KTtcbi1cdGlmIChudWxsX21ham9yIFx1MDAzYyAwKSB7XG4tXHRcdHJldCA9IG51bGxfbWFqb3I7XG4tXHRcdGdvdG8gZXJyX2NvbmY7XG4tXHR9XG4mIzQzO1x0aWYgKG51bGxfbWFqb3IgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gbnVsbF9tYWpvcjtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2RldmljZXM7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHJldCA9IG51bGxfY3JlYXRlX2RldigpO1xuQEAgLTIxODAsNiAmIzQzOzIxNzAsMTAgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRcdFx0Z290byBlcnJfZGV2O1xuIFx0fVxuIFxuJiM0MztcdHJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRnb3RvIGVycl9kZXY7XG4mIzQzO1xuIFx0cHJfaW5mbyhcJiMzNDttb2R1bGUgbG9hZGVkXFxuXCYjMzQ7KTtcbiBcdHJldHVybiAwO1xuIFxuQEAgLTIxODksOCAmIzQzOzIxODMsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdFx0bnVsbF9kZXN0cm95X2RldihudWxsYik7XG4gXHR9XG4gXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcJiMzNDtudWxsYlwmIzM0Oyk7XG4tZXJyX2NvbmY6XG4tXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuJiM0MztcdGlmICh0YWdfc2V0Lm9wcylcbiYjNDM7XHRcdGJsa19tcV9mcmVlX3RhZ19zZXQoXHUwMDI2dGFnX3NldCk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0yMjAwLDE0ICYjNDM7MjE5NCwxNCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXG4gXG4gXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuIFxuLVx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHdoaWxlICghbGlzdF9lbXB0eShcdTAwMjZudWxsYl9saXN0KSkge1xuLVx0XHRudWxsYiA9IGxpc3RfZW50cnkobnVsbGJfbGlzdC5uZXh0LCBzdHJ1Y3QgbnVsbGIsIGxpc3QpO1xuLVx0XHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcbiYjNDM7XHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNmxvY2spIHtcbiYjNDM7XHRcdHdoaWxlICghbGlzdF9lbXB0eShcdTAwMjZudWxsYl9saXN0KSkge1xuJiM0MztcdFx0XHRudWxsYiA9IGxpc3RfZW50cnkobnVsbGJfbGlzdC5uZXh0LCBzdHJ1Y3QgbnVsbGIsIGxpc3QpO1xuJiM0MztcdFx0XHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcbiYjNDM7XHRcdH1cbiBcdH1cbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiYjNDM7XG4mIzQzO1x0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuIFxuIFx0aWYgKHRhZ19zZXQub3BzKVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDEyOjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX05VTExfQkxLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3BvbGxfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlJiMzNDssCiAgICAmIzM0O251bGxiX2dyb3VwX2Ryb3BfaXRlbSYjMzQ7LAogICAgJiMzNDtudWxsX2RlbF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9maW5kX2Rldl9ieV9uYW1lJiMzNDssCiAgICAmIzM0O251bGxfY3JlYXRlX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyLCBmaXhpbmcgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgYWRqdXN0aW5nIGxvY2tpbmcgd2l0aCBgZ3VhcmQobXV0ZXgpYCwgYW5kIGNoYW5naW5nIHRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBhbmQgZGV2aWNlIGRlbGV0aW9uIGxvZ2ljLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGEgc29mdHdhcmUgYmxvY2sgZGV2aWNlIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZTM5NzhmNmVjYzk2MzRjZTczNTBlOGJiNTIzMDVmMjEzNThjN2IyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMjYgMTI6MjQ6MTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jCmluZGV4IGY4YzBmZDU3ZTA0MWE4Li4xYzIwZDc3M2RkMGM4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKQEAgLTY2LDcgJiM0Mzs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHsKICNkZWZpbmUgTlVMTEJfUEFHRV9GUkVFIChNQVBfU1ogLSAyKQogCiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpOwotc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrOwomIzQzO3N0YXRpYyBERUZJTkVfTVVURVgobG9jayk7CiBzdGF0aWMgaW50IG51bGxfbWFqb3I7CiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTsKIHN0YXRpYyBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDsKQEAgLTM0NSw2ICYjNDM7MzQ1LDcgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsCiBzdGF0aWMgc3NpemVfdAkJCQkJCQkJXAogbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKQlcCiB7CQkJCQkJCQkJXAomIzQzOwlndWFyZChtdXRleCkoJmFtcDtsb2NrKTsJCQkJCQlcCiAJcmV0dXJuIG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coCQkJCVwKIAkJCQl0b19udWxsYl9kZXZpY2UoaXRlbSktJmd0O05BTUUsIHBhZ2UpOwlcCiB9CQkJCQkJCQkJXApAQCAtMzYwLDYgJiM0MzszNjEsNyBAQCBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLAlcCiAJcmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoJmFtcDtuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcCiAJaWYgKHJldCAmbHQ7IDApCQkJCQkJCVwKIAkJcmV0dXJuIHJldDsJCQkJCQlcCiYjNDM7CWd1YXJkKG11dGV4KSgmYW1wO2xvY2spOwkJCQkJCVwKIAlpZiAoYXBwbHlfZm4pCQkJCQkJCVwKIAkJcmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpOwkJCQlcCiAJZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncykpIAlcCkBAIC0zODIsNiAmIzQzOzM4NCwxNSBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCWlmICghZGV2LSZndDtudWxsYikKIAkJcmV0dXJuIDA7CiAKJiM0MzsJLyoKJiM0MzsJICogQSBzaGFyZWQgdGFnX3NldCBpcyBtYXBwZWQgdmlhIHRoZSBtb2R1bGUtd2lkZSBxdWV1ZSBjb3VudHMsIHNvIGEKJiM0MzsJICogcGVyLWRldmljZSByZXNpemUgaXMgbWVhbmluZ2xlc3MuIE9uIHNocmluayBpdCB3b3VsZCBhbHNvIGxlYXZlCiYjNDM7CSAqIG1xX21hcFtdIHBvaW50aW5nIGF0IE5VTExlZCBoY3R4IHNsb3RzLCBjYXVzaW5nIGEgTlVMTCBkZXJlZiBpbgomIzQzOwkgKiBibGtfbXFfbWFwX3N3cXVldWUoKS4gUmVqZWN0IGl0LgomIzQzOwkgKi8KJiM0MzsJaWYgKGRldi0mZ3Q7c2hhcmVkX3RhZ3MpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAkvKgogCSAqIE1ha2Ugc3VyZSBhdCBsZWFzdCBvbmUgc3VibWl0IHF1ZXVlIGV4aXN0cy4KIAkgKi8KQEAgLTQyMSwyNSAmIzQzOzQzMiwxMyBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIAkJCQkgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzKQogewotCWludCByZXQ7Ci0KLQltdXRleF9sb2NrKCZhbXA7bG9jayk7Ci0JcmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi0mZ3Q7cG9sbF9xdWV1ZXMpOwotCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwotCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtJmd0O3BvbGxfcXVldWVzKTsKIH0KIAogc3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiAJCQkJICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKQogewotCWludCByZXQ7Ci0KLQltdXRleF9sb2NrKCZhbXA7bG9jayk7Ci0JcmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi0mZ3Q7c3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpOwotCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwotCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTsKIH0KIAogTlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpOwpAQCAtNDc4LDYgJiM0Mzs0NzcsNyBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7CiAKIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSkKIHsKJiM0MzsJZ3VhcmQobXV0ZXgpKCZhbXA7bG9jayk7CiAJcmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktJmd0O3Bvd2VyLCBwYWdlKTsKIH0KIApAQCAtNDkzLDE1ICYjNDM7NDkzLDE1IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCiAJCXJldHVybiByZXQ7CiAKIAlyZXQgPSBjb3VudDsKLQltdXRleF9sb2NrKCZhbXA7bG9jayk7CiYjNDM7CWd1YXJkKG11dGV4KSgmYW1wO2xvY2spOwogCWlmICghZGV2LSZndDtwb3dlciAmYW1wOyZhbXA7IG5ld3ApIHsKIAkJaWYgKHRlc3RfYW5kX3NldF9iaXQoTlVMTEJfREVWX0ZMX1VQLCAmYW1wO2Rldi0mZ3Q7ZmxhZ3MpKQotCQkJZ290byBvdXQ7CiYjNDM7CQkJcmV0dXJuIHJldDsKIAogCQlyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTsKIAkJaWYgKHJldCkgewogCQkJY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgJmFtcDtkZXYtJmd0O2ZsYWdzKTsKLQkJCWdvdG8gb3V0OwomIzQzOwkJCXJldHVybiByZXQ7CiAJCX0KIAogCQlzZXRfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCAmYW1wO2Rldi0mZ3Q7ZmxhZ3MpOwpAQCAtNTE1LDggJiM0Mzs1MTUsNiBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAogCQljbGVhcl9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncyk7CiAJfQogCi1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtNTgwLDYgJiM0Mzs1NzgsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCiB7CiAJc3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pOwogCiYjNDM7CWd1YXJkKG11dGV4KSgmYW1wO2xvY2spOwogCXJldHVybiB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9SRUFET05MWSk7CiB9CiBDT05GSUdGU19BVFRSX1dPKG51bGxiX2RldmljZV8sIHpvbmVfcmVhZG9ubHkpOwpAQCAtNTg5LDYgJiM0Mzs1ODgsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKIHsKIAlzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYgPSB0b19udWxsYl9kZXZpY2UoaXRlbSk7CiAKJiM0MzsJZ3VhcmQobXV0ZXgpKCZhbXA7bG9jayk7CiAJcmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX09GRkxJTkUpOwogfQogQ09ORklHRlNfQVRUUl9XTyhudWxsYl9kZXZpY2VfLCB6b25lX29mZmxpbmUpOwpAQCAtNzA3LDEwICYjNDM7NzA3LDkgQEAgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pCiAJc3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pOwogCiAJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsICZhbXA7ZGV2LSZndDtmbGFncykpIHsKLQkJbXV0ZXhfbG9jaygmYW1wO2xvY2spOwomIzQzOwkJZ3VhcmQobXV0ZXgpKCZhbXA7bG9jayk7CiAJCWRldi0mZ3Q7cG93ZXIgPSBmYWxzZTsKIAkJbnVsbF9kZWxfZGV2KGRldi0mZ3Q7bnVsbGIpOwotCQltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKIAl9CiAJbnVsbGJfZGVsX2ZhdWx0X2NvbmZpZyhkZXYpOwogCWNvbmZpZ19pdGVtX3B1dChpdGVtKTsKQEAgLTgzNiw3ICYjNDM7ODM1LDYgQEAgc3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpCiAJaWYgKCFkZXYpCiAJCXJldHVybjsKIAotCW51bGxfZnJlZV96b25lZF9kZXYoZGV2KTsKIAliYWRibG9ja3NfZXhpdCgmYW1wO2Rldi0mZ3Q7YmFkYmxvY2tzKTsKIAlrZnJlZShkZXYpOwogfQpAQCAtMTc3MCwxOCAmIzQzOzE3NjgsMTkgQEAgc3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpCiAKIAlkZWxfZ2VuZGlzayhudWxsYi0mZ3Q7ZGlzayk7CiAKLQlpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgJmFtcDtudWxsYi0mZ3Q7ZGV2LSZndDtmbGFncykpIHsKJiM0MzsJaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsICZhbXA7ZGV2LSZndDtmbGFncykpIHsKIAkJaHJ0aW1lcl9jYW5jZWwoJmFtcDtudWxsYi0mZ3Q7YndfdGltZXIpOwogCQlhdG9taWNfbG9uZ19zZXQoJmFtcDtudWxsYi0mZ3Q7Y3VyX2J5dGVzLCBMT05HX01BWCk7CiAJCWJsa19tcV9zdGFydF9zdG9wcGVkX2h3X3F1ZXVlcyhudWxsYi0mZ3Q7cSwgdHJ1ZSk7CiAJfQogCiAJcHV0X2Rpc2sobnVsbGItJmd0O2Rpc2spOwomIzQzOwludWxsX2ZyZWVfem9uZWRfZGV2KGRldik7CiAJaWYgKG51bGxiLSZndDt0YWdfc2V0ID09ICZhbXA7bnVsbGItJmd0O19fdGFnX3NldCkKIAkJYmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi0mZ3Q7dGFnX3NldCk7CiAJa2ZyZWUobnVsbGItJmd0O3F1ZXVlcyk7CiAJaWYgKG51bGxfY2FjaGVfYWN0aXZlKG51bGxiKSkKLQkJbnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKG51bGxiLSZndDtkZXYsIHRydWUpOwomIzQzOwkJbnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKGRldiwgdHJ1ZSk7CiAJa2ZyZWUobnVsbGIpOwogCWRldi0mZ3Q7bnVsbGIgPSBOVUxMOwogfQpAQCAtMjA4MSwxNCAmIzQzOzIwODAsMTMgQEAgc3RhdGljIHN0cnVjdCBudWxsYiAqbnVsbF9maW5kX2Rldl9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAJc3RydWN0IG51bGxiICpudWxsYiA9IE5VTEwsICpuYjsKIAotCW11dGV4X2xvY2soJmFtcDtsb2NrKTsKJiM0MzsJZ3VhcmQobXV0ZXgpKCZhbXA7bG9jayk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShuYiwgJmFtcDtudWxsYl9saXN0LCBsaXN0KSB7CiAJCWlmIChzdHJjbXAobmItJmd0O2Rpc2tfbmFtZSwgbmFtZSkgPT0gMCkgewogCQkJbnVsbGIgPSBuYjsKIAkJCWJyZWFrOwogCQl9CiAJfQotCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwogCiAJcmV0dXJuIG51bGxiOwogfQpAQCAtMjEwMiw5ICYjNDM7MjEwMCw5IEBAIHN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpCiAJaWYgKCFkZXYpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JbXV0ZXhfbG9jaygmYW1wO2xvY2spOwotCXJldCA9IG51bGxfYWRkX2RldihkZXYpOwotCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwomIzQzOwlzY29wZWRfZ3VhcmQobXV0ZXgsICZhbXA7bG9jaykgewomIzQzOwkJcmV0ID0gbnVsbF9hZGRfZGV2KGRldik7CiYjNDM7CX0KIAlpZiAocmV0KSB7CiAJCW51bGxfZnJlZV9kZXYoZGV2KTsKIAkJcmV0dXJuIHJldDsKQEAgLTIxNjIsMTcgJiM0MzsyMTYwLDkgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpCiAJY29uZmlnX2dyb3VwX2luaXQoJmFtcDtudWxsYl9zdWJzeXMuc3VfZ3JvdXApOwogCW11dGV4X2luaXQoJmFtcDtudWxsYl9zdWJzeXMuc3VfbXV0ZXgpOwogCi0JcmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKCZhbXA7bnVsbGJfc3Vic3lzKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JbXV0ZXhfaW5pdCgmYW1wO2xvY2spOwotCiAJbnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCAmIzM0O251bGxiJiMzNDspOwotCWlmIChudWxsX21ham9yICZsdDsgMCkgewotCQlyZXQgPSBudWxsX21ham9yOwotCQlnb3RvIGVycl9jb25mOwotCX0KJiM0MzsJaWYgKG51bGxfbWFqb3IgJmx0OyAwKQomIzQzOwkJcmV0dXJuIG51bGxfbWFqb3I7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgbnJfZGV2aWNlczsgaSYjNDM7JiM0MzspIHsKIAkJcmV0ID0gbnVsbF9jcmVhdGVfZGV2KCk7CkBAIC0yMTgwLDYgJiM0MzsyMTcwLDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKQogCQkJZ290byBlcnJfZGV2OwogCX0KIAomIzQzOwlyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oJmFtcDtudWxsYl9zdWJzeXMpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBlcnJfZGV2OwomIzQzOwogCXByX2luZm8oJiMzNDttb2R1bGUgbG9hZGVkXG4mIzM0Oyk7CiAJcmV0dXJuIDA7CiAKQEAgLTIxODksOCAmIzQzOzIxODMsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZCkKIAkJbnVsbF9kZXN0cm95X2RldihudWxsYik7CiAJfQogCXVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsICYjMzQ7bnVsbGImIzM0Oyk7Ci1lcnJfY29uZjoKLQljb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbSgmYW1wO251bGxiX3N1YnN5cyk7CiYjNDM7CWlmICh0YWdfc2V0Lm9wcykKJiM0MzsJCWJsa19tcV9mcmVlX3RhZ19zZXQoJmFtcDt0YWdfc2V0KTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yMjAwLDE0ICYjNDM7MjE5NCwxNCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpCiAKIAljb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbSgmYW1wO251bGxiX3N1YnN5cyk7CiAKLQl1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCAmIzM0O251bGxiJiMzNDspOwotCi0JbXV0ZXhfbG9jaygmYW1wO2xvY2spOwotCXdoaWxlICghbGlzdF9lbXB0eSgmYW1wO251bGxiX2xpc3QpKSB7Ci0JCW51bGxiID0gbGlzdF9lbnRyeShudWxsYl9saXN0Lm5leHQsIHN0cnVjdCBudWxsYiwgbGlzdCk7Ci0JCW51bGxfZGVzdHJveV9kZXYobnVsbGIpOwomIzQzOwlzY29wZWRfZ3VhcmQobXV0ZXgsICZhbXA7bG9jaykgewomIzQzOwkJd2hpbGUgKCFsaXN0X2VtcHR5KCZhbXA7bnVsbGJfbGlzdCkpIHsKJiM0MzsJCQludWxsYiA9IGxpc3RfZW50cnkobnVsbGJfbGlzdC5uZXh0LCBzdHJ1Y3QgbnVsbGIsIGxpc3QpOwomIzQzOwkJCW51bGxfZGVzdHJveV9kZXYobnVsbGIpOwomIzQzOwkJfQogCX0KLQltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKJiM0MzsKJiM0MzsJdW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgJiMzNDtudWxsYiYjMzQ7KTsKIAogCWlmICh0YWdfc2V0Lm9wcykKIAkJYmxrX21xX2ZyZWVfdGFnX3NldCgmYW1wO3RhZ19zZXQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTg5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIE51bGwgQmxvY2sgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIGl0JiMzOTtzIHJlcGxhY2luZyBgbXV0ZXhfbG9ja2AvYG11dGV4X3VubG9ja2Agd2l0aCBgZ3VhcmQobXV0ZXgpKCZhbXA7bG9jaylgIGFuZCBgc2NvcGVkX2d1YXJkKG11dGV4LCAmYW1wO2xvY2spYC4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IHNoaWZ0IGluIGxvY2tpbmcgc3RyYXRlZ3ksIGhpbnRpbmcgYXQgYSBwb3RlbnRpYWwgY2hhbmdlIGluIGhvdyBjb25jdXJyZW5jeSBpcyBoYW5kbGVkLCBvciBhbiBhdHRlbXB0IHRvIHNpbXBsaWZ5IGxvY2sgbWFuYWdlbWVudCwgd2hpY2ggY291bGQgYmUgYSBnb29kIHRoaW5nLiBUaGUgYWRkaXRpb24gb2YgdGhhdCBjaGVjayBpbiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2Ag4oCTIGBpZiAoZGV2LSZndDtzaGFyZWRfdGFncykgcmV0dXJuIC1FSU5WQUw7YCDigJMgaXMgaW50ZXJlc3RpbmcuIEl0JiMzOTtzIGxpa2VseSByZWxhdGVkIHRvIHNvbWUgbmV3IGNvbnN0cmFpbnQgb3IgcmVzdHJpY3Rpb24gb24gaGFyZHdhcmUgcXVldWUgY29uZmlndXJhdGlvbnMuIEFuZCB0aGUgcmVhcnJhbmdlbWVudCBvZiBgbnVsbF9mcmVlX3pvbmVkX2RldmAsIG1vdmluZyBpdCBmcm9tIGBudWxsX2ZyZWVfZGV2YCB0byBgbnVsbF9kZWxfZGV2YCwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgbWVtb3J5IG1hbmFnZW1lbnQgdHdlYWsgSSBuZWVkIHRvIGxvb2sgY2xvc2VyIGF0LgoKTm93LCBpcyB0aGlzIHBhdGNoIHdvcnRoIGZ1enppbmc/IEFic29sdXRlbHkuIEl04oCZcyB0aGUgbnVsbCBibG9jayBkZXZpY2UgZHJpdmVyLCB3aGljaCwgYXMgSSBrbm93LCBpcyBhIHN0YXBsZSBpbiBhIGxvdCBvZiB0ZXN0aW5nIGVudmlyb25tZW50cyBhbmQgdmlydHVhbGl6YXRpb24gc2V0dXBzLiBUb3RhbGx5IHJlYWNoYWJsZS4gR2l2ZW4gdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMsIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIG5ldyBsb2NraW5nIG1lY2hhbmlzbXMsIHRoYXQgZXJyb3IgaGFuZGxpbmcgY2hlY2ssIGFuZCB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgYWx0ZXJhdGlvbnMsIHRoZXJlJiMzOTtzIGEgc3Ryb25nIGNoYW5jZSB0aGlzIGNvdWxkIGludHJvZHVjZSBjb25jdXJyZW5jeSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgc2NlbmFyaW9zLCBvciBpdCBtaWdodCBiZSBmaXhpbmcgZXhpc3Rpbmcgb25lcy4gRnV6emluZyB0aGlzIGlzIGEgbm8tYnJhaW5lcjsgdGhlIHBvdGVudGlhbCBmb3IgdW5jb3ZlcmluZyBzdWJ0bGUgaXNzdWVzIGlzIGhpZ2guCgpUaW1lIHRvIGdyYWIgdGhlIGNvbmZpZyBvcHRpb25zLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9gIGFuZCBkaWcgaW50byBLY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDEyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX05VTExfQkxLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6Njpjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTktXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctMTEtXHRib29sIFwmIzM0O1N1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTI6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc5NQoJCQkJCQkJb3V0cHV0OiAxMzAKCQkJCQkJCXRob3VnaHRzOiA1MDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gdGhlIENvcmUgQ2hhbmdlcyBpbiB0aGUgYEJMS19ERVZfTlVMTF9CTEtgIENvbmZpZyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gYEJMS19ERVZfTlVMTF9CTEtgLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHplcm8gaW4gb24gdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gSGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdDoKCiogICBgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZWAgKG1hY3JvLWdlbmVyYXRlZCwgbGlrZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCkKKiAgIGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AKKiAgIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgCiogICBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgCiogICBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWAKKiAgIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gCiogICBgbnVsbF9mcmVlX2RldmAKKiAgIGBudWxsX2RlbF9kZXZgCiogICBgbnVsbF9maW5kX2Rldl9ieV9uYW1lYAoqICAgYG51bGxfY3JlYXRlX2RldmAKKiAgIGBudWxsX2luaXRgCiogICBgbnVsbF9leGl0YAoqICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgCiogICBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AKKiAgIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AKCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGljaCBvZiB0aGVzZSBhcmUgdGhlIG1vc3QgaW50ZXJlc3RpbmcgdG8gYW5hbHl6ZSwgZXNwZWNpYWxseSBmb3IgZnV6emluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggYXJlIGRpcmVjdGx5IHJlYWNoYWJsZSwgb3IgcG90ZW50aWFsIGVudHJ5IHBvaW50cy4gVGhlIGNvbmZpZ2ZzIGZ1bmN0aW9ucyBjb21lIHRvIG1pbmQuIEkga25vdyB0aGV5JiMzOTtyZSB0ZWNobmljYWxseSBzdGF0aWMsIGJ1dCB0aGV5JiMzOTtyZSByZWdpc3RlcmVkIGFzIGNhbGxiYWNrcywgYW5kIEkmIzM5O20gcHJldHR5IHN1cmUgc3l6a2FsbGVyIGNhbiByZWFjaCB0aGVtLiBCdXQsIG1heWJlLCBJIHNob3VsZCBmb2N1cyBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRoZW1zZWx2ZXMuCgpTbywgbGV0JiMzOTtzIGZpbHRlciBvdXQgdGhlIGluaXQvZXhpdCBmdW5jdGlvbnMgYW5kIHNlZSB3aGF0IHdlIGhhdmUuIEFsc28sIEkgbmVlZCB0byBrbm93IHdoaWNoIG9mIHRoZXNlIGFyZSBzdGF0aWMsIGFuZCB3aGV0aGVyIHRoZXkmIzM5O3JlIGlubGluZWQuCgpUaGUgZnVuY3Rpb25zIGxlZnQgYXJlOgoKKiAgIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgCiogICBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgCiogICBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWAKKiAgIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gCiogICBgbnVsbF9mcmVlX2RldmAKKiAgIGBudWxsX2RlbF9kZXZgCiogICBgbnVsbF9maW5kX2Rldl9ieV9uYW1lYAoqICAgYG51bGxfY3JlYXRlX2RldmAKKiAgIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYAoqICAgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgCiogICBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgCgpMZXQmIzM5O3MgY2hlY2sgaWYgdGhleSYjMzk7cmUgc3RhdGljIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgd2hldGhlciB0aGV5IG1pZ2h0IGJlIGlubGluZWQuIEkgbmVlZCB0byBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMsIGFzIHRoZSBpbnN0cnVjdGlvbnMgc3RhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTI6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlfG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlfG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmV8bnVsbGJfZ3JvdXBfZHJvcF9pdGVtfG51bGxfZnJlZV9kZXZ8bnVsbF9kZWxfZGV2fG51bGxfZmluZF9kZXZfYnlfbmFtZXxudWxsX2NyZWF0ZV9kZXZ8bnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc3xudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzfG51bGxiX2FwcGx5X3BvbGxfcXVldWVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjczPXN0YXRpYyBzdHJ1Y3QgbnVsbGJfZGV2aWNlICpudWxsX2FsbG9jX2Rldih2b2lkKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI3NDpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzU6c3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc2LXN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzc6c3RhdGljIHN0cnVjdCBudWxsYiAqbnVsbF9maW5kX2Rldl9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc4OnN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsIGJvb2wgaXNfY2FjaGUpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc5LVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTM3ND1DT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzc1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mzc2OnN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNzctXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQzMS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQzMjpzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDMzLVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcylcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQzNC17XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0MzU6XHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzYtfVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDM3LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDM4OnN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDM5LVx0XHRcdFx0ICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDQwLXtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0MTpcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ0Mi19XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDQ1PU5VTExCX0RFVklDRV9BVFRSKGNvbXBsZXRpb25fbnNlYywgdWxvbmcsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ2Ok5VTExCX0RFVklDRV9BVFRSKHN1Ym1pdF9xdWV1ZXMsIHVpbnQsIG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ3Ok5VTExCX0RFVklDRV9BVFRSKHBvbGxfcXVldWVzLCB1aW50LCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NDgtTlVMTEJfREVWSUNFX0FUVFIoaG9tZV9ub2RlLCB1aW50LCBOVUxMKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00Nzg9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4My1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4NDpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDg1LVx0XHRcdFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTEyLVx0XHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MTM6XHRcdFx0bnVsbF9kZWxfZGV2KGRldi1cdTAwM2VudWxsYik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MTQtXHRcdH1cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01NzQ9Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBiYWRibG9ja3MpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTc1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTc2OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU3Ny1cdFx0XHRcdFx0XHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTg0PUNPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9yZWFkb25seSk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1ODY6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODctXHRcdFx0XHRcdCAgICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NjM3PXN0YXRpYyB2b2lkIG51bGxiX2RldmljZV9yZWxlYXNlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02NDAtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2NDE6XHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UoZGV2LCBmYWxzZSk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2NDI6XHRudWxsX2ZyZWVfZGV2KGRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02NDMtfVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTY4Nz1jb25maWdfZ3JvdXAgKm51bGxiX2dyb3VwX21ha2VfZ3JvdXAoc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjkwLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NjkxOlx0aWYgKG51bGxfZmluZF9kZXZfYnlfbmFtZShuYW1lKSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY5Mi1cdFx0cmV0dXJuIEVSUl9QVFIoLUVFWElTVCk7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NzA0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3MDU6bnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MDYte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTcxMS1cdFx0ZGV2LVx1MDAzZXBvd2VyID0gZmFsc2U7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3MTI6XHRcdG51bGxfZGVsX2RldihkZXYtXHUwMDNlbnVsbGIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzEzLVx0fVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ2ZzX2dyb3VwX29wZXJhdGlvbnMgbnVsbGJfZ3JvdXBfb3BzID0ge1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzUyLVx0Lm1ha2VfZ3JvdXBcdD0gbnVsbGJfZ3JvdXBfbWFrZV9ncm91cCxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjc1MzpcdC5kcm9wX2l0ZW1cdD0gbnVsbGJfZ3JvdXBfZHJvcF9pdGVtLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzU0LX07XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9Nzc2PXN0YXRpYyBzdHJ1Y3QgbnVsbGJfZGV2aWNlICpudWxsX2FsbG9jX2Rldih2b2lkKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTgzMi1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjgzMzpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTgzNC17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9OTI0PXN0YXRpYyBzdHJ1Y3QgbnVsbGJfcGFnZSAqbnVsbF9yYWRpeF90cmVlX2luc2VydChzdHJ1Y3QgbnVsbGIgKm51bGxiLCB1NjQgaWR4LFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk0MC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjk0MTpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2Uoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LCBib29sIGlzX2NhY2hlKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTQyLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xNzQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxrX21xX29wcyBudWxsX21xX29wcyA9IHtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzU1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTc1NjpzdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3NTcte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3ODItXHRpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTc4MzpcdFx0bnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKGRldiwgdHJ1ZSk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzg0LVx0a2ZyZWUobnVsbGIpO1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE5NTQ9c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwNzgtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDc5OnN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA4MC17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA5My1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIwOTQ6c3RhdGljIGludCBudWxsX2NyZWF0ZV9kZXYodm9pZClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwOTUte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTA3Olx0XHRudWxsX2ZyZWVfZGV2KGRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTA4LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTIxMTQ9c3RhdGljIHZvaWQgbnVsbF9kZXN0cm95X2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMTctXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTE4Olx0bnVsbF9kZWxfZGV2KG51bGxiKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxMTk6XHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UoZGV2LCBmYWxzZSk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTIwOlx0bnVsbF9mcmVlX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEyMS19XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjEyMz1zdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTY3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfZGV2aWNlczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxNjg6XHRcdHJldCA9IG51bGxfY3JlYXRlX2RldigpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjE2OS1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTcwCgkJCQkJCQlvdXRwdXQ6IDIyMQoJCQkJCQkJdGhvdWdodHM6IDEzOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIG51bGxfYmxrIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIHRhcmdldGVkIGF0IGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AsIHdoaWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQmIzM5O3MgYSBzb2Z0d2FyZSBibG9jayBkZXZpY2UuIFRoYXQgbWFrZXMgaXQgcmVhZGlseSBhY2Nlc3NpYmxlIGluIGEgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggaXMgZ29vZCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4KCkZpcnN0IHRoaW5ncyBmaXJzdCwgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBiZWVmaW5nIHVwIHRoZSBsb2NraW5nIG1lY2hhbmlzbS4gVGhlIGNoYW5nZSBmcm9tIGBzdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7YCB0byBgc3RhdGljIERFRklORV9NVVRFWChsb2NrKTtgIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIHVzZSBvZiBgZ3VhcmQobXV0ZXgpKCZhbXA7bG9jayk7YCBhbmQgYHNjb3BlZF9ndWFyZChtdXRleCwgJmFtcDtsb2NrKWAgdGhyb3VnaG91dCB0aGUgY29kZSBiYXNlIGluIGZ1bmN0aW9ucyBsaWtlIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvd2AsIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgLCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgLCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlYCwgYG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmVgLCBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYCwgYG51bGxfZmluZF9kZXZfYnlfbmFtZWAsIGBudWxsX2NyZWF0ZV9kZXZgLCBhbmQgYG51bGxfZXhpdGAgc3VnZ2VzdHMgdGhleSYjMzk7cmUgYWltaW5nIGZvciBtb3JlIHJvYnVzdCBwcm90ZWN0aW9uIGFyb3VuZCBjcml0aWNhbCBzZWN0aW9ucy4gVGhpcyBjb3VsZCBiZSBkdWUgdG8gcmFjZSBjb25kaXRpb25zIGZvdW5kIGluIHByZXZpb3VzIGRldmVsb3BtZW50IGVmZm9ydHMsIG9yIHNpbXBseSBhcyBhbiBlZmZvcnQgdG8gZW5zdXJlIHRoaXMgZGV2aWNlIGlzIHNhZmUgZm9yIGhpZ2gtY29uY3VycmVuY3kgdXNhZ2VzLgoKVGhlIGFkZGl0aW9uIG9mIHRoZSBjaGVjayBpbiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2A6CmBgYGMKCWlmIChkZXYtJmd0O3NoYXJlZF90YWdzKQoJCXJldHVybiAtRUlOVkFMOwpgYGAKaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBleWUuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIHByZXZlbnQgc29tZSBraW5kIG9mIGludmFsaWQgc3RhdGUgcmVsYXRlZCB0byBzaGFyZWQgdGFncyB3aGljaCBjb3VsZCBiZSBwcm9ibGVtYXRpYy4gQ291bGQgYmUgYSBwb3RlbnRpYWwgTlVMTCBkZXJlZmVyZW5jZSwgb3IgcG9zc2libHkgYSByZXNvdXJjZSBtYW5hZ2VtZW50IGlzc3VlLgoKVGhlIHJlbW92YWwgb2YgYG11dGV4X2xvY2soJmFtcDtsb2NrKWAgYW5kIGBtdXRleF91bmxvY2soJmFtcDtsb2NrKWAgZnJvbSBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AgaXMgY3VyaW91cy4gV2hlcmUgaGFzIHRoYXQgbG9naWMgbWlncmF0ZWQgdG8/IFBlcmhhcHMgdGhlIGBndWFyZGAgYW5kIGBzY29wZWRfZ3VhcmRgIG1hY3JvcyBhcmUgbm93IGhhbmRsaW5nIHRoZSBsb2NraW5nIGF0IGEgaGlnaGVyIGxldmVsLCB3aGljaCBjb3VsZCBzaW1wbGlmeSB0aGUgY29kZSBhbmQgcmVkdWNlIHRoZSByaXNrIG9mIG1pc3NlZCB1bmxvY2tzLgoKVGhlbiB0aGVyZSYjMzk7cyB0aGUgbW92ZSBvZiBgbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO2AgZnJvbSBgbnVsbF9mcmVlX2RldmAgdG8gYG51bGxfZGVsX2RldmAuIFRoYXQmIzM5O3MgYSBkZWZpbml0ZSBzdHJ1Y3R1cmFsIGNoYW5nZS4gVGhlIHN1YnNlcXVlbnQgZml4IGluIGBudWxsX2RlbF9kZXZgIHdoZXJlIHRoZXkgY29ycmVjdCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBieSBjaGFuZ2luZyBgbnVsbGItJmd0O2RldmAgdG8gYGRldi0mZ3Q7ZmxhZ3NgIGFuZCBgZGV2YCBjb25maXJtcyB0aGVyZSB3YXMgYSByZWFsIGlzc3VlIGhlcmUsIHVzaW5nIHRoZSBkZXZpY2UgYWZ0ZXIgaXQgd2FzIHBvdGVudGlhbGx5IGZyZWVkLiBUaGlzIGlzIHNpZ25pZmljYW50IGFuZCBzb21ldGhpbmcgdGhhdCBkZW1hbmRzIGNsb3NlciBpbnNwZWN0aW9uLgoKRmluYWxseSwgdGhlIGluaXRpYWxpemF0aW9uIG9yZGVyIGNoYW5nZXMgaW4gYG51bGxfaW5pdGAsIHdpdGggYHJlZ2lzdGVyX2Jsa2RldmAgbm93IGJlZm9yZSBgbnVsbF9jcmVhdGVfZGV2YCBhbmQgYGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbWAgYWZ0ZXIgYG51bGxfY3JlYXRlX2RldmAsIHByb2JhYmx5IGhhcyB0byBkbyB3aXRoIGRlcGVuZGVuY2llcyBhbmQgZGV2aWNlIHJlZ2lzdHJhdGlvbi4gVGhpcyBjb3VsZCBiZSB0byBkbyB3aXRoIHJlc29sdmluZyBzb21lIGRlcGVuZGVuY2llcyBpbiB0aGUgb3JkZXIgb2YgaW5pdGlhbGl6YXRpb24uCgpPa2F5LCBpcyB0aGlzIGZ1enphYmxlPyBBYnNvbHV0ZWx5LiBUaGlzIGRyaXZlciBpcyByZWFjaGFibGUsIHRoZSBjaGFuZ2VzIGluY2x1ZGUgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcywgYW5kIGxvY2tpbmcgbW9kaWZpY2F0aW9ucyDigJMgYWxsIG9mIHdoaWNoIGFyZSBmZXJ0aWxlIGdyb3VuZCBmb3IgZnV6emluZy4gSSBjYW4gaW1hZ2luZSBjcmVhdGluZyBkZXZpY2VzIGFuZCB3cml0aW5nIHRvIHN5c2ZzIGF0dHJpYnV0ZXMgdG8gdHJ5IHRvIHRyaWdnZXIgdGhlc2UgY2hhbmdlcyBpbiB0aGUgbG9ja2luZyBzZW1hbnRpY3MuCgpTbywgbGV0JiMzOTtzIGlkZW50aWZ5IHJlbGV2YW50IHN5bWJvbHM6CgoqICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgOiBUaGlzIGlzIGFuIGludGVyZXN0aW5nIG9uZSBiZWNhdXNlIGl0IGlzIHN0YXRpYywgYnV0IGlzIHVzZWQgYnkgdGhlIHN1Ym1pdC9wb2xsIGZ1bmN0aW9ucy4KKiAgIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYDogU3RhdGljLCBidXQgdXNlZCBhcyBhIGNhbGxiYWNrLCB3aGljaCBtaWdodCBtYWtlIGl0IGFjY2Vzc2libGUuCiogICBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgOiBTdGF0aWMsIHNpbWlsYXIgdG8gdGhlIGFib3ZlLgoqICAgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAKKiAgIGBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZWAKKiAgIGBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlYAoqICAgYG51bGxiX2dyb3VwX2Ryb3BfaXRlbWAKKiAgIGBudWxsX2RlbF9kZXZgOiBUaGUgdXNlLWFmdGVyLWZyZWUgZml4IG1ha2VzIHRoaXMgY3JpdGljYWwuCiogICBgbnVsbF9maW5kX2Rldl9ieV9uYW1lYAoqICAgYG51bGxfY3JlYXRlX2RldmAKClRoZSBjb25maWcgaXMgYEJMS19ERVZfTlVMTF9CTEtgLgoKVGhlIGNvbmZpZ2ZzIHN0b3JlIGZ1bmN0aW9ucyBsb29rIHByb21pc2luZyDigJMgdGhleSYjMzk7cmUgYWNjZXNzZWQgdGhyb3VnaCBzeXNmcywgd2hpY2ggc3l6a2FsbGVyIGNhbiBkZWZpbml0ZWx5IHRhcmdldC4gQWx0aG91Z2ggc3RhdGljLCB0aGV5IGFyZSBlbnRyeSBwb2ludHMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHRocm91Z2ggdGhlIGZpbGVzeXN0ZW0gaW50ZXJmYWNlLiBTbywgSSB3aWxsIGZvY3VzIG9uIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIHByb3ZpZGUgdGhlIHNldC1yZXN1bHRzOgoKKiAgIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYAoqICAgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAKKiAgIGBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZWAKKgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlJiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlJiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZ3JvdXBfZHJvcF9pdGVtJiMzNDssCiAgICAmIzM0O251bGxfZGVsX2RldiYjMzQ7LAogICAgJiMzNDtudWxsX2ZpbmRfZGV2X2J5X25hbWUmIzM0OywKICAgICYjMzQ7bnVsbF9jcmVhdGVfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBudWxsX2JsayBkcml2ZXIsIGZpeGluZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgLCBhZGp1c3RpbmcgbG9ja2luZyB3aXRoIGBndWFyZChtdXRleClgLCBhbmQgY2hhbmdpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9yZGVyIGFuZCBkZXZpY2UgZGVsZXRpb24gbG9naWMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gYSBzb2Z0d2FyZSBibG9jayBkZXZpY2UgdGhhdCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OVUxMX0JMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9ncm91cF9kcm9wX2l0ZW0mIzM0OywKICAgICYjMzQ7bnVsbF9kZWxfZGV2JiMzNDssCiAgICAmIzM0O251bGxfZmluZF9kZXZfYnlfbmFtZSYjMzQ7LAogICAgJiMzNDtudWxsX2NyZWF0ZV9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG51bGxfYmxrIGRyaXZlciwgZml4aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIGFkanVzdGluZyBsb2NraW5nIHdpdGggYGd1YXJkKG11dGV4KWAsIGFuZCBjaGFuZ2luZyB0aGUgaW5pdGlhbGl6YXRpb24gb3JkZXIgYW5kIGRldmljZSBkZWxldGlvbiBsb2dpYy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBhIHNvZnR3YXJlIGJsb2NrIGRldmljZSB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjZUMTI6MjQ6MTUuMzMzMTQwODY1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU5MTc1Mjk1MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3BvbGxfcXVldWVzXCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlXCIsXG4gICAgXCJudWxsYl9ncm91cF9kcm9wX2l0ZW1cIixcbiAgICBcIm51bGxfZGVsX2RldlwiLFxuICAgIFwibnVsbF9maW5kX2Rldl9ieV9uYW1lXCIsXG4gICAgXCJudWxsX2NyZWF0ZV9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyLCBmaXhpbmcgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgYWRqdXN0aW5nIGxvY2tpbmcgd2l0aCBgZ3VhcmQobXV0ZXgpYCwgYW5kIGNoYW5naW5nIHRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBhbmQgZGV2aWNlIGRlbGV0aW9uIGxvZ2ljLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGEgc29mdHdhcmUgYmxvY2sgZGV2aWNlIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDEyOjI0OjE1LjMzMzE0NjI2NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1MDk1MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGUzOTc4ZjZlY2M5NjM0Y2U3MzUwZThiYjUyMzA1ZjIxMzU4YzdiMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAyNiAxMjoyNDoxMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXFxuaW5kZXggZjhjMGZkNTdlMDQxYTguLjFjMjBkNzczZGQwYzhkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXFxuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG5AQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7XFxuICNkZWZpbmUgTlVMTEJfUEFHRV9GUkVFIChNQVBfU1ogLSAyKVxcbiBcXG4gc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTtcXG4tc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrO1xcbitzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xcbiBzdGF0aWMgaW50IG51bGxfbWFqb3I7XFxuIHN0YXRpYyBERUZJTkVfSURBKG51bGxiX2luZGV4ZXMpO1xcbiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XFxuQEAgLTM0NSw2ICszNDUsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcXG4gc3RhdGljIHNzaXplX3RcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXHRcXFxcXFxuIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGd1YXJkKG11dGV4KShcXHUwMDI2bG9jayk7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRyZXR1cm4gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc2hvdyhcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdHRvX251bGxiX2RldmljZShpdGVtKS1cXHUwMDNlTkFNRSwgcGFnZSk7XFx0XFxcXFxcbiB9XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbkBAIC0zNjAsNiArMzYxLDcgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcXHRcXFxcXFxuIFxcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlKFxcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxcXFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0dXJuIHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGd1YXJkKG11dGV4KShcXHUwMDI2bG9jayk7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRpZiAoYXBwbHlfZm4pXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRyZXQgPSBhcHBseV9mbihkZXYsIG5ld192YWx1ZSk7XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRlbHNlIGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKSBcXHRcXFxcXFxuQEAgLTM4Miw2ICszODQsMTUgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4gXFx0aWYgKCFkZXYtXFx1MDAzZW51bGxiKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIEEgc2hhcmVkIHRhZ19zZXQgaXMgbWFwcGVkIHZpYSB0aGUgbW9kdWxlLXdpZGUgcXVldWUgY291bnRzLCBzbyBhXFxuK1xcdCAqIHBlci1kZXZpY2UgcmVzaXplIGlzIG1lYW5pbmdsZXNzLiBPbiBzaHJpbmsgaXQgd291bGQgYWxzbyBsZWF2ZVxcbitcXHQgKiBtcV9tYXBbXSBwb2ludGluZyBhdCBOVUxMZWQgaGN0eCBzbG90cywgY2F1c2luZyBhIE5VTEwgZGVyZWYgaW5cXG4rXFx0ICogYmxrX21xX21hcF9zd3F1ZXVlKCkuIFJlamVjdCBpdC5cXG4rXFx0ICovXFxuK1xcdGlmIChkZXYtXFx1MDAzZXNoYXJlZF90YWdzKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdC8qXFxuIFxcdCAqIE1ha2Ugc3VyZSBhdCBsZWFzdCBvbmUgc3VibWl0IHF1ZXVlIGV4aXN0cy5cXG4gXFx0ICovXFxuQEAgLTQyMSwyNSArNDMyLDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXFxuIHtcXG4tXFx0aW50IHJldDtcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbi1cXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVxcdTAwM2Vwb2xsX3F1ZXVlcyk7XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuLVxcbi1cXHRyZXR1cm4gcmV0O1xcbitcXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cXHUwMDNlcG9sbF9xdWV1ZXMpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKVxcbiB7XFxuLVxcdGludCByZXQ7XFxuLVxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcbi1cXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcXG4gfVxcbiBcXG4gTlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpO1xcbkBAIC00NzgsNiArNDc3LDcgQEAgTlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xcbiBcXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxcbiB7XFxuK1xcdGd1YXJkKG11dGV4KShcXHUwMDI2bG9jayk7XFxuIFxcdHJldHVybiBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVxcdTAwM2Vwb3dlciwgcGFnZSk7XFxuIH1cXG4gXFxuQEAgLTQ5MywxNSArNDkzLDE1IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbiBcXHRyZXQgPSBjb3VudDtcXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuK1xcdGd1YXJkKG11dGV4KShcXHUwMDI2bG9jayk7XFxuIFxcdGlmICghZGV2LVxcdTAwM2Vwb3dlciBcXHUwMDI2XFx1MDAyNiBuZXdwKSB7XFxuIFxcdFxcdGlmICh0ZXN0X2FuZF9zZXRfYml0KE5VTExCX0RFVl9GTF9VUCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKVxcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuIFxcdFxcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xcbiBcXHRcXHRpZiAocmV0KSB7XFxuIFxcdFxcdFxcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKTtcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdHNldF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKTtcXG5AQCAtNTE1LDggKzUxNSw2IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuIFxcdFxcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpO1xcbiBcXHR9XFxuIFxcbi1vdXQ6XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuQEAgLTU4MCw2ICs1NzgsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuIHtcXG4gXFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xcbiBcXG4rXFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZsb2NrKTtcXG4gXFx0cmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX1JFQURPTkxZKTtcXG4gfVxcbiBDT05GSUdGU19BVFRSX1dPKG51bGxiX2RldmljZV8sIHpvbmVfcmVhZG9ubHkpO1xcbkBAIC01ODksNiArNTg4LDcgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuIHtcXG4gXFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xcbiBcXG4rXFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZsb2NrKTtcXG4gXFx0cmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX09GRkxJTkUpO1xcbiB9XFxuIENPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9vZmZsaW5lKTtcXG5AQCAtNzA3LDEwICs3MDcsOSBAQCBudWxsYl9ncm91cF9kcm9wX2l0ZW0oc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsIHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcXG4gXFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xcbiBcXG4gXFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSkge1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4rXFx0XFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZsb2NrKTtcXG4gXFx0XFx0ZGV2LVxcdTAwM2Vwb3dlciA9IGZhbHNlO1xcbiBcXHRcXHRudWxsX2RlbF9kZXYoZGV2LVxcdTAwM2VudWxsYik7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuIFxcdH1cXG4gXFx0bnVsbGJfZGVsX2ZhdWx0X2NvbmZpZyhkZXYpO1xcbiBcXHRjb25maWdfaXRlbV9wdXQoaXRlbSk7XFxuQEAgLTgzNiw3ICs4MzUsNiBAQCBzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG4gXFx0aWYgKCFkZXYpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcXG4gXFx0YmFkYmxvY2tzX2V4aXQoXFx1MDAyNmRldi1cXHUwMDNlYmFkYmxvY2tzKTtcXG4gXFx0a2ZyZWUoZGV2KTtcXG4gfVxcbkBAIC0xNzcwLDE4ICsxNzY4LDE5IEBAIHN0YXRpYyB2b2lkIG51bGxfZGVsX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbiBcXG4gXFx0ZGVsX2dlbmRpc2sobnVsbGItXFx1MDAzZWRpc2spO1xcbiBcXG4tXFx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFxcdTAwMjZudWxsYi1cXHUwMDNlZGV2LVxcdTAwM2VmbGFncykpIHtcXG4rXFx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSkge1xcbiBcXHRcXHRocnRpbWVyX2NhbmNlbChcXHUwMDI2bnVsbGItXFx1MDAzZWJ3X3RpbWVyKTtcXG4gXFx0XFx0YXRvbWljX2xvbmdfc2V0KFxcdTAwMjZudWxsYi1cXHUwMDNlY3VyX2J5dGVzLCBMT05HX01BWCk7XFxuIFxcdFxcdGJsa19tcV9zdGFydF9zdG9wcGVkX2h3X3F1ZXVlcyhudWxsYi1cXHUwMDNlcSwgdHJ1ZSk7XFxuIFxcdH1cXG4gXFxuIFxcdHB1dF9kaXNrKG51bGxiLVxcdTAwM2VkaXNrKTtcXG4rXFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbiBcXHRpZiAobnVsbGItXFx1MDAzZXRhZ19zZXQgPT0gXFx1MDAyNm51bGxiLVxcdTAwM2VfX3RhZ19zZXQpXFxuIFxcdFxcdGJsa19tcV9mcmVlX3RhZ19zZXQobnVsbGItXFx1MDAzZXRhZ19zZXQpO1xcbiBcXHRrZnJlZShudWxsYi1cXHUwMDNlcXVldWVzKTtcXG4gXFx0aWYgKG51bGxfY2FjaGVfYWN0aXZlKG51bGxiKSlcXG4tXFx0XFx0bnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKG51bGxiLVxcdTAwM2VkZXYsIHRydWUpO1xcbitcXHRcXHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UoZGV2LCB0cnVlKTtcXG4gXFx0a2ZyZWUobnVsbGIpO1xcbiBcXHRkZXYtXFx1MDAzZW51bGxiID0gTlVMTDtcXG4gfVxcbkBAIC0yMDgxLDE0ICsyMDgwLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxcbiB7XFxuIFxcdHN0cnVjdCBudWxsYiAqbnVsbGIgPSBOVUxMLCAqbmI7XFxuIFxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4rXFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZsb2NrKTtcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShuYiwgXFx1MDAyNm51bGxiX2xpc3QsIGxpc3QpIHtcXG4gXFx0XFx0aWYgKHN0cmNtcChuYi1cXHUwMDNlZGlza19uYW1lLCBuYW1lKSA9PSAwKSB7XFxuIFxcdFxcdFxcdG51bGxiID0gbmI7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG4gXFxuIFxcdHJldHVybiBudWxsYjtcXG4gfVxcbkBAIC0yMTAyLDkgKzIxMDAsOSBAQCBzdGF0aWMgaW50IG51bGxfY3JlYXRlX2Rldih2b2lkKVxcbiBcXHRpZiAoIWRldilcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuK1xcdHNjb3BlZF9ndWFyZChtdXRleCwgXFx1MDAyNmxvY2spIHtcXG4rXFx0XFx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XFxuK1xcdH1cXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRudWxsX2ZyZWVfZGV2KGRldik7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuQEAgLTIxNjIsMTcgKzIxNjAsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4gXFx0Y29uZmlnX2dyb3VwX2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XFxuIFxcbi1cXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXFx1MDAyNm51bGxiX3N1YnN5cyk7XFxuLVxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcbi1cXHRtdXRleF9pbml0KFxcdTAwMjZsb2NrKTtcXG4tXFxuIFxcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXFxcIm51bGxiXFxcIik7XFxuLVxcdGlmIChudWxsX21ham9yIFxcdTAwM2MgMCkge1xcbi1cXHRcXHRyZXQgPSBudWxsX21ham9yO1xcbi1cXHRcXHRnb3RvIGVycl9jb25mO1xcbi1cXHR9XFxuK1xcdGlmIChudWxsX21ham9yIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIG51bGxfbWFqb3I7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfZGV2aWNlczsgaSsrKSB7XFxuIFxcdFxcdHJldCA9IG51bGxfY3JlYXRlX2RldigpO1xcbkBAIC0yMTgwLDYgKzIxNzAsMTAgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXFxuIFxcdFxcdFxcdGdvdG8gZXJyX2RldjtcXG4gXFx0fVxcbiBcXG4rXFx0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFxcdTAwMjZudWxsYl9zdWJzeXMpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIGVycl9kZXY7XFxuK1xcbiBcXHRwcl9pbmZvKFxcXCJtb2R1bGUgbG9hZGVkXFxcXG5cXFwiKTtcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbkBAIC0yMTg5LDggKzIxODMsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4gXFx0XFx0bnVsbF9kZXN0cm95X2RldihudWxsYik7XFxuIFxcdH1cXG4gXFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXFxcIm51bGxiXFxcIik7XFxuLWVycl9jb25mOlxcbi1cXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcXHUwMDI2bnVsbGJfc3Vic3lzKTtcXG4rXFx0aWYgKHRhZ19zZXQub3BzKVxcbitcXHRcXHRibGtfbXFfZnJlZV90YWdfc2V0KFxcdTAwMjZ0YWdfc2V0KTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5AQCAtMjIwMCwxNCArMjE5NCwxNCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXFxuIFxcbiBcXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcXHUwMDI2bnVsbGJfc3Vic3lzKTtcXG4gXFxuLVxcdHVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsIFxcXCJudWxsYlxcXCIpO1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuLVxcdHdoaWxlICghbGlzdF9lbXB0eShcXHUwMDI2bnVsbGJfbGlzdCkpIHtcXG4tXFx0XFx0bnVsbGIgPSBsaXN0X2VudHJ5KG51bGxiX2xpc3QubmV4dCwgc3RydWN0IG51bGxiLCBsaXN0KTtcXG4tXFx0XFx0bnVsbF9kZXN0cm95X2RldihudWxsYik7XFxuK1xcdHNjb3BlZF9ndWFyZChtdXRleCwgXFx1MDAyNmxvY2spIHtcXG4rXFx0XFx0d2hpbGUgKCFsaXN0X2VtcHR5KFxcdTAwMjZudWxsYl9saXN0KSkge1xcbitcXHRcXHRcXHRudWxsYiA9IGxpc3RfZW50cnkobnVsbGJfbGlzdC5uZXh0LCBzdHJ1Y3QgbnVsbGIsIGxpc3QpO1xcbitcXHRcXHRcXHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuK1xcbitcXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcXFwibnVsbGJcXFwiKTtcXG4gXFxuIFxcdGlmICh0YWdfc2V0Lm9wcylcXG4gXFx0XFx0YmxrX21xX2ZyZWVfdGFnX3NldChcXHUwMDI2dGFnX3NldCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDEyOjI0OjE1LjgyODg5MDczM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU1NDIxNzcxNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTlVMTF9CTEtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9wb2xsX3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZVwiLFxuICAgIFwibnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZVwiLFxuICAgIFwibnVsbGJfZ3JvdXBfZHJvcF9pdGVtXCIsXG4gICAgXCJudWxsX2RlbF9kZXZcIixcbiAgICBcIm51bGxfZmluZF9kZXZfYnlfbmFtZVwiLFxuICAgIFwibnVsbF9jcmVhdGVfZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG51bGxfYmxrIGRyaXZlciwgZml4aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIGFkanVzdGluZyBsb2NraW5nIHdpdGggYGd1YXJkKG11dGV4KWAsIGFuZCBjaGFuZ2luZyB0aGUgaW5pdGlhbGl6YXRpb24gb3JkZXIgYW5kIGRldmljZSBkZWxldGlvbiBsb2dpYy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBhIHNvZnR3YXJlIGJsb2NrIGRldmljZSB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZTM5NzhmNmVjYzk2MzRjZTczNTBlOGJiNTIzMDVmMjEzNThjN2IyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMTI6MjQ6MTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uMWMyMGQ3NzNkZDBjOGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHtcbiAjZGVmaW5lIE5VTExCX1BBR0VfRlJFRSAoTUFQX1NaIC0gMilcbiBcbiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpO1xuLXN0YXRpYyBzdHJ1Y3QgbXV0ZXggbG9jaztcbitzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xuIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjtcbiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTtcbiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XG5AQCAtMzQ1LDYgKzM0NSw3IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLFxuIHN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG4gbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVx0XFxcbiB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdGd1YXJkKG11dGV4KShcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coXHRcdFx0XHRcXFxuIFx0XHRcdFx0dG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVx1MDAzZU5BTUUsIHBhZ2UpO1x0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbkBAIC0zNjAsNiArMzYxLDcgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG4gXHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZShcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxuIFx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XFxcbitcdGd1YXJkKG11dGV4KShcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKGFwcGx5X2ZuKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1x0XHRcdFx0XFxcbiBcdGVsc2UgaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSBcdFxcXG5AQCAtMzgyLDYgKzM4NCwxNSBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0aWYgKCFkZXYtXHUwMDNlbnVsbGIpXG4gXHRcdHJldHVybiAwO1xuIFxuK1x0LypcbitcdCAqIEEgc2hhcmVkIHRhZ19zZXQgaXMgbWFwcGVkIHZpYSB0aGUgbW9kdWxlLXdpZGUgcXVldWUgY291bnRzLCBzbyBhXG4rXHQgKiBwZXItZGV2aWNlIHJlc2l6ZSBpcyBtZWFuaW5nbGVzcy4gT24gc2hyaW5rIGl0IHdvdWxkIGFsc28gbGVhdmVcbitcdCAqIG1xX21hcFtdIHBvaW50aW5nIGF0IE5VTExlZCBoY3R4IHNsb3RzLCBjYXVzaW5nIGEgTlVMTCBkZXJlZiBpblxuK1x0ICogYmxrX21xX21hcF9zd3F1ZXVlKCkuIFJlamVjdCBpdC5cbitcdCAqL1xuK1x0aWYgKGRldi1cdTAwM2VzaGFyZWRfdGFncylcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHQvKlxuIFx0ICogTWFrZSBzdXJlIGF0IGxlYXN0IG9uZSBzdWJtaXQgcXVldWUgZXhpc3RzLlxuIFx0ICovXG5AQCAtNDIxLDI1ICs0MzIsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcylcbiB7XG4tXHRpbnQgcmV0O1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXHUwMDNlcG9sbF9xdWV1ZXMpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuLVxuLVx0cmV0dXJuIHJldDtcbitcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbiB9XG4gXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcbkBAIC00NzgsNiArNDc3LDcgQEAgTlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xuIFxuIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbiB7XG4rXHRndWFyZChtdXRleCkoXHUwMDI2bG9jayk7XG4gXHRyZXR1cm4gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2Vwb3dlciwgcGFnZSk7XG4gfVxuIFxuQEAgLTQ5MywxNSArNDkzLDE1IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4gXHRcdHJldHVybiByZXQ7XG4gXG4gXHRyZXQgPSBjb3VudDtcbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4rXHRndWFyZChtdXRleCkoXHUwMDI2bG9jayk7XG4gXHRpZiAoIWRldi1cdTAwM2Vwb3dlciBcdTAwMjZcdTAwMjYgbmV3cCkge1xuIFx0XHRpZiAodGVzdF9hbmRfc2V0X2JpdChOVUxMQl9ERVZfRkxfVVAsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpXG4tXHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0cmV0dXJuIHJldDtcbiBcbiBcdFx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XG4gXHRcdGlmIChyZXQpIHtcbiBcdFx0XHRjbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuLVx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdHJldHVybiByZXQ7XG4gXHRcdH1cbiBcbiBcdFx0c2V0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbkBAIC01MTUsOCArNTE1LDYgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbiBcdFx0Y2xlYXJfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIFxuLW91dDpcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTU4MCw2ICs1NzgsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4ge1xuIFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xuIFxuK1x0Z3VhcmQobXV0ZXgpKFx1MDAyNmxvY2spO1xuIFx0cmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX1JFQURPTkxZKTtcbiB9XG4gQ09ORklHRlNfQVRUUl9XTyhudWxsYl9kZXZpY2VfLCB6b25lX3JlYWRvbmx5KTtcbkBAIC01ODksNiArNTg4LDcgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4ge1xuIFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xuIFxuK1x0Z3VhcmQobXV0ZXgpKFx1MDAyNmxvY2spO1xuIFx0cmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX09GRkxJTkUpO1xuIH1cbiBDT05GSUdGU19BVFRSX1dPKG51bGxiX2RldmljZV8sIHpvbmVfb2ZmbGluZSk7XG5AQCAtNzA3LDEwICs3MDcsOSBAQCBudWxsYl9ncm91cF9kcm9wX2l0ZW0oc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsIHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcbiBcdHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiA9IHRvX251bGxiX2RldmljZShpdGVtKTtcbiBcbiBcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4rXHRcdGd1YXJkKG11dGV4KShcdTAwMjZsb2NrKTtcbiBcdFx0ZGV2LVx1MDAzZXBvd2VyID0gZmFsc2U7XG4gXHRcdG51bGxfZGVsX2RldihkZXYtXHUwMDNlbnVsbGIpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4gXHR9XG4gXHRudWxsYl9kZWxfZmF1bHRfY29uZmlnKGRldik7XG4gXHRjb25maWdfaXRlbV9wdXQoaXRlbSk7XG5AQCAtODM2LDcgKzgzNSw2IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuIFx0aWYgKCFkZXYpXG4gXHRcdHJldHVybjtcbiBcbi1cdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGJhZGJsb2Nrc19leGl0KFx1MDAyNmRldi1cdTAwM2ViYWRibG9ja3MpO1xuIFx0a2ZyZWUoZGV2KTtcbiB9XG5AQCAtMTc3MCwxOCArMTc2OCwxOSBAQCBzdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcbiBcbiBcdGRlbF9nZW5kaXNrKG51bGxiLVx1MDAzZWRpc2spO1xuIFxuLVx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VmbGFncykpIHtcbitcdGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdGhydGltZXJfY2FuY2VsKFx1MDAyNm51bGxiLVx1MDAzZWJ3X3RpbWVyKTtcbiBcdFx0YXRvbWljX2xvbmdfc2V0KFx1MDAyNm51bGxiLVx1MDAzZWN1cl9ieXRlcywgTE9OR19NQVgpO1xuIFx0XHRibGtfbXFfc3RhcnRfc3RvcHBlZF9od19xdWV1ZXMobnVsbGItXHUwMDNlcSwgdHJ1ZSk7XG4gXHR9XG4gXG4gXHRwdXRfZGlzayhudWxsYi1cdTAwM2VkaXNrKTtcbitcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGlmIChudWxsYi1cdTAwM2V0YWdfc2V0ID09IFx1MDAyNm51bGxiLVx1MDAzZV9fdGFnX3NldClcbiBcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi1cdTAwM2V0YWdfc2V0KTtcbiBcdGtmcmVlKG51bGxiLVx1MDAzZXF1ZXVlcyk7XG4gXHRpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKVxuLVx0XHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UobnVsbGItXHUwMDNlZGV2LCB0cnVlKTtcbitcdFx0bnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKGRldiwgdHJ1ZSk7XG4gXHRrZnJlZShudWxsYik7XG4gXHRkZXYtXHUwMDNlbnVsbGIgPSBOVUxMO1xuIH1cbkBAIC0yMDgxLDE0ICsyMDgwLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxuIHtcbiBcdHN0cnVjdCBudWxsYiAqbnVsbGIgPSBOVUxMLCAqbmI7XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuK1x0Z3VhcmQobXV0ZXgpKFx1MDAyNmxvY2spO1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeShuYiwgXHUwMDI2bnVsbGJfbGlzdCwgbGlzdCkge1xuIFx0XHRpZiAoc3RyY21wKG5iLVx1MDAzZWRpc2tfbmFtZSwgbmFtZSkgPT0gMCkge1xuIFx0XHRcdG51bGxiID0gbmI7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdH1cbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcbiBcdHJldHVybiBudWxsYjtcbiB9XG5AQCAtMjEwMiw5ICsyMTAwLDkgQEAgc3RhdGljIGludCBudWxsX2NyZWF0ZV9kZXYodm9pZClcbiBcdGlmICghZGV2KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbitcdHNjb3BlZF9ndWFyZChtdXRleCwgXHUwMDI2bG9jaykge1xuK1x0XHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcbitcdH1cbiBcdGlmIChyZXQpIHtcbiBcdFx0bnVsbF9mcmVlX2RldihkZXYpO1xuIFx0XHRyZXR1cm4gcmV0O1xuQEAgLTIxNjIsMTcgKzIxNjAsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdGNvbmZpZ19ncm91cF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XG4gXHRtdXRleF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XG4gXG4tXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRtdXRleF9pbml0KFx1MDAyNmxvY2spO1xuLVxuIFx0bnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCBcIm51bGxiXCIpO1xuLVx0aWYgKG51bGxfbWFqb3IgXHUwMDNjIDApIHtcbi1cdFx0cmV0ID0gbnVsbF9tYWpvcjtcbi1cdFx0Z290byBlcnJfY29uZjtcbi1cdH1cbitcdGlmIChudWxsX21ham9yIFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gbnVsbF9tYWpvcjtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2RldmljZXM7IGkrKykge1xuIFx0XHRyZXQgPSBudWxsX2NyZWF0ZV9kZXYoKTtcbkBAIC0yMTgwLDYgKzIxNzAsMTAgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRcdFx0Z290byBlcnJfZGV2O1xuIFx0fVxuIFxuK1x0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4rXHRpZiAocmV0KVxuK1x0XHRnb3RvIGVycl9kZXY7XG4rXG4gXHRwcl9pbmZvKFwibW9kdWxlIGxvYWRlZFxcblwiKTtcbiBcdHJldHVybiAwO1xuIFxuQEAgLTIxODksOCArMjE4Myw4IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0XHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcbiBcdH1cbiBcdHVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsIFwibnVsbGJcIik7XG4tZXJyX2NvbmY6XG4tXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuK1x0aWYgKHRhZ19zZXQub3BzKVxuK1x0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtMjIwMCwxNCArMjE5NCwxNCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXG4gXG4gXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuIFxuLVx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCJudWxsYlwiKTtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHR3aGlsZSAoIWxpc3RfZW1wdHkoXHUwMDI2bnVsbGJfbGlzdCkpIHtcbi1cdFx0bnVsbGIgPSBsaXN0X2VudHJ5KG51bGxiX2xpc3QubmV4dCwgc3RydWN0IG51bGxiLCBsaXN0KTtcbi1cdFx0bnVsbF9kZXN0cm95X2RldihudWxsYik7XG4rXHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNmxvY2spIHtcbitcdFx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNm51bGxiX2xpc3QpKSB7XG4rXHRcdFx0bnVsbGIgPSBsaXN0X2VudHJ5KG51bGxiX2xpc3QubmV4dCwgc3RydWN0IG51bGxiLCBsaXN0KTtcbitcdFx0XHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcbitcdFx0fVxuIFx0fVxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuK1xuK1x0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCJudWxsYlwiKTtcbiBcbiBcdGlmICh0YWdfc2V0Lm9wcylcbiBcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChcdTAwMjZ0YWdfc2V0KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDEyOjI0OjE1LjgyODg5MjI4M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MDcxMzkzOTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE51bGwgQmxvY2sgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBJbW1lZGlhdGVseSwgSSBzZWUgaXQncyByZXBsYWNpbmcgYG11dGV4X2xvY2tgL2BtdXRleF91bmxvY2tgIHdpdGggYGd1YXJkKG11dGV4KShcdTAwMjZsb2NrKWAgYW5kIGBzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNmxvY2spYC4gVGhhdCdzIGEgc2lnbmlmaWNhbnQgc2hpZnQgaW4gbG9ja2luZyBzdHJhdGVneSwgaGludGluZyBhdCBhIHBvdGVudGlhbCBjaGFuZ2UgaW4gaG93IGNvbmN1cnJlbmN5IGlzIGhhbmRsZWQsIG9yIGFuIGF0dGVtcHQgdG8gc2ltcGxpZnkgbG9jayBtYW5hZ2VtZW50LCB3aGljaCBjb3VsZCBiZSBhIGdvb2QgdGhpbmcuIFRoZSBhZGRpdGlvbiBvZiB0aGF0IGNoZWNrIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCDigJMgYGlmIChkZXYtXHUwMDNlc2hhcmVkX3RhZ3MpIHJldHVybiAtRUlOVkFMO2Ag4oCTIGlzIGludGVyZXN0aW5nLiBJdCdzIGxpa2VseSByZWxhdGVkIHRvIHNvbWUgbmV3IGNvbnN0cmFpbnQgb3IgcmVzdHJpY3Rpb24gb24gaGFyZHdhcmUgcXVldWUgY29uZmlndXJhdGlvbnMuIEFuZCB0aGUgcmVhcnJhbmdlbWVudCBvZiBgbnVsbF9mcmVlX3pvbmVkX2RldmAsIG1vdmluZyBpdCBmcm9tIGBudWxsX2ZyZWVfZGV2YCB0byBgbnVsbF9kZWxfZGV2YCwgdGhhdCdzIGRlZmluaXRlbHkgYSBtZW1vcnkgbWFuYWdlbWVudCB0d2VhayBJIG5lZWQgdG8gbG9vayBjbG9zZXIgYXQuXG5cbk5vdywgaXMgdGhpcyBwYXRjaCB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBJdOKAmXMgdGhlIG51bGwgYmxvY2sgZGV2aWNlIGRyaXZlciwgd2hpY2gsIGFzIEkga25vdywgaXMgYSBzdGFwbGUgaW4gYSBsb3Qgb2YgdGVzdGluZyBlbnZpcm9ubWVudHMgYW5kIHZpcnR1YWxpemF0aW9uIHNldHVwcy4gVG90YWxseSByZWFjaGFibGUuIEdpdmVuIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBuZXcgbG9ja2luZyBtZWNoYW5pc21zLCB0aGF0IGVycm9yIGhhbmRsaW5nIGNoZWNrLCBhbmQgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGFsdGVyYXRpb25zLCB0aGVyZSdzIGEgc3Ryb25nIGNoYW5jZSB0aGlzIGNvdWxkIGludHJvZHVjZSBjb25jdXJyZW5jeSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgc2NlbmFyaW9zLCBvciBpdCBtaWdodCBiZSBmaXhpbmcgZXhpc3Rpbmcgb25lcy4gRnV6emluZyB0aGlzIGlzIGEgbm8tYnJhaW5lcjsgdGhlIHBvdGVudGlhbCBmb3IgdW5jb3ZlcmluZyBzdWJ0bGUgaXNzdWVzIGlzIGhpZ2guXG5cblRpbWUgdG8gZ3JhYiB0aGUgY29uZmlnIG9wdGlvbnMuIExldCdzIHN0YXJ0IHdpdGggYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvYCBhbmQgZGlnIGludG8gS2NvbmZpZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk4OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDEyOjI0OjMxLjkwMDI4OTEwMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTk5ODU4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9OVUxMX0JMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6Njpjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cXHRib29sIFxcXCJTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTI6MjQ6MzEuOTYwMjkzNzc3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODAwODEwNjU1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiB0aGUgQ29yZSBDaGFuZ2VzIGluIHRoZSBgQkxLX0RFVl9OVUxMX0JMS2AgQ29uZmlnKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gYEJMS19ERVZfTlVMTF9CTEtgLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHplcm8gaW4gb24gdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gSGVyZSdzIHdoYXQgSSd2ZSBnb3Q6XG5cbiogICBgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZWAgKG1hY3JvLWdlbmVyYXRlZCwgbGlrZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYClcbiogICBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgXG4qICAgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWBcbiogICBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgXG4qICAgYG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmVgXG4qICAgYG51bGxiX2dyb3VwX2Ryb3BfaXRlbWBcbiogICBgbnVsbF9mcmVlX2RldmBcbiogICBgbnVsbF9kZWxfZGV2YFxuKiAgIGBudWxsX2ZpbmRfZGV2X2J5X25hbWVgXG4qICAgYG51bGxfY3JlYXRlX2RldmBcbiogICBgbnVsbF9pbml0YFxuKiAgIGBudWxsX2V4aXRgXG4qICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgXG4qICAgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgXG4qICAgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYFxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCB3aGljaCBvZiB0aGVzZSBhcmUgdGhlIG1vc3QgaW50ZXJlc3RpbmcgdG8gYW5hbHl6ZSwgZXNwZWNpYWxseSBmb3IgZnV6emluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggYXJlIGRpcmVjdGx5IHJlYWNoYWJsZSwgb3IgcG90ZW50aWFsIGVudHJ5IHBvaW50cy4gVGhlIGNvbmZpZ2ZzIGZ1bmN0aW9ucyBjb21lIHRvIG1pbmQuIEkga25vdyB0aGV5J3JlIHRlY2huaWNhbGx5IHN0YXRpYywgYnV0IHRoZXkncmUgcmVnaXN0ZXJlZCBhcyBjYWxsYmFja3MsIGFuZCBJJ20gcHJldHR5IHN1cmUgc3l6a2FsbGVyIGNhbiByZWFjaCB0aGVtLiBCdXQsIG1heWJlLCBJIHNob3VsZCBmb2N1cyBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRoZW1zZWx2ZXMuXG5cblNvLCBsZXQncyBmaWx0ZXIgb3V0IHRoZSBpbml0L2V4aXQgZnVuY3Rpb25zIGFuZCBzZWUgd2hhdCB3ZSBoYXZlLiBBbHNvLCBJIG5lZWQgdG8ga25vdyB3aGljaCBvZiB0aGVzZSBhcmUgc3RhdGljLCBhbmQgd2hldGhlciB0aGV5J3JlIGlubGluZWQuXG5cblRoZSBmdW5jdGlvbnMgbGVmdCBhcmU6XG5cbiogICBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYFxuKiAgIGBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZWBcbiogICBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWBcbiogICBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYFxuKiAgIGBudWxsX2ZyZWVfZGV2YFxuKiAgIGBudWxsX2RlbF9kZXZgXG4qICAgYG51bGxfZmluZF9kZXZfYnlfbmFtZWBcbiogICBgbnVsbF9jcmVhdGVfZGV2YFxuKiAgIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYFxuKiAgIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYFxuKiAgIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2BcblxuTGV0J3MgY2hlY2sgaWYgdGhleSdyZSBzdGF0aWMgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB3aGV0aGVyIHRoZXkgbWlnaHQgYmUgaW5saW5lZC4gSSBuZWVkIHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucywgYXMgdGhlIGluc3RydWN0aW9ucyBzdGF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc5NSwiT3V0cHV0VG9rZW5zIjoxMzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTI6MjQ6MzkuOTY4NDAyNjU3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MTI1MTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm51bGxiX2RldmljZV9wb3dlcl9zdG9yZXxudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZXxudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlfG51bGxiX2dyb3VwX2Ryb3BfaXRlbXxudWxsX2ZyZWVfZGV2fG51bGxfZGVsX2RldnxudWxsX2ZpbmRfZGV2X2J5X25hbWV8bnVsbF9jcmVhdGVfZGV2fG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXN8bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc3xudWxsYl9hcHBseV9wb2xsX3F1ZXVlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yNzM9c3RhdGljIHN0cnVjdCBudWxsYl9kZXZpY2UgKm51bGxfYWxsb2NfZGV2KHZvaWQpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI3NDpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc1OnN0YXRpYyB2b2lkIG51bGxfZGVsX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yNzYtc3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzc6c3RhdGljIHN0cnVjdCBudWxsYiAqbnVsbF9maW5kX2Rldl9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI3ODpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2Uoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LCBib29sIGlzX2NhY2hlKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yNzktXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0zNzQ9Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNzUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mzc2OnN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzc3LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzEtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDMyOnN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDMzLVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDM0LXtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0MzU6XFx0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXFx1MDAzZXBvbGxfcXVldWVzKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzYtfVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQzNy1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Mzg6c3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDM5LVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcylcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NDAte1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0MTpcXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ0Mi19XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00NDU9TlVMTEJfREVWSUNFX0FUVFIoY29tcGxldGlvbl9uc2VjLCB1bG9uZywgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ2Ok5VTExCX0RFVklDRV9BVFRSKHN1Ym1pdF9xdWV1ZXMsIHVpbnQsIG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0NzpOVUxMQl9ERVZJQ0VfQVRUUihwb2xsX3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ0OC1OVUxMQl9ERVZJQ0VfQVRUUihob21lX25vZGUsIHVpbnQsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDc4PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4My1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODQ6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODUtXFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MTItXFx0XFx0XFx0ZGV2LVxcdTAwM2Vwb3dlciA9IG5ld3A7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTEzOlxcdFxcdFxcdG51bGxfZGVsX2RldihkZXYtXFx1MDAzZW51bGxiKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MTQtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTc0PUNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgYmFkYmxvY2tzKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01NzUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTc2OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01NzctXFx0XFx0XFx0XFx0XFx0XFx0Y29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTg0PUNPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9yZWFkb25seSk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTg1LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjU4NjpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODctXFx0XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTYzNz1zdGF0aWMgdm9pZCBudWxsYl9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02NDAtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NjQxOlxcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIGZhbHNlKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2NDI6XFx0bnVsbF9mcmVlX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY0My19XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz02ODc9Y29uZmlnX2dyb3VwICpudWxsYl9ncm91cF9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjkwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY5MTpcXHRpZiAobnVsbF9maW5kX2Rldl9ieV9uYW1lKG5hbWUpKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY5Mi1cXHRcXHRyZXR1cm4gRVJSX1BUUigtRUVYSVNUKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTcwND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjcwNTpudWxsYl9ncm91cF9kcm9wX2l0ZW0oc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsIHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MDYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzExLVxcdFxcdGRldi1cXHUwMDNlcG93ZXIgPSBmYWxzZTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3MTI6XFx0XFx0bnVsbF9kZWxfZGV2KGRldi1cXHUwMDNlbnVsbGIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTcxMy1cXHR9XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03NTE9c3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdmc19ncm91cF9vcGVyYXRpb25zIG51bGxiX2dyb3VwX29wcyA9IHtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03NTItXFx0Lm1ha2VfZ3JvdXBcXHQ9IG51bGxiX2dyb3VwX21ha2VfZ3JvdXAsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzUzOlxcdC5kcm9wX2l0ZW1cXHQ9IG51bGxiX2dyb3VwX2Ryb3BfaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03NTQtfTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc3Nj1zdGF0aWMgc3RydWN0IG51bGxiX2RldmljZSAqbnVsbF9hbGxvY19kZXYodm9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTgzMi1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4MzM6c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODM0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTkyND1zdGF0aWMgc3RydWN0IG51bGxiX3BhZ2UgKm51bGxfcmFkaXhfdHJlZV9pbnNlcnQoc3RydWN0IG51bGxiICpudWxsYiwgdTY0IGlkeCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk0MC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo5NDE6c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwgYm9vbCBpc19jYWNoZSlcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05NDIte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTc0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGJsa19tcV9vcHMgbnVsbF9tcV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzU1LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE3NTY6c3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTc1Ny17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzgyLVxcdGlmIChudWxsX2NhY2hlX2FjdGl2ZShudWxsYikpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTc4MzpcXHRcXHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UoZGV2LCB0cnVlKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzg0LVxcdGtmcmVlKG51bGxiKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE5NTQ9c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA3OC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDc5OnN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwODAte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA5My1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDk0OnN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA5NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTA2LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTA3OlxcdFxcdG51bGxfZnJlZV9kZXYoZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTA4LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMTE0PXN0YXRpYyB2b2lkIG51bGxfZGVzdHJveV9kZXYoc3RydWN0IG51bGxiICpudWxsYilcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMTctXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjExODpcXHRudWxsX2RlbF9kZXYobnVsbGIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxMTk6XFx0bnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKGRldiwgZmFsc2UpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxMjA6XFx0bnVsbF9mcmVlX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMjEtfVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjEyMz1zdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxNjctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX2RldmljZXM7IGkrKykge1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxNjg6XFx0XFx0cmV0ID0gbnVsbF9jcmVhdGVfZGV2KCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjE2OS1cXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMjoyNDo0MC4wMzQ1MzM1NDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTEzODAwNjMyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgbnVsbF9ibGsgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIHRhcmdldGVkIGF0IGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AsIHdoaWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQncyBhIHNvZnR3YXJlIGJsb2NrIGRldmljZS4gVGhhdCBtYWtlcyBpdCByZWFkaWx5IGFjY2Vzc2libGUgaW4gYSBRRU1VIGVudmlyb25tZW50LCB3aGljaCBpcyBnb29kIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLlxuXG5GaXJzdCB0aGluZ3MgZmlyc3QsIGl0IGxvb2tzIGxpa2UgdGhleSdyZSBiZWVmaW5nIHVwIHRoZSBsb2NraW5nIG1lY2hhbmlzbS4gVGhlIGNoYW5nZSBmcm9tIGBzdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7YCB0byBgc3RhdGljIERFRklORV9NVVRFWChsb2NrKTtgIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIHVzZSBvZiBgZ3VhcmQobXV0ZXgpKFx1MDAyNmxvY2spO2AgYW5kIGBzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNmxvY2spYCB0aHJvdWdob3V0IHRoZSBjb2RlIGJhc2UgaW4gZnVuY3Rpb25zIGxpa2UgYG51bGxiX2RldmljZV8jI05BTUUjI19zaG93YCwgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAsIGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AsIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLCBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgLCBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWAsIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gLCBgbnVsbF9maW5kX2Rldl9ieV9uYW1lYCwgYG51bGxfY3JlYXRlX2RldmAsIGFuZCBgbnVsbF9leGl0YCBzdWdnZXN0cyB0aGV5J3JlIGFpbWluZyBmb3IgbW9yZSByb2J1c3QgcHJvdGVjdGlvbiBhcm91bmQgY3JpdGljYWwgc2VjdGlvbnMuIFRoaXMgY291bGQgYmUgZHVlIHRvIHJhY2UgY29uZGl0aW9ucyBmb3VuZCBpbiBwcmV2aW91cyBkZXZlbG9wbWVudCBlZmZvcnRzLCBvciBzaW1wbHkgYXMgYW4gZWZmb3J0IHRvIGVuc3VyZSB0aGlzIGRldmljZSBpcyBzYWZlIGZvciBoaWdoLWNvbmN1cnJlbmN5IHVzYWdlcy5cblxuVGhlIGFkZGl0aW9uIG9mIHRoZSBjaGVjayBpbiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2A6XG5gYGBjXG5cdGlmIChkZXYtXHUwMDNlc2hhcmVkX3RhZ3MpXG5cdFx0cmV0dXJuIC1FSU5WQUw7XG5gYGBcbmltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgZXllLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgdHJ5aW5nIHRvIHByZXZlbnQgc29tZSBraW5kIG9mIGludmFsaWQgc3RhdGUgcmVsYXRlZCB0byBzaGFyZWQgdGFncyB3aGljaCBjb3VsZCBiZSBwcm9ibGVtYXRpYy4gQ291bGQgYmUgYSBwb3RlbnRpYWwgTlVMTCBkZXJlZmVyZW5jZSwgb3IgcG9zc2libHkgYSByZXNvdXJjZSBtYW5hZ2VtZW50IGlzc3VlLlxuXG5UaGUgcmVtb3ZhbCBvZiBgbXV0ZXhfbG9jayhcdTAwMjZsb2NrKWAgYW5kIGBtdXRleF91bmxvY2soXHUwMDI2bG9jaylgIGZyb20gYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgIGFuZCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgIGlzIGN1cmlvdXMuIFdoZXJlIGhhcyB0aGF0IGxvZ2ljIG1pZ3JhdGVkIHRvPyBQZXJoYXBzIHRoZSBgZ3VhcmRgIGFuZCBgc2NvcGVkX2d1YXJkYCBtYWNyb3MgYXJlIG5vdyBoYW5kbGluZyB0aGUgbG9ja2luZyBhdCBhIGhpZ2hlciBsZXZlbCwgd2hpY2ggY291bGQgc2ltcGxpZnkgdGhlIGNvZGUgYW5kIHJlZHVjZSB0aGUgcmlzayBvZiBtaXNzZWQgdW5sb2Nrcy5cblxuVGhlbiB0aGVyZSdzIHRoZSBtb3ZlIG9mIGBudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7YCBmcm9tIGBudWxsX2ZyZWVfZGV2YCB0byBgbnVsbF9kZWxfZGV2YC4gVGhhdCdzIGEgZGVmaW5pdGUgc3RydWN0dXJhbCBjaGFuZ2UuIFRoZSBzdWJzZXF1ZW50IGZpeCBpbiBgbnVsbF9kZWxfZGV2YCB3aGVyZSB0aGV5IGNvcnJlY3QgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnkgY2hhbmdpbmcgYG51bGxiLVx1MDAzZWRldmAgdG8gYGRldi1cdTAwM2VmbGFnc2AgYW5kIGBkZXZgIGNvbmZpcm1zIHRoZXJlIHdhcyBhIHJlYWwgaXNzdWUgaGVyZSwgdXNpbmcgdGhlIGRldmljZSBhZnRlciBpdCB3YXMgcG90ZW50aWFsbHkgZnJlZWQuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYW5kIHNvbWV0aGluZyB0aGF0IGRlbWFuZHMgY2xvc2VyIGluc3BlY3Rpb24uXG5cbkZpbmFsbHksIHRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBjaGFuZ2VzIGluIGBudWxsX2luaXRgLCB3aXRoIGByZWdpc3Rlcl9ibGtkZXZgIG5vdyBiZWZvcmUgYG51bGxfY3JlYXRlX2RldmAgYW5kIGBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW1gIGFmdGVyIGBudWxsX2NyZWF0ZV9kZXZgLCBwcm9iYWJseSBoYXMgdG8gZG8gd2l0aCBkZXBlbmRlbmNpZXMgYW5kIGRldmljZSByZWdpc3RyYXRpb24uIFRoaXMgY291bGQgYmUgdG8gZG8gd2l0aCByZXNvbHZpbmcgc29tZSBkZXBlbmRlbmNpZXMgaW4gdGhlIG9yZGVyIG9mIGluaXRpYWxpemF0aW9uLlxuXG5Pa2F5LCBpcyB0aGlzIGZ1enphYmxlPyBBYnNvbHV0ZWx5LiBUaGlzIGRyaXZlciBpcyByZWFjaGFibGUsIHRoZSBjaGFuZ2VzIGluY2x1ZGUgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcywgYW5kIGxvY2tpbmcgbW9kaWZpY2F0aW9ucyDigJMgYWxsIG9mIHdoaWNoIGFyZSBmZXJ0aWxlIGdyb3VuZCBmb3IgZnV6emluZy4gSSBjYW4gaW1hZ2luZSBjcmVhdGluZyBkZXZpY2VzIGFuZCB3cml0aW5nIHRvIHN5c2ZzIGF0dHJpYnV0ZXMgdG8gdHJ5IHRvIHRyaWdnZXIgdGhlc2UgY2hhbmdlcyBpbiB0aGUgbG9ja2luZyBzZW1hbnRpY3MuXG5cblNvLCBsZXQncyBpZGVudGlmeSByZWxldmFudCBzeW1ib2xzOlxuXG4qICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgOiBUaGlzIGlzIGFuIGludGVyZXN0aW5nIG9uZSBiZWNhdXNlIGl0IGlzIHN0YXRpYywgYnV0IGlzIHVzZWQgYnkgdGhlIHN1Ym1pdC9wb2xsIGZ1bmN0aW9ucy5cbiogICBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2A6IFN0YXRpYywgYnV0IHVzZWQgYXMgYSBjYWxsYmFjaywgd2hpY2ggbWlnaHQgbWFrZSBpdCBhY2Nlc3NpYmxlLlxuKiAgIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2A6IFN0YXRpYywgc2ltaWxhciB0byB0aGUgYWJvdmUuXG4qICAgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWBcbiogICBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgXG4qICAgYG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmVgXG4qICAgYG51bGxiX2dyb3VwX2Ryb3BfaXRlbWBcbiogICBgbnVsbF9kZWxfZGV2YDogVGhlIHVzZS1hZnRlci1mcmVlIGZpeCBtYWtlcyB0aGlzIGNyaXRpY2FsLlxuKiAgIGBudWxsX2ZpbmRfZGV2X2J5X25hbWVgXG4qICAgYG51bGxfY3JlYXRlX2RldmBcblxuVGhlIGNvbmZpZyBpcyBgQkxLX0RFVl9OVUxMX0JMS2AuXG5cblRoZSBjb25maWdmcyBzdG9yZSBmdW5jdGlvbnMgbG9vayBwcm9taXNpbmcg4oCTIHRoZXkncmUgYWNjZXNzZWQgdGhyb3VnaCBzeXNmcywgd2hpY2ggc3l6a2FsbGVyIGNhbiBkZWZpbml0ZWx5IHRhcmdldC4gQWx0aG91Z2ggc3RhdGljLCB0aGV5IGFyZSBlbnRyeSBwb2ludHMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHRocm91Z2ggdGhlIGZpbGVzeXN0ZW0gaW50ZXJmYWNlLiBTbywgSSB3aWxsIGZvY3VzIG9uIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIHByb3ZpZGUgdGhlIHNldC1yZXN1bHRzOlxuXG4qICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgXG4qICAgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWBcbiogICBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgXG4qXG5cbiIsIklucHV0VG9rZW5zIjo4OTcwLCJPdXRwdXRUb2tlbnMiOjIyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTI6MjU6MTEuMTcyNTQ2Njg4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODExMjI1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3BvbGxfcXVldWVzXCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlXCIsXG4gICAgXCJudWxsYl9ncm91cF9kcm9wX2l0ZW1cIixcbiAgICBcIm51bGxfZGVsX2RldlwiLFxuICAgIFwibnVsbF9maW5kX2Rldl9ieV9uYW1lXCIsXG4gICAgXCJudWxsX2NyZWF0ZV9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyLCBmaXhpbmcgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgYWRqdXN0aW5nIGxvY2tpbmcgd2l0aCBgZ3VhcmQobXV0ZXgpYCwgYW5kIGNoYW5naW5nIHRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBhbmQgZGV2aWNlIGRlbGV0aW9uIGxvZ2ljLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGEgc29mdHdhcmUgYmxvY2sgZGV2aWNlIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3BvbGxfcXVldWVzXCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlXCIsXG4gICAgXCJudWxsYl9ncm91cF9kcm9wX2l0ZW1cIixcbiAgICBcIm51bGxfZGVsX2RldlwiLFxuICAgIFwibnVsbF9maW5kX2Rldl9ieV9uYW1lXCIsXG4gICAgXCJudWxsX2NyZWF0ZV9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyLCBmaXhpbmcgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgYWRqdXN0aW5nIGxvY2tpbmcgd2l0aCBgZ3VhcmQobXV0ZXgpYCwgYW5kIGNoYW5naW5nIHRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBhbmQgZGV2aWNlIGRlbGV0aW9uIGxvZ2ljLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGEgc29mdHdhcmUgYmxvY2sgZGV2aWNlIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8mphq[1] Phase: Succeeded StartedAt: 2026-07-26 12:25:22 +0000 UTC FinishedAt: 2026-07-26 12:25:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-26 12:25:22 +0000 UTC FinishedAt: 2026-07-26 12:25:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2] Phase: Succeeded StartedAt: 2026-07-26 12:25:22 +0000 UTC FinishedAt: 2026-07-26 16:47:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-26 12:25:22 +0000 UTC FinishedAt: 2026-07-26 16:47:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-26 12:25:22 +0000 UTC FinishedAt: 2026-07-26 12:25:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-26 12:25:22 +0000 UTC FinishedAt: 2026-07-26 12:25:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-convert-artifact-788001675/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-26 12:25:32 +0000 UTC FinishedAt: 2026-07-26 13:00:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-26 12:25:32 +0000 UTC FinishedAt: 2026-07-26 13:00:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5b252eb4-9409-4a27-8e51-dfeced42537f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-convert-artifact-788001675/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "d2db8119-dd18-49c9-a29a-a98ba177385f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-build-action-3292262025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-26 12:25:32 +0000 UTC FinishedAt: 2026-07-26 13:00:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5b252eb4-9409-4a27-8e51-dfeced42537f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-convert-artifact-788001675/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "d2db8119-dd18-49c9-a29a-a98ba177385f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-build-action-3292262025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-26 13:00:44 +0000 UTC FinishedAt: 2026-07-26 13:00:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-26 13:00:44 +0000 UTC FinishedAt: 2026-07-26 13:00:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-26 13:00:44 +0000 UTC FinishedAt: 2026-07-26 13:00:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-26 13:00:44 +0000 UTC FinishedAt: 2026-07-26 13:00:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-convert-artifact-324476898/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-26 13:00:54 +0000 UTC FinishedAt: 2026-07-26 13:02:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-26 13:00:54 +0000 UTC FinishedAt: 2026-07-26 13:02:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d2db8119-dd18-49c9-a29a-a98ba177385f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-build-action-3292262025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-26 13:02:53 +0000 UTC FinishedAt: 2026-07-26 13:02:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-26 13:02:53 +0000 UTC FinishedAt: 2026-07-26 13:02:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-26 13:02:53 +0000 UTC FinishedAt: 2026-07-26 13:43:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-26 13:02:53 +0000 UTC FinishedAt: 2026-07-26 13:43:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5b252eb4-9409-4a27-8e51-dfeced42537f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-convert-artifact-324476898/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "e9e8a5cb-cf53-46e3-a726-1c8de577a84e", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-build-action-1935248438/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-26 13:02:53 +0000 UTC FinishedAt: 2026-07-26 13:43:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5b252eb4-9409-4a27-8e51-dfeced42537f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-convert-artifact-324476898/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "e9e8a5cb-cf53-46e3-a726-1c8de577a84e", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-build-action-1935248438/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-26 13:43:31 +0000 UTC FinishedAt: 2026-07-26 13:43:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-26 13:43:31 +0000 UTC FinishedAt: 2026-07-26 13:43:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-26 13:43:31 +0000 UTC FinishedAt: 2026-07-26 13:45:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-26 13:43:31 +0000 UTC FinishedAt: 2026-07-26 13:45:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e9e8a5cb-cf53-46e3-a726-1c8de577a84e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-build-action-1935248438/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-26 13:45:33 +0000 UTC FinishedAt: 2026-07-26 16:47:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-26 13:45:33 +0000 UTC FinishedAt: 2026-07-26 16:47:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*d2db8119-dd18-49c9-a29a-a98ba177385f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e9e8a5cb-cf53-46e3-a726-1c8de577a84e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-build-action-3292262025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-build-action-1935248438/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-26 13:45:33 +0000 UTC FinishedAt: 2026-07-26 13:45:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-26 13:45:33 +0000 UTC FinishedAt: 2026-07-26 13:45:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-convert-artifact-1087181335/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-26 13:45:33 +0000 UTC FinishedAt: 2026-07-26 13:45:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-26 13:45:33 +0000 UTC FinishedAt: 2026-07-26 13:45:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-26 13:45:33 +0000 UTC FinishedAt: 2026-07-26 13:45:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-26 13:45:43 +0000 UTC FinishedAt: 2026-07-26 16:47:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mphq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","nullb_group_drop_item","null_del_dev","null_find_dev_by_name","null_create_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"3cbcd24c-2ce5-4928-a6b1-a894e00da13a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-26 13:45:43 +0000 UTC FinishedAt: 2026-07-26 16:47:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d2db8119-dd18-49c9-a29a-a98ba177385f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e9e8a5cb-cf53-46e3-a726-1c8de577a84e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-build-action-3292262025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-build-action-1935248438/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8mphq/series-workflow8mphq-convert-artifact-1087181335/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}