Name: series-workflow9x4cf Phase: Succeeded StartedAt: 2026-08-13 14:51:09 +0000 UTC FinishedAt: 2026-08-13 16:32:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[0] Phase: Succeeded StartedAt: 2026-08-13 14:51:09 +0000 UTC FinishedAt: 2026-08-13 14:53:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 14:51:09 +0000 UTC FinishedAt: 2026-08-13 14:53:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "f5bbbfec59b4e2fb7520a91de3df8a6174325d6a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "f5bbbfec59b4e2fb7520a91de3df8a6174325d6a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB" ], "series_id": "7207b8ee-eaea-48ad-84d5-ab75ca8b0314" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phy_device_register", "phy_device_remove", "phy_device_create", "get_phy_device" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE0OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0OywKICAgICYjMzQ7Z2V0X3BoeV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmb2N1c2VzIGVudGlyZWx5IG9uIGZpeGluZyByZXNvdXJjZSBsZWFrcyBhbmQgaW5jb3JyZWN0IGNsZWFudXAgb3JkZXIgb24gZXJyb3IgcGF0aHMgaW4gdGhlIFBIWSBkZXZpY2UgZHJpdmVyIChlLmcuLCBwcm9wZXJseSBkZXN0cm95aW5nIHBvcnRzLCByZWxlYXNpbmcgU0ZQIHJlc291cmNlcywgYW5kIGNhbGxpbmcgdGhlIGRyaXZlciYjMzk7cyByZW1vdmUgY2FsbGJhY2sgb24gZmFpbHVyZSkuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBrbWVtbGVhay4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIG5vciBhbnkgY29udHJvbCBmbG93IGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIGluIGRyaXZlciBwcm9iZS9yZW1vdmUgcGF0aHMgKHBoeV9wcm9iZSwgcGh5X3JlbW92ZSkgYW5kIHBvcnQgc2V0dXAgZnVuY3Rpb25zLiBUaGVzZSBhcmUgcmVhY2hhYmxlIHdoZW4gUEhZIGRldmljZXMgYXJlIHJlZ2lzdGVyZWQgYW5kIGJvdW5kIHRvIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MDJmNjRiZjVmNzFkNDk2MWE4MzVjNzdjOWE2ZWRlNzgwODEzOWIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTQ6NTI6MTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbmluZGV4IDA2MTUyMjg0NTllZjQuLmIwMDYwYjQxNDczNDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5AQCAtMTcyMywxMiAmIzQzOzE3MjMsNDEgQEAgc3RhdGljIGludCBwaHlfc2ZwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdFx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuIFx0fVxuIFxuLVx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VzZnBfYnVzKVxuJiM0MztcdGlmICghcmV0IFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlc2ZwX2J1cykge1xuIFx0XHRyZXQgPSBwaHlfc2V0dXBfc2ZwX3BvcnQocGh5ZGV2KTtcbiYjNDM7XHRcdGlmIChyZXQpIHtcbiYjNDM7XHRcdFx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuJiM0MztcdFx0XHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiBwaHlfc2ZwX3JlbGVhc2UgLSByZWxlYXNlIHJlc291cmNlcyBzZXQgdXAgYnkgcGh5X3NmcF9wcm9iZSgpXG4mIzQzOyAqIEBwaHlkZXY6IHRoZSBQSFkgZGV2aWNlXG4mIzQzOyAqXG4mIzQzOyAqIFJlbGVhc2UgdGhlIFNGUCByZXNvdXJjZXMgc2V0IHVwIGJ5IGEgc3VjY2Vzc2Z1bCBwaHlfc2ZwX3Byb2JlKCkuIFVucmVnaXN0ZXJcbiYjNDM7ICogdGhlIHVwc3RyZWFtIGJlZm9yZSBkZXN0cm95aW5nIGl0cyBwaHlfcG9ydCwgc28gU0ZQIHVwc3RyZWFtIGNhbGxiYWNrcyBjYW5ub3RcbiYjNDM7ICogcmFjZSB3aXRoIHBvcnQgZGVzdHJ1Y3Rpb24uXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCBwaHlfc2ZwX3JlbGVhc2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwaHlfcG9ydCAqcG9ydCwgKnRtcDtcbiYjNDM7XG4mIzQzO1x0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuJiM0MztcdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcnQsIHRtcCwgXHUwMDI2cGh5ZGV2LVx1MDAzZXBvcnRzLCBoZWFkKSB7XG4mIzQzO1x0XHRpZiAoIXBvcnQtXHUwMDNlaXNfc2ZwKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRwaHlfZGVsX3BvcnQocGh5ZGV2LCBwb3J0KTtcbiYjNDM7XHRcdHBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXG4ge1xuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG5AQCAtMzQyOSw2ICYjNDM7MzQ1OCw3IEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQgPSBwaHlfcG9ydF9hbGxvYygpO1xuIFx0dW5zaWduZWQgbG9uZyBtb2RlO1xuJiM0MztcdGludCByZXQ7XG4gXG4gXHRpZiAoIXBvcnQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuQEAgLTM0NTUsOSAmIzQzOzM0ODUsMTEgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHRwb3J0LVx1MDAzZXBhaXJzID0gbWF4X3QoaW50LCBwb3J0LVx1MDAzZXBhaXJzLFxuIFx0XHRcdFx0ICAgIGV0aHRvb2xfbGlua21vZGVfbl9wYWlycyhtb2RlKSk7XG4gXG4tXHRwaHlfYWRkX3BvcnQocGh5ZGV2LCBwb3J0KTtcbiYjNDM7XHRyZXQgPSBwaHlfYWRkX3BvcnQocGh5ZGV2LCBwb3J0KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cGh5X3BvcnRfZGVzdHJveShwb3J0KTtcbiBcbi1cdHJldHVybiAwO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyBpbnQgb2ZfcGh5X3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5AQCAtMzUyMiwxMyAmIzQzOzM1NTQsMTMgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdGlmICghcGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbiBcdFx0cmV0ID0gcGh5X3NmcF9wcm9iZShwaHlkZXYpO1xuIFx0XHRpZiAocmV0KVxuLVx0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0XHRnb3RvIGVycl9wb3J0cztcbiBcdH1cbiBcbiBcdGlmIChwaHlkZXYtXHUwMDNlbl9wb3J0cyBcdTAwM2MgcGh5ZGV2LVx1MDAzZW1heF9uX3BvcnRzKSB7XG4gXHRcdHJldCA9IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHBoeWRldik7XG4gXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRcdGdvdG8gZXJyX3NmcDtcbiBcdH1cbiBcbiBcdGxpbmttb2RlX3plcm8ocG9ydHNfc3VwcG9ydGVkKTtcbkBAIC0zNTU1LDcgJiM0MzszNTg3LDkgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcbiBcdHJldHVybiAwO1xuIFxuLW91dDpcbiYjNDM7ZXJyX3NmcDpcbiYjNDM7XHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiYjNDM7ZXJyX3BvcnRzOlxuIFx0cGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTM2ODEsNyAmIzQzOzM3MTUsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydi1cdTAwM2Vwcm9iZSkge1xuIFx0XHRlcnIgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXByb2JlKHBoeWRldik7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRcdGdvdG8gb3V0X3Jlc2V0O1xuIFx0fVxuIFxuIFx0cGh5X2Rpc2FibGVfaW50ZXJydXB0cyhwaHlkZXYpO1xuQEAgLTM3MDIsNyAmIzQzOzM3MzYsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdGVyciA9IGdlbnBoeV9yZWFkX2FiaWxpdGllcyhwaHlkZXYpO1xuIFxuIFx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRnb3RvIG91dF9yZW1vdmU7XG4gXG4gXHRpZiAoIWxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULFxuIFx0XHRcdCAgICAgICBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKSlcbkBAIC0zNzE5LDcgJiM0MzszNzUzLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFxuIFx0ZXJyID0gcGh5X3NldHVwX3BvcnRzKHBoeWRldik7XG4gXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdGdvdG8gb3V0X3JlbW92ZTtcbiBcbiBcdHBoeV9hZHZlcnRpc2Vfc3VwcG9ydGVkKHBoeWRldik7XG4gXG5AQCAtMzcyOCw3ICYjNDM7Mzc2Miw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdCAqL1xuIFx0ZXJyID0gZ2VucGh5X2M0NV9yZWFkX2VlZV9hZHYocGh5ZGV2LCBwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0Z290byBvdXRfcG9ydHM7XG4gXG4gXHQvKiBHZXQgdGhlIEVFRSBtb2RlcyB3ZSB3YW50IHRvIHByb2hpYml0LiAqL1xuIFx0b2Zfc2V0X3BoeV9lZWVfYnJva2VuKHBoeWRldik7XG5AQCAtMzc4MSwyMiAmIzQzOzM4MTUsMjkgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcdTAwMjZcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHtcbiBcdFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcbiBcdFx0aWYgKGVycilcbi1cdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdFx0Z290byBvdXRfbGVkX3RyaWdnZXJzO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG4gXG4tb3V0OlxuLVx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuLVx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuJiM0MztvdXRfbGVkX3RyaWdnZXJzOlxuJiM0MztcdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4mIzQzO1x0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbiYjNDM7XG4mIzQzO1x0cGh5ZGV2LVx1MDAzZXN0YXRlID0gUEhZX0RPV047XG4gXG4mIzQzO291dF9wb3J0czpcbiYjNDM7XHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXG4tXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuLVx0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbiYjNDM7b3V0X3JlbW92ZTpcbiYjNDM7XHRpZiAocGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUpXG4mIzQzO1x0XHRwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZShwaHlkZXYpO1xuIFxuJiM0MztvdXRfcmVzZXQ6XG4gXHQvKiBSZS1hc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCBvbiBlcnJvciAqL1xuIFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xuJiM0MztcdHBoeWRldi1cdTAwM2VkcnYgPSBOVUxMO1xuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMzgxNSw5ICYjNDM7Mzg1Niw3IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXG4gXHRwaHlkZXYtXHUwMDNlc3RhdGUgPSBQSFlfRE9XTjtcbiBcbi1cdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cdTAwM2VzZnBfYnVzKTtcbi1cdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbi1cbiYjNDM7XHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0OywKICAgICYjMzQ7Z2V0X3BoeV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBQSFkgbGlicmFyeSBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyBpbiBkcml2ZXIgcHJvYmUvcmVtb3ZlIHBhdGhzIChwaHlfcHJvYmUsIHBoeV9yZW1vdmUpIGFuZCBwb3J0IHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHJlYWNoYWJsZSB3aGVuIFBIWSBkZXZpY2VzIGFyZSByZWdpc3RlcmVkIGFuZCBib3VuZCB0byBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzAyZjY0YmY1ZjcxZDQ5NjFhODM1Yzc3YzlhNmVkZTc4MDgxMzliMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDE0OjUyOjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKaW5kZXggMDYxNTIyODQ1OWVmNC4uYjAwNjBiNDE0NzM0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCkBAIC0xNzIzLDEyICYjNDM7MTcyMyw0MSBAQCBzdGF0aWMgaW50IHBoeV9zZnBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJCXBoeWRldi0mZ3Q7c2ZwX2J1cyA9IE5VTEw7CiAJfQogCi0JaWYgKCFyZXQgJmFtcDsmYW1wOyBwaHlkZXYtJmd0O3NmcF9idXMpCiYjNDM7CWlmICghcmV0ICZhbXA7JmFtcDsgcGh5ZGV2LSZndDtzZnBfYnVzKSB7CiAJCXJldCA9IHBoeV9zZXR1cF9zZnBfcG9ydChwaHlkZXYpOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7CiYjNDM7CQkJcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKJiM0MzsJCX0KJiM0MzsJfQogCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIHBoeV9zZnBfcmVsZWFzZSAtIHJlbGVhc2UgcmVzb3VyY2VzIHNldCB1cCBieSBwaHlfc2ZwX3Byb2JlKCkKJiM0MzsgKiBAcGh5ZGV2OiB0aGUgUEhZIGRldmljZQomIzQzOyAqCiYjNDM7ICogUmVsZWFzZSB0aGUgU0ZQIHJlc291cmNlcyBzZXQgdXAgYnkgYSBzdWNjZXNzZnVsIHBoeV9zZnBfcHJvYmUoKS4gVW5yZWdpc3RlcgomIzQzOyAqIHRoZSB1cHN0cmVhbSBiZWZvcmUgZGVzdHJveWluZyBpdHMgcGh5X3BvcnQsIHNvIFNGUCB1cHN0cmVhbSBjYWxsYmFja3MgY2Fubm90CiYjNDM7ICogcmFjZSB3aXRoIHBvcnQgZGVzdHJ1Y3Rpb24uCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgcGh5X3NmcF9yZWxlYXNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQsICp0bXA7CiYjNDM7CiYjNDM7CXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7CiYjNDM7CXBoeWRldi0mZ3Q7c2ZwX2J1cyA9IE5VTEw7CiYjNDM7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3J0LCB0bXAsICZhbXA7cGh5ZGV2LSZndDtwb3J0cywgaGVhZCkgewomIzQzOwkJaWYgKCFwb3J0LSZndDtpc19zZnApCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlwaHlfZGVsX3BvcnQocGh5ZGV2LCBwb3J0KTsKJiM0MzsJCXBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KQogewogCXJldHVybiBwaHlkcnYtJmd0O2NvbmZpZ19pbnRyICZhbXA7JmFtcDsgcGh5ZHJ2LSZndDtoYW5kbGVfaW50ZXJydXB0OwpAQCAtMzQyOSw2ICYjNDM7MzQ1OCw3IEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKIAlzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQgPSBwaHlfcG9ydF9hbGxvYygpOwogCXVuc2lnbmVkIGxvbmcgbW9kZTsKJiM0MzsJaW50IHJldDsKIAogCWlmICghcG9ydCkKIAkJcmV0dXJuIC1FTk9NRU07CkBAIC0zNDU1LDkgJiM0MzszNDg1LDExIEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJcG9ydC0mZ3Q7cGFpcnMgPSBtYXhfdChpbnQsIHBvcnQtJmd0O3BhaXJzLAogCQkJCSAgICBldGh0b29sX2xpbmttb2RlX25fcGFpcnMobW9kZSkpOwogCi0JcGh5X2FkZF9wb3J0KHBoeWRldiwgcG9ydCk7CiYjNDM7CXJldCA9IHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcGh5X3BvcnRfZGVzdHJveShwb3J0KTsKIAotCXJldHVybiAwOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IG9mX3BoeV9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQpAQCAtMzUyMiwxMyAmIzQzOzM1NTQsMTMgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAlpZiAoIXBoeWRldi0mZ3Q7aXNfZ2VucGh5X2RyaXZlbikgewogCQlyZXQgPSBwaHlfc2ZwX3Byb2JlKHBoeWRldik7CiAJCWlmIChyZXQpCi0JCQlnb3RvIG91dDsKJiM0MzsJCQlnb3RvIGVycl9wb3J0czsKIAl9CiAKIAlpZiAocGh5ZGV2LSZndDtuX3BvcnRzICZsdDsgcGh5ZGV2LSZndDttYXhfbl9wb3J0cykgewogCQlyZXQgPSBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChwaHlkZXYpOwogCQlpZiAocmV0KQotCQkJZ290byBvdXQ7CiYjNDM7CQkJZ290byBlcnJfc2ZwOwogCX0KIAogCWxpbmttb2RlX3plcm8ocG9ydHNfc3VwcG9ydGVkKTsKQEAgLTM1NTUsNyAmIzQzOzM1ODcsOSBAQCBzdGF0aWMgaW50IHBoeV9zZXR1cF9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCiAJcmV0dXJuIDA7CiAKLW91dDoKJiM0MztlcnJfc2ZwOgomIzQzOwlwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTsKJiM0MztlcnJfcG9ydHM6CiAJcGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTsKIAlyZXR1cm4gcmV0OwogfQpAQCAtMzY4MSw3ICYjNDM7MzcxNSw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlpZiAocGh5ZGV2LSZndDtkcnYtJmd0O3Byb2JlKSB7CiAJCWVyciA9IHBoeWRldi0mZ3Q7ZHJ2LSZndDtwcm9iZShwaHlkZXYpOwogCQlpZiAoZXJyKQotCQkJZ290byBvdXQ7CiYjNDM7CQkJZ290byBvdXRfcmVzZXQ7CiAJfQogCiAJcGh5X2Rpc2FibGVfaW50ZXJydXB0cyhwaHlkZXYpOwpAQCAtMzcwMiw3ICYjNDM7MzczNiw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7CiAKIAlpZiAoZXJyKQotCQlnb3RvIG91dDsKJiM0MzsJCWdvdG8gb3V0X3JlbW92ZTsKIAogCWlmICghbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsCiAJCQkgICAgICAgcGh5ZGV2LSZndDtzdXBwb3J0ZWQpKQpAQCAtMzcxOSw3ICYjNDM7Mzc1Myw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAogCWVyciA9IHBoeV9zZXR1cF9wb3J0cyhwaHlkZXYpOwogCWlmIChlcnIpCi0JCWdvdG8gb3V0OwomIzQzOwkJZ290byBvdXRfcmVtb3ZlOwogCiAJcGh5X2FkdmVydGlzZV9zdXBwb3J0ZWQocGh5ZGV2KTsKIApAQCAtMzcyOCw3ICYjNDM7Mzc2Miw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAkgKi8KIAllcnIgPSBnZW5waHlfYzQ1X3JlYWRfZWVlX2FkdihwaHlkZXYsIHBoeWRldi0mZ3Q7YWR2ZXJ0aXNpbmdfZWVlKTsKIAlpZiAoZXJyKQotCQlnb3RvIG91dDsKJiM0MzsJCWdvdG8gb3V0X3BvcnRzOwogCiAJLyogR2V0IHRoZSBFRUUgbW9kZXMgd2Ugd2FudCB0byBwcm9oaWJpdC4gKi8KIAlvZl9zZXRfcGh5X2VlZV9icm9rZW4ocGh5ZGV2KTsKQEAgLTM3ODEsMjIgJiM0MzszODE1LDI5IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlpZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZTElCX0xFRFMpICZhbXA7JmFtcDsgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHsKIAkJZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTsKIAkJaWYgKGVycikKLQkJCWdvdG8gb3V0OwomIzQzOwkJCWdvdG8gb3V0X2xlZF90cmlnZ2VyczsKIAl9CiAKIAlyZXR1cm4gMDsKIAotb3V0OgotCXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7Ci0JcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKJiM0MztvdXRfbGVkX3RyaWdnZXJzOgomIzQzOwlpZiAoIXBoeWRldi0mZ3Q7aXNfb25fc2ZwX21vZHVsZSkKJiM0MzsJCXBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpOwomIzQzOwomIzQzOwlwaHlkZXYtJmd0O3N0YXRlID0gUEhZX0RPV047CiAKJiM0MztvdXRfcG9ydHM6CiYjNDM7CXBoeV9zZnBfcmVsZWFzZShwaHlkZXYpOwogCXBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7CiAKLQlpZiAoIXBoeWRldi0mZ3Q7aXNfb25fc2ZwX21vZHVsZSkKLQkJcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyKHBoeWRldik7CiYjNDM7b3V0X3JlbW92ZToKJiM0MzsJaWYgKHBoeWRldi0mZ3Q7ZHJ2LSZndDtyZW1vdmUpCiYjNDM7CQlwaHlkZXYtJmd0O2Rydi0mZ3Q7cmVtb3ZlKHBoeWRldik7CiAKJiM0MztvdXRfcmVzZXQ6CiAJLyogUmUtYXNzZXJ0IHRoZSByZXNldCBzaWduYWwgb24gZXJyb3IgKi8KIAlwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7CiYjNDM7CXBoeWRldi0mZ3Q7ZHJ2ID0gTlVMTDsKIAogCXJldHVybiBlcnI7CiB9CkBAIC0zODE1LDkgJiM0MzszODU2LDcgQEAgc3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikKIAogCXBoeWRldi0mZ3Q7c3RhdGUgPSBQSFlfRE9XTjsKIAotCXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7Ci0JcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKLQomIzQzOwlwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTsKIAlwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpOwogCiAJaWYgKHBoeWRldi0mZ3Q7ZHJ2ICZhbXA7JmFtcDsgcGh5ZGV2LSZndDtkcnYtJmd0O3JlbW92ZSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcwOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDcml0aWNhbCBOZXR3b3JrIFBIWSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIFBIWSBsaWJyYXJ5LCBhbmQgaXQmIzM5O3MgbWFraW5nIGNoYW5nZXMgdG8gZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAsIHNwZWNpZmljYWxseSBpbiBgcGh5X3NmcF9wcm9iZWAsIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3Byb2JlYCwgYW5kIGBwaHlfcmVtb3ZlYC4gSW50ZXJlc3Rpbmcg4oCTIHRoZXkmIzM5O3ZlIGV2ZW4gYWRkZWQgYSBuZXcgZnVuY3Rpb24sIGBwaHlfc2ZwX3JlbGVhc2VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtpcyB0aGlzIHdvcnRoIGZ1enppbmc/JiMzNDsuCgpHaXZlbiB0aGUgbG9jYXRpb24gYW5kIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgdGhpcyAqaGFzKiB0byBiZSByZWFjaGFibGUuIFRoZSBtb2RpZmljYXRpb25zIGFyZSBkZWVwIHdpdGhpbiB0aGUgUEhZIHByb2JpbmcgcHJvY2VzcyBpdHNlbGYg4oCTIHBhcnRpY3VsYXJseSBgcGh5X3Byb2JlYCBhbmQgaXRzIGFzc29jaWF0ZWQgZnVuY3Rpb25zLiBgcGh5X3Byb2JlYCBpcywgYXMgdGhlIG5hbWUgaW1wbGllcywgYXQgdGhlIGhlYXJ0IG9mIHRoZSBQSFkgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBZZXAsIGRlZmluaXRlbHkgd29ydGggZnV6emluZzsgYSBmYWlsdXJlIGhlcmUgY2FuIGJyaW5nIGRvd24gdGhlIG5ldHdvcmsuCgpOb3csIGxldCYjMzk7cyBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgdG8gYWN0dWFsbHkgY29tcGlsZSBhbmQgdXNlIHRoaXMgY29kZS4gSXQgbG9va3MgbGlrZSBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1BIWUxJQmAgaXMgZW5hYmxlZC4gVGltZSB0byBjaGVjayB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeSB0byBnZXQgYSBiZXR0ZXIgZ3JpcCBvbiBob3cgdGhpcyBjb2RlIGlzIHB1bGxlZCBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfZGV2aWNlLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTMtXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDpsaWJwaHkteVx0XHRcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTUtXHRcdFx0XHQgICBsaW5rbW9kZS5vIHBoeV9saW5rX3RvcG9sb2d5Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzA3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBSb2xlIG9mIGBsaWJwaHlgKioKCk9rYXksIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIHNvbWV0aGluZyB0aGF0JiMzOTtzIHBhcnQgb2YgYGxpYnBoeWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0LiBXaGF0IGNvbmZpZ3VyYXRpb25zLCBkZXBlbmRlbmNpZXMsIG9yIGVuYWJsaW5nIG9wdGlvbnMgYXJlIHJlbGV2YW50IHRvIGBsaWJwaHlgPyBUbyB1bmRlcnN0YW5kIHRoaXMgc2l0dWF0aW9uIHRob3JvdWdobHksIEkgbmVlZCB0byBpZGVudGlmeSB3aGF0IGV4YWN0bHkgdHJpZ2dlcnMgdGhlIHVzZSBvZiBgbGlicGh5YCBpbiB0aGlzIHBhcnRpY3VsYXIgc2NlbmFyaW8uIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBvciBkb2N1bWVudGF0aW9uIHRvIHBpbnBvaW50IHRoZSBzcGVjaWZpYyBzZXR0aW5ncyBvciBwYXJhbWV0ZXJzIHRoYXQgZ292ZXJuIGBsaWJwaHlgJiMzOTtzIGluY2x1c2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsaWJwaHkubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX1BIWUxJTkspXHRcdCYjNDM7PSBwaHlsaW5rLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbGlicGh5Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0yMS1vYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbWRpb19kZXZyZXMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NzkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQSFlMSUIgQ29uZmlndXJhdGlvbiBDaGFuZ2VzKioKCk9rYXksIHNvIGBDT05GSUdfUEhZTElCYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIGludG8gdGhlIGNvcmUgZnVuY3Rpb25zIGltcGFjdGVkIGJ5IHRoaXMgcGF0Y2guIFRoZSBwYXRjaCBub3RlcyB0aGVzZSBtb2RpZmljYXRpb25zLCB3aGljaCBhcmUgaW1wb3J0YW50OgoKKiAgIGBwaHlfc2ZwX3Byb2JlYCAoc3RhdGljKQoqICAgYHBoeV9zZnBfcmVsZWFzZWAgKHN0YXRpYywgbmV3KQoqICAgYHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0YCAoc3RhdGljKQoqICAgYHBoeV9zZXR1cF9wb3J0c2AgKHN0YXRpYykKKiAgIGBwaHlfcHJvYmVgIChzdGF0aWMpCiogICBgcGh5X3JlbW92ZWAgKHN0YXRpYykKCk15IG5leHQgdGhvdWdodCBmb2N1c2VzIG9uIGhvdyB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBhY2Nlc3NlZC4gSSBrbm93IHRoYXQgYHBoeV9wcm9iZWAgd291bGQgYmUgbXkgZmlyc3QgdGFyZ2V0IGJlY2F1c2UgaXQmIzM5O3MgYSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24sIGxpa2VseSByZWdpc3RlcmVkIHRocm91Z2ggYHBoeV9kcml2ZXJfcmVnaXN0ZXJgIG9yIGEgcmVsYXRlZCBmdW5jdGlvbi4gU28sIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGBwaHlfcHJvYmVgIGlzIGFjdHVhbGx5IHVzZWQuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBJJiMzOTttIGFmdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zNjg2PUVYUE9SVF9TWU1CT0xfR1BMKGZ3bm9kZV9nZXRfcGh5X25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzY4OC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzY4OTogKiBwaHlfcHJvYmUgLSBwcm9iZSBhbmQgaW5pdCBhIFBIWSBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzY5MC0gKiBAZGV2OiBkZXZpY2UgdG8gcHJvYmUgYW5kIGluaXRcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM2OTMtICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM2OTQ6c3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNjk1LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTM4Nzg9c3RhdGljIGludCBwaHlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZHJpdmVyICpuZXdfZHJpdmVyLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzkwNC1cdG5ld19kcml2ZXItXHUwMDNlbWRpb2Rydi5kcml2ZXIuYnVzID0gXHUwMDI2bWRpb19idXNfdHlwZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzkwNTpcdG5ld19kcml2ZXItXHUwMDNlbWRpb2Rydi5kcml2ZXIucHJvYmUgPSBwaHlfcHJvYmU7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM5MDYtXHRuZXdfZHJpdmVyLVx1MDAzZW1kaW9kcnYuZHJpdmVyLnJlbW92ZSA9IHBoeV9yZW1vdmU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMxOQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gUEhZIERldmljZSBQcm9iaW5nKioKCk9rYXksIHNvIGBwaHlfcHJvYmVgIGlzIHRoZSBjcnVjaWFsIHByb2JlIGZ1bmN0aW9uIGZvciB0aGUgYG1kaW9fYnVzX3R5cGVgLCB0cmlnZ2VyZWQgYnkgdGhlIGRyaXZlciBjb3JlIHdoZW4gYSBQSFkgZGV2aWNlIGlzIGJlaW5nIHByb2JlZC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdGhpbmsgYWJvdXQgd2hhdCBub24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgY2VudHJhbCB0byB0aGlzIHByb2Nlc3MuIFdoZXJlIGNhbiBJIGZpbmQgdGhlIGtleSBhcmVhcyB0byBmb2N1cyBvbj8gVGhlIGZpcnN0IHRoaW5ncyB0aGF0IGNvbWUgdG8gbWluZCBhcmUgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIG9yIGBwaHlfZGV2aWNlX2NyZWF0ZWAg4oCTIHRob3NlIHNvdW5kIGxpa2UgdGhlIHByaW1hcnkgZnVuY3Rpb25zIGZvciBicmluZ2luZyBhIFBIWSBkZXZpY2UgaW50byB0aGUgc3lzdGVtLiBMZXQmIzM5O3MgZGVsdmUgaW50byBgcGh5X2RldmljZS5jYCBhbmQgc2VlIHdoYXQgZXhwb3J0ZWQgZnVuY3Rpb25zIGl0IG9mZmVycyB0aGF0IHJlbGF0ZSB0byBlaXRoZXIgdGhlIGNyZWF0aW9uIG9yIHJlZ2lzdHJhdGlvbiBvZiBQSFkgZGV2aWNlcy4gVGhhdCYjMzk7cyB3aGVyZSBJIHdpbGwgbGlrZWx5IGZpbmQgdGhlIG1vc3QgY3JpdGljYWwgaW50ZXJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLipwaHlfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTIxMD12b2lkIHBoeV9kZXZpY2VfZnJlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjEzLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MjE0OkVYUE9SVF9TWU1CT0wocGh5X2RldmljZV9mcmVlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjE1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NTIyPWludCBnZW5waHlfbWF0Y2hfcGh5X2RldmljZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTQzLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NTQ0OkVYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9tYXRjaF9waHlfZGV2aWNlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTQ1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NzQ4PXN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgdTMyIHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTgzOS19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjg0MDpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtODQxLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTA3MT1zdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMi19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjExMDM6RVhQT1JUX1NZTUJPTChnZXRfcGh5X2RldmljZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMTA5PWludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTQxLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTE0MjpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTQzLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTE1Mj12b2lkIHBoeV9kZXZpY2VfcmVtb3ZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTYzLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTE2NDpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfcmVtb3ZlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTE2NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI0NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBGcmFtZXdvcmsgZm9yIEVycm9yIEhhbmRsaW5nIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBpbXBsZW1lbnRpbmcgc29tZSBlcnJvciBoYW5kbGluZyBpbXByb3ZlbWVudHMgd2l0aGluIHRoZSBQSFkgZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGBwaHlfcHJvYmVgIGFuZCBgcGh5X3JlbW92ZWAuIFRoZSBrZXkgc2VlbXMgdG8gYmUgZmlndXJpbmcgb3V0IHRoZSBlbnRyeSBwb2ludHMgdGhhdCB3aWxsIHRyaWdnZXIgdGhlc2UgZnVuY3Rpb25zLiBJbW1lZGlhdGVseSwgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGFuZCBgcGh5X2RldmljZV9yZW1vdmVgIGp1bXAgb3V0IGFzIHN0cm9uZyBjYW5kaWRhdGVzLCBhbmQgSSBzaG91bGQgYWxzbyBrZWVwIGFuIGV5ZSBvdXQgZm9yIGBwaHlfZGV2aWNlX2NyZWF0ZWAgYW5kIHBvdGVudGlhbGx5IGBnZXRfcGh5X2RldmljZWAgZm9yIHRob3JvdWdobmVzcy4gVGhlIHBhdGNoIG5vdGVzIGZvY3VzIG9uIGBwaHlfcHJvYmVgIGFuZCBgcGh5X3JlbW92ZWAsIHdoaWNoIHRoZSBkcml2ZXIgY29yZSBpbnZva2VzIGR1cmluZyBkZXZpY2UgcmVnaXN0cmF0aW9uIGFuZCB3aGVuIGJpbmRpbmcgdG8gYSBkcml2ZXIuCgpTaW5jZSB0aGUgZ29hbCBpcyB0byBlbmhhbmNlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMsIHRyYWNpbmcgdGhlIGNhbGxzIHRoYXQgbGVhZCB0byB0aGVpciBleGVjdXRpb24gaXMgZXNzZW50aWFsLiBUaGUgZHJpdmVyIGNvcmUgaGFuZGxlcyB0aGUgYmluZGluZyBwcm9jZXNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGJpbmRpbmcgbWVjaGFuaXNtIHdvcmtzLiBSZW1lbWJlcmluZyB0aGF0IGBwaHlfcHJvYmVgIGlzIGNhbGxlZCB3aGVuIGEgZHJpdmVyIGJpbmRzLCBJIG5lZWQgdG8ga25vdyB0aGUgdHJpZ2dlcmluZyBldmVudHMuIERyaXZlciBiaW5kaW5nIHNlZW1zIHRvIGhhcHBlbiB2aWEgc3lzZnMgb3IgZHVyaW5nIGRldmljZSByZWdpc3RyYXRpb24uIFRoZXJlZm9yZSwgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGFwcGVhcnMgdG8gYmUgdGhlIG1vc3QgZGlyZWN0IHJvdXRlIHRvIGNhbGwgYHBoeV9wcm9iZWAuCgpCZWZvcmUgcHJvY2VlZGluZywgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgbWFpbiBvbmUgaXMgYENPTkZJR19QSFlMSUJgLCBvYnZpb3VzbHkuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mIG9yIHJlcXVpcmVtZW50cyBmb3IgdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byB3b3JrIHByb3Blcmx5LiBUaGF0IHdpbGwgYmUgbmV4dCBvbiBteSBsaXN0IHRvIGNoZWNrIGZvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBIWUxJQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTY9Y29uZmlnIFBIWUxJTktcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1Om1lbnVjb25maWcgUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O1BIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVx0ZGVmX2Jvb2wgT0ZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkzNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVwZW5kZW5jeSBDaGVjazogUEhZTElCKioKCk9rYXksIHRpbWUgdG8gZGlnIGluLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMgSSBuZWVkIHRvIHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgUEhZTElCYC4gSXQmIzM5O3MgY3J1Y2lhbCwgb2J2aW91c2x5LCBiZWNhdXNlIGFueSBtaXNzaW5nIG9yIG1pc2NvbmZpZ3VyZWQgZGVwZW5kZW5jaWVzIHdvdWxkIGltbWVkaWF0ZWx5IHRhbmsgdGhlIHdob2xlIHRoaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gd29ya2luZyB3aXRoIHRoZSBjb3JyZWN0IHZlcnNpb25zIG9mIGFsbCB0aGUgcmVsZXZhbnQgc3VwcG9ydGluZyBsaWJyYXJpZXMgYW5kIHRoYXQgdGhlaXIgYnVpbGRzIGFyZSBjbGVhbi4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGUgaW5jbHVkZSBwYXRocyBhbmQgbGlicmFyeSBsaW5raW5nIGluIHRoZSBidWlsZCBwcm9jZXNzLCBwcm9iYWJseSB3aXRoIGEgcXVpY2sgc2NhbiBvZiB0aGUgYnVpbGQgc2NyaXB0cy4gQW55IGNvbmZsaWN0cyBvciBpbmNvbXBhdGliaWxpdGllcyBoZXJlLCBhbmQgSSYjMzk7bGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb2YgZWFjaCBkZXBlbmRlbnQgY29tcG9uZW50LiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIG9idmlvdXM6IHN0YW5kYXJkIGxpYnJhcmllcyBhbmQgYW55IGNvcmUgbmV0d29ya2luZyBvciBoYXJkd2FyZSBhYnN0cmFjdGlvbiBjb21wb25lbnRzLiBMZXQmIzM5O3MgZ2V0IGNyYWNraW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxNTpcdG1lbnVjb25maWcgUEhZTElCXG4gIDE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXCYjMzQ7XG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIEV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHRvIFBIWVxuICAxOTpcdFx0ICBkZXZpY2VzLiAgVGhpcyBvcHRpb24gcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yXG4gIDIwOlx0XHQgIG1hbmFnaW5nIFBIWSBkZXZpY2VzLlxuICAyMTpcdFxuICAyMjpcdGlmIFBIWUxJQlxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBTV1BIWVxuICAyNTpcdFx0Ym9vbFxuICAyNjpcdFxuICAyNzpcdGNvbmZpZyBQSFlfUEFDS0FHRVxuICAyODpcdFx0IHRyaXN0YXRlXG4gIDI5Olx0XG4gIDMwOlx0Y29uZmlnIExFRF9UUklHR0VSX1BIWVxuICAzMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IExFRCB0cmlnZ2VycyBmb3IgdHJhY2tpbmcgbGluayBzdGF0ZVwmIzM0O1xuICAzMjpcdFx0ZGVwZW5kcyBvbiBMRURTX1RSSUdHRVJTXG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIEFkZHMgc3VwcG9ydCBmb3IgYSBzZXQgb2YgTEVEIHRyaWdnZXIgZXZlbnRzIHBlci1QSFkuICBMaW5rXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczODgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUEhZTElCIFBhdGNoKioKCk9rYXksIHNvIGBQSFlMSUJgIGlzIHNlbGYtY29udGFpbmVkIOKAkyBubyBleHRlcm5hbCBiYWdnYWdlIHRvIHdvcnJ5IGFib3V0LiBUaGF0JiMzOTtzIGdvb2Q7IG1ha2VzIHRoaW5ncyBzaW1wbGVyLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIGZvY3VzZWQuIExldCYjMzk7cyBkaWcgaW4uIEkgc2VlIGVycm9yIGhhbmRsaW5nIGhhcyBiZWVuIGFkZGVkIHRvIGBwaHlfc2ZwX3Byb2JlYCBhbmQgYHBoeV9hZGRfcG9ydGAsIHdoaWNoIGlzIGFsd2F5cyBhIHdlbGNvbWUgc2lnaHQuIEFuZCBgcGh5X3NmcF9yZWxlYXNlYCBmb3IgY2xlYW51cCwgdGhhdCYjMzk7cyBjcnVjaWFsOyByZXNvdXJjZSBsZWFrcyBhcmUgdGhlIGJhbmUgb2YgbXkgZXhpc3RlbmNlLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjb3JlIGNoYW5nZSB0byBgUEhZTElCYC4gSXTigJlzIGRlZmluaXRlbHkgd29ydGggYSBmdXp6aW5nIGNhbXBhaWduIHRvIHZhbGlkYXRlIHRoZXNlIG5ldyBlcnJvciBwYXRocyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudC4KCk15IGZvY3VzIGhhcyB0byBiZSBvbiB0aGVzZSBrZXkgc3ltYm9sczogYHBoeV9kZXZpY2VfcmVnaXN0ZXJgLCBgcGh5X2RldmljZV9yZW1vdmVgLCBgcGh5X2RldmljZV9jcmVhdGVgLCBhbmQgYGdldF9waHlfZGV2aWNlYC4gVGhleSYjMzk7cmUgdGhlIGNyaXRpY2FsIGVudHJ5IGFuZCBleGl0IHBvaW50cy4gSSBzaG91bGQgYWxzbyBjaGVjayBob3cgYHBoeV9wcm9iZWAgZml0cyBpbiB0byB0aGUgc3lzdGVtLiBObywgc3RhdGljLCBzbyB0aGF0JiMzOTtzIG5vdCBhIGRpcmVjdCBwb2ludCBvZiBhdHRhY2suIFdoYXQgYWJvdXQgYHBoeV9hdHRhY2hfZGlyZWN0YD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qcGh5X2F0dGFjaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMzkwPXZvaWQgcGh5X2F0dGFjaGVkX2luZm8oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEzOTMtfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzk0OkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaGVkX2luZm8pO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzk1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTM5Nz1jaGFyICpwaHlfYXR0YWNoZWRfaW5mb19pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE0MTYtfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNDE3OkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaGVkX2luZm9faXJxKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTQxOC1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTQxOT12b2lkIHBoeV9hdHRhY2hlZF9wcmludChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBjaGFyICpmbXQsIC4uLilcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE0MzgtfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNDM5OkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaGVkX3ByaW50KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTQ0MC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE3ODE9aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTM1LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTkzNjpFWFBPUlRfU1lNQk9MKHBoeV9hdHRhY2hfZGlyZWN0KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkzNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI1NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBEcml2ZXIgRW50cnkgUG9pbnQqKgoKT2theSwgc28gYHBoeV9hdHRhY2hfZGlyZWN0YCBpcyBleHBvcnRlZCwgYnV0IHRoZSByZWFsIG1lYXQgb2YgdGhlIGRyaXZlciBpbnRlcmFjdGlvbiBzZWVtcyB0byBiZSBoYXBwZW5pbmcgd2l0aGluIGBwaHlfcHJvYmVgIGFuZCBgcGh5X3JlbW92ZWAuIFRob3NlIGFyZSBkcml2ZXIgcHJvYmUgYW5kIHJlbW92ZSBmdW5jdGlvbnMsIHNvIHRoYXQgbWFrZXMgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uCgpCZWZvcmUgZGl2aW5nIGluIHRvbyBkZWVwLCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgbWVudGlvbmVkIGluIHRoZSBwYXRjaC4gSSBzZWUgYENPTkZJR19QSFlMSUJfTEVEU2AgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIGBwaHlfcHJvYmVgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHVzZWQgdG8gZW5hYmxlIExFRCBzdXBwb3J0LCBidXQgb25seSBpZiB0aGUgUEhZIGlzbiYjMzk7dCBhIGdlbmVyaWMgUEhZLiBNaWdodCBiZSBzb21ldGhpbmcgdXNlZnVsIHRvIGVuYWJsZSBkZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljcyBvZiB0aGlzIHNpdHVhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgUEhZTElCX0xFRFNgIGluIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgdG8gZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBpdCBlbnRhaWxzIGFuZCB3aGV0aGVyIGl0JiMzOTtzIHJlbGV2YW50IGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQSFlMSUJfTEVEUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ2PWNvbmZpZyBPUEVOX0FMTElBTkNFX0hFTFBFUlNcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ5OmNvbmZpZyBQSFlMSUJfTEVEU1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTAtXHRkZWZfYm9vbCBPRlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzYwCgkJCQkJCQlvdXRwdXQ6IDExMAoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFBIWUxJQiBhbmQgUmVsYXRlZCBDb25maWd1cmF0aW9ucyoqCgpPa2F5LCBzbyBgUEhZTElCX0xFRFNgIGlzIGEgYGRlZl9ib29sYCB0aGF0IGRlcGVuZHMgb24gYE9GYCBiZWluZyBlbmFibGVkLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGVuYWJsZWQgaWYgYE9GYCBpcyBlbmFibGVkLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBjYW4gc2ltcGxpZnkgdGhpcy4gSSBzaG91bGQganVzdCBhZGQgYFBIWUxJQmAgYW5kIGBPRmAsIG9yIGp1c3QgYFBIWUxJQmAsIHRvIHRoZSBjb25maWd1cmF0aW9uIGxpc3QsIGRlcGVuZGluZyBvbiB0aGUgZGVzaXJlZCBiZWhhdmlvci4KCkhlcmUmIzM5O3MgbXkgZGlzdGlsbGVkIHN1bW1hcnk6IEkmIzM5O3ZlIGRldGVybWluZWQgdGhpcyBtb2R1bGUgaXMgd29ydGh5IG9mIGZ1enppbmcuIE15IGtleSBmb2N1cyBzeW1ib2xzIHdpbGwgYmUgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgLCBgcGh5X2RldmljZV9yZW1vdmVgLCBgcGh5X2RldmljZV9jcmVhdGVgLCBhbmQgYGdldF9waHlfZGV2aWNlYC4gSSB3aWxsIGVuYWJsZSB0aGUgYFBIWUxJQmAgY29uZmlndXJhdGlvbi4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSBteSBjaG9pY2Ugb2YgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgLiBZZXMsIHRoYXQgcmVnaXN0ZXJzIHRoZSBQSFkgZGV2aWNlIHdpdGggdGhlIGRyaXZlciBjb3JlLiBUaGUgY29yZSB0aGVuIHByb2JlcyBpdCwgd2hpY2ggaXMgaWRlYWwuIGBwaHlfZGV2aWNlX3JlbW92ZWAgdW5yZWdpc3RlcnMgdGhlIGRldmljZSB3aGljaCBjYWxscyBgcGh5X3JlbW92ZWAuIFRoaXMgaXMgZXhhY3RseSB0aGUgcmVnaXN0cmF0aW9uIGFuZCB1bnJlZ2lzdHJhdGlvbiBJIG5lZWQgdG8gdHJpZ2dlciBpbnRlcmVzdGluZyBjb2RlIHBhdGhzIGFuZCBlZGdlIGNhc2VzLiBQZXJmZWN0IQoKVGltZSB0byBzZXQgdGhlc2UgcmVzdWx0cyBhbmQgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2RldmljZV9yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtwaHlfZGV2aWNlX3JlbW92ZSYjMzQ7LAogICAgJiMzNDtwaHlfZGV2aWNlX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtnZXRfcGh5X2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIGluIGRyaXZlciBwcm9iZS9yZW1vdmUgcGF0aHMgKHBoeV9wcm9iZSwgcGh5X3JlbW92ZSkgYW5kIHBvcnQgc2V0dXAgZnVuY3Rpb25zLiBUaGVzZSBhcmUgcmVhY2hhYmxlIHdoZW4gUEhZIGRldmljZXMgYXJlIHJlZ2lzdGVyZWQgYW5kIGJvdW5kIHRvIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0OywKICAgICYjMzQ7Z2V0X3BoeV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBQSFkgbGlicmFyeSBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyBpbiBkcml2ZXIgcHJvYmUvcmVtb3ZlIHBhdGhzIChwaHlfcHJvYmUsIHBoeV9yZW1vdmUpIGFuZCBwb3J0IHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHJlYWNoYWJsZSB3aGVuIFBIWSBkZXZpY2VzIGFyZSByZWdpc3RlcmVkIGFuZCBib3VuZCB0byBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE0OjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZvY3VzZXMgZW50aXJlbHkgb24gZml4aW5nIHJlc291cmNlIGxlYWtzIGFuZCBpbmNvcnJlY3QgY2xlYW51cCBvcmRlciBvbiBlcnJvciBwYXRocyBpbiB0aGUgUEhZIGRldmljZSBkcml2ZXIgKGUuZy4sIHByb3Blcmx5IGRlc3Ryb3lpbmcgcG9ydHMsIHJlbGVhc2luZyBTRlAgcmVzb3VyY2VzLCBhbmQgY2FsbGluZyB0aGUgZHJpdmVyJiMzOTtzIHJlbW92ZSBjYWxsYmFjayBvbiBmYWlsdXJlKS4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIHBvdGVudGlhbCBtZW1vcnkgbGVha3MgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIGttZW1sZWFrLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb3IgZXhwb3N1cmUgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgbm9yIGFueSBjb250cm9sIGZsb3cgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcwMmY2NGJmNWY3MWQ0OTYxYTgzNWM3N2M5YTZlZGU3ODA4MTM5YjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAxNDo1MjoxNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IDA2MTUyMjg0NTllZjQuLmIwMDYwYjQxNDczNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwpAQCAtMTcyMywxMiAmIzQzOzE3MjMsNDEgQEAgc3RhdGljIGludCBwaHlfc2ZwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJCQlwaHlkZXYtJmd0O3NmcF9idXMgPSBOVUxMOwogCX0KIAotCWlmICghcmV0ICZhbXA7JmFtcDsgcGh5ZGV2LSZndDtzZnBfYnVzKQomIzQzOwlpZiAoIXJldCAmYW1wOyZhbXA7IHBoeWRldi0mZ3Q7c2ZwX2J1cykgewogCQlyZXQgPSBwaHlfc2V0dXBfc2ZwX3BvcnQocGh5ZGV2KTsKJiM0MzsJCWlmIChyZXQpIHsKJiM0MzsJCQlzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtJmd0O3NmcF9idXMpOwomIzQzOwkJCXBoeWRldi0mZ3Q7c2ZwX2J1cyA9IE5VTEw7CiYjNDM7CQl9CiYjNDM7CX0KIAogCXJldHVybiByZXQ7CiB9CiAKJiM0MzsvKioKJiM0MzsgKiBwaHlfc2ZwX3JlbGVhc2UgLSByZWxlYXNlIHJlc291cmNlcyBzZXQgdXAgYnkgcGh5X3NmcF9wcm9iZSgpCiYjNDM7ICogQHBoeWRldjogdGhlIFBIWSBkZXZpY2UKJiM0MzsgKgomIzQzOyAqIFJlbGVhc2UgdGhlIFNGUCByZXNvdXJjZXMgc2V0IHVwIGJ5IGEgc3VjY2Vzc2Z1bCBwaHlfc2ZwX3Byb2JlKCkuIFVucmVnaXN0ZXIKJiM0MzsgKiB0aGUgdXBzdHJlYW0gYmVmb3JlIGRlc3Ryb3lpbmcgaXRzIHBoeV9wb3J0LCBzbyBTRlAgdXBzdHJlYW0gY2FsbGJhY2tzIGNhbm5vdAomIzQzOyAqIHJhY2Ugd2l0aCBwb3J0IGRlc3RydWN0aW9uLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIHBoeV9zZnBfcmVsZWFzZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IHBoeV9wb3J0ICpwb3J0LCAqdG1wOwomIzQzOwomIzQzOwlzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtJmd0O3NmcF9idXMpOwomIzQzOwlwaHlkZXYtJmd0O3NmcF9idXMgPSBOVUxMOwomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9ydCwgdG1wLCAmYW1wO3BoeWRldi0mZ3Q7cG9ydHMsIGhlYWQpIHsKJiM0MzsJCWlmICghcG9ydC0mZ3Q7aXNfc2ZwKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJcGh5X2RlbF9wb3J0KHBoeWRldiwgcG9ydCk7CiYjNDM7CQlwaHlfcG9ydF9kZXN0cm95KHBvcnQpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydikKIHsKIAlyZXR1cm4gcGh5ZHJ2LSZndDtjb25maWdfaW50ciAmYW1wOyZhbXA7IHBoeWRydi0mZ3Q7aGFuZGxlX2ludGVycnVwdDsKQEAgLTM0MjksNiAmIzQzOzM0NTgsNyBAQCBzdGF0aWMgaW50IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJc3RydWN0IHBoeV9wb3J0ICpwb3J0ID0gcGh5X3BvcnRfYWxsb2MoKTsKIAl1bnNpZ25lZCBsb25nIG1vZGU7CiYjNDM7CWludCByZXQ7CiAKIAlpZiAoIXBvcnQpCiAJCXJldHVybiAtRU5PTUVNOwpAQCAtMzQ1NSw5ICYjNDM7MzQ4NSwxMSBAQCBzdGF0aWMgaW50IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJCXBvcnQtJmd0O3BhaXJzID0gbWF4X3QoaW50LCBwb3J0LSZndDtwYWlycywKIAkJCQkgICAgZXRodG9vbF9saW5rbW9kZV9uX3BhaXJzKG1vZGUpKTsKIAotCXBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpOwomIzQzOwlyZXQgPSBwaHlfYWRkX3BvcnQocGh5ZGV2LCBwb3J0KTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7CiAKLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBvZl9waHlfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKQEAgLTM1MjIsMTMgJiM0MzszNTU0LDEzIEBAIHN0YXRpYyBpbnQgcGh5X3NldHVwX3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJaWYgKCFwaHlkZXYtJmd0O2lzX2dlbnBoeV9kcml2ZW4pIHsKIAkJcmV0ID0gcGh5X3NmcF9wcm9iZShwaHlkZXYpOwogCQlpZiAocmV0KQotCQkJZ290byBvdXQ7CiYjNDM7CQkJZ290byBlcnJfcG9ydHM7CiAJfQogCiAJaWYgKHBoeWRldi0mZ3Q7bl9wb3J0cyAmbHQ7IHBoeWRldi0mZ3Q7bWF4X25fcG9ydHMpIHsKIAkJcmV0ID0gcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQocGh5ZGV2KTsKIAkJaWYgKHJldCkKLQkJCWdvdG8gb3V0OwomIzQzOwkJCWdvdG8gZXJyX3NmcDsKIAl9CiAKIAlsaW5rbW9kZV96ZXJvKHBvcnRzX3N1cHBvcnRlZCk7CkBAIC0zNTU1LDcgJiM0MzszNTg3LDkgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAogCXJldHVybiAwOwogCi1vdXQ6CiYjNDM7ZXJyX3NmcDoKJiM0MzsJcGh5X3NmcF9yZWxlYXNlKHBoeWRldik7CiYjNDM7ZXJyX3BvcnRzOgogCXBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTM2ODEsNyAmIzQzOzM3MTUsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJaWYgKHBoeWRldi0mZ3Q7ZHJ2LSZndDtwcm9iZSkgewogCQllcnIgPSBwaHlkZXYtJmd0O2Rydi0mZ3Q7cHJvYmUocGh5ZGV2KTsKIAkJaWYgKGVycikKLQkJCWdvdG8gb3V0OwomIzQzOwkJCWdvdG8gb3V0X3Jlc2V0OwogCX0KIAogCXBoeV9kaXNhYmxlX2ludGVycnVwdHMocGh5ZGV2KTsKQEAgLTM3MDIsNyAmIzQzOzM3MzYsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCWVyciA9IGdlbnBoeV9yZWFkX2FiaWxpdGllcyhwaHlkZXYpOwogCiAJaWYgKGVycikKLQkJZ290byBvdXQ7CiYjNDM7CQlnb3RvIG91dF9yZW1vdmU7CiAKIAlpZiAoIWxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULAogCQkJICAgICAgIHBoeWRldi0mZ3Q7c3VwcG9ydGVkKSkKQEAgLTM3MTksNyAmIzQzOzM3NTMsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAKIAllcnIgPSBwaHlfc2V0dXBfcG9ydHMocGh5ZGV2KTsKIAlpZiAoZXJyKQotCQlnb3RvIG91dDsKJiM0MzsJCWdvdG8gb3V0X3JlbW92ZTsKIAogCXBoeV9hZHZlcnRpc2Vfc3VwcG9ydGVkKHBoeWRldik7CiAKQEAgLTM3MjgsNyAmIzQzOzM3NjIsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJICovCiAJZXJyID0gZ2VucGh5X2M0NV9yZWFkX2VlZV9hZHYocGh5ZGV2LCBwaHlkZXYtJmd0O2FkdmVydGlzaW5nX2VlZSk7CiAJaWYgKGVycikKLQkJZ290byBvdXQ7CiYjNDM7CQlnb3RvIG91dF9wb3J0czsKIAogCS8qIEdldCB0aGUgRUVFIG1vZGVzIHdlIHdhbnQgdG8gcHJvaGliaXQuICovCiAJb2Zfc2V0X3BoeV9lZWVfYnJva2VuKHBoeWRldik7CkBAIC0zNzgxLDIyICYjNDM7MzgxNSwyOSBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJaWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSAmYW1wOyZhbXA7ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKSB7CiAJCWVyciA9IG9mX3BoeV9sZWRzKHBoeWRldik7CiAJCWlmIChlcnIpCi0JCQlnb3RvIG91dDsKJiM0MzsJCQlnb3RvIG91dF9sZWRfdHJpZ2dlcnM7CiAJfQogCiAJcmV0dXJuIDA7CiAKLW91dDoKLQlzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtJmd0O3NmcF9idXMpOwotCXBoeWRldi0mZ3Q7c2ZwX2J1cyA9IE5VTEw7CiYjNDM7b3V0X2xlZF90cmlnZ2VyczoKJiM0MzsJaWYgKCFwaHlkZXYtJmd0O2lzX29uX3NmcF9tb2R1bGUpCiYjNDM7CQlwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTsKJiM0MzsKJiM0MzsJcGh5ZGV2LSZndDtzdGF0ZSA9IFBIWV9ET1dOOwogCiYjNDM7b3V0X3BvcnRzOgomIzQzOwlwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTsKIAlwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpOwogCi0JaWYgKCFwaHlkZXYtJmd0O2lzX29uX3NmcF9tb2R1bGUpCi0JCXBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpOwomIzQzO291dF9yZW1vdmU6CiYjNDM7CWlmIChwaHlkZXYtJmd0O2Rydi0mZ3Q7cmVtb3ZlKQomIzQzOwkJcGh5ZGV2LSZndDtkcnYtJmd0O3JlbW92ZShwaHlkZXYpOwogCiYjNDM7b3V0X3Jlc2V0OgogCS8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovCiAJcGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpOwomIzQzOwlwaHlkZXYtJmd0O2RydiA9IE5VTEw7CiAKIAlyZXR1cm4gZXJyOwogfQpAQCAtMzgxNSw5ICYjNDM7Mzg1Niw3IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAKIAlwaHlkZXYtJmd0O3N0YXRlID0gUEhZX0RPV047CiAKLQlzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtJmd0O3NmcF9idXMpOwotCXBoeWRldi0mZ3Q7c2ZwX2J1cyA9IE5VTEw7Ci0KJiM0MzsJcGh5X3NmcF9yZWxlYXNlKHBoeWRldik7CiAJcGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTsKIAogCWlmIChwaHlkZXYtJmd0O2RydiAmYW1wOyZhbXA7IHBoeWRldi0mZ3Q7ZHJ2LSZndDtyZW1vdmUpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzA1CgkJCQkJCQlvdXRwdXQ6IDEzNgoJCQkJCQkJdGhvdWdodHM6IDEzNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFBIWSBEZXZpY2UgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCwgYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0JiMzOTtzIGFsbCBhYm91dCBoYXJkZW5pbmcgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIHByb2NlZHVyZXMgd2l0aGluIHRoZSBQSFkgZGV2aWNlIGRyaXZlci4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIGNsYXNzaWMgY2FzZSBvZiByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBlcnJvciBwYXRoIGNvcnJlY3Rpb25zLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlcyByZXZvbHZlIGFyb3VuZCBgcGh5X3NmcF9wcm9iZWAsIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3Byb2JlYCwgYW5kIGBwaHlfcmVtb3ZlYC4gV2UmIzM5O3ZlIGludHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24sIGBwaHlfc2ZwX3JlbGVhc2VgLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgY29ycmVjdGx5IHJlbGVhc2luZyBTRlAgcmVzb3VyY2VzIGFuZCBkZXN0cm95aW5nIHBvcnRzLgoKVGhlIGZvY3VzIGlzIHNxdWFyZWx5IG9uIGZpeGluZyByZXNvdXJjZSBsZWFrcyBhbmQgYWRkcmVzc2luZyBwb3RlbnRpYWwgaXNzdWVzIGxpa2UgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIGlmIHRoaW5ncyBnbyBzb3V0aCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gb3Igb3BlcmF0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2UgdGhlcmUgd2VyZSBpbnN0YW5jZXMgd2hlcmUgcmVzb3VyY2VzIHdlcmUgYmVpbmcgYWxsb2NhdGVkIGJ1dCBub3QgZGVhbGxvY2F0ZWQgd2hlbiBhbiBlcnJvciBvY2N1cnJlZCwgbGVhZGluZyB0byBtZW1vcnkgbGVha3Mgb3IgcG90ZW50aWFsbHkgZnJlZWluZyBhIHJlc291cmNlIHRoYXQmIzM5O3Mgc3RpbGwgaW4gdXNlLiBUaGUgcGF0Y2ggZW5zdXJlcyB0aGF0IGluIGVycm9yIGNhc2VzIChlLmcuLCB3aXRoaW4gYHBoeV9wb3J0X2Rlc3Ryb3lgLCBgcGh5X3NmcF9yZWxlYXNlYCwgYW5kIHRoZSBgcGh5ZGV2LSZndDtkcnYtJmd0O3JlbW92ZWAgY2FsbCBpbiBgcGh5X3Byb2JlYCksIHJlc291cmNlcyBhcmUgcHJvcGVybHkgY2xlYW5lZCB1cC4KClRoZXJlJiMzOTtzIG5vIGluZGljYXRpb24gaGVyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIHRvIHVzZXIgc3BhY2Ugb3IgaW5mbHVlbmNpbmcgY29udHJvbCBmbG93LiBLTVNBTiwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGlzIG5vdCByZWxldmFudCBoZXJlLiBUaGlzIGlzIHB1cmVseSBhYm91dCBmaXhpbmcgcmVzb3VyY2UgbGVha3MgYW5kIGVuc3VyaW5nIGNsZWFuIGV4aXQgcGF0aHMgaW4gdGhlIGNhc2Ugb2YgZXJyb3JzLCB3aGljaCwgYXMgYW4gZXhwZXJ0IGluIG15IGZpZWxkLCBJIGNhbiBzZWUgaXMgYSB2YWx1YWJsZSBhZGRpdGlvbiB0byB0aGUgY29kZS4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgc2NlbmFyaW9zIHdoZXJlIEtBU0FOIG9yIEtNRU1MRUFLIHdvdWxkJiMzOTt2ZSBjYXVnaHQgdGhlIGJ1Z3MgcmVsYXRlZCB0byBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUsIGlmIHRoZXNlIHRvb2xzIHdlcmUgdXNlZC4KCkkmIzM5O20gbm93IGdvaW5nIHRvIHF1aWNrbHkgZ28gdGhyb3VnaCB0aGUgY29kZSBtb2RpZmljYXRpb25zIGFuZCBjb25maXJtIG15IGluaXRpYWwgYXNzdW1wdGlvbnMuCgpMb29raW5nIGF0IGBwaHlfc2ZwX3Byb2JlYDogV2UgaGF2ZSBhbiBhZGRpdGlvbiBmb3IgcHJvcGVyIHNmcCBidXMgY2xlYW51cC4KCkluIGBwaHlfc2ZwX3JlbGVhc2VgOiBUaGUgbmV3IGZ1bmN0aW9uIGlzIG5vdyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlIHNmcCBidXMgYW5kIGFsc28gZGVzdHJveWluZyByZWxldmFudCBwb3J0cyBvbiB0aGUgUEhZIGRldmljZS4KCkluIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGA6IFRoZSBhZGRpdGlvbiBlbnN1cmVzIHRoYXQgaWYgYHBoeV9hZGRfcG9ydGAgZmFpbHMsIHRoZSBhbGxvY2F0ZWQgcG9ydCBpcyBwcm9wZXJseSBkZXN0cm95ZWQuCgpJbiBgcGh5X3NldHVwX3BvcnRzYDogVGhlIGFkZGl0aW9ucyBlbnN1cmVzIHRoYXQgaWYgdGhpbmdzIGdvIHdyb25nLCB0aGUgU0ZQIGJ1cyBpcyByZWxlYXNlZCwgcG9ydHMgYXJlIGNsZWFuZWQgdXAsIGFuZCBhc3NvY2lhdGVkIGFjdGlvbnMgcGVyZm9ybWVkIG9uIGVycm9ycy4KCkZpbmFsbHksIGluIGBwaHlfcHJvYmVgOiBUaGUgYWRkaXRpb25zIGVuc3VyZSB0aGF0IHRoZSBkZXZpY2UmIzM5O3MgcmVzb3VyY2VzIGFuZCBzdGF0ZXMgYXJlIGhhbmRsZWQgd2VsbCB3aGVuIGFuIGVycm9yIGlzIGRldGVjdGVkLgoKWWVwLCB0aGUgYW5hbHlzaXMgaG9sZHMuIFRoaXMgaXMgZ29vZCBzb2xpZCBlcnJvciBoYW5kbGluZyB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmb2N1c2VzIGVudGlyZWx5IG9uIGZpeGluZyByZXNvdXJjZSBsZWFrcyBhbmQgaW5jb3JyZWN0IGNsZWFudXAgb3JkZXIgb24gZXJyb3IgcGF0aHMgaW4gdGhlIFBIWSBkZXZpY2UgZHJpdmVyIChlLmcuLCBwcm9wZXJseSBkZXN0cm95aW5nIHBvcnRzLCByZWxlYXNpbmcgU0ZQIHJlc291cmNlcywgYW5kIGNhbGxpbmcgdGhlIGRyaXZlciYjMzk7cyByZW1vdmUgY2FsbGJhY2sgb24gZmFpbHVyZSkuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBrbWVtbGVhay4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIG5vciBhbnkgY29udHJvbCBmbG93IGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZm9jdXNlcyBlbnRpcmVseSBvbiBmaXhpbmcgcmVzb3VyY2UgbGVha3MgYW5kIGluY29ycmVjdCBjbGVhbnVwIG9yZGVyIG9uIGVycm9yIHBhdGhzIGluIHRoZSBQSFkgZGV2aWNlIGRyaXZlciAoZS5nLiwgcHJvcGVybHkgZGVzdHJveWluZyBwb3J0cywgcmVsZWFzaW5nIFNGUCByZXNvdXJjZXMsIGFuZCBjYWxsaW5nIHRoZSBkcml2ZXImIzM5O3MgcmVtb3ZlIGNhbGxiYWNrIG9uIGZhaWx1cmUpLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQga21lbWxlYWsuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBub3IgYW55IGNvbnRyb2wgZmxvdyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6MTguMDU3NTQ2MzQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI0MDAzNjE5NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEhZTElCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2RldmljZV9yZWdpc3RlclwiLFxuICAgIFwicGh5X2RldmljZV9yZW1vdmVcIixcbiAgICBcInBoeV9kZXZpY2VfY3JlYXRlXCIsXG4gICAgXCJnZXRfcGh5X2RldmljZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZm9jdXNlcyBlbnRpcmVseSBvbiBmaXhpbmcgcmVzb3VyY2UgbGVha3MgYW5kIGluY29ycmVjdCBjbGVhbnVwIG9yZGVyIG9uIGVycm9yIHBhdGhzIGluIHRoZSBQSFkgZGV2aWNlIGRyaXZlciAoZS5nLiwgcHJvcGVybHkgZGVzdHJveWluZyBwb3J0cywgcmVsZWFzaW5nIFNGUCByZXNvdXJjZXMsIGFuZCBjYWxsaW5nIHRoZSBkcml2ZXIncyByZW1vdmUgY2FsbGJhY2sgb24gZmFpbHVyZSkuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBrbWVtbGVhay4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIG5vciBhbnkgY29udHJvbCBmbG93IGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgUEhZIGxpYnJhcnkgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgaW4gZHJpdmVyIHByb2JlL3JlbW92ZSBwYXRocyAocGh5X3Byb2JlLCBwaHlfcmVtb3ZlKSBhbmQgcG9ydCBzZXR1cCBmdW5jdGlvbnMuIFRoZXNlIGFyZSByZWFjaGFibGUgd2hlbiBQSFkgZGV2aWNlcyBhcmUgcmVnaXN0ZXJlZCBhbmQgYm91bmQgdG8gZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6MTguMDU3NTUyODUzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzM5OTM1ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MDJmNjRiZjVmNzFkNDk2MWE4MzVjNzdjOWE2ZWRlNzgwODEzOWIwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDE0OjUyOjE3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuaW5kZXggMDYxNTIyODQ1OWVmNC4uYjAwNjBiNDE0NzM0OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbkBAIC0xNzIzLDEyICsxNzIzLDQxIEBAIHN0YXRpYyBpbnQgcGh5X3NmcF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZXNmcF9idXMpXFxuK1xcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IHBoeWRldi1cXHUwMDNlc2ZwX2J1cykge1xcbiBcXHRcXHRyZXQgPSBwaHlfc2V0dXBfc2ZwX3BvcnQocGh5ZGV2KTtcXG4rXFx0XFx0aWYgKHJldCkge1xcbitcXHRcXHRcXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXFx1MDAzZXNmcF9idXMpO1xcbitcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBwaHlfc2ZwX3JlbGVhc2UgLSByZWxlYXNlIHJlc291cmNlcyBzZXQgdXAgYnkgcGh5X3NmcF9wcm9iZSgpXFxuKyAqIEBwaHlkZXY6IHRoZSBQSFkgZGV2aWNlXFxuKyAqXFxuKyAqIFJlbGVhc2UgdGhlIFNGUCByZXNvdXJjZXMgc2V0IHVwIGJ5IGEgc3VjY2Vzc2Z1bCBwaHlfc2ZwX3Byb2JlKCkuIFVucmVnaXN0ZXJcXG4rICogdGhlIHVwc3RyZWFtIGJlZm9yZSBkZXN0cm95aW5nIGl0cyBwaHlfcG9ydCwgc28gU0ZQIHVwc3RyZWFtIGNhbGxiYWNrcyBjYW5ub3RcXG4rICogcmFjZSB3aXRoIHBvcnQgZGVzdHJ1Y3Rpb24uXFxuKyAqL1xcbitzdGF0aWMgdm9pZCBwaHlfc2ZwX3JlbGVhc2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQsICp0bXA7XFxuK1xcbitcXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXFx1MDAzZXNmcF9idXMpO1xcbitcXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbitcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcnQsIHRtcCwgXFx1MDAyNnBoeWRldi1cXHUwMDNlcG9ydHMsIGhlYWQpIHtcXG4rXFx0XFx0aWYgKCFwb3J0LVxcdTAwM2Vpc19zZnApXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0cGh5X2RlbF9wb3J0KHBoeWRldiwgcG9ydCk7XFxuK1xcdFxcdHBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcXG4ge1xcbiBcXHRyZXR1cm4gcGh5ZHJ2LVxcdTAwM2Vjb25maWdfaW50ciBcXHUwMDI2XFx1MDAyNiBwaHlkcnYtXFx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XFxuQEAgLTM0MjksNiArMzQ1OCw3IEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQgPSBwaHlfcG9ydF9hbGxvYygpO1xcbiBcXHR1bnNpZ25lZCBsb25nIG1vZGU7XFxuK1xcdGludCByZXQ7XFxuIFxcbiBcXHRpZiAoIXBvcnQpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbkBAIC0zNDU1LDkgKzM0ODUsMTEgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHRcXHRwb3J0LVxcdTAwM2VwYWlycyA9IG1heF90KGludCwgcG9ydC1cXHUwMDNlcGFpcnMsXFxuIFxcdFxcdFxcdFxcdCAgICBldGh0b29sX2xpbmttb2RlX25fcGFpcnMobW9kZSkpO1xcbiBcXG4tXFx0cGh5X2FkZF9wb3J0KHBoeWRldiwgcG9ydCk7XFxuK1xcdHJldCA9IHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRwaHlfcG9ydF9kZXN0cm95KHBvcnQpO1xcbiBcXG4tXFx0cmV0dXJuIDA7XFxuK1xcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgb2ZfcGh5X3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuQEAgLTM1MjIsMTMgKzM1NTQsMTMgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcXG4gXFx0XFx0cmV0ID0gcGh5X3NmcF9wcm9iZShwaHlkZXYpO1xcbiBcXHRcXHRpZiAocmV0KVxcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0XFx0Z290byBlcnJfcG9ydHM7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChwaHlkZXYtXFx1MDAzZW5fcG9ydHMgXFx1MDAzYyBwaHlkZXYtXFx1MDAzZW1heF9uX3BvcnRzKSB7XFxuIFxcdFxcdHJldCA9IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHBoeWRldik7XFxuIFxcdFxcdGlmIChyZXQpXFxuLVxcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHRcXHRnb3RvIGVycl9zZnA7XFxuIFxcdH1cXG4gXFxuIFxcdGxpbmttb2RlX3plcm8ocG9ydHNfc3VwcG9ydGVkKTtcXG5AQCAtMzU1NSw3ICszNTg3LDkgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFxuIFxcdHJldHVybiAwO1xcbiBcXG4tb3V0OlxcbitlcnJfc2ZwOlxcbitcXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcXG4rZXJyX3BvcnRzOlxcbiBcXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuQEAgLTM2ODEsNyArMzcxNSw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0aWYgKHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2Vwcm9iZSkge1xcbiBcXHRcXHRlcnIgPSBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcHJvYmUocGh5ZGV2KTtcXG4gXFx0XFx0aWYgKGVycilcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdGdvdG8gb3V0X3Jlc2V0O1xcbiBcXHR9XFxuIFxcbiBcXHRwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7XFxuQEAgLTM3MDIsNyArMzczNiw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0XFx0ZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XFxuIFxcbiBcXHRpZiAoZXJyKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0Z290byBvdXRfcmVtb3ZlO1xcbiBcXG4gXFx0aWYgKCFsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCxcXG4gXFx0XFx0XFx0ICAgICAgIHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkKSlcXG5AQCAtMzcxOSw3ICszNzUzLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXG4gXFx0ZXJyID0gcGh5X3NldHVwX3BvcnRzKHBoeWRldik7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHRnb3RvIG91dF9yZW1vdmU7XFxuIFxcbiBcXHRwaHlfYWR2ZXJ0aXNlX3N1cHBvcnRlZChwaHlkZXYpO1xcbiBcXG5AQCAtMzcyOCw3ICszNzYyLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHQgKi9cXG4gXFx0ZXJyID0gZ2VucGh5X2M0NV9yZWFkX2VlZV9hZHYocGh5ZGV2LCBwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nX2VlZSk7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHRnb3RvIG91dF9wb3J0cztcXG4gXFxuIFxcdC8qIEdldCB0aGUgRUVFIG1vZGVzIHdlIHdhbnQgdG8gcHJvaGliaXQuICovXFxuIFxcdG9mX3NldF9waHlfZWVlX2Jyb2tlbihwaHlkZXYpO1xcbkBAIC0zNzgxLDIyICszODE1LDI5IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcXHUwMDI2XFx1MDAyNiAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkge1xcbiBcXHRcXHRlcnIgPSBvZl9waHlfbGVkcyhwaHlkZXYpO1xcbiBcXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0XFx0Z290byBvdXRfbGVkX3RyaWdnZXJzO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuLW91dDpcXG4tXFx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVxcdTAwM2VzZnBfYnVzKTtcXG4tXFx0cGh5ZGV2LVxcdTAwM2VzZnBfYnVzID0gTlVMTDtcXG4rb3V0X2xlZF90cmlnZ2VyczpcXG4rXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXFxuK1xcdFxcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xcbitcXG4rXFx0cGh5ZGV2LVxcdTAwM2VzdGF0ZSA9IFBIWV9ET1dOO1xcbiBcXG4rb3V0X3BvcnRzOlxcbitcXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcXG4gXFx0cGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTtcXG4gXFxuLVxcdGlmICghcGh5ZGV2LVxcdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxcbi1cXHRcXHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcXG4rb3V0X3JlbW92ZTpcXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VyZW1vdmUpXFxuK1xcdFxcdHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VyZW1vdmUocGh5ZGV2KTtcXG4gXFxuK291dF9yZXNldDpcXG4gXFx0LyogUmUtYXNzZXJ0IHRoZSByZXNldCBzaWduYWwgb24gZXJyb3IgKi9cXG4gXFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xcbitcXHRwaHlkZXYtXFx1MDAzZWRydiA9IE5VTEw7XFxuIFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuQEAgLTM4MTUsOSArMzg1Niw3IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcbiBcXHRwaHlkZXYtXFx1MDAzZXN0YXRlID0gUEhZX0RPV047XFxuIFxcbi1cXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXFx1MDAzZXNmcF9idXMpO1xcbi1cXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbi1cXG4rXFx0cGh5X3NmcF9yZWxlYXNlKHBoeWRldik7XFxuIFxcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XFxuIFxcbiBcXHRpZiAocGh5ZGV2LVxcdTAwM2VkcnYgXFx1MDAyNlxcdTAwMjYgcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZXJlbW92ZSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6MTguNDMyMjA4Mzk0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDYzNDY0ODczNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEhZTElCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2RldmljZV9yZWdpc3RlclwiLFxuICAgIFwicGh5X2RldmljZV9yZW1vdmVcIixcbiAgICBcInBoeV9kZXZpY2VfY3JlYXRlXCIsXG4gICAgXCJnZXRfcGh5X2RldmljZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgUEhZIGxpYnJhcnkgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgaW4gZHJpdmVyIHByb2JlL3JlbW92ZSBwYXRocyAocGh5X3Byb2JlLCBwaHlfcmVtb3ZlKSBhbmQgcG9ydCBzZXR1cCBmdW5jdGlvbnMuIFRoZXNlIGFyZSByZWFjaGFibGUgd2hlbiBQSFkgZGV2aWNlcyBhcmUgcmVnaXN0ZXJlZCBhbmQgYm91bmQgdG8gZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzAyZjY0YmY1ZjcxZDQ5NjFhODM1Yzc3YzlhNmVkZTc4MDgxMzliMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDE0OjUyOjE3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbmluZGV4IDA2MTUyMjg0NTllZjQuLmIwMDYwYjQxNDczNDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5AQCAtMTcyMywxMiArMTcyMyw0MSBAQCBzdGF0aWMgaW50IHBoeV9zZnBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0XHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4gXHR9XG4gXG4tXHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZXNmcF9idXMpXG4rXHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZXNmcF9idXMpIHtcbiBcdFx0cmV0ID0gcGh5X3NldHVwX3NmcF9wb3J0KHBoeWRldik7XG4rXHRcdGlmIChyZXQpIHtcbitcdFx0XHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4rXHRcdFx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuK1x0XHR9XG4rXHR9XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbisvKipcbisgKiBwaHlfc2ZwX3JlbGVhc2UgLSByZWxlYXNlIHJlc291cmNlcyBzZXQgdXAgYnkgcGh5X3NmcF9wcm9iZSgpXG4rICogQHBoeWRldjogdGhlIFBIWSBkZXZpY2VcbisgKlxuKyAqIFJlbGVhc2UgdGhlIFNGUCByZXNvdXJjZXMgc2V0IHVwIGJ5IGEgc3VjY2Vzc2Z1bCBwaHlfc2ZwX3Byb2JlKCkuIFVucmVnaXN0ZXJcbisgKiB0aGUgdXBzdHJlYW0gYmVmb3JlIGRlc3Ryb3lpbmcgaXRzIHBoeV9wb3J0LCBzbyBTRlAgdXBzdHJlYW0gY2FsbGJhY2tzIGNhbm5vdFxuKyAqIHJhY2Ugd2l0aCBwb3J0IGRlc3RydWN0aW9uLlxuKyAqL1xuK3N0YXRpYyB2b2lkIHBoeV9zZnBfcmVsZWFzZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdHN0cnVjdCBwaHlfcG9ydCAqcG9ydCwgKnRtcDtcbitcbitcdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cdTAwM2VzZnBfYnVzKTtcbitcdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbitcbitcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3J0LCB0bXAsIFx1MDAyNnBoeWRldi1cdTAwM2Vwb3J0cywgaGVhZCkge1xuK1x0XHRpZiAoIXBvcnQtXHUwMDNlaXNfc2ZwKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRwaHlfZGVsX3BvcnQocGh5ZGV2LCBwb3J0KTtcbitcdFx0cGh5X3BvcnRfZGVzdHJveShwb3J0KTtcbitcdH1cbit9XG4rXG4gc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcbiB7XG4gXHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbkBAIC0zNDI5LDYgKzM0NTgsNyBAQCBzdGF0aWMgaW50IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IHBoeV9wb3J0ICpwb3J0ID0gcGh5X3BvcnRfYWxsb2MoKTtcbiBcdHVuc2lnbmVkIGxvbmcgbW9kZTtcbitcdGludCByZXQ7XG4gXG4gXHRpZiAoIXBvcnQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuQEAgLTM0NTUsOSArMzQ4NSwxMSBAQCBzdGF0aWMgaW50IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdHBvcnQtXHUwMDNlcGFpcnMgPSBtYXhfdChpbnQsIHBvcnQtXHUwMDNlcGFpcnMsXG4gXHRcdFx0XHQgICAgZXRodG9vbF9saW5rbW9kZV9uX3BhaXJzKG1vZGUpKTtcbiBcbi1cdHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpO1xuK1x0cmV0ID0gcGh5X2FkZF9wb3J0KHBoeWRldiwgcG9ydCk7XG4rXHRpZiAocmV0KVxuK1x0XHRwaHlfcG9ydF9kZXN0cm95KHBvcnQpO1xuIFxuLVx0cmV0dXJuIDA7XG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IG9mX3BoeV9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuQEAgLTM1MjIsMTMgKzM1NTQsMTMgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdGlmICghcGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbiBcdFx0cmV0ID0gcGh5X3NmcF9wcm9iZShwaHlkZXYpO1xuIFx0XHRpZiAocmV0KVxuLVx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdGdvdG8gZXJyX3BvcnRzO1xuIFx0fVxuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VuX3BvcnRzIFx1MDAzYyBwaHlkZXYtXHUwMDNlbWF4X25fcG9ydHMpIHtcbiBcdFx0cmV0ID0gcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQocGh5ZGV2KTtcbiBcdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIG91dDtcbitcdFx0XHRnb3RvIGVycl9zZnA7XG4gXHR9XG4gXG4gXHRsaW5rbW9kZV96ZXJvKHBvcnRzX3N1cHBvcnRlZCk7XG5AQCAtMzU1NSw3ICszNTg3LDkgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcbiBcdHJldHVybiAwO1xuIFxuLW91dDpcbitlcnJfc2ZwOlxuK1x0cGh5X3NmcF9yZWxlYXNlKHBoeWRldik7XG4rZXJyX3BvcnRzOlxuIFx0cGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTM2ODEsNyArMzcxNSw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGlmIChwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXByb2JlKSB7XG4gXHRcdGVyciA9IHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcHJvYmUocGh5ZGV2KTtcbiBcdFx0aWYgKGVycilcbi1cdFx0XHRnb3RvIG91dDtcbitcdFx0XHRnb3RvIG91dF9yZXNldDtcbiBcdH1cbiBcbiBcdHBoeV9kaXNhYmxlX2ludGVycnVwdHMocGh5ZGV2KTtcbkBAIC0zNzAyLDcgKzM3MzYsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdGVyciA9IGdlbnBoeV9yZWFkX2FiaWxpdGllcyhwaHlkZXYpO1xuIFxuIFx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4rXHRcdGdvdG8gb3V0X3JlbW92ZTtcbiBcbiBcdGlmICghbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsXG4gXHRcdFx0ICAgICAgIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuQEAgLTM3MTksNyArMzc1Myw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcbiBcdGVyciA9IHBoeV9zZXR1cF9wb3J0cyhwaHlkZXYpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4rXHRcdGdvdG8gb3V0X3JlbW92ZTtcbiBcbiBcdHBoeV9hZHZlcnRpc2Vfc3VwcG9ydGVkKHBoeWRldik7XG4gXG5AQCAtMzcyOCw3ICszNzYyLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0ICovXG4gXHRlcnIgPSBnZW5waHlfYzQ1X3JlYWRfZWVlX2FkdihwaHlkZXYsIHBoeWRldi1cdTAwM2VhZHZlcnRpc2luZ19lZWUpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4rXHRcdGdvdG8gb3V0X3BvcnRzO1xuIFxuIFx0LyogR2V0IHRoZSBFRUUgbW9kZXMgd2Ugd2FudCB0byBwcm9oaWJpdC4gKi9cbiBcdG9mX3NldF9waHlfZWVlX2Jyb2tlbihwaHlkZXYpO1xuQEAgLTM3ODEsMjIgKzM4MTUsMjkgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcdTAwMjZcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHtcbiBcdFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcbiBcdFx0aWYgKGVycilcbi1cdFx0XHRnb3RvIG91dDtcbitcdFx0XHRnb3RvIG91dF9sZWRfdHJpZ2dlcnM7XG4gXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1vdXQ6XG4tXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4tXHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4rb3V0X2xlZF90cmlnZ2VyczpcbitcdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4rXHRcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xuK1xuK1x0cGh5ZGV2LVx1MDAzZXN0YXRlID0gUEhZX0RPV047XG4gXG4rb3V0X3BvcnRzOlxuK1x0cGh5X3NmcF9yZWxlYXNlKHBoeWRldik7XG4gXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xuIFxuLVx0aWYgKCFwaHlkZXYtXHUwMDNlaXNfb25fc2ZwX21vZHVsZSlcbi1cdFx0cGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyKHBoeWRldik7XG4rb3V0X3JlbW92ZTpcbitcdGlmIChwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZSlcbitcdFx0cGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUocGh5ZGV2KTtcbiBcbitvdXRfcmVzZXQ6XG4gXHQvKiBSZS1hc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCBvbiBlcnJvciAqL1xuIFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xuK1x0cGh5ZGV2LVx1MDAzZWRydiA9IE5VTEw7XG4gXG4gXHRyZXR1cm4gZXJyO1xuIH1cbkBAIC0zODE1LDkgKzM4NTYsNyBAQCBzdGF0aWMgaW50IHBoeV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFxuIFx0cGh5ZGV2LVx1MDAzZXN0YXRlID0gUEhZX0RPV047XG4gXG4tXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4tXHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4tXG4rXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1MjoxOC40MzIyMDk3MjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDYwMzk0MjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENyaXRpY2FsIE5ldHdvcmsgUEhZIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBUaGF0J3MgdGhlIGNvcmUgUEhZIGxpYnJhcnksIGFuZCBpdCdzIG1ha2luZyBjaGFuZ2VzIHRvIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwLCBzcGVjaWZpY2FsbHkgaW4gYHBoeV9zZnBfcHJvYmVgLCBgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnRgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9wcm9iZWAsIGFuZCBgcGh5X3JlbW92ZWAuIEludGVyZXN0aW5nIOKAkyB0aGV5J3ZlIGV2ZW4gYWRkZWQgYSBuZXcgZnVuY3Rpb24sIGBwaHlfc2ZwX3JlbGVhc2VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJpcyB0aGlzIHdvcnRoIGZ1enppbmc/XCIuXG5cbkdpdmVuIHRoZSBsb2NhdGlvbiBhbmQgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzLCB0aGlzICpoYXMqIHRvIGJlIHJlYWNoYWJsZS4gVGhlIG1vZGlmaWNhdGlvbnMgYXJlIGRlZXAgd2l0aGluIHRoZSBQSFkgcHJvYmluZyBwcm9jZXNzIGl0c2VsZiDigJMgcGFydGljdWxhcmx5IGBwaHlfcHJvYmVgIGFuZCBpdHMgYXNzb2NpYXRlZCBmdW5jdGlvbnMuIGBwaHlfcHJvYmVgIGlzLCBhcyB0aGUgbmFtZSBpbXBsaWVzLCBhdCB0aGUgaGVhcnQgb2YgdGhlIFBIWSBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIFllcCwgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nOyBhIGZhaWx1cmUgaGVyZSBjYW4gYnJpbmcgZG93biB0aGUgbmV0d29yay5cblxuTm93LCBsZXQncyBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgdG8gYWN0dWFsbHkgY29tcGlsZSBhbmQgdXNlIHRoaXMgY29kZS4gSXQgbG9va3MgbGlrZSBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1BIWUxJQmAgaXMgZW5hYmxlZC4gVGltZSB0byBjaGVjayB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeSB0byBnZXQgYSBiZXR0ZXIgZ3JpcCBvbiBob3cgdGhpcyBjb2RlIGlzIHB1bGxlZCBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwOCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE0OjUyOjI1LjQ5MjYwNjU5M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjI5NTgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfZGV2aWNlLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0zLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0OmxpYnBoeS15XFx0XFx0XFx0Oj0gcGh5Lm8gcGh5LWM0NS5vIHBoeS1jb3JlLm8gcGh5X2RldmljZS5vIFxcXFxcXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNS1cXHRcXHRcXHRcXHQgICBsaW5rbW9kZS5vIHBoeV9saW5rX3RvcG9sb2d5Lm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1MjoyNS41ODQ5MDY0ODRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQ4NDQ1NDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFJvbGUgb2YgYGxpYnBoeWAqKlxuXG5Pa2F5LCBzbyBJJ20gZGVhbGluZyB3aXRoIHNvbWV0aGluZyB0aGF0J3MgcGFydCBvZiBgbGlicGh5YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQuIFdoYXQgY29uZmlndXJhdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgZW5hYmxpbmcgb3B0aW9ucyBhcmUgcmVsZXZhbnQgdG8gYGxpYnBoeWA/IFRvIHVuZGVyc3RhbmQgdGhpcyBzaXR1YXRpb24gdGhvcm91Z2hseSwgSSBuZWVkIHRvIGlkZW50aWZ5IHdoYXQgZXhhY3RseSB0cmlnZ2VycyB0aGUgdXNlIG9mIGBsaWJwaHlgIGluIHRoaXMgcGFydGljdWxhciBzY2VuYXJpby4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIG9yIGRvY3VtZW50YXRpb24gdG8gcGlucG9pbnQgdGhlIHNwZWNpZmljIHNldHRpbmdzIG9yIHBhcmFtZXRlcnMgdGhhdCBnb3Zlcm4gYGxpYnBoeWAncyBpbmNsdXNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMDcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1MjoyOS4wMzMzNTQzMDNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ5NDcyODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGlicGh5Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfUEhZTElOSylcXHRcXHQrPSBwaHlsaW5rLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX1BIWUxJQilcXHRcXHQrPSBsaWJwaHkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0yMS1vYmotJChDT05GSUdfUEhZTElCKVxcdFxcdCs9IG1kaW9fZGV2cmVzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6MjkuMDg4MzA2ODY4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcxNzA2NTUxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBIWUxJQiBDb25maWd1cmF0aW9uIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBgQ09ORklHX1BIWUxJQmAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIGZ1bmN0aW9ucyBpbXBhY3RlZCBieSB0aGlzIHBhdGNoLiBUaGUgcGF0Y2ggbm90ZXMgdGhlc2UgbW9kaWZpY2F0aW9ucywgd2hpY2ggYXJlIGltcG9ydGFudDpcblxuKiAgIGBwaHlfc2ZwX3Byb2JlYCAoc3RhdGljKVxuKiAgIGBwaHlfc2ZwX3JlbGVhc2VgIChzdGF0aWMsIG5ldylcbiogICBgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnRgIChzdGF0aWMpXG4qICAgYHBoeV9zZXR1cF9wb3J0c2AgKHN0YXRpYylcbiogICBgcGh5X3Byb2JlYCAoc3RhdGljKVxuKiAgIGBwaHlfcmVtb3ZlYCAoc3RhdGljKVxuXG5NeSBuZXh0IHRob3VnaHQgZm9jdXNlcyBvbiBob3cgdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucyBhcmUgYWNjZXNzZWQuIEkga25vdyB0aGF0IGBwaHlfcHJvYmVgIHdvdWxkIGJlIG15IGZpcnN0IHRhcmdldCBiZWNhdXNlIGl0J3MgYSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24sIGxpa2VseSByZWdpc3RlcmVkIHRocm91Z2ggYHBoeV9kcml2ZXJfcmVnaXN0ZXJgIG9yIGEgcmVsYXRlZCBmdW5jdGlvbi4gU28sIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGBwaHlfcHJvYmVgIGlzIGFjdHVhbGx5IHVzZWQuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBJJ20gYWZ0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NzksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6MzMuODA1Mzc1Nzk0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5OTkxMzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzY4Nj1FWFBPUlRfU1lNQk9MX0dQTChmd25vZGVfZ2V0X3BoeV9ub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzY4OC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM2ODk6ICogcGh5X3Byb2JlIC0gcHJvYmUgYW5kIGluaXQgYSBQSFkgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNjkwLSAqIEBkZXY6IGRldmljZSB0byBwcm9iZSBhbmQgaW5pdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNjkzLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzY5NDpzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNjk1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9Mzg3OD1zdGF0aWMgaW50IHBoeV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBoeV9kcml2ZXIgKm5ld19kcml2ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM5MDQtXFx0bmV3X2RyaXZlci1cXHUwMDNlbWRpb2Rydi5kcml2ZXIuYnVzID0gXFx1MDAyNm1kaW9fYnVzX3R5cGU7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozOTA1OlxcdG5ld19kcml2ZXItXFx1MDAzZW1kaW9kcnYuZHJpdmVyLnByb2JlID0gcGh5X3Byb2JlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzkwNi1cXHRuZXdfZHJpdmVyLVxcdTAwM2VtZGlvZHJ2LmRyaXZlci5yZW1vdmUgPSBwaHlfcmVtb3ZlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1MjozMy44NTUzNzMxOTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDU5MDM2MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gUEhZIERldmljZSBQcm9iaW5nKipcblxuT2theSwgc28gYHBoeV9wcm9iZWAgaXMgdGhlIGNydWNpYWwgcHJvYmUgZnVuY3Rpb24gZm9yIHRoZSBgbWRpb19idXNfdHlwZWAsIHRyaWdnZXJlZCBieSB0aGUgZHJpdmVyIGNvcmUgd2hlbiBhIFBIWSBkZXZpY2UgaXMgYmVpbmcgcHJvYmVkLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB0aGluayBhYm91dCB3aGF0IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSBjZW50cmFsIHRvIHRoaXMgcHJvY2Vzcy4gV2hlcmUgY2FuIEkgZmluZCB0aGUga2V5IGFyZWFzIHRvIGZvY3VzIG9uPyBUaGUgZmlyc3QgdGhpbmdzIHRoYXQgY29tZSB0byBtaW5kIGFyZSBgcGh5X2RldmljZV9yZWdpc3RlcmAgb3IgYHBoeV9kZXZpY2VfY3JlYXRlYCDigJMgdGhvc2Ugc291bmQgbGlrZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgZm9yIGJyaW5naW5nIGEgUEhZIGRldmljZSBpbnRvIHRoZSBzeXN0ZW0uIExldCdzIGRlbHZlIGludG8gYHBoeV9kZXZpY2UuY2AgYW5kIHNlZSB3aGF0IGV4cG9ydGVkIGZ1bmN0aW9ucyBpdCBvZmZlcnMgdGhhdCByZWxhdGUgdG8gZWl0aGVyIHRoZSBjcmVhdGlvbiBvciByZWdpc3RyYXRpb24gb2YgUEhZIGRldmljZXMuIFRoYXQncyB3aGVyZSBJIHdpbGwgbGlrZWx5IGZpbmQgdGhlIG1vc3QgY3JpdGljYWwgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzE5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6MzguOTE0NDExOTk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjE0NDgxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipwaHlfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0yMTA9dm9pZCBwaHlfZGV2aWNlX2ZyZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjEzLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjIxNDpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfZnJlZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTUyMj1pbnQgZ2VucGh5X21hdGNoX3BoeV9kZXZpY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTQzLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjU0NDpFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfbWF0Y2hfcGh5X2RldmljZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01NDUtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTc0OD1zdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTgzOS19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo4NDA6RVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX2NyZWF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy04NDEtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEwNzE9c3RydWN0IHBoeV9kZXZpY2UgKmdldF9waHlfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGlzX2M0NSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMi19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTAzOkVYUE9SVF9TWU1CT0woZ2V0X3BoeV9kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTEwOT1pbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTQxLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjExNDI6RVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExNDMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTExNTI9dm9pZCBwaHlfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTYzLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjExNjQ6RVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlbW92ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTY1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1MjozOC45NjA1NjI1NTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcwMjU0MDU0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBIWSBGcmFtZXdvcmsgZm9yIEVycm9yIEhhbmRsaW5nIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaW1wbGVtZW50aW5nIHNvbWUgZXJyb3IgaGFuZGxpbmcgaW1wcm92ZW1lbnRzIHdpdGhpbiB0aGUgUEhZIGZyYW1ld29yaywgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgcGh5X3Byb2JlYCBhbmQgYHBoeV9yZW1vdmVgLiBUaGUga2V5IHNlZW1zIHRvIGJlIGZpZ3VyaW5nIG91dCB0aGUgZW50cnkgcG9pbnRzIHRoYXQgd2lsbCB0cmlnZ2VyIHRoZXNlIGZ1bmN0aW9ucy4gSW1tZWRpYXRlbHksIGBwaHlfZGV2aWNlX3JlZ2lzdGVyYCBhbmQgYHBoeV9kZXZpY2VfcmVtb3ZlYCBqdW1wIG91dCBhcyBzdHJvbmcgY2FuZGlkYXRlcywgYW5kIEkgc2hvdWxkIGFsc28ga2VlcCBhbiBleWUgb3V0IGZvciBgcGh5X2RldmljZV9jcmVhdGVgIGFuZCBwb3RlbnRpYWxseSBgZ2V0X3BoeV9kZXZpY2VgIGZvciB0aG9yb3VnaG5lc3MuIFRoZSBwYXRjaCBub3RlcyBmb2N1cyBvbiBgcGh5X3Byb2JlYCBhbmQgYHBoeV9yZW1vdmVgLCB3aGljaCB0aGUgZHJpdmVyIGNvcmUgaW52b2tlcyBkdXJpbmcgZGV2aWNlIHJlZ2lzdHJhdGlvbiBhbmQgd2hlbiBiaW5kaW5nIHRvIGEgZHJpdmVyLlxuXG5TaW5jZSB0aGUgZ29hbCBpcyB0byBlbmhhbmNlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMsIHRyYWNpbmcgdGhlIGNhbGxzIHRoYXQgbGVhZCB0byB0aGVpciBleGVjdXRpb24gaXMgZXNzZW50aWFsLiBUaGUgZHJpdmVyIGNvcmUgaGFuZGxlcyB0aGUgYmluZGluZyBwcm9jZXNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGJpbmRpbmcgbWVjaGFuaXNtIHdvcmtzLiBSZW1lbWJlcmluZyB0aGF0IGBwaHlfcHJvYmVgIGlzIGNhbGxlZCB3aGVuIGEgZHJpdmVyIGJpbmRzLCBJIG5lZWQgdG8ga25vdyB0aGUgdHJpZ2dlcmluZyBldmVudHMuIERyaXZlciBiaW5kaW5nIHNlZW1zIHRvIGhhcHBlbiB2aWEgc3lzZnMgb3IgZHVyaW5nIGRldmljZSByZWdpc3RyYXRpb24uIFRoZXJlZm9yZSwgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGFwcGVhcnMgdG8gYmUgdGhlIG1vc3QgZGlyZWN0IHJvdXRlIHRvIGNhbGwgYHBoeV9wcm9iZWAuXG5cbkJlZm9yZSBwcm9jZWVkaW5nLCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIG1haW4gb25lIGlzIGBDT05GSUdfUEhZTElCYCwgb2J2aW91c2x5LiBJJ2xsIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mIG9yIHJlcXVpcmVtZW50cyBmb3IgdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byB3b3JrIHByb3Blcmx5LiBUaGF0IHdpbGwgYmUgbmV4dCBvbiBteSBsaXN0IHRvIGNoZWNrIGZvci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI0NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1Mjo0NC42NjMxMDcyOTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNDcxNDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQSFlMSUJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9Nj1jb25maWcgUEhZTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTU6bWVudWNvbmZpZyBQSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiUEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ2PWNvbmZpZyBPUEVOX0FMTElBTkNFX0hFTFBFUlNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ5OmNvbmZpZyBQSFlMSUJfTEVEU1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVxcdGRlZl9ib29sIE9GXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE0OjUyOjQ0LjcxMzU4Mzk5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjAyNTI3NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlcGVuZGVuY3kgQ2hlY2s6IFBIWUxJQioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGluLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMgSSBuZWVkIHRvIHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgUEhZTElCYC4gSXQncyBjcnVjaWFsLCBvYnZpb3VzbHksIGJlY2F1c2UgYW55IG1pc3Npbmcgb3IgbWlzY29uZmlndXJlZCBkZXBlbmRlbmNpZXMgd291bGQgaW1tZWRpYXRlbHkgdGFuayB0aGUgd2hvbGUgdGhpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHdvcmtpbmcgd2l0aCB0aGUgY29ycmVjdCB2ZXJzaW9ucyBvZiBhbGwgdGhlIHJlbGV2YW50IHN1cHBvcnRpbmcgbGlicmFyaWVzIGFuZCB0aGF0IHRoZWlyIGJ1aWxkcyBhcmUgY2xlYW4uIEknbSB0aGlua2luZyBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBpbmNsdWRlIHBhdGhzIGFuZCBsaWJyYXJ5IGxpbmtpbmcgaW4gdGhlIGJ1aWxkIHByb2Nlc3MsIHByb2JhYmx5IHdpdGggYSBxdWljayBzY2FuIG9mIHRoZSBidWlsZCBzY3JpcHRzLiBBbnkgY29uZmxpY3RzIG9yIGluY29tcGF0aWJpbGl0aWVzIGhlcmUsIGFuZCBJJ2xsIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBjb25maWd1cmF0aW9uIG9mIGVhY2ggZGVwZW5kZW50IGNvbXBvbmVudC4gSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIG9idmlvdXM6IHN0YW5kYXJkIGxpYnJhcmllcyBhbmQgYW55IGNvcmUgbmV0d29ya2luZyBvciBoYXJkd2FyZSBhYnN0cmFjdGlvbiBjb21wb25lbnRzLiBMZXQncyBnZXQgY3JhY2tpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MzYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1Mjo0Ny45MTYxMTQ0OTdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMTU6XFx0bWVudWNvbmZpZyBQSFlMSUJcXG4gIDE2OlxcdFxcdHRyaXN0YXRlIFxcXCJQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXFxcIlxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcXG4gIDE5OlxcdFxcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxcbiAgMjA6XFx0XFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0aWYgUEhZTElCXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBTV1BIWVxcbiAgMjU6XFx0XFx0Ym9vbFxcbiAgMjY6XFx0XFxuICAyNzpcXHRjb25maWcgUEhZX1BBQ0tBR0VcXG4gIDI4OlxcdFxcdCB0cmlzdGF0ZVxcbiAgMjk6XFx0XFxuICAzMDpcXHRjb25maWcgTEVEX1RSSUdHRVJfUEhZXFxuICAzMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IExFRCB0cmlnZ2VycyBmb3IgdHJhY2tpbmcgbGluayBzdGF0ZVxcXCJcXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBBZGRzIHN1cHBvcnQgZm9yIGEgc2V0IG9mIExFRCB0cmlnZ2VyIGV2ZW50cyBwZXItUEhZLiAgTGlua1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1Mjo0Ny45MTYxODU4MTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE0NTMyNjEwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQSFlMSUIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBgUEhZTElCYCBpcyBzZWxmLWNvbnRhaW5lZCDigJMgbm8gZXh0ZXJuYWwgYmFnZ2FnZSB0byB3b3JyeSBhYm91dC4gVGhhdCdzIGdvb2Q7IG1ha2VzIHRoaW5ncyBzaW1wbGVyLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIGZvY3VzZWQuIExldCdzIGRpZyBpbi4gSSBzZWUgZXJyb3IgaGFuZGxpbmcgaGFzIGJlZW4gYWRkZWQgdG8gYHBoeV9zZnBfcHJvYmVgIGFuZCBgcGh5X2FkZF9wb3J0YCwgd2hpY2ggaXMgYWx3YXlzIGEgd2VsY29tZSBzaWdodC4gQW5kIGBwaHlfc2ZwX3JlbGVhc2VgIGZvciBjbGVhbnVwLCB0aGF0J3MgY3J1Y2lhbDsgcmVzb3VyY2UgbGVha3MgYXJlIHRoZSBiYW5lIG9mIG15IGV4aXN0ZW5jZS4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY29yZSBjaGFuZ2UgdG8gYFBIWUxJQmAuIEl04oCZcyBkZWZpbml0ZWx5IHdvcnRoIGEgZnV6emluZyBjYW1wYWlnbiB0byB2YWxpZGF0ZSB0aGVzZSBuZXcgZXJyb3IgcGF0aHMgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQuXG5cbk15IGZvY3VzIGhhcyB0byBiZSBvbiB0aGVzZSBrZXkgc3ltYm9sczogYHBoeV9kZXZpY2VfcmVnaXN0ZXJgLCBgcGh5X2RldmljZV9yZW1vdmVgLCBgcGh5X2RldmljZV9jcmVhdGVgLCBhbmQgYGdldF9waHlfZGV2aWNlYC4gVGhleSdyZSB0aGUgY3JpdGljYWwgZW50cnkgYW5kIGV4aXQgcG9pbnRzLiBJIHNob3VsZCBhbHNvIGNoZWNrIGhvdyBgcGh5X3Byb2JlYCBmaXRzIGluIHRvIHRoZSBzeXN0ZW0uIE5vLCBzdGF0aWMsIHNvIHRoYXQncyBub3QgYSBkaXJlY3QgcG9pbnQgb2YgYXR0YWNrLiBXaGF0IGFib3V0IGBwaHlfYXR0YWNoX2RpcmVjdGA/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjczODgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1Mjo1NC4wNjE1MTUwMjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0ODk0MTAyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipwaHlfYXR0YWNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMzkwPXZvaWQgcGh5X2F0dGFjaGVkX2luZm8oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTM5My19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzk0OkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaGVkX2luZm8pO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTM5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTM5Nz1jaGFyICpwaHlfYXR0YWNoZWRfaW5mb19pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTQxNi19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNDE3OkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaGVkX2luZm9faXJxKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE0MTgtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNDE5PXZvaWQgcGh5X2F0dGFjaGVkX3ByaW50KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNDM4LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE0Mzk6RVhQT1JUX1NZTUJPTChwaHlfYXR0YWNoZWRfcHJpbnQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTQ0MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTc4MT1pbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkzNS19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTM2OkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkzNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6NTQuNDEwNDYyMDg2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NTQyMzc0MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIEVudHJ5IFBvaW50KipcblxuT2theSwgc28gYHBoeV9hdHRhY2hfZGlyZWN0YCBpcyBleHBvcnRlZCwgYnV0IHRoZSByZWFsIG1lYXQgb2YgdGhlIGRyaXZlciBpbnRlcmFjdGlvbiBzZWVtcyB0byBiZSBoYXBwZW5pbmcgd2l0aGluIGBwaHlfcHJvYmVgIGFuZCBgcGh5X3JlbW92ZWAuIFRob3NlIGFyZSBkcml2ZXIgcHJvYmUgYW5kIHJlbW92ZSBmdW5jdGlvbnMsIHNvIHRoYXQgbWFrZXMgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uXG5cbkJlZm9yZSBkaXZpbmcgaW4gdG9vIGRlZXAsIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIG1lbnRpb25lZCBpbiB0aGUgcGF0Y2guIEkgc2VlIGBDT05GSUdfUEhZTElCX0xFRFNgIHJlZmVyZW5jZWQgd2l0aGluIHRoZSBgcGh5X3Byb2JlYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBpdCdzIHVzZWQgdG8gZW5hYmxlIExFRCBzdXBwb3J0LCBidXQgb25seSBpZiB0aGUgUEhZIGlzbid0IGEgZ2VuZXJpYyBQSFkuIE1pZ2h0IGJlIHNvbWV0aGluZyB1c2VmdWwgdG8gZW5hYmxlIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgc2l0dWF0aW9uLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYFBIWUxJQl9MRURTYCBpbiBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgaXQgZW50YWlscyBhbmQgd2hldGhlciBpdCdzIHJlbGV2YW50IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6NTkuMjY0NzAyMTQ3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQ0NzY0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEhZTElCX0xFRFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDY9Y29uZmlnIE9QRU5fQUxMSUFOQ0VfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDk6Y29uZmlnIFBIWUxJQl9MRURTXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTAtXFx0ZGVmX2Jvb2wgT0ZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6NTkuMzExMTU0ODUyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzODQxODA1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBQSFlMSUIgYW5kIFJlbGF0ZWQgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBgUEhZTElCX0xFRFNgIGlzIGEgYGRlZl9ib29sYCB0aGF0IGRlcGVuZHMgb24gYE9GYCBiZWluZyBlbmFibGVkLiBUaGF0IG1lYW5zIGl0J3MgZW5hYmxlZCBpZiBgT0ZgIGlzIGVuYWJsZWQsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGNhbiBzaW1wbGlmeSB0aGlzLiBJIHNob3VsZCBqdXN0IGFkZCBgUEhZTElCYCBhbmQgYE9GYCwgb3IganVzdCBgUEhZTElCYCwgdG8gdGhlIGNvbmZpZ3VyYXRpb24gbGlzdCwgZGVwZW5kaW5nIG9uIHRoZSBkZXNpcmVkIGJlaGF2aW9yLlxuXG5IZXJlJ3MgbXkgZGlzdGlsbGVkIHN1bW1hcnk6IEkndmUgZGV0ZXJtaW5lZCB0aGlzIG1vZHVsZSBpcyB3b3J0aHkgb2YgZnV6emluZy4gTXkga2V5IGZvY3VzIHN5bWJvbHMgd2lsbCBiZSBgcGh5X2RldmljZV9yZWdpc3RlcmAsIGBwaHlfZGV2aWNlX3JlbW92ZWAsIGBwaHlfZGV2aWNlX2NyZWF0ZWAsIGFuZCBgZ2V0X3BoeV9kZXZpY2VgLiBJIHdpbGwgZW5hYmxlIHRoZSBgUEhZTElCYCBjb25maWd1cmF0aW9uLlxuXG5Ob3csIGxldCdzIHZlcmlmeSBteSBjaG9pY2Ugb2YgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgLiBZZXMsIHRoYXQgcmVnaXN0ZXJzIHRoZSBQSFkgZGV2aWNlIHdpdGggdGhlIGRyaXZlciBjb3JlLiBUaGUgY29yZSB0aGVuIHByb2JlcyBpdCwgd2hpY2ggaXMgaWRlYWwuIGBwaHlfZGV2aWNlX3JlbW92ZWAgdW5yZWdpc3RlcnMgdGhlIGRldmljZSB3aGljaCBjYWxscyBgcGh5X3JlbW92ZWAuIFRoaXMgaXMgZXhhY3RseSB0aGUgcmVnaXN0cmF0aW9uIGFuZCB1bnJlZ2lzdHJhdGlvbiBJIG5lZWQgdG8gdHJpZ2dlciBpbnRlcmVzdGluZyBjb2RlIHBhdGhzIGFuZCBlZGdlIGNhc2VzLiBQZXJmZWN0IVxuXG5UaW1lIHRvIHNldCB0aGVzZSByZXN1bHRzIGFuZCBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NjAsIk91dHB1dFRva2VucyI6MTEwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE0OjUzOjA0LjY5NTMzODA3N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMzU0OTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSUJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlfZGV2aWNlX3JlZ2lzdGVyXCIsXG4gICAgXCJwaHlfZGV2aWNlX3JlbW92ZVwiLFxuICAgIFwicGh5X2RldmljZV9jcmVhdGVcIixcbiAgICBcImdldF9waHlfZGV2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBQSFkgbGlicmFyeSBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyBpbiBkcml2ZXIgcHJvYmUvcmVtb3ZlIHBhdGhzIChwaHlfcHJvYmUsIHBoeV9yZW1vdmUpIGFuZCBwb3J0IHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHJlYWNoYWJsZSB3aGVuIFBIWSBkZXZpY2VzIGFyZSByZWdpc3RlcmVkIGFuZCBib3VuZCB0byBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV9kZXZpY2VfcmVnaXN0ZXJcIixcbiAgICBcInBoeV9kZXZpY2VfcmVtb3ZlXCIsXG4gICAgXCJwaHlfZGV2aWNlX2NyZWF0ZVwiLFxuICAgIFwiZ2V0X3BoeV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIGluIGRyaXZlciBwcm9iZS9yZW1vdmUgcGF0aHMgKHBoeV9wcm9iZSwgcGh5X3JlbW92ZSkgYW5kIHBvcnQgc2V0dXAgZnVuY3Rpb25zLiBUaGVzZSBhcmUgcmVhY2hhYmxlIHdoZW4gUEhZIGRldmljZXMgYXJlIHJlZ2lzdGVyZWQgYW5kIGJvdW5kIHRvIGRyaXZlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE0OjUzOjA0Ljc3ODY5OTA1OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2NzkxOTc3MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1MzowNC43NzkyMTQ0MjlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTU2Nzg2Nzg3NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZvY3VzZXMgZW50aXJlbHkgb24gZml4aW5nIHJlc291cmNlIGxlYWtzIGFuZCBpbmNvcnJlY3QgY2xlYW51cCBvcmRlciBvbiBlcnJvciBwYXRocyBpbiB0aGUgUEhZIGRldmljZSBkcml2ZXIgKGUuZy4sIHByb3Blcmx5IGRlc3Ryb3lpbmcgcG9ydHMsIHJlbGVhc2luZyBTRlAgcmVzb3VyY2VzLCBhbmQgY2FsbGluZyB0aGUgZHJpdmVyJ3MgcmVtb3ZlIGNhbGxiYWNrIG9uIGZhaWx1cmUpLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQga21lbWxlYWsuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBub3IgYW55IGNvbnRyb2wgZmxvdyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MDJmNjRiZjVmNzFkNDk2MWE4MzVjNzdjOWE2ZWRlNzgwODEzOWIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTQ6NTI6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggMDYxNTIyODQ1OWVmNC4uYjAwNjBiNDE0NzM0OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0xNzIzLDEyICsxNzIzLDQxIEBAIHN0YXRpYyBpbnQgcGh5X3NmcF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHRcdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbiBcdH1cbiBcbi1cdGlmICghcmV0IFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlc2ZwX2J1cylcbitcdGlmICghcmV0IFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlc2ZwX2J1cykge1xuIFx0XHRyZXQgPSBwaHlfc2V0dXBfc2ZwX3BvcnQocGh5ZGV2KTtcbitcdFx0aWYgKHJldCkge1xuK1x0XHRcdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cdTAwM2VzZnBfYnVzKTtcbitcdFx0XHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4rXHRcdH1cbitcdH1cbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuKy8qKlxuKyAqIHBoeV9zZnBfcmVsZWFzZSAtIHJlbGVhc2UgcmVzb3VyY2VzIHNldCB1cCBieSBwaHlfc2ZwX3Byb2JlKClcbisgKiBAcGh5ZGV2OiB0aGUgUEhZIGRldmljZVxuKyAqXG4rICogUmVsZWFzZSB0aGUgU0ZQIHJlc291cmNlcyBzZXQgdXAgYnkgYSBzdWNjZXNzZnVsIHBoeV9zZnBfcHJvYmUoKS4gVW5yZWdpc3RlclxuKyAqIHRoZSB1cHN0cmVhbSBiZWZvcmUgZGVzdHJveWluZyBpdHMgcGh5X3BvcnQsIHNvIFNGUCB1cHN0cmVhbSBjYWxsYmFja3MgY2Fubm90XG4rICogcmFjZSB3aXRoIHBvcnQgZGVzdHJ1Y3Rpb24uXG4rICovXG4rc3RhdGljIHZvaWQgcGh5X3NmcF9yZWxlYXNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0c3RydWN0IHBoeV9wb3J0ICpwb3J0LCAqdG1wO1xuK1xuK1x0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuK1x0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcnQsIHRtcCwgXHUwMDI2cGh5ZGV2LVx1MDAzZXBvcnRzLCBoZWFkKSB7XG4rXHRcdGlmICghcG9ydC1cdTAwM2Vpc19zZnApXG4rXHRcdFx0Y29udGludWU7XG4rXG4rXHRcdHBoeV9kZWxfcG9ydChwaHlkZXYsIHBvcnQpO1xuK1x0XHRwaHlfcG9ydF9kZXN0cm95KHBvcnQpO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuIHtcbiBcdHJldHVybiBwaHlkcnYtXHUwMDNlY29uZmlnX2ludHIgXHUwMDI2XHUwMDI2IHBoeWRydi1cdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xuQEAgLTM0MjksNiArMzQ1OCw3IEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQgPSBwaHlfcG9ydF9hbGxvYygpO1xuIFx0dW5zaWduZWQgbG9uZyBtb2RlO1xuK1x0aW50IHJldDtcbiBcbiBcdGlmICghcG9ydClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG5AQCAtMzQ1NSw5ICszNDg1LDExIEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0cG9ydC1cdTAwM2VwYWlycyA9IG1heF90KGludCwgcG9ydC1cdTAwM2VwYWlycyxcbiBcdFx0XHRcdCAgICBldGh0b29sX2xpbmttb2RlX25fcGFpcnMobW9kZSkpO1xuIFxuLVx0cGh5X2FkZF9wb3J0KHBoeWRldiwgcG9ydCk7XG4rXHRyZXQgPSBwaHlfYWRkX3BvcnQocGh5ZGV2LCBwb3J0KTtcbitcdGlmIChyZXQpXG4rXHRcdHBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7XG4gXG4tXHRyZXR1cm4gMDtcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyBpbnQgb2ZfcGh5X3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5AQCAtMzUyMiwxMyArMzU1NCwxMyBAQCBzdGF0aWMgaW50IHBoeV9zZXR1cF9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0aWYgKCFwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuIFx0XHRyZXQgPSBwaHlfc2ZwX3Byb2JlKHBoeWRldik7XG4gXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0Z290byBlcnJfcG9ydHM7XG4gXHR9XG4gXG4gXHRpZiAocGh5ZGV2LVx1MDAzZW5fcG9ydHMgXHUwMDNjIHBoeWRldi1cdTAwM2VtYXhfbl9wb3J0cykge1xuIFx0XHRyZXQgPSBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChwaHlkZXYpO1xuIFx0XHRpZiAocmV0KVxuLVx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdGdvdG8gZXJyX3NmcDtcbiBcdH1cbiBcbiBcdGxpbmttb2RlX3plcm8ocG9ydHNfc3VwcG9ydGVkKTtcbkBAIC0zNTU1LDcgKzM1ODcsOSBAQCBzdGF0aWMgaW50IHBoeV9zZXR1cF9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFxuIFx0cmV0dXJuIDA7XG4gXG4tb3V0OlxuK2Vycl9zZnA6XG4rXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbitlcnJfcG9ydHM6XG4gXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMzY4MSw3ICszNzE1LDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcHJvYmUpIHtcbiBcdFx0ZXJyID0gcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2Vwcm9iZShwaHlkZXYpO1xuIFx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdGdvdG8gb3V0X3Jlc2V0O1xuIFx0fVxuIFxuIFx0cGh5X2Rpc2FibGVfaW50ZXJydXB0cyhwaHlkZXYpO1xuQEAgLTM3MDIsNyArMzczNiw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdFx0ZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XG4gXG4gXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbitcdFx0Z290byBvdXRfcmVtb3ZlO1xuIFxuIFx0aWYgKCFsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCxcbiBcdFx0XHQgICAgICAgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCkpXG5AQCAtMzcxOSw3ICszNzUzLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFxuIFx0ZXJyID0gcGh5X3NldHVwX3BvcnRzKHBoeWRldik7XG4gXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbitcdFx0Z290byBvdXRfcmVtb3ZlO1xuIFxuIFx0cGh5X2FkdmVydGlzZV9zdXBwb3J0ZWQocGh5ZGV2KTtcbiBcbkBAIC0zNzI4LDcgKzM3NjIsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHQgKi9cbiBcdGVyciA9IGdlbnBoeV9jNDVfcmVhZF9lZWVfYWR2KHBoeWRldiwgcGh5ZGV2LVx1MDAzZWFkdmVydGlzaW5nX2VlZSk7XG4gXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbitcdFx0Z290byBvdXRfcG9ydHM7XG4gXG4gXHQvKiBHZXQgdGhlIEVFRSBtb2RlcyB3ZSB3YW50IHRvIHByb2hpYml0LiAqL1xuIFx0b2Zfc2V0X3BoeV9lZWVfYnJva2VuKHBoeWRldik7XG5AQCAtMzc4MSwyMiArMzgxNSwyOSBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZTElCX0xFRFMpIFx1MDAyNlx1MDAyNiAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkge1xuIFx0XHRlcnIgPSBvZl9waHlfbGVkcyhwaHlkZXYpO1xuIFx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdGdvdG8gb3V0X2xlZF90cmlnZ2VycztcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuIFxuLW91dDpcbi1cdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cdTAwM2VzZnBfYnVzKTtcbi1cdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbitvdXRfbGVkX3RyaWdnZXJzOlxuK1x0aWYgKCFwaHlkZXYtXHUwMDNlaXNfb25fc2ZwX21vZHVsZSlcbitcdFx0cGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyKHBoeWRldik7XG4rXG4rXHRwaHlkZXYtXHUwMDNlc3RhdGUgPSBQSFlfRE9XTjtcbiBcbitvdXRfcG9ydHM6XG4rXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXG4tXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuLVx0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbitvdXRfcmVtb3ZlOlxuK1x0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKVxuK1x0XHRwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZShwaHlkZXYpO1xuIFxuK291dF9yZXNldDpcbiBcdC8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4rXHRwaHlkZXYtXHUwMDNlZHJ2ID0gTlVMTDtcbiBcbiBcdHJldHVybiBlcnI7XG4gfVxuQEAgLTM4MTUsOSArMzg1Niw3IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXG4gXHRwaHlkZXYtXHUwMDNlc3RhdGUgPSBQSFlfRE9XTjtcbiBcbi1cdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cdTAwM2VzZnBfYnVzKTtcbi1cdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbi1cbitcdHBoeV9zZnBfcmVsZWFzZShwaHlkZXYpO1xuIFx0cGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTtcbiBcbiBcdGlmIChwaHlkZXYtXHUwMDNlZHJ2IFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE0OjUzOjA0Ljc3OTIxNTAzOVoiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTY3ODY1NTUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgUEhZIERldmljZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCwgYW5kIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQncyBhbGwgYWJvdXQgaGFyZGVuaW5nIHRoZSBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBwcm9jZWR1cmVzIHdpdGhpbiB0aGUgUEhZIGRldmljZSBkcml2ZXIuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBjbGFzc2ljIGNhc2Ugb2YgcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgZXJyb3IgcGF0aCBjb3JyZWN0aW9ucy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMgcmV2b2x2ZSBhcm91bmQgYHBoeV9zZnBfcHJvYmVgLCBgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnRgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9wcm9iZWAsIGFuZCBgcGh5X3JlbW92ZWAuIFdlJ3ZlIGludHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24sIGBwaHlfc2ZwX3JlbGVhc2VgLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgY29ycmVjdGx5IHJlbGVhc2luZyBTRlAgcmVzb3VyY2VzIGFuZCBkZXN0cm95aW5nIHBvcnRzLlxuXG5UaGUgZm9jdXMgaXMgc3F1YXJlbHkgb24gZml4aW5nIHJlc291cmNlIGxlYWtzIGFuZCBhZGRyZXNzaW5nIHBvdGVudGlhbCBpc3N1ZXMgbGlrZSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3MgaWYgdGhpbmdzIGdvIHNvdXRoIGR1cmluZyBpbml0aWFsaXphdGlvbiBvciBvcGVyYXRpb24uIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGVyZSB3ZXJlIGluc3RhbmNlcyB3aGVyZSByZXNvdXJjZXMgd2VyZSBiZWluZyBhbGxvY2F0ZWQgYnV0IG5vdCBkZWFsbG9jYXRlZCB3aGVuIGFuIGVycm9yIG9jY3VycmVkLCBsZWFkaW5nIHRvIG1lbW9yeSBsZWFrcyBvciBwb3RlbnRpYWxseSBmcmVlaW5nIGEgcmVzb3VyY2UgdGhhdCdzIHN0aWxsIGluIHVzZS4gVGhlIHBhdGNoIGVuc3VyZXMgdGhhdCBpbiBlcnJvciBjYXNlcyAoZS5nLiwgd2l0aGluIGBwaHlfcG9ydF9kZXN0cm95YCwgYHBoeV9zZnBfcmVsZWFzZWAsIGFuZCB0aGUgYHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlYCBjYWxsIGluIGBwaHlfcHJvYmVgKSwgcmVzb3VyY2VzIGFyZSBwcm9wZXJseSBjbGVhbmVkIHVwLlxuXG5UaGVyZSdzIG5vIGluZGljYXRpb24gaGVyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIHRvIHVzZXIgc3BhY2Ugb3IgaW5mbHVlbmNpbmcgY29udHJvbCBmbG93LiBLTVNBTiwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGlzIG5vdCByZWxldmFudCBoZXJlLiBUaGlzIGlzIHB1cmVseSBhYm91dCBmaXhpbmcgcmVzb3VyY2UgbGVha3MgYW5kIGVuc3VyaW5nIGNsZWFuIGV4aXQgcGF0aHMgaW4gdGhlIGNhc2Ugb2YgZXJyb3JzLCB3aGljaCwgYXMgYW4gZXhwZXJ0IGluIG15IGZpZWxkLCBJIGNhbiBzZWUgaXMgYSB2YWx1YWJsZSBhZGRpdGlvbiB0byB0aGUgY29kZS4gV2UncmUgbG9va2luZyBhdCBzY2VuYXJpb3Mgd2hlcmUgS0FTQU4gb3IgS01FTUxFQUsgd291bGQndmUgY2F1Z2h0IHRoZSBidWdzIHJlbGF0ZWQgdG8gbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlLCBpZiB0aGVzZSB0b29scyB3ZXJlIHVzZWQuXG5cbkknbSBub3cgZ29pbmcgdG8gcXVpY2tseSBnbyB0aHJvdWdoIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgYW5kIGNvbmZpcm0gbXkgaW5pdGlhbCBhc3N1bXB0aW9ucy5cblxuTG9va2luZyBhdCBgcGh5X3NmcF9wcm9iZWA6IFdlIGhhdmUgYW4gYWRkaXRpb24gZm9yIHByb3BlciBzZnAgYnVzIGNsZWFudXAuXG5cbkluIGBwaHlfc2ZwX3JlbGVhc2VgOiBUaGUgbmV3IGZ1bmN0aW9uIGlzIG5vdyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlIHNmcCBidXMgYW5kIGFsc28gZGVzdHJveWluZyByZWxldmFudCBwb3J0cyBvbiB0aGUgUEhZIGRldmljZS5cblxuSW4gYHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0YDogVGhlIGFkZGl0aW9uIGVuc3VyZXMgdGhhdCBpZiBgcGh5X2FkZF9wb3J0YCBmYWlscywgdGhlIGFsbG9jYXRlZCBwb3J0IGlzIHByb3Blcmx5IGRlc3Ryb3llZC5cblxuSW4gYHBoeV9zZXR1cF9wb3J0c2A6IFRoZSBhZGRpdGlvbnMgZW5zdXJlcyB0aGF0IGlmIHRoaW5ncyBnbyB3cm9uZywgdGhlIFNGUCBidXMgaXMgcmVsZWFzZWQsIHBvcnRzIGFyZSBjbGVhbmVkIHVwLCBhbmQgYXNzb2NpYXRlZCBhY3Rpb25zIHBlcmZvcm1lZCBvbiBlcnJvcnMuXG5cbkZpbmFsbHksIGluIGBwaHlfcHJvYmVgOiBUaGUgYWRkaXRpb25zIGVuc3VyZSB0aGF0IHRoZSBkZXZpY2UncyByZXNvdXJjZXMgYW5kIHN0YXRlcyBhcmUgaGFuZGxlZCB3ZWxsIHdoZW4gYW4gZXJyb3IgaXMgZGV0ZWN0ZWQuXG5cblllcCwgdGhlIGFuYWx5c2lzIGhvbGRzLiBUaGlzIGlzIGdvb2Qgc29saWQgZXJyb3IgaGFuZGxpbmcgd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwNSwiT3V0cHV0VG9rZW5zIjoxMzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTM6MjAuNDU3ODczOTI2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmb2N1c2VzIGVudGlyZWx5IG9uIGZpeGluZyByZXNvdXJjZSBsZWFrcyBhbmQgaW5jb3JyZWN0IGNsZWFudXAgb3JkZXIgb24gZXJyb3IgcGF0aHMgaW4gdGhlIFBIWSBkZXZpY2UgZHJpdmVyIChlLmcuLCBwcm9wZXJseSBkZXN0cm95aW5nIHBvcnRzLCByZWxlYXNpbmcgU0ZQIHJlc291cmNlcywgYW5kIGNhbGxpbmcgdGhlIGRyaXZlcidzIHJlbW92ZSBjYWxsYmFjayBvbiBmYWlsdXJlKS4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIHBvdGVudGlhbCBtZW1vcnkgbGVha3MgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIGttZW1sZWFrLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb3IgZXhwb3N1cmUgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgbm9yIGFueSBjb250cm9sIGZsb3cgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZm9jdXNlcyBlbnRpcmVseSBvbiBmaXhpbmcgcmVzb3VyY2UgbGVha3MgYW5kIGluY29ycmVjdCBjbGVhbnVwIG9yZGVyIG9uIGVycm9yIHBhdGhzIGluIHRoZSBQSFkgZGV2aWNlIGRyaXZlciAoZS5nLiwgcHJvcGVybHkgZGVzdHJveWluZyBwb3J0cywgcmVsZWFzaW5nIFNGUCByZXNvdXJjZXMsIGFuZCBjYWxsaW5nIHRoZSBkcml2ZXIncyByZW1vdmUgY2FsbGJhY2sgb24gZmFpbHVyZSkuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBrbWVtbGVhay4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIG5vciBhbnkgY29udHJvbCBmbG93IGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow9x4cf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 14:51:09 +0000 UTC FinishedAt: 2026-08-13 14:53:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "f5bbbfec59b4e2fb7520a91de3df8a6174325d6a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "f5bbbfec59b4e2fb7520a91de3df8a6174325d6a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB" ], "series_id": "7207b8ee-eaea-48ad-84d5-ab75ca8b0314" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phy_device_register", "phy_device_remove", "phy_device_create", "get_phy_device" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE0OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0OywKICAgICYjMzQ7Z2V0X3BoeV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmb2N1c2VzIGVudGlyZWx5IG9uIGZpeGluZyByZXNvdXJjZSBsZWFrcyBhbmQgaW5jb3JyZWN0IGNsZWFudXAgb3JkZXIgb24gZXJyb3IgcGF0aHMgaW4gdGhlIFBIWSBkZXZpY2UgZHJpdmVyIChlLmcuLCBwcm9wZXJseSBkZXN0cm95aW5nIHBvcnRzLCByZWxlYXNpbmcgU0ZQIHJlc291cmNlcywgYW5kIGNhbGxpbmcgdGhlIGRyaXZlciYjMzk7cyByZW1vdmUgY2FsbGJhY2sgb24gZmFpbHVyZSkuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBrbWVtbGVhay4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIG5vciBhbnkgY29udHJvbCBmbG93IGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIGluIGRyaXZlciBwcm9iZS9yZW1vdmUgcGF0aHMgKHBoeV9wcm9iZSwgcGh5X3JlbW92ZSkgYW5kIHBvcnQgc2V0dXAgZnVuY3Rpb25zLiBUaGVzZSBhcmUgcmVhY2hhYmxlIHdoZW4gUEhZIGRldmljZXMgYXJlIHJlZ2lzdGVyZWQgYW5kIGJvdW5kIHRvIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MDJmNjRiZjVmNzFkNDk2MWE4MzVjNzdjOWE2ZWRlNzgwODEzOWIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTQ6NTI6MTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbmluZGV4IDA2MTUyMjg0NTllZjQuLmIwMDYwYjQxNDczNDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5AQCAtMTcyMywxMiAmIzQzOzE3MjMsNDEgQEAgc3RhdGljIGludCBwaHlfc2ZwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdFx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuIFx0fVxuIFxuLVx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VzZnBfYnVzKVxuJiM0MztcdGlmICghcmV0IFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlc2ZwX2J1cykge1xuIFx0XHRyZXQgPSBwaHlfc2V0dXBfc2ZwX3BvcnQocGh5ZGV2KTtcbiYjNDM7XHRcdGlmIChyZXQpIHtcbiYjNDM7XHRcdFx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuJiM0MztcdFx0XHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiBwaHlfc2ZwX3JlbGVhc2UgLSByZWxlYXNlIHJlc291cmNlcyBzZXQgdXAgYnkgcGh5X3NmcF9wcm9iZSgpXG4mIzQzOyAqIEBwaHlkZXY6IHRoZSBQSFkgZGV2aWNlXG4mIzQzOyAqXG4mIzQzOyAqIFJlbGVhc2UgdGhlIFNGUCByZXNvdXJjZXMgc2V0IHVwIGJ5IGEgc3VjY2Vzc2Z1bCBwaHlfc2ZwX3Byb2JlKCkuIFVucmVnaXN0ZXJcbiYjNDM7ICogdGhlIHVwc3RyZWFtIGJlZm9yZSBkZXN0cm95aW5nIGl0cyBwaHlfcG9ydCwgc28gU0ZQIHVwc3RyZWFtIGNhbGxiYWNrcyBjYW5ub3RcbiYjNDM7ICogcmFjZSB3aXRoIHBvcnQgZGVzdHJ1Y3Rpb24uXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCBwaHlfc2ZwX3JlbGVhc2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwaHlfcG9ydCAqcG9ydCwgKnRtcDtcbiYjNDM7XG4mIzQzO1x0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuJiM0MztcdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcnQsIHRtcCwgXHUwMDI2cGh5ZGV2LVx1MDAzZXBvcnRzLCBoZWFkKSB7XG4mIzQzO1x0XHRpZiAoIXBvcnQtXHUwMDNlaXNfc2ZwKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRwaHlfZGVsX3BvcnQocGh5ZGV2LCBwb3J0KTtcbiYjNDM7XHRcdHBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXG4ge1xuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG5AQCAtMzQyOSw2ICYjNDM7MzQ1OCw3IEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQgPSBwaHlfcG9ydF9hbGxvYygpO1xuIFx0dW5zaWduZWQgbG9uZyBtb2RlO1xuJiM0MztcdGludCByZXQ7XG4gXG4gXHRpZiAoIXBvcnQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuQEAgLTM0NTUsOSAmIzQzOzM0ODUsMTEgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHRwb3J0LVx1MDAzZXBhaXJzID0gbWF4X3QoaW50LCBwb3J0LVx1MDAzZXBhaXJzLFxuIFx0XHRcdFx0ICAgIGV0aHRvb2xfbGlua21vZGVfbl9wYWlycyhtb2RlKSk7XG4gXG4tXHRwaHlfYWRkX3BvcnQocGh5ZGV2LCBwb3J0KTtcbiYjNDM7XHRyZXQgPSBwaHlfYWRkX3BvcnQocGh5ZGV2LCBwb3J0KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cGh5X3BvcnRfZGVzdHJveShwb3J0KTtcbiBcbi1cdHJldHVybiAwO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyBpbnQgb2ZfcGh5X3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5AQCAtMzUyMiwxMyAmIzQzOzM1NTQsMTMgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdGlmICghcGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbiBcdFx0cmV0ID0gcGh5X3NmcF9wcm9iZShwaHlkZXYpO1xuIFx0XHRpZiAocmV0KVxuLVx0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0XHRnb3RvIGVycl9wb3J0cztcbiBcdH1cbiBcbiBcdGlmIChwaHlkZXYtXHUwMDNlbl9wb3J0cyBcdTAwM2MgcGh5ZGV2LVx1MDAzZW1heF9uX3BvcnRzKSB7XG4gXHRcdHJldCA9IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHBoeWRldik7XG4gXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRcdGdvdG8gZXJyX3NmcDtcbiBcdH1cbiBcbiBcdGxpbmttb2RlX3plcm8ocG9ydHNfc3VwcG9ydGVkKTtcbkBAIC0zNTU1LDcgJiM0MzszNTg3LDkgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcbiBcdHJldHVybiAwO1xuIFxuLW91dDpcbiYjNDM7ZXJyX3NmcDpcbiYjNDM7XHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiYjNDM7ZXJyX3BvcnRzOlxuIFx0cGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTM2ODEsNyAmIzQzOzM3MTUsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydi1cdTAwM2Vwcm9iZSkge1xuIFx0XHRlcnIgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXByb2JlKHBoeWRldik7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRcdGdvdG8gb3V0X3Jlc2V0O1xuIFx0fVxuIFxuIFx0cGh5X2Rpc2FibGVfaW50ZXJydXB0cyhwaHlkZXYpO1xuQEAgLTM3MDIsNyAmIzQzOzM3MzYsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdGVyciA9IGdlbnBoeV9yZWFkX2FiaWxpdGllcyhwaHlkZXYpO1xuIFxuIFx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRnb3RvIG91dF9yZW1vdmU7XG4gXG4gXHRpZiAoIWxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULFxuIFx0XHRcdCAgICAgICBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKSlcbkBAIC0zNzE5LDcgJiM0MzszNzUzLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFxuIFx0ZXJyID0gcGh5X3NldHVwX3BvcnRzKHBoeWRldik7XG4gXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdGdvdG8gb3V0X3JlbW92ZTtcbiBcbiBcdHBoeV9hZHZlcnRpc2Vfc3VwcG9ydGVkKHBoeWRldik7XG4gXG5AQCAtMzcyOCw3ICYjNDM7Mzc2Miw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdCAqL1xuIFx0ZXJyID0gZ2VucGh5X2M0NV9yZWFkX2VlZV9hZHYocGh5ZGV2LCBwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0Z290byBvdXRfcG9ydHM7XG4gXG4gXHQvKiBHZXQgdGhlIEVFRSBtb2RlcyB3ZSB3YW50IHRvIHByb2hpYml0LiAqL1xuIFx0b2Zfc2V0X3BoeV9lZWVfYnJva2VuKHBoeWRldik7XG5AQCAtMzc4MSwyMiAmIzQzOzM4MTUsMjkgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcdTAwMjZcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHtcbiBcdFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcbiBcdFx0aWYgKGVycilcbi1cdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdFx0Z290byBvdXRfbGVkX3RyaWdnZXJzO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG4gXG4tb3V0OlxuLVx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuLVx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuJiM0MztvdXRfbGVkX3RyaWdnZXJzOlxuJiM0MztcdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4mIzQzO1x0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbiYjNDM7XG4mIzQzO1x0cGh5ZGV2LVx1MDAzZXN0YXRlID0gUEhZX0RPV047XG4gXG4mIzQzO291dF9wb3J0czpcbiYjNDM7XHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXG4tXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuLVx0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbiYjNDM7b3V0X3JlbW92ZTpcbiYjNDM7XHRpZiAocGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUpXG4mIzQzO1x0XHRwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZShwaHlkZXYpO1xuIFxuJiM0MztvdXRfcmVzZXQ6XG4gXHQvKiBSZS1hc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCBvbiBlcnJvciAqL1xuIFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xuJiM0MztcdHBoeWRldi1cdTAwM2VkcnYgPSBOVUxMO1xuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMzgxNSw5ICYjNDM7Mzg1Niw3IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXG4gXHRwaHlkZXYtXHUwMDNlc3RhdGUgPSBQSFlfRE9XTjtcbiBcbi1cdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cdTAwM2VzZnBfYnVzKTtcbi1cdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbi1cbiYjNDM7XHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0OywKICAgICYjMzQ7Z2V0X3BoeV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBQSFkgbGlicmFyeSBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyBpbiBkcml2ZXIgcHJvYmUvcmVtb3ZlIHBhdGhzIChwaHlfcHJvYmUsIHBoeV9yZW1vdmUpIGFuZCBwb3J0IHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHJlYWNoYWJsZSB3aGVuIFBIWSBkZXZpY2VzIGFyZSByZWdpc3RlcmVkIGFuZCBib3VuZCB0byBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzAyZjY0YmY1ZjcxZDQ5NjFhODM1Yzc3YzlhNmVkZTc4MDgxMzliMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDE0OjUyOjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKaW5kZXggMDYxNTIyODQ1OWVmNC4uYjAwNjBiNDE0NzM0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCkBAIC0xNzIzLDEyICYjNDM7MTcyMyw0MSBAQCBzdGF0aWMgaW50IHBoeV9zZnBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJCXBoeWRldi0mZ3Q7c2ZwX2J1cyA9IE5VTEw7CiAJfQogCi0JaWYgKCFyZXQgJmFtcDsmYW1wOyBwaHlkZXYtJmd0O3NmcF9idXMpCiYjNDM7CWlmICghcmV0ICZhbXA7JmFtcDsgcGh5ZGV2LSZndDtzZnBfYnVzKSB7CiAJCXJldCA9IHBoeV9zZXR1cF9zZnBfcG9ydChwaHlkZXYpOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7CiYjNDM7CQkJcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKJiM0MzsJCX0KJiM0MzsJfQogCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIHBoeV9zZnBfcmVsZWFzZSAtIHJlbGVhc2UgcmVzb3VyY2VzIHNldCB1cCBieSBwaHlfc2ZwX3Byb2JlKCkKJiM0MzsgKiBAcGh5ZGV2OiB0aGUgUEhZIGRldmljZQomIzQzOyAqCiYjNDM7ICogUmVsZWFzZSB0aGUgU0ZQIHJlc291cmNlcyBzZXQgdXAgYnkgYSBzdWNjZXNzZnVsIHBoeV9zZnBfcHJvYmUoKS4gVW5yZWdpc3RlcgomIzQzOyAqIHRoZSB1cHN0cmVhbSBiZWZvcmUgZGVzdHJveWluZyBpdHMgcGh5X3BvcnQsIHNvIFNGUCB1cHN0cmVhbSBjYWxsYmFja3MgY2Fubm90CiYjNDM7ICogcmFjZSB3aXRoIHBvcnQgZGVzdHJ1Y3Rpb24uCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgcGh5X3NmcF9yZWxlYXNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQsICp0bXA7CiYjNDM7CiYjNDM7CXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7CiYjNDM7CXBoeWRldi0mZ3Q7c2ZwX2J1cyA9IE5VTEw7CiYjNDM7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3J0LCB0bXAsICZhbXA7cGh5ZGV2LSZndDtwb3J0cywgaGVhZCkgewomIzQzOwkJaWYgKCFwb3J0LSZndDtpc19zZnApCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlwaHlfZGVsX3BvcnQocGh5ZGV2LCBwb3J0KTsKJiM0MzsJCXBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KQogewogCXJldHVybiBwaHlkcnYtJmd0O2NvbmZpZ19pbnRyICZhbXA7JmFtcDsgcGh5ZHJ2LSZndDtoYW5kbGVfaW50ZXJydXB0OwpAQCAtMzQyOSw2ICYjNDM7MzQ1OCw3IEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKIAlzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQgPSBwaHlfcG9ydF9hbGxvYygpOwogCXVuc2lnbmVkIGxvbmcgbW9kZTsKJiM0MzsJaW50IHJldDsKIAogCWlmICghcG9ydCkKIAkJcmV0dXJuIC1FTk9NRU07CkBAIC0zNDU1LDkgJiM0MzszNDg1LDExIEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJcG9ydC0mZ3Q7cGFpcnMgPSBtYXhfdChpbnQsIHBvcnQtJmd0O3BhaXJzLAogCQkJCSAgICBldGh0b29sX2xpbmttb2RlX25fcGFpcnMobW9kZSkpOwogCi0JcGh5X2FkZF9wb3J0KHBoeWRldiwgcG9ydCk7CiYjNDM7CXJldCA9IHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcGh5X3BvcnRfZGVzdHJveShwb3J0KTsKIAotCXJldHVybiAwOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IG9mX3BoeV9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQpAQCAtMzUyMiwxMyAmIzQzOzM1NTQsMTMgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAlpZiAoIXBoeWRldi0mZ3Q7aXNfZ2VucGh5X2RyaXZlbikgewogCQlyZXQgPSBwaHlfc2ZwX3Byb2JlKHBoeWRldik7CiAJCWlmIChyZXQpCi0JCQlnb3RvIG91dDsKJiM0MzsJCQlnb3RvIGVycl9wb3J0czsKIAl9CiAKIAlpZiAocGh5ZGV2LSZndDtuX3BvcnRzICZsdDsgcGh5ZGV2LSZndDttYXhfbl9wb3J0cykgewogCQlyZXQgPSBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChwaHlkZXYpOwogCQlpZiAocmV0KQotCQkJZ290byBvdXQ7CiYjNDM7CQkJZ290byBlcnJfc2ZwOwogCX0KIAogCWxpbmttb2RlX3plcm8ocG9ydHNfc3VwcG9ydGVkKTsKQEAgLTM1NTUsNyAmIzQzOzM1ODcsOSBAQCBzdGF0aWMgaW50IHBoeV9zZXR1cF9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCiAJcmV0dXJuIDA7CiAKLW91dDoKJiM0MztlcnJfc2ZwOgomIzQzOwlwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTsKJiM0MztlcnJfcG9ydHM6CiAJcGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTsKIAlyZXR1cm4gcmV0OwogfQpAQCAtMzY4MSw3ICYjNDM7MzcxNSw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlpZiAocGh5ZGV2LSZndDtkcnYtJmd0O3Byb2JlKSB7CiAJCWVyciA9IHBoeWRldi0mZ3Q7ZHJ2LSZndDtwcm9iZShwaHlkZXYpOwogCQlpZiAoZXJyKQotCQkJZ290byBvdXQ7CiYjNDM7CQkJZ290byBvdXRfcmVzZXQ7CiAJfQogCiAJcGh5X2Rpc2FibGVfaW50ZXJydXB0cyhwaHlkZXYpOwpAQCAtMzcwMiw3ICYjNDM7MzczNiw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7CiAKIAlpZiAoZXJyKQotCQlnb3RvIG91dDsKJiM0MzsJCWdvdG8gb3V0X3JlbW92ZTsKIAogCWlmICghbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsCiAJCQkgICAgICAgcGh5ZGV2LSZndDtzdXBwb3J0ZWQpKQpAQCAtMzcxOSw3ICYjNDM7Mzc1Myw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAogCWVyciA9IHBoeV9zZXR1cF9wb3J0cyhwaHlkZXYpOwogCWlmIChlcnIpCi0JCWdvdG8gb3V0OwomIzQzOwkJZ290byBvdXRfcmVtb3ZlOwogCiAJcGh5X2FkdmVydGlzZV9zdXBwb3J0ZWQocGh5ZGV2KTsKIApAQCAtMzcyOCw3ICYjNDM7Mzc2Miw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAkgKi8KIAllcnIgPSBnZW5waHlfYzQ1X3JlYWRfZWVlX2FkdihwaHlkZXYsIHBoeWRldi0mZ3Q7YWR2ZXJ0aXNpbmdfZWVlKTsKIAlpZiAoZXJyKQotCQlnb3RvIG91dDsKJiM0MzsJCWdvdG8gb3V0X3BvcnRzOwogCiAJLyogR2V0IHRoZSBFRUUgbW9kZXMgd2Ugd2FudCB0byBwcm9oaWJpdC4gKi8KIAlvZl9zZXRfcGh5X2VlZV9icm9rZW4ocGh5ZGV2KTsKQEAgLTM3ODEsMjIgJiM0MzszODE1LDI5IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlpZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZTElCX0xFRFMpICZhbXA7JmFtcDsgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHsKIAkJZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTsKIAkJaWYgKGVycikKLQkJCWdvdG8gb3V0OwomIzQzOwkJCWdvdG8gb3V0X2xlZF90cmlnZ2VyczsKIAl9CiAKIAlyZXR1cm4gMDsKIAotb3V0OgotCXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7Ci0JcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKJiM0MztvdXRfbGVkX3RyaWdnZXJzOgomIzQzOwlpZiAoIXBoeWRldi0mZ3Q7aXNfb25fc2ZwX21vZHVsZSkKJiM0MzsJCXBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpOwomIzQzOwomIzQzOwlwaHlkZXYtJmd0O3N0YXRlID0gUEhZX0RPV047CiAKJiM0MztvdXRfcG9ydHM6CiYjNDM7CXBoeV9zZnBfcmVsZWFzZShwaHlkZXYpOwogCXBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7CiAKLQlpZiAoIXBoeWRldi0mZ3Q7aXNfb25fc2ZwX21vZHVsZSkKLQkJcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyKHBoeWRldik7CiYjNDM7b3V0X3JlbW92ZToKJiM0MzsJaWYgKHBoeWRldi0mZ3Q7ZHJ2LSZndDtyZW1vdmUpCiYjNDM7CQlwaHlkZXYtJmd0O2Rydi0mZ3Q7cmVtb3ZlKHBoeWRldik7CiAKJiM0MztvdXRfcmVzZXQ6CiAJLyogUmUtYXNzZXJ0IHRoZSByZXNldCBzaWduYWwgb24gZXJyb3IgKi8KIAlwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7CiYjNDM7CXBoeWRldi0mZ3Q7ZHJ2ID0gTlVMTDsKIAogCXJldHVybiBlcnI7CiB9CkBAIC0zODE1LDkgJiM0MzszODU2LDcgQEAgc3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikKIAogCXBoeWRldi0mZ3Q7c3RhdGUgPSBQSFlfRE9XTjsKIAotCXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7Ci0JcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKLQomIzQzOwlwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTsKIAlwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpOwogCiAJaWYgKHBoeWRldi0mZ3Q7ZHJ2ICZhbXA7JmFtcDsgcGh5ZGV2LSZndDtkcnYtJmd0O3JlbW92ZSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcwOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDcml0aWNhbCBOZXR3b3JrIFBIWSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIFBIWSBsaWJyYXJ5LCBhbmQgaXQmIzM5O3MgbWFraW5nIGNoYW5nZXMgdG8gZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAsIHNwZWNpZmljYWxseSBpbiBgcGh5X3NmcF9wcm9iZWAsIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3Byb2JlYCwgYW5kIGBwaHlfcmVtb3ZlYC4gSW50ZXJlc3Rpbmcg4oCTIHRoZXkmIzM5O3ZlIGV2ZW4gYWRkZWQgYSBuZXcgZnVuY3Rpb24sIGBwaHlfc2ZwX3JlbGVhc2VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtpcyB0aGlzIHdvcnRoIGZ1enppbmc/JiMzNDsuCgpHaXZlbiB0aGUgbG9jYXRpb24gYW5kIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgdGhpcyAqaGFzKiB0byBiZSByZWFjaGFibGUuIFRoZSBtb2RpZmljYXRpb25zIGFyZSBkZWVwIHdpdGhpbiB0aGUgUEhZIHByb2JpbmcgcHJvY2VzcyBpdHNlbGYg4oCTIHBhcnRpY3VsYXJseSBgcGh5X3Byb2JlYCBhbmQgaXRzIGFzc29jaWF0ZWQgZnVuY3Rpb25zLiBgcGh5X3Byb2JlYCBpcywgYXMgdGhlIG5hbWUgaW1wbGllcywgYXQgdGhlIGhlYXJ0IG9mIHRoZSBQSFkgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBZZXAsIGRlZmluaXRlbHkgd29ydGggZnV6emluZzsgYSBmYWlsdXJlIGhlcmUgY2FuIGJyaW5nIGRvd24gdGhlIG5ldHdvcmsuCgpOb3csIGxldCYjMzk7cyBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgdG8gYWN0dWFsbHkgY29tcGlsZSBhbmQgdXNlIHRoaXMgY29kZS4gSXQgbG9va3MgbGlrZSBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1BIWUxJQmAgaXMgZW5hYmxlZC4gVGltZSB0byBjaGVjayB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeSB0byBnZXQgYSBiZXR0ZXIgZ3JpcCBvbiBob3cgdGhpcyBjb2RlIGlzIHB1bGxlZCBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfZGV2aWNlLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTMtXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDpsaWJwaHkteVx0XHRcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTUtXHRcdFx0XHQgICBsaW5rbW9kZS5vIHBoeV9saW5rX3RvcG9sb2d5Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzA3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBSb2xlIG9mIGBsaWJwaHlgKioKCk9rYXksIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIHNvbWV0aGluZyB0aGF0JiMzOTtzIHBhcnQgb2YgYGxpYnBoeWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0LiBXaGF0IGNvbmZpZ3VyYXRpb25zLCBkZXBlbmRlbmNpZXMsIG9yIGVuYWJsaW5nIG9wdGlvbnMgYXJlIHJlbGV2YW50IHRvIGBsaWJwaHlgPyBUbyB1bmRlcnN0YW5kIHRoaXMgc2l0dWF0aW9uIHRob3JvdWdobHksIEkgbmVlZCB0byBpZGVudGlmeSB3aGF0IGV4YWN0bHkgdHJpZ2dlcnMgdGhlIHVzZSBvZiBgbGlicGh5YCBpbiB0aGlzIHBhcnRpY3VsYXIgc2NlbmFyaW8uIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBvciBkb2N1bWVudGF0aW9uIHRvIHBpbnBvaW50IHRoZSBzcGVjaWZpYyBzZXR0aW5ncyBvciBwYXJhbWV0ZXJzIHRoYXQgZ292ZXJuIGBsaWJwaHlgJiMzOTtzIGluY2x1c2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsaWJwaHkubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX1BIWUxJTkspXHRcdCYjNDM7PSBwaHlsaW5rLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbGlicGh5Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0yMS1vYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbWRpb19kZXZyZXMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NzkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQSFlMSUIgQ29uZmlndXJhdGlvbiBDaGFuZ2VzKioKCk9rYXksIHNvIGBDT05GSUdfUEhZTElCYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIGludG8gdGhlIGNvcmUgZnVuY3Rpb25zIGltcGFjdGVkIGJ5IHRoaXMgcGF0Y2guIFRoZSBwYXRjaCBub3RlcyB0aGVzZSBtb2RpZmljYXRpb25zLCB3aGljaCBhcmUgaW1wb3J0YW50OgoKKiAgIGBwaHlfc2ZwX3Byb2JlYCAoc3RhdGljKQoqICAgYHBoeV9zZnBfcmVsZWFzZWAgKHN0YXRpYywgbmV3KQoqICAgYHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0YCAoc3RhdGljKQoqICAgYHBoeV9zZXR1cF9wb3J0c2AgKHN0YXRpYykKKiAgIGBwaHlfcHJvYmVgIChzdGF0aWMpCiogICBgcGh5X3JlbW92ZWAgKHN0YXRpYykKCk15IG5leHQgdGhvdWdodCBmb2N1c2VzIG9uIGhvdyB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBhY2Nlc3NlZC4gSSBrbm93IHRoYXQgYHBoeV9wcm9iZWAgd291bGQgYmUgbXkgZmlyc3QgdGFyZ2V0IGJlY2F1c2UgaXQmIzM5O3MgYSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24sIGxpa2VseSByZWdpc3RlcmVkIHRocm91Z2ggYHBoeV9kcml2ZXJfcmVnaXN0ZXJgIG9yIGEgcmVsYXRlZCBmdW5jdGlvbi4gU28sIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGBwaHlfcHJvYmVgIGlzIGFjdHVhbGx5IHVzZWQuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBJJiMzOTttIGFmdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zNjg2PUVYUE9SVF9TWU1CT0xfR1BMKGZ3bm9kZV9nZXRfcGh5X25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzY4OC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzY4OTogKiBwaHlfcHJvYmUgLSBwcm9iZSBhbmQgaW5pdCBhIFBIWSBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzY5MC0gKiBAZGV2OiBkZXZpY2UgdG8gcHJvYmUgYW5kIGluaXRcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM2OTMtICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM2OTQ6c3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNjk1LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTM4Nzg9c3RhdGljIGludCBwaHlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZHJpdmVyICpuZXdfZHJpdmVyLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzkwNC1cdG5ld19kcml2ZXItXHUwMDNlbWRpb2Rydi5kcml2ZXIuYnVzID0gXHUwMDI2bWRpb19idXNfdHlwZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzkwNTpcdG5ld19kcml2ZXItXHUwMDNlbWRpb2Rydi5kcml2ZXIucHJvYmUgPSBwaHlfcHJvYmU7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM5MDYtXHRuZXdfZHJpdmVyLVx1MDAzZW1kaW9kcnYuZHJpdmVyLnJlbW92ZSA9IHBoeV9yZW1vdmU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMxOQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gUEhZIERldmljZSBQcm9iaW5nKioKCk9rYXksIHNvIGBwaHlfcHJvYmVgIGlzIHRoZSBjcnVjaWFsIHByb2JlIGZ1bmN0aW9uIGZvciB0aGUgYG1kaW9fYnVzX3R5cGVgLCB0cmlnZ2VyZWQgYnkgdGhlIGRyaXZlciBjb3JlIHdoZW4gYSBQSFkgZGV2aWNlIGlzIGJlaW5nIHByb2JlZC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdGhpbmsgYWJvdXQgd2hhdCBub24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgY2VudHJhbCB0byB0aGlzIHByb2Nlc3MuIFdoZXJlIGNhbiBJIGZpbmQgdGhlIGtleSBhcmVhcyB0byBmb2N1cyBvbj8gVGhlIGZpcnN0IHRoaW5ncyB0aGF0IGNvbWUgdG8gbWluZCBhcmUgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIG9yIGBwaHlfZGV2aWNlX2NyZWF0ZWAg4oCTIHRob3NlIHNvdW5kIGxpa2UgdGhlIHByaW1hcnkgZnVuY3Rpb25zIGZvciBicmluZ2luZyBhIFBIWSBkZXZpY2UgaW50byB0aGUgc3lzdGVtLiBMZXQmIzM5O3MgZGVsdmUgaW50byBgcGh5X2RldmljZS5jYCBhbmQgc2VlIHdoYXQgZXhwb3J0ZWQgZnVuY3Rpb25zIGl0IG9mZmVycyB0aGF0IHJlbGF0ZSB0byBlaXRoZXIgdGhlIGNyZWF0aW9uIG9yIHJlZ2lzdHJhdGlvbiBvZiBQSFkgZGV2aWNlcy4gVGhhdCYjMzk7cyB3aGVyZSBJIHdpbGwgbGlrZWx5IGZpbmQgdGhlIG1vc3QgY3JpdGljYWwgaW50ZXJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLipwaHlfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTIxMD12b2lkIHBoeV9kZXZpY2VfZnJlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjEzLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MjE0OkVYUE9SVF9TWU1CT0wocGh5X2RldmljZV9mcmVlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjE1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NTIyPWludCBnZW5waHlfbWF0Y2hfcGh5X2RldmljZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTQzLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NTQ0OkVYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9tYXRjaF9waHlfZGV2aWNlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTQ1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NzQ4PXN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgdTMyIHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTgzOS19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjg0MDpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtODQxLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTA3MT1zdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMi19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjExMDM6RVhQT1JUX1NZTUJPTChnZXRfcGh5X2RldmljZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMTA5PWludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTQxLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTE0MjpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTQzLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTE1Mj12b2lkIHBoeV9kZXZpY2VfcmVtb3ZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTYzLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTE2NDpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfcmVtb3ZlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTE2NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI0NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBGcmFtZXdvcmsgZm9yIEVycm9yIEhhbmRsaW5nIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBpbXBsZW1lbnRpbmcgc29tZSBlcnJvciBoYW5kbGluZyBpbXByb3ZlbWVudHMgd2l0aGluIHRoZSBQSFkgZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGBwaHlfcHJvYmVgIGFuZCBgcGh5X3JlbW92ZWAuIFRoZSBrZXkgc2VlbXMgdG8gYmUgZmlndXJpbmcgb3V0IHRoZSBlbnRyeSBwb2ludHMgdGhhdCB3aWxsIHRyaWdnZXIgdGhlc2UgZnVuY3Rpb25zLiBJbW1lZGlhdGVseSwgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGFuZCBgcGh5X2RldmljZV9yZW1vdmVgIGp1bXAgb3V0IGFzIHN0cm9uZyBjYW5kaWRhdGVzLCBhbmQgSSBzaG91bGQgYWxzbyBrZWVwIGFuIGV5ZSBvdXQgZm9yIGBwaHlfZGV2aWNlX2NyZWF0ZWAgYW5kIHBvdGVudGlhbGx5IGBnZXRfcGh5X2RldmljZWAgZm9yIHRob3JvdWdobmVzcy4gVGhlIHBhdGNoIG5vdGVzIGZvY3VzIG9uIGBwaHlfcHJvYmVgIGFuZCBgcGh5X3JlbW92ZWAsIHdoaWNoIHRoZSBkcml2ZXIgY29yZSBpbnZva2VzIGR1cmluZyBkZXZpY2UgcmVnaXN0cmF0aW9uIGFuZCB3aGVuIGJpbmRpbmcgdG8gYSBkcml2ZXIuCgpTaW5jZSB0aGUgZ29hbCBpcyB0byBlbmhhbmNlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMsIHRyYWNpbmcgdGhlIGNhbGxzIHRoYXQgbGVhZCB0byB0aGVpciBleGVjdXRpb24gaXMgZXNzZW50aWFsLiBUaGUgZHJpdmVyIGNvcmUgaGFuZGxlcyB0aGUgYmluZGluZyBwcm9jZXNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGJpbmRpbmcgbWVjaGFuaXNtIHdvcmtzLiBSZW1lbWJlcmluZyB0aGF0IGBwaHlfcHJvYmVgIGlzIGNhbGxlZCB3aGVuIGEgZHJpdmVyIGJpbmRzLCBJIG5lZWQgdG8ga25vdyB0aGUgdHJpZ2dlcmluZyBldmVudHMuIERyaXZlciBiaW5kaW5nIHNlZW1zIHRvIGhhcHBlbiB2aWEgc3lzZnMgb3IgZHVyaW5nIGRldmljZSByZWdpc3RyYXRpb24uIFRoZXJlZm9yZSwgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGFwcGVhcnMgdG8gYmUgdGhlIG1vc3QgZGlyZWN0IHJvdXRlIHRvIGNhbGwgYHBoeV9wcm9iZWAuCgpCZWZvcmUgcHJvY2VlZGluZywgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgbWFpbiBvbmUgaXMgYENPTkZJR19QSFlMSUJgLCBvYnZpb3VzbHkuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mIG9yIHJlcXVpcmVtZW50cyBmb3IgdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byB3b3JrIHByb3Blcmx5LiBUaGF0IHdpbGwgYmUgbmV4dCBvbiBteSBsaXN0IHRvIGNoZWNrIGZvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBIWUxJQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTY9Y29uZmlnIFBIWUxJTktcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1Om1lbnVjb25maWcgUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O1BIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVx0ZGVmX2Jvb2wgT0ZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkzNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVwZW5kZW5jeSBDaGVjazogUEhZTElCKioKCk9rYXksIHRpbWUgdG8gZGlnIGluLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMgSSBuZWVkIHRvIHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgUEhZTElCYC4gSXQmIzM5O3MgY3J1Y2lhbCwgb2J2aW91c2x5LCBiZWNhdXNlIGFueSBtaXNzaW5nIG9yIG1pc2NvbmZpZ3VyZWQgZGVwZW5kZW5jaWVzIHdvdWxkIGltbWVkaWF0ZWx5IHRhbmsgdGhlIHdob2xlIHRoaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gd29ya2luZyB3aXRoIHRoZSBjb3JyZWN0IHZlcnNpb25zIG9mIGFsbCB0aGUgcmVsZXZhbnQgc3VwcG9ydGluZyBsaWJyYXJpZXMgYW5kIHRoYXQgdGhlaXIgYnVpbGRzIGFyZSBjbGVhbi4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGUgaW5jbHVkZSBwYXRocyBhbmQgbGlicmFyeSBsaW5raW5nIGluIHRoZSBidWlsZCBwcm9jZXNzLCBwcm9iYWJseSB3aXRoIGEgcXVpY2sgc2NhbiBvZiB0aGUgYnVpbGQgc2NyaXB0cy4gQW55IGNvbmZsaWN0cyBvciBpbmNvbXBhdGliaWxpdGllcyBoZXJlLCBhbmQgSSYjMzk7bGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb2YgZWFjaCBkZXBlbmRlbnQgY29tcG9uZW50LiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIG9idmlvdXM6IHN0YW5kYXJkIGxpYnJhcmllcyBhbmQgYW55IGNvcmUgbmV0d29ya2luZyBvciBoYXJkd2FyZSBhYnN0cmFjdGlvbiBjb21wb25lbnRzLiBMZXQmIzM5O3MgZ2V0IGNyYWNraW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxNTpcdG1lbnVjb25maWcgUEhZTElCXG4gIDE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXCYjMzQ7XG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIEV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHRvIFBIWVxuICAxOTpcdFx0ICBkZXZpY2VzLiAgVGhpcyBvcHRpb24gcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yXG4gIDIwOlx0XHQgIG1hbmFnaW5nIFBIWSBkZXZpY2VzLlxuICAyMTpcdFxuICAyMjpcdGlmIFBIWUxJQlxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBTV1BIWVxuICAyNTpcdFx0Ym9vbFxuICAyNjpcdFxuICAyNzpcdGNvbmZpZyBQSFlfUEFDS0FHRVxuICAyODpcdFx0IHRyaXN0YXRlXG4gIDI5Olx0XG4gIDMwOlx0Y29uZmlnIExFRF9UUklHR0VSX1BIWVxuICAzMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IExFRCB0cmlnZ2VycyBmb3IgdHJhY2tpbmcgbGluayBzdGF0ZVwmIzM0O1xuICAzMjpcdFx0ZGVwZW5kcyBvbiBMRURTX1RSSUdHRVJTXG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIEFkZHMgc3VwcG9ydCBmb3IgYSBzZXQgb2YgTEVEIHRyaWdnZXIgZXZlbnRzIHBlci1QSFkuICBMaW5rXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczODgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUEhZTElCIFBhdGNoKioKCk9rYXksIHNvIGBQSFlMSUJgIGlzIHNlbGYtY29udGFpbmVkIOKAkyBubyBleHRlcm5hbCBiYWdnYWdlIHRvIHdvcnJ5IGFib3V0LiBUaGF0JiMzOTtzIGdvb2Q7IG1ha2VzIHRoaW5ncyBzaW1wbGVyLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIGZvY3VzZWQuIExldCYjMzk7cyBkaWcgaW4uIEkgc2VlIGVycm9yIGhhbmRsaW5nIGhhcyBiZWVuIGFkZGVkIHRvIGBwaHlfc2ZwX3Byb2JlYCBhbmQgYHBoeV9hZGRfcG9ydGAsIHdoaWNoIGlzIGFsd2F5cyBhIHdlbGNvbWUgc2lnaHQuIEFuZCBgcGh5X3NmcF9yZWxlYXNlYCBmb3IgY2xlYW51cCwgdGhhdCYjMzk7cyBjcnVjaWFsOyByZXNvdXJjZSBsZWFrcyBhcmUgdGhlIGJhbmUgb2YgbXkgZXhpc3RlbmNlLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjb3JlIGNoYW5nZSB0byBgUEhZTElCYC4gSXTigJlzIGRlZmluaXRlbHkgd29ydGggYSBmdXp6aW5nIGNhbXBhaWduIHRvIHZhbGlkYXRlIHRoZXNlIG5ldyBlcnJvciBwYXRocyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudC4KCk15IGZvY3VzIGhhcyB0byBiZSBvbiB0aGVzZSBrZXkgc3ltYm9sczogYHBoeV9kZXZpY2VfcmVnaXN0ZXJgLCBgcGh5X2RldmljZV9yZW1vdmVgLCBgcGh5X2RldmljZV9jcmVhdGVgLCBhbmQgYGdldF9waHlfZGV2aWNlYC4gVGhleSYjMzk7cmUgdGhlIGNyaXRpY2FsIGVudHJ5IGFuZCBleGl0IHBvaW50cy4gSSBzaG91bGQgYWxzbyBjaGVjayBob3cgYHBoeV9wcm9iZWAgZml0cyBpbiB0byB0aGUgc3lzdGVtLiBObywgc3RhdGljLCBzbyB0aGF0JiMzOTtzIG5vdCBhIGRpcmVjdCBwb2ludCBvZiBhdHRhY2suIFdoYXQgYWJvdXQgYHBoeV9hdHRhY2hfZGlyZWN0YD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qcGh5X2F0dGFjaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMzkwPXZvaWQgcGh5X2F0dGFjaGVkX2luZm8oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEzOTMtfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzk0OkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaGVkX2luZm8pO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzk1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTM5Nz1jaGFyICpwaHlfYXR0YWNoZWRfaW5mb19pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE0MTYtfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNDE3OkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaGVkX2luZm9faXJxKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTQxOC1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTQxOT12b2lkIHBoeV9hdHRhY2hlZF9wcmludChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBjaGFyICpmbXQsIC4uLilcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE0MzgtfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNDM5OkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaGVkX3ByaW50KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTQ0MC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE3ODE9aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTM1LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTkzNjpFWFBPUlRfU1lNQk9MKHBoeV9hdHRhY2hfZGlyZWN0KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkzNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI1NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBEcml2ZXIgRW50cnkgUG9pbnQqKgoKT2theSwgc28gYHBoeV9hdHRhY2hfZGlyZWN0YCBpcyBleHBvcnRlZCwgYnV0IHRoZSByZWFsIG1lYXQgb2YgdGhlIGRyaXZlciBpbnRlcmFjdGlvbiBzZWVtcyB0byBiZSBoYXBwZW5pbmcgd2l0aGluIGBwaHlfcHJvYmVgIGFuZCBgcGh5X3JlbW92ZWAuIFRob3NlIGFyZSBkcml2ZXIgcHJvYmUgYW5kIHJlbW92ZSBmdW5jdGlvbnMsIHNvIHRoYXQgbWFrZXMgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uCgpCZWZvcmUgZGl2aW5nIGluIHRvbyBkZWVwLCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgbWVudGlvbmVkIGluIHRoZSBwYXRjaC4gSSBzZWUgYENPTkZJR19QSFlMSUJfTEVEU2AgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIGBwaHlfcHJvYmVgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHVzZWQgdG8gZW5hYmxlIExFRCBzdXBwb3J0LCBidXQgb25seSBpZiB0aGUgUEhZIGlzbiYjMzk7dCBhIGdlbmVyaWMgUEhZLiBNaWdodCBiZSBzb21ldGhpbmcgdXNlZnVsIHRvIGVuYWJsZSBkZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljcyBvZiB0aGlzIHNpdHVhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgUEhZTElCX0xFRFNgIGluIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgdG8gZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBpdCBlbnRhaWxzIGFuZCB3aGV0aGVyIGl0JiMzOTtzIHJlbGV2YW50IGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQSFlMSUJfTEVEUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ2PWNvbmZpZyBPUEVOX0FMTElBTkNFX0hFTFBFUlNcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ5OmNvbmZpZyBQSFlMSUJfTEVEU1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTAtXHRkZWZfYm9vbCBPRlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzYwCgkJCQkJCQlvdXRwdXQ6IDExMAoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFBIWUxJQiBhbmQgUmVsYXRlZCBDb25maWd1cmF0aW9ucyoqCgpPa2F5LCBzbyBgUEhZTElCX0xFRFNgIGlzIGEgYGRlZl9ib29sYCB0aGF0IGRlcGVuZHMgb24gYE9GYCBiZWluZyBlbmFibGVkLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGVuYWJsZWQgaWYgYE9GYCBpcyBlbmFibGVkLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBjYW4gc2ltcGxpZnkgdGhpcy4gSSBzaG91bGQganVzdCBhZGQgYFBIWUxJQmAgYW5kIGBPRmAsIG9yIGp1c3QgYFBIWUxJQmAsIHRvIHRoZSBjb25maWd1cmF0aW9uIGxpc3QsIGRlcGVuZGluZyBvbiB0aGUgZGVzaXJlZCBiZWhhdmlvci4KCkhlcmUmIzM5O3MgbXkgZGlzdGlsbGVkIHN1bW1hcnk6IEkmIzM5O3ZlIGRldGVybWluZWQgdGhpcyBtb2R1bGUgaXMgd29ydGh5IG9mIGZ1enppbmcuIE15IGtleSBmb2N1cyBzeW1ib2xzIHdpbGwgYmUgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgLCBgcGh5X2RldmljZV9yZW1vdmVgLCBgcGh5X2RldmljZV9jcmVhdGVgLCBhbmQgYGdldF9waHlfZGV2aWNlYC4gSSB3aWxsIGVuYWJsZSB0aGUgYFBIWUxJQmAgY29uZmlndXJhdGlvbi4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSBteSBjaG9pY2Ugb2YgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgLiBZZXMsIHRoYXQgcmVnaXN0ZXJzIHRoZSBQSFkgZGV2aWNlIHdpdGggdGhlIGRyaXZlciBjb3JlLiBUaGUgY29yZSB0aGVuIHByb2JlcyBpdCwgd2hpY2ggaXMgaWRlYWwuIGBwaHlfZGV2aWNlX3JlbW92ZWAgdW5yZWdpc3RlcnMgdGhlIGRldmljZSB3aGljaCBjYWxscyBgcGh5X3JlbW92ZWAuIFRoaXMgaXMgZXhhY3RseSB0aGUgcmVnaXN0cmF0aW9uIGFuZCB1bnJlZ2lzdHJhdGlvbiBJIG5lZWQgdG8gdHJpZ2dlciBpbnRlcmVzdGluZyBjb2RlIHBhdGhzIGFuZCBlZGdlIGNhc2VzLiBQZXJmZWN0IQoKVGltZSB0byBzZXQgdGhlc2UgcmVzdWx0cyBhbmQgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2RldmljZV9yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtwaHlfZGV2aWNlX3JlbW92ZSYjMzQ7LAogICAgJiMzNDtwaHlfZGV2aWNlX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtnZXRfcGh5X2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIGluIGRyaXZlciBwcm9iZS9yZW1vdmUgcGF0aHMgKHBoeV9wcm9iZSwgcGh5X3JlbW92ZSkgYW5kIHBvcnQgc2V0dXAgZnVuY3Rpb25zLiBUaGVzZSBhcmUgcmVhY2hhYmxlIHdoZW4gUEhZIGRldmljZXMgYXJlIHJlZ2lzdGVyZWQgYW5kIGJvdW5kIHRvIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0OywKICAgICYjMzQ7Z2V0X3BoeV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBQSFkgbGlicmFyeSBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyBpbiBkcml2ZXIgcHJvYmUvcmVtb3ZlIHBhdGhzIChwaHlfcHJvYmUsIHBoeV9yZW1vdmUpIGFuZCBwb3J0IHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHJlYWNoYWJsZSB3aGVuIFBIWSBkZXZpY2VzIGFyZSByZWdpc3RlcmVkIGFuZCBib3VuZCB0byBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE0OjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZvY3VzZXMgZW50aXJlbHkgb24gZml4aW5nIHJlc291cmNlIGxlYWtzIGFuZCBpbmNvcnJlY3QgY2xlYW51cCBvcmRlciBvbiBlcnJvciBwYXRocyBpbiB0aGUgUEhZIGRldmljZSBkcml2ZXIgKGUuZy4sIHByb3Blcmx5IGRlc3Ryb3lpbmcgcG9ydHMsIHJlbGVhc2luZyBTRlAgcmVzb3VyY2VzLCBhbmQgY2FsbGluZyB0aGUgZHJpdmVyJiMzOTtzIHJlbW92ZSBjYWxsYmFjayBvbiBmYWlsdXJlKS4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIHBvdGVudGlhbCBtZW1vcnkgbGVha3MgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIGttZW1sZWFrLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb3IgZXhwb3N1cmUgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgbm9yIGFueSBjb250cm9sIGZsb3cgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcwMmY2NGJmNWY3MWQ0OTYxYTgzNWM3N2M5YTZlZGU3ODA4MTM5YjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAxNDo1MjoxNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IDA2MTUyMjg0NTllZjQuLmIwMDYwYjQxNDczNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwpAQCAtMTcyMywxMiAmIzQzOzE3MjMsNDEgQEAgc3RhdGljIGludCBwaHlfc2ZwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJCQlwaHlkZXYtJmd0O3NmcF9idXMgPSBOVUxMOwogCX0KIAotCWlmICghcmV0ICZhbXA7JmFtcDsgcGh5ZGV2LSZndDtzZnBfYnVzKQomIzQzOwlpZiAoIXJldCAmYW1wOyZhbXA7IHBoeWRldi0mZ3Q7c2ZwX2J1cykgewogCQlyZXQgPSBwaHlfc2V0dXBfc2ZwX3BvcnQocGh5ZGV2KTsKJiM0MzsJCWlmIChyZXQpIHsKJiM0MzsJCQlzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtJmd0O3NmcF9idXMpOwomIzQzOwkJCXBoeWRldi0mZ3Q7c2ZwX2J1cyA9IE5VTEw7CiYjNDM7CQl9CiYjNDM7CX0KIAogCXJldHVybiByZXQ7CiB9CiAKJiM0MzsvKioKJiM0MzsgKiBwaHlfc2ZwX3JlbGVhc2UgLSByZWxlYXNlIHJlc291cmNlcyBzZXQgdXAgYnkgcGh5X3NmcF9wcm9iZSgpCiYjNDM7ICogQHBoeWRldjogdGhlIFBIWSBkZXZpY2UKJiM0MzsgKgomIzQzOyAqIFJlbGVhc2UgdGhlIFNGUCByZXNvdXJjZXMgc2V0IHVwIGJ5IGEgc3VjY2Vzc2Z1bCBwaHlfc2ZwX3Byb2JlKCkuIFVucmVnaXN0ZXIKJiM0MzsgKiB0aGUgdXBzdHJlYW0gYmVmb3JlIGRlc3Ryb3lpbmcgaXRzIHBoeV9wb3J0LCBzbyBTRlAgdXBzdHJlYW0gY2FsbGJhY2tzIGNhbm5vdAomIzQzOyAqIHJhY2Ugd2l0aCBwb3J0IGRlc3RydWN0aW9uLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIHBoeV9zZnBfcmVsZWFzZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IHBoeV9wb3J0ICpwb3J0LCAqdG1wOwomIzQzOwomIzQzOwlzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtJmd0O3NmcF9idXMpOwomIzQzOwlwaHlkZXYtJmd0O3NmcF9idXMgPSBOVUxMOwomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9ydCwgdG1wLCAmYW1wO3BoeWRldi0mZ3Q7cG9ydHMsIGhlYWQpIHsKJiM0MzsJCWlmICghcG9ydC0mZ3Q7aXNfc2ZwKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJcGh5X2RlbF9wb3J0KHBoeWRldiwgcG9ydCk7CiYjNDM7CQlwaHlfcG9ydF9kZXN0cm95KHBvcnQpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydikKIHsKIAlyZXR1cm4gcGh5ZHJ2LSZndDtjb25maWdfaW50ciAmYW1wOyZhbXA7IHBoeWRydi0mZ3Q7aGFuZGxlX2ludGVycnVwdDsKQEAgLTM0MjksNiAmIzQzOzM0NTgsNyBAQCBzdGF0aWMgaW50IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJc3RydWN0IHBoeV9wb3J0ICpwb3J0ID0gcGh5X3BvcnRfYWxsb2MoKTsKIAl1bnNpZ25lZCBsb25nIG1vZGU7CiYjNDM7CWludCByZXQ7CiAKIAlpZiAoIXBvcnQpCiAJCXJldHVybiAtRU5PTUVNOwpAQCAtMzQ1NSw5ICYjNDM7MzQ4NSwxMSBAQCBzdGF0aWMgaW50IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJCXBvcnQtJmd0O3BhaXJzID0gbWF4X3QoaW50LCBwb3J0LSZndDtwYWlycywKIAkJCQkgICAgZXRodG9vbF9saW5rbW9kZV9uX3BhaXJzKG1vZGUpKTsKIAotCXBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpOwomIzQzOwlyZXQgPSBwaHlfYWRkX3BvcnQocGh5ZGV2LCBwb3J0KTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7CiAKLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBvZl9waHlfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKQEAgLTM1MjIsMTMgJiM0MzszNTU0LDEzIEBAIHN0YXRpYyBpbnQgcGh5X3NldHVwX3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJaWYgKCFwaHlkZXYtJmd0O2lzX2dlbnBoeV9kcml2ZW4pIHsKIAkJcmV0ID0gcGh5X3NmcF9wcm9iZShwaHlkZXYpOwogCQlpZiAocmV0KQotCQkJZ290byBvdXQ7CiYjNDM7CQkJZ290byBlcnJfcG9ydHM7CiAJfQogCiAJaWYgKHBoeWRldi0mZ3Q7bl9wb3J0cyAmbHQ7IHBoeWRldi0mZ3Q7bWF4X25fcG9ydHMpIHsKIAkJcmV0ID0gcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQocGh5ZGV2KTsKIAkJaWYgKHJldCkKLQkJCWdvdG8gb3V0OwomIzQzOwkJCWdvdG8gZXJyX3NmcDsKIAl9CiAKIAlsaW5rbW9kZV96ZXJvKHBvcnRzX3N1cHBvcnRlZCk7CkBAIC0zNTU1LDcgJiM0MzszNTg3LDkgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAogCXJldHVybiAwOwogCi1vdXQ6CiYjNDM7ZXJyX3NmcDoKJiM0MzsJcGh5X3NmcF9yZWxlYXNlKHBoeWRldik7CiYjNDM7ZXJyX3BvcnRzOgogCXBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTM2ODEsNyAmIzQzOzM3MTUsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJaWYgKHBoeWRldi0mZ3Q7ZHJ2LSZndDtwcm9iZSkgewogCQllcnIgPSBwaHlkZXYtJmd0O2Rydi0mZ3Q7cHJvYmUocGh5ZGV2KTsKIAkJaWYgKGVycikKLQkJCWdvdG8gb3V0OwomIzQzOwkJCWdvdG8gb3V0X3Jlc2V0OwogCX0KIAogCXBoeV9kaXNhYmxlX2ludGVycnVwdHMocGh5ZGV2KTsKQEAgLTM3MDIsNyAmIzQzOzM3MzYsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCWVyciA9IGdlbnBoeV9yZWFkX2FiaWxpdGllcyhwaHlkZXYpOwogCiAJaWYgKGVycikKLQkJZ290byBvdXQ7CiYjNDM7CQlnb3RvIG91dF9yZW1vdmU7CiAKIAlpZiAoIWxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULAogCQkJICAgICAgIHBoeWRldi0mZ3Q7c3VwcG9ydGVkKSkKQEAgLTM3MTksNyAmIzQzOzM3NTMsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAKIAllcnIgPSBwaHlfc2V0dXBfcG9ydHMocGh5ZGV2KTsKIAlpZiAoZXJyKQotCQlnb3RvIG91dDsKJiM0MzsJCWdvdG8gb3V0X3JlbW92ZTsKIAogCXBoeV9hZHZlcnRpc2Vfc3VwcG9ydGVkKHBoeWRldik7CiAKQEAgLTM3MjgsNyAmIzQzOzM3NjIsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJICovCiAJZXJyID0gZ2VucGh5X2M0NV9yZWFkX2VlZV9hZHYocGh5ZGV2LCBwaHlkZXYtJmd0O2FkdmVydGlzaW5nX2VlZSk7CiAJaWYgKGVycikKLQkJZ290byBvdXQ7CiYjNDM7CQlnb3RvIG91dF9wb3J0czsKIAogCS8qIEdldCB0aGUgRUVFIG1vZGVzIHdlIHdhbnQgdG8gcHJvaGliaXQuICovCiAJb2Zfc2V0X3BoeV9lZWVfYnJva2VuKHBoeWRldik7CkBAIC0zNzgxLDIyICYjNDM7MzgxNSwyOSBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJaWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSAmYW1wOyZhbXA7ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKSB7CiAJCWVyciA9IG9mX3BoeV9sZWRzKHBoeWRldik7CiAJCWlmIChlcnIpCi0JCQlnb3RvIG91dDsKJiM0MzsJCQlnb3RvIG91dF9sZWRfdHJpZ2dlcnM7CiAJfQogCiAJcmV0dXJuIDA7CiAKLW91dDoKLQlzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtJmd0O3NmcF9idXMpOwotCXBoeWRldi0mZ3Q7c2ZwX2J1cyA9IE5VTEw7CiYjNDM7b3V0X2xlZF90cmlnZ2VyczoKJiM0MzsJaWYgKCFwaHlkZXYtJmd0O2lzX29uX3NmcF9tb2R1bGUpCiYjNDM7CQlwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTsKJiM0MzsKJiM0MzsJcGh5ZGV2LSZndDtzdGF0ZSA9IFBIWV9ET1dOOwogCiYjNDM7b3V0X3BvcnRzOgomIzQzOwlwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTsKIAlwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpOwogCi0JaWYgKCFwaHlkZXYtJmd0O2lzX29uX3NmcF9tb2R1bGUpCi0JCXBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpOwomIzQzO291dF9yZW1vdmU6CiYjNDM7CWlmIChwaHlkZXYtJmd0O2Rydi0mZ3Q7cmVtb3ZlKQomIzQzOwkJcGh5ZGV2LSZndDtkcnYtJmd0O3JlbW92ZShwaHlkZXYpOwogCiYjNDM7b3V0X3Jlc2V0OgogCS8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovCiAJcGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpOwomIzQzOwlwaHlkZXYtJmd0O2RydiA9IE5VTEw7CiAKIAlyZXR1cm4gZXJyOwogfQpAQCAtMzgxNSw5ICYjNDM7Mzg1Niw3IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAKIAlwaHlkZXYtJmd0O3N0YXRlID0gUEhZX0RPV047CiAKLQlzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtJmd0O3NmcF9idXMpOwotCXBoeWRldi0mZ3Q7c2ZwX2J1cyA9IE5VTEw7Ci0KJiM0MzsJcGh5X3NmcF9yZWxlYXNlKHBoeWRldik7CiAJcGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTsKIAogCWlmIChwaHlkZXYtJmd0O2RydiAmYW1wOyZhbXA7IHBoeWRldi0mZ3Q7ZHJ2LSZndDtyZW1vdmUpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzA1CgkJCQkJCQlvdXRwdXQ6IDEzNgoJCQkJCQkJdGhvdWdodHM6IDEzNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFBIWSBEZXZpY2UgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCwgYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0JiMzOTtzIGFsbCBhYm91dCBoYXJkZW5pbmcgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIHByb2NlZHVyZXMgd2l0aGluIHRoZSBQSFkgZGV2aWNlIGRyaXZlci4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIGNsYXNzaWMgY2FzZSBvZiByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBlcnJvciBwYXRoIGNvcnJlY3Rpb25zLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlcyByZXZvbHZlIGFyb3VuZCBgcGh5X3NmcF9wcm9iZWAsIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3Byb2JlYCwgYW5kIGBwaHlfcmVtb3ZlYC4gV2UmIzM5O3ZlIGludHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24sIGBwaHlfc2ZwX3JlbGVhc2VgLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgY29ycmVjdGx5IHJlbGVhc2luZyBTRlAgcmVzb3VyY2VzIGFuZCBkZXN0cm95aW5nIHBvcnRzLgoKVGhlIGZvY3VzIGlzIHNxdWFyZWx5IG9uIGZpeGluZyByZXNvdXJjZSBsZWFrcyBhbmQgYWRkcmVzc2luZyBwb3RlbnRpYWwgaXNzdWVzIGxpa2UgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIGlmIHRoaW5ncyBnbyBzb3V0aCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gb3Igb3BlcmF0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2UgdGhlcmUgd2VyZSBpbnN0YW5jZXMgd2hlcmUgcmVzb3VyY2VzIHdlcmUgYmVpbmcgYWxsb2NhdGVkIGJ1dCBub3QgZGVhbGxvY2F0ZWQgd2hlbiBhbiBlcnJvciBvY2N1cnJlZCwgbGVhZGluZyB0byBtZW1vcnkgbGVha3Mgb3IgcG90ZW50aWFsbHkgZnJlZWluZyBhIHJlc291cmNlIHRoYXQmIzM5O3Mgc3RpbGwgaW4gdXNlLiBUaGUgcGF0Y2ggZW5zdXJlcyB0aGF0IGluIGVycm9yIGNhc2VzIChlLmcuLCB3aXRoaW4gYHBoeV9wb3J0X2Rlc3Ryb3lgLCBgcGh5X3NmcF9yZWxlYXNlYCwgYW5kIHRoZSBgcGh5ZGV2LSZndDtkcnYtJmd0O3JlbW92ZWAgY2FsbCBpbiBgcGh5X3Byb2JlYCksIHJlc291cmNlcyBhcmUgcHJvcGVybHkgY2xlYW5lZCB1cC4KClRoZXJlJiMzOTtzIG5vIGluZGljYXRpb24gaGVyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIHRvIHVzZXIgc3BhY2Ugb3IgaW5mbHVlbmNpbmcgY29udHJvbCBmbG93LiBLTVNBTiwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGlzIG5vdCByZWxldmFudCBoZXJlLiBUaGlzIGlzIHB1cmVseSBhYm91dCBmaXhpbmcgcmVzb3VyY2UgbGVha3MgYW5kIGVuc3VyaW5nIGNsZWFuIGV4aXQgcGF0aHMgaW4gdGhlIGNhc2Ugb2YgZXJyb3JzLCB3aGljaCwgYXMgYW4gZXhwZXJ0IGluIG15IGZpZWxkLCBJIGNhbiBzZWUgaXMgYSB2YWx1YWJsZSBhZGRpdGlvbiB0byB0aGUgY29kZS4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgc2NlbmFyaW9zIHdoZXJlIEtBU0FOIG9yIEtNRU1MRUFLIHdvdWxkJiMzOTt2ZSBjYXVnaHQgdGhlIGJ1Z3MgcmVsYXRlZCB0byBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUsIGlmIHRoZXNlIHRvb2xzIHdlcmUgdXNlZC4KCkkmIzM5O20gbm93IGdvaW5nIHRvIHF1aWNrbHkgZ28gdGhyb3VnaCB0aGUgY29kZSBtb2RpZmljYXRpb25zIGFuZCBjb25maXJtIG15IGluaXRpYWwgYXNzdW1wdGlvbnMuCgpMb29raW5nIGF0IGBwaHlfc2ZwX3Byb2JlYDogV2UgaGF2ZSBhbiBhZGRpdGlvbiBmb3IgcHJvcGVyIHNmcCBidXMgY2xlYW51cC4KCkluIGBwaHlfc2ZwX3JlbGVhc2VgOiBUaGUgbmV3IGZ1bmN0aW9uIGlzIG5vdyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlIHNmcCBidXMgYW5kIGFsc28gZGVzdHJveWluZyByZWxldmFudCBwb3J0cyBvbiB0aGUgUEhZIGRldmljZS4KCkluIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGA6IFRoZSBhZGRpdGlvbiBlbnN1cmVzIHRoYXQgaWYgYHBoeV9hZGRfcG9ydGAgZmFpbHMsIHRoZSBhbGxvY2F0ZWQgcG9ydCBpcyBwcm9wZXJseSBkZXN0cm95ZWQuCgpJbiBgcGh5X3NldHVwX3BvcnRzYDogVGhlIGFkZGl0aW9ucyBlbnN1cmVzIHRoYXQgaWYgdGhpbmdzIGdvIHdyb25nLCB0aGUgU0ZQIGJ1cyBpcyByZWxlYXNlZCwgcG9ydHMgYXJlIGNsZWFuZWQgdXAsIGFuZCBhc3NvY2lhdGVkIGFjdGlvbnMgcGVyZm9ybWVkIG9uIGVycm9ycy4KCkZpbmFsbHksIGluIGBwaHlfcHJvYmVgOiBUaGUgYWRkaXRpb25zIGVuc3VyZSB0aGF0IHRoZSBkZXZpY2UmIzM5O3MgcmVzb3VyY2VzIGFuZCBzdGF0ZXMgYXJlIGhhbmRsZWQgd2VsbCB3aGVuIGFuIGVycm9yIGlzIGRldGVjdGVkLgoKWWVwLCB0aGUgYW5hbHlzaXMgaG9sZHMuIFRoaXMgaXMgZ29vZCBzb2xpZCBlcnJvciBoYW5kbGluZyB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmb2N1c2VzIGVudGlyZWx5IG9uIGZpeGluZyByZXNvdXJjZSBsZWFrcyBhbmQgaW5jb3JyZWN0IGNsZWFudXAgb3JkZXIgb24gZXJyb3IgcGF0aHMgaW4gdGhlIFBIWSBkZXZpY2UgZHJpdmVyIChlLmcuLCBwcm9wZXJseSBkZXN0cm95aW5nIHBvcnRzLCByZWxlYXNpbmcgU0ZQIHJlc291cmNlcywgYW5kIGNhbGxpbmcgdGhlIGRyaXZlciYjMzk7cyByZW1vdmUgY2FsbGJhY2sgb24gZmFpbHVyZSkuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBrbWVtbGVhay4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIG5vciBhbnkgY29udHJvbCBmbG93IGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZm9jdXNlcyBlbnRpcmVseSBvbiBmaXhpbmcgcmVzb3VyY2UgbGVha3MgYW5kIGluY29ycmVjdCBjbGVhbnVwIG9yZGVyIG9uIGVycm9yIHBhdGhzIGluIHRoZSBQSFkgZGV2aWNlIGRyaXZlciAoZS5nLiwgcHJvcGVybHkgZGVzdHJveWluZyBwb3J0cywgcmVsZWFzaW5nIFNGUCByZXNvdXJjZXMsIGFuZCBjYWxsaW5nIHRoZSBkcml2ZXImIzM5O3MgcmVtb3ZlIGNhbGxiYWNrIG9uIGZhaWx1cmUpLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQga21lbWxlYWsuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBub3IgYW55IGNvbnRyb2wgZmxvdyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6MTguMDU3NTQ2MzQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI0MDAzNjE5NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEhZTElCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2RldmljZV9yZWdpc3RlclwiLFxuICAgIFwicGh5X2RldmljZV9yZW1vdmVcIixcbiAgICBcInBoeV9kZXZpY2VfY3JlYXRlXCIsXG4gICAgXCJnZXRfcGh5X2RldmljZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZm9jdXNlcyBlbnRpcmVseSBvbiBmaXhpbmcgcmVzb3VyY2UgbGVha3MgYW5kIGluY29ycmVjdCBjbGVhbnVwIG9yZGVyIG9uIGVycm9yIHBhdGhzIGluIHRoZSBQSFkgZGV2aWNlIGRyaXZlciAoZS5nLiwgcHJvcGVybHkgZGVzdHJveWluZyBwb3J0cywgcmVsZWFzaW5nIFNGUCByZXNvdXJjZXMsIGFuZCBjYWxsaW5nIHRoZSBkcml2ZXIncyByZW1vdmUgY2FsbGJhY2sgb24gZmFpbHVyZSkuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBrbWVtbGVhay4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIG5vciBhbnkgY29udHJvbCBmbG93IGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgUEhZIGxpYnJhcnkgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgaW4gZHJpdmVyIHByb2JlL3JlbW92ZSBwYXRocyAocGh5X3Byb2JlLCBwaHlfcmVtb3ZlKSBhbmQgcG9ydCBzZXR1cCBmdW5jdGlvbnMuIFRoZXNlIGFyZSByZWFjaGFibGUgd2hlbiBQSFkgZGV2aWNlcyBhcmUgcmVnaXN0ZXJlZCBhbmQgYm91bmQgdG8gZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6MTguMDU3NTUyODUzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzM5OTM1ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MDJmNjRiZjVmNzFkNDk2MWE4MzVjNzdjOWE2ZWRlNzgwODEzOWIwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDE0OjUyOjE3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuaW5kZXggMDYxNTIyODQ1OWVmNC4uYjAwNjBiNDE0NzM0OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbkBAIC0xNzIzLDEyICsxNzIzLDQxIEBAIHN0YXRpYyBpbnQgcGh5X3NmcF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZXNmcF9idXMpXFxuK1xcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IHBoeWRldi1cXHUwMDNlc2ZwX2J1cykge1xcbiBcXHRcXHRyZXQgPSBwaHlfc2V0dXBfc2ZwX3BvcnQocGh5ZGV2KTtcXG4rXFx0XFx0aWYgKHJldCkge1xcbitcXHRcXHRcXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXFx1MDAzZXNmcF9idXMpO1xcbitcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBwaHlfc2ZwX3JlbGVhc2UgLSByZWxlYXNlIHJlc291cmNlcyBzZXQgdXAgYnkgcGh5X3NmcF9wcm9iZSgpXFxuKyAqIEBwaHlkZXY6IHRoZSBQSFkgZGV2aWNlXFxuKyAqXFxuKyAqIFJlbGVhc2UgdGhlIFNGUCByZXNvdXJjZXMgc2V0IHVwIGJ5IGEgc3VjY2Vzc2Z1bCBwaHlfc2ZwX3Byb2JlKCkuIFVucmVnaXN0ZXJcXG4rICogdGhlIHVwc3RyZWFtIGJlZm9yZSBkZXN0cm95aW5nIGl0cyBwaHlfcG9ydCwgc28gU0ZQIHVwc3RyZWFtIGNhbGxiYWNrcyBjYW5ub3RcXG4rICogcmFjZSB3aXRoIHBvcnQgZGVzdHJ1Y3Rpb24uXFxuKyAqL1xcbitzdGF0aWMgdm9pZCBwaHlfc2ZwX3JlbGVhc2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQsICp0bXA7XFxuK1xcbitcXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXFx1MDAzZXNmcF9idXMpO1xcbitcXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbitcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcnQsIHRtcCwgXFx1MDAyNnBoeWRldi1cXHUwMDNlcG9ydHMsIGhlYWQpIHtcXG4rXFx0XFx0aWYgKCFwb3J0LVxcdTAwM2Vpc19zZnApXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0cGh5X2RlbF9wb3J0KHBoeWRldiwgcG9ydCk7XFxuK1xcdFxcdHBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcXG4ge1xcbiBcXHRyZXR1cm4gcGh5ZHJ2LVxcdTAwM2Vjb25maWdfaW50ciBcXHUwMDI2XFx1MDAyNiBwaHlkcnYtXFx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XFxuQEAgLTM0MjksNiArMzQ1OCw3IEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQgPSBwaHlfcG9ydF9hbGxvYygpO1xcbiBcXHR1bnNpZ25lZCBsb25nIG1vZGU7XFxuK1xcdGludCByZXQ7XFxuIFxcbiBcXHRpZiAoIXBvcnQpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbkBAIC0zNDU1LDkgKzM0ODUsMTEgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHRcXHRwb3J0LVxcdTAwM2VwYWlycyA9IG1heF90KGludCwgcG9ydC1cXHUwMDNlcGFpcnMsXFxuIFxcdFxcdFxcdFxcdCAgICBldGh0b29sX2xpbmttb2RlX25fcGFpcnMobW9kZSkpO1xcbiBcXG4tXFx0cGh5X2FkZF9wb3J0KHBoeWRldiwgcG9ydCk7XFxuK1xcdHJldCA9IHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRwaHlfcG9ydF9kZXN0cm95KHBvcnQpO1xcbiBcXG4tXFx0cmV0dXJuIDA7XFxuK1xcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgb2ZfcGh5X3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuQEAgLTM1MjIsMTMgKzM1NTQsMTMgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcXG4gXFx0XFx0cmV0ID0gcGh5X3NmcF9wcm9iZShwaHlkZXYpO1xcbiBcXHRcXHRpZiAocmV0KVxcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0XFx0Z290byBlcnJfcG9ydHM7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChwaHlkZXYtXFx1MDAzZW5fcG9ydHMgXFx1MDAzYyBwaHlkZXYtXFx1MDAzZW1heF9uX3BvcnRzKSB7XFxuIFxcdFxcdHJldCA9IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHBoeWRldik7XFxuIFxcdFxcdGlmIChyZXQpXFxuLVxcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHRcXHRnb3RvIGVycl9zZnA7XFxuIFxcdH1cXG4gXFxuIFxcdGxpbmttb2RlX3plcm8ocG9ydHNfc3VwcG9ydGVkKTtcXG5AQCAtMzU1NSw3ICszNTg3LDkgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFxuIFxcdHJldHVybiAwO1xcbiBcXG4tb3V0OlxcbitlcnJfc2ZwOlxcbitcXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcXG4rZXJyX3BvcnRzOlxcbiBcXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuQEAgLTM2ODEsNyArMzcxNSw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0aWYgKHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2Vwcm9iZSkge1xcbiBcXHRcXHRlcnIgPSBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcHJvYmUocGh5ZGV2KTtcXG4gXFx0XFx0aWYgKGVycilcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdGdvdG8gb3V0X3Jlc2V0O1xcbiBcXHR9XFxuIFxcbiBcXHRwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7XFxuQEAgLTM3MDIsNyArMzczNiw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0XFx0ZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XFxuIFxcbiBcXHRpZiAoZXJyKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0Z290byBvdXRfcmVtb3ZlO1xcbiBcXG4gXFx0aWYgKCFsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCxcXG4gXFx0XFx0XFx0ICAgICAgIHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkKSlcXG5AQCAtMzcxOSw3ICszNzUzLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXG4gXFx0ZXJyID0gcGh5X3NldHVwX3BvcnRzKHBoeWRldik7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHRnb3RvIG91dF9yZW1vdmU7XFxuIFxcbiBcXHRwaHlfYWR2ZXJ0aXNlX3N1cHBvcnRlZChwaHlkZXYpO1xcbiBcXG5AQCAtMzcyOCw3ICszNzYyLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHQgKi9cXG4gXFx0ZXJyID0gZ2VucGh5X2M0NV9yZWFkX2VlZV9hZHYocGh5ZGV2LCBwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nX2VlZSk7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHRnb3RvIG91dF9wb3J0cztcXG4gXFxuIFxcdC8qIEdldCB0aGUgRUVFIG1vZGVzIHdlIHdhbnQgdG8gcHJvaGliaXQuICovXFxuIFxcdG9mX3NldF9waHlfZWVlX2Jyb2tlbihwaHlkZXYpO1xcbkBAIC0zNzgxLDIyICszODE1LDI5IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcXHUwMDI2XFx1MDAyNiAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkge1xcbiBcXHRcXHRlcnIgPSBvZl9waHlfbGVkcyhwaHlkZXYpO1xcbiBcXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0XFx0Z290byBvdXRfbGVkX3RyaWdnZXJzO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuLW91dDpcXG4tXFx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVxcdTAwM2VzZnBfYnVzKTtcXG4tXFx0cGh5ZGV2LVxcdTAwM2VzZnBfYnVzID0gTlVMTDtcXG4rb3V0X2xlZF90cmlnZ2VyczpcXG4rXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXFxuK1xcdFxcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xcbitcXG4rXFx0cGh5ZGV2LVxcdTAwM2VzdGF0ZSA9IFBIWV9ET1dOO1xcbiBcXG4rb3V0X3BvcnRzOlxcbitcXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcXG4gXFx0cGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTtcXG4gXFxuLVxcdGlmICghcGh5ZGV2LVxcdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxcbi1cXHRcXHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcXG4rb3V0X3JlbW92ZTpcXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VyZW1vdmUpXFxuK1xcdFxcdHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VyZW1vdmUocGh5ZGV2KTtcXG4gXFxuK291dF9yZXNldDpcXG4gXFx0LyogUmUtYXNzZXJ0IHRoZSByZXNldCBzaWduYWwgb24gZXJyb3IgKi9cXG4gXFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xcbitcXHRwaHlkZXYtXFx1MDAzZWRydiA9IE5VTEw7XFxuIFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuQEAgLTM4MTUsOSArMzg1Niw3IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcbiBcXHRwaHlkZXYtXFx1MDAzZXN0YXRlID0gUEhZX0RPV047XFxuIFxcbi1cXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXFx1MDAzZXNmcF9idXMpO1xcbi1cXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbi1cXG4rXFx0cGh5X3NmcF9yZWxlYXNlKHBoeWRldik7XFxuIFxcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XFxuIFxcbiBcXHRpZiAocGh5ZGV2LVxcdTAwM2VkcnYgXFx1MDAyNlxcdTAwMjYgcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZXJlbW92ZSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6MTguNDMyMjA4Mzk0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDYzNDY0ODczNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEhZTElCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2RldmljZV9yZWdpc3RlclwiLFxuICAgIFwicGh5X2RldmljZV9yZW1vdmVcIixcbiAgICBcInBoeV9kZXZpY2VfY3JlYXRlXCIsXG4gICAgXCJnZXRfcGh5X2RldmljZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgUEhZIGxpYnJhcnkgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgaW4gZHJpdmVyIHByb2JlL3JlbW92ZSBwYXRocyAocGh5X3Byb2JlLCBwaHlfcmVtb3ZlKSBhbmQgcG9ydCBzZXR1cCBmdW5jdGlvbnMuIFRoZXNlIGFyZSByZWFjaGFibGUgd2hlbiBQSFkgZGV2aWNlcyBhcmUgcmVnaXN0ZXJlZCBhbmQgYm91bmQgdG8gZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzAyZjY0YmY1ZjcxZDQ5NjFhODM1Yzc3YzlhNmVkZTc4MDgxMzliMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDE0OjUyOjE3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbmluZGV4IDA2MTUyMjg0NTllZjQuLmIwMDYwYjQxNDczNDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5AQCAtMTcyMywxMiArMTcyMyw0MSBAQCBzdGF0aWMgaW50IHBoeV9zZnBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0XHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4gXHR9XG4gXG4tXHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZXNmcF9idXMpXG4rXHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZXNmcF9idXMpIHtcbiBcdFx0cmV0ID0gcGh5X3NldHVwX3NmcF9wb3J0KHBoeWRldik7XG4rXHRcdGlmIChyZXQpIHtcbitcdFx0XHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4rXHRcdFx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuK1x0XHR9XG4rXHR9XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbisvKipcbisgKiBwaHlfc2ZwX3JlbGVhc2UgLSByZWxlYXNlIHJlc291cmNlcyBzZXQgdXAgYnkgcGh5X3NmcF9wcm9iZSgpXG4rICogQHBoeWRldjogdGhlIFBIWSBkZXZpY2VcbisgKlxuKyAqIFJlbGVhc2UgdGhlIFNGUCByZXNvdXJjZXMgc2V0IHVwIGJ5IGEgc3VjY2Vzc2Z1bCBwaHlfc2ZwX3Byb2JlKCkuIFVucmVnaXN0ZXJcbisgKiB0aGUgdXBzdHJlYW0gYmVmb3JlIGRlc3Ryb3lpbmcgaXRzIHBoeV9wb3J0LCBzbyBTRlAgdXBzdHJlYW0gY2FsbGJhY2tzIGNhbm5vdFxuKyAqIHJhY2Ugd2l0aCBwb3J0IGRlc3RydWN0aW9uLlxuKyAqL1xuK3N0YXRpYyB2b2lkIHBoeV9zZnBfcmVsZWFzZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdHN0cnVjdCBwaHlfcG9ydCAqcG9ydCwgKnRtcDtcbitcbitcdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cdTAwM2VzZnBfYnVzKTtcbitcdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbitcbitcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3J0LCB0bXAsIFx1MDAyNnBoeWRldi1cdTAwM2Vwb3J0cywgaGVhZCkge1xuK1x0XHRpZiAoIXBvcnQtXHUwMDNlaXNfc2ZwKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRwaHlfZGVsX3BvcnQocGh5ZGV2LCBwb3J0KTtcbitcdFx0cGh5X3BvcnRfZGVzdHJveShwb3J0KTtcbitcdH1cbit9XG4rXG4gc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcbiB7XG4gXHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbkBAIC0zNDI5LDYgKzM0NTgsNyBAQCBzdGF0aWMgaW50IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IHBoeV9wb3J0ICpwb3J0ID0gcGh5X3BvcnRfYWxsb2MoKTtcbiBcdHVuc2lnbmVkIGxvbmcgbW9kZTtcbitcdGludCByZXQ7XG4gXG4gXHRpZiAoIXBvcnQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuQEAgLTM0NTUsOSArMzQ4NSwxMSBAQCBzdGF0aWMgaW50IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdHBvcnQtXHUwMDNlcGFpcnMgPSBtYXhfdChpbnQsIHBvcnQtXHUwMDNlcGFpcnMsXG4gXHRcdFx0XHQgICAgZXRodG9vbF9saW5rbW9kZV9uX3BhaXJzKG1vZGUpKTtcbiBcbi1cdHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpO1xuK1x0cmV0ID0gcGh5X2FkZF9wb3J0KHBoeWRldiwgcG9ydCk7XG4rXHRpZiAocmV0KVxuK1x0XHRwaHlfcG9ydF9kZXN0cm95KHBvcnQpO1xuIFxuLVx0cmV0dXJuIDA7XG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IG9mX3BoeV9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuQEAgLTM1MjIsMTMgKzM1NTQsMTMgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdGlmICghcGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbiBcdFx0cmV0ID0gcGh5X3NmcF9wcm9iZShwaHlkZXYpO1xuIFx0XHRpZiAocmV0KVxuLVx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdGdvdG8gZXJyX3BvcnRzO1xuIFx0fVxuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VuX3BvcnRzIFx1MDAzYyBwaHlkZXYtXHUwMDNlbWF4X25fcG9ydHMpIHtcbiBcdFx0cmV0ID0gcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQocGh5ZGV2KTtcbiBcdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIG91dDtcbitcdFx0XHRnb3RvIGVycl9zZnA7XG4gXHR9XG4gXG4gXHRsaW5rbW9kZV96ZXJvKHBvcnRzX3N1cHBvcnRlZCk7XG5AQCAtMzU1NSw3ICszNTg3LDkgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcbiBcdHJldHVybiAwO1xuIFxuLW91dDpcbitlcnJfc2ZwOlxuK1x0cGh5X3NmcF9yZWxlYXNlKHBoeWRldik7XG4rZXJyX3BvcnRzOlxuIFx0cGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTM2ODEsNyArMzcxNSw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGlmIChwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXByb2JlKSB7XG4gXHRcdGVyciA9IHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcHJvYmUocGh5ZGV2KTtcbiBcdFx0aWYgKGVycilcbi1cdFx0XHRnb3RvIG91dDtcbitcdFx0XHRnb3RvIG91dF9yZXNldDtcbiBcdH1cbiBcbiBcdHBoeV9kaXNhYmxlX2ludGVycnVwdHMocGh5ZGV2KTtcbkBAIC0zNzAyLDcgKzM3MzYsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdGVyciA9IGdlbnBoeV9yZWFkX2FiaWxpdGllcyhwaHlkZXYpO1xuIFxuIFx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4rXHRcdGdvdG8gb3V0X3JlbW92ZTtcbiBcbiBcdGlmICghbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsXG4gXHRcdFx0ICAgICAgIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuQEAgLTM3MTksNyArMzc1Myw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcbiBcdGVyciA9IHBoeV9zZXR1cF9wb3J0cyhwaHlkZXYpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4rXHRcdGdvdG8gb3V0X3JlbW92ZTtcbiBcbiBcdHBoeV9hZHZlcnRpc2Vfc3VwcG9ydGVkKHBoeWRldik7XG4gXG5AQCAtMzcyOCw3ICszNzYyLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0ICovXG4gXHRlcnIgPSBnZW5waHlfYzQ1X3JlYWRfZWVlX2FkdihwaHlkZXYsIHBoeWRldi1cdTAwM2VhZHZlcnRpc2luZ19lZWUpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4rXHRcdGdvdG8gb3V0X3BvcnRzO1xuIFxuIFx0LyogR2V0IHRoZSBFRUUgbW9kZXMgd2Ugd2FudCB0byBwcm9oaWJpdC4gKi9cbiBcdG9mX3NldF9waHlfZWVlX2Jyb2tlbihwaHlkZXYpO1xuQEAgLTM3ODEsMjIgKzM4MTUsMjkgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcdTAwMjZcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHtcbiBcdFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcbiBcdFx0aWYgKGVycilcbi1cdFx0XHRnb3RvIG91dDtcbitcdFx0XHRnb3RvIG91dF9sZWRfdHJpZ2dlcnM7XG4gXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1vdXQ6XG4tXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4tXHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4rb3V0X2xlZF90cmlnZ2VyczpcbitcdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4rXHRcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xuK1xuK1x0cGh5ZGV2LVx1MDAzZXN0YXRlID0gUEhZX0RPV047XG4gXG4rb3V0X3BvcnRzOlxuK1x0cGh5X3NmcF9yZWxlYXNlKHBoeWRldik7XG4gXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xuIFxuLVx0aWYgKCFwaHlkZXYtXHUwMDNlaXNfb25fc2ZwX21vZHVsZSlcbi1cdFx0cGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyKHBoeWRldik7XG4rb3V0X3JlbW92ZTpcbitcdGlmIChwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZSlcbitcdFx0cGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUocGh5ZGV2KTtcbiBcbitvdXRfcmVzZXQ6XG4gXHQvKiBSZS1hc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCBvbiBlcnJvciAqL1xuIFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xuK1x0cGh5ZGV2LVx1MDAzZWRydiA9IE5VTEw7XG4gXG4gXHRyZXR1cm4gZXJyO1xuIH1cbkBAIC0zODE1LDkgKzM4NTYsNyBAQCBzdGF0aWMgaW50IHBoeV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFxuIFx0cGh5ZGV2LVx1MDAzZXN0YXRlID0gUEhZX0RPV047XG4gXG4tXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4tXHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4tXG4rXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1MjoxOC40MzIyMDk3MjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDYwMzk0MjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENyaXRpY2FsIE5ldHdvcmsgUEhZIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBUaGF0J3MgdGhlIGNvcmUgUEhZIGxpYnJhcnksIGFuZCBpdCdzIG1ha2luZyBjaGFuZ2VzIHRvIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwLCBzcGVjaWZpY2FsbHkgaW4gYHBoeV9zZnBfcHJvYmVgLCBgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnRgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9wcm9iZWAsIGFuZCBgcGh5X3JlbW92ZWAuIEludGVyZXN0aW5nIOKAkyB0aGV5J3ZlIGV2ZW4gYWRkZWQgYSBuZXcgZnVuY3Rpb24sIGBwaHlfc2ZwX3JlbGVhc2VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJpcyB0aGlzIHdvcnRoIGZ1enppbmc/XCIuXG5cbkdpdmVuIHRoZSBsb2NhdGlvbiBhbmQgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzLCB0aGlzICpoYXMqIHRvIGJlIHJlYWNoYWJsZS4gVGhlIG1vZGlmaWNhdGlvbnMgYXJlIGRlZXAgd2l0aGluIHRoZSBQSFkgcHJvYmluZyBwcm9jZXNzIGl0c2VsZiDigJMgcGFydGljdWxhcmx5IGBwaHlfcHJvYmVgIGFuZCBpdHMgYXNzb2NpYXRlZCBmdW5jdGlvbnMuIGBwaHlfcHJvYmVgIGlzLCBhcyB0aGUgbmFtZSBpbXBsaWVzLCBhdCB0aGUgaGVhcnQgb2YgdGhlIFBIWSBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIFllcCwgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nOyBhIGZhaWx1cmUgaGVyZSBjYW4gYnJpbmcgZG93biB0aGUgbmV0d29yay5cblxuTm93LCBsZXQncyBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgdG8gYWN0dWFsbHkgY29tcGlsZSBhbmQgdXNlIHRoaXMgY29kZS4gSXQgbG9va3MgbGlrZSBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1BIWUxJQmAgaXMgZW5hYmxlZC4gVGltZSB0byBjaGVjayB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeSB0byBnZXQgYSBiZXR0ZXIgZ3JpcCBvbiBob3cgdGhpcyBjb2RlIGlzIHB1bGxlZCBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwOCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE0OjUyOjI1LjQ5MjYwNjU5M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjI5NTgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfZGV2aWNlLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0zLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo0OmxpYnBoeS15XFx0XFx0XFx0Oj0gcGh5Lm8gcGh5LWM0NS5vIHBoeS1jb3JlLm8gcGh5X2RldmljZS5vIFxcXFxcXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNS1cXHRcXHRcXHRcXHQgICBsaW5rbW9kZS5vIHBoeV9saW5rX3RvcG9sb2d5Lm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1MjoyNS41ODQ5MDY0ODRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQ4NDQ1NDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFJvbGUgb2YgYGxpYnBoeWAqKlxuXG5Pa2F5LCBzbyBJJ20gZGVhbGluZyB3aXRoIHNvbWV0aGluZyB0aGF0J3MgcGFydCBvZiBgbGlicGh5YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQuIFdoYXQgY29uZmlndXJhdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgZW5hYmxpbmcgb3B0aW9ucyBhcmUgcmVsZXZhbnQgdG8gYGxpYnBoeWA/IFRvIHVuZGVyc3RhbmQgdGhpcyBzaXR1YXRpb24gdGhvcm91Z2hseSwgSSBuZWVkIHRvIGlkZW50aWZ5IHdoYXQgZXhhY3RseSB0cmlnZ2VycyB0aGUgdXNlIG9mIGBsaWJwaHlgIGluIHRoaXMgcGFydGljdWxhciBzY2VuYXJpby4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIG9yIGRvY3VtZW50YXRpb24gdG8gcGlucG9pbnQgdGhlIHNwZWNpZmljIHNldHRpbmdzIG9yIHBhcmFtZXRlcnMgdGhhdCBnb3Zlcm4gYGxpYnBoeWAncyBpbmNsdXNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMDcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1MjoyOS4wMzMzNTQzMDNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ5NDcyODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGlicGh5Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfUEhZTElOSylcXHRcXHQrPSBwaHlsaW5rLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX1BIWUxJQilcXHRcXHQrPSBsaWJwaHkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0yMS1vYmotJChDT05GSUdfUEhZTElCKVxcdFxcdCs9IG1kaW9fZGV2cmVzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6MjkuMDg4MzA2ODY4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcxNzA2NTUxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBIWUxJQiBDb25maWd1cmF0aW9uIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBgQ09ORklHX1BIWUxJQmAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIGZ1bmN0aW9ucyBpbXBhY3RlZCBieSB0aGlzIHBhdGNoLiBUaGUgcGF0Y2ggbm90ZXMgdGhlc2UgbW9kaWZpY2F0aW9ucywgd2hpY2ggYXJlIGltcG9ydGFudDpcblxuKiAgIGBwaHlfc2ZwX3Byb2JlYCAoc3RhdGljKVxuKiAgIGBwaHlfc2ZwX3JlbGVhc2VgIChzdGF0aWMsIG5ldylcbiogICBgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnRgIChzdGF0aWMpXG4qICAgYHBoeV9zZXR1cF9wb3J0c2AgKHN0YXRpYylcbiogICBgcGh5X3Byb2JlYCAoc3RhdGljKVxuKiAgIGBwaHlfcmVtb3ZlYCAoc3RhdGljKVxuXG5NeSBuZXh0IHRob3VnaHQgZm9jdXNlcyBvbiBob3cgdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucyBhcmUgYWNjZXNzZWQuIEkga25vdyB0aGF0IGBwaHlfcHJvYmVgIHdvdWxkIGJlIG15IGZpcnN0IHRhcmdldCBiZWNhdXNlIGl0J3MgYSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24sIGxpa2VseSByZWdpc3RlcmVkIHRocm91Z2ggYHBoeV9kcml2ZXJfcmVnaXN0ZXJgIG9yIGEgcmVsYXRlZCBmdW5jdGlvbi4gU28sIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGBwaHlfcHJvYmVgIGlzIGFjdHVhbGx5IHVzZWQuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBJJ20gYWZ0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NzksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6MzMuODA1Mzc1Nzk0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5OTkxMzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzY4Nj1FWFBPUlRfU1lNQk9MX0dQTChmd25vZGVfZ2V0X3BoeV9ub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzY4OC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM2ODk6ICogcGh5X3Byb2JlIC0gcHJvYmUgYW5kIGluaXQgYSBQSFkgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNjkwLSAqIEBkZXY6IGRldmljZSB0byBwcm9iZSBhbmQgaW5pdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNjkzLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzY5NDpzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNjk1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9Mzg3OD1zdGF0aWMgaW50IHBoeV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBoeV9kcml2ZXIgKm5ld19kcml2ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM5MDQtXFx0bmV3X2RyaXZlci1cXHUwMDNlbWRpb2Rydi5kcml2ZXIuYnVzID0gXFx1MDAyNm1kaW9fYnVzX3R5cGU7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozOTA1OlxcdG5ld19kcml2ZXItXFx1MDAzZW1kaW9kcnYuZHJpdmVyLnByb2JlID0gcGh5X3Byb2JlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzkwNi1cXHRuZXdfZHJpdmVyLVxcdTAwM2VtZGlvZHJ2LmRyaXZlci5yZW1vdmUgPSBwaHlfcmVtb3ZlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1MjozMy44NTUzNzMxOTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDU5MDM2MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gUEhZIERldmljZSBQcm9iaW5nKipcblxuT2theSwgc28gYHBoeV9wcm9iZWAgaXMgdGhlIGNydWNpYWwgcHJvYmUgZnVuY3Rpb24gZm9yIHRoZSBgbWRpb19idXNfdHlwZWAsIHRyaWdnZXJlZCBieSB0aGUgZHJpdmVyIGNvcmUgd2hlbiBhIFBIWSBkZXZpY2UgaXMgYmVpbmcgcHJvYmVkLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB0aGluayBhYm91dCB3aGF0IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSBjZW50cmFsIHRvIHRoaXMgcHJvY2Vzcy4gV2hlcmUgY2FuIEkgZmluZCB0aGUga2V5IGFyZWFzIHRvIGZvY3VzIG9uPyBUaGUgZmlyc3QgdGhpbmdzIHRoYXQgY29tZSB0byBtaW5kIGFyZSBgcGh5X2RldmljZV9yZWdpc3RlcmAgb3IgYHBoeV9kZXZpY2VfY3JlYXRlYCDigJMgdGhvc2Ugc291bmQgbGlrZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgZm9yIGJyaW5naW5nIGEgUEhZIGRldmljZSBpbnRvIHRoZSBzeXN0ZW0uIExldCdzIGRlbHZlIGludG8gYHBoeV9kZXZpY2UuY2AgYW5kIHNlZSB3aGF0IGV4cG9ydGVkIGZ1bmN0aW9ucyBpdCBvZmZlcnMgdGhhdCByZWxhdGUgdG8gZWl0aGVyIHRoZSBjcmVhdGlvbiBvciByZWdpc3RyYXRpb24gb2YgUEhZIGRldmljZXMuIFRoYXQncyB3aGVyZSBJIHdpbGwgbGlrZWx5IGZpbmQgdGhlIG1vc3QgY3JpdGljYWwgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzE5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6MzguOTE0NDExOTk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjE0NDgxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipwaHlfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0yMTA9dm9pZCBwaHlfZGV2aWNlX2ZyZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjEzLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjIxNDpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfZnJlZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTUyMj1pbnQgZ2VucGh5X21hdGNoX3BoeV9kZXZpY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTQzLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjU0NDpFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfbWF0Y2hfcGh5X2RldmljZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01NDUtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTc0OD1zdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTgzOS19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo4NDA6RVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX2NyZWF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy04NDEtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEwNzE9c3RydWN0IHBoeV9kZXZpY2UgKmdldF9waHlfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGlzX2M0NSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMi19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTAzOkVYUE9SVF9TWU1CT0woZ2V0X3BoeV9kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTEwOT1pbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTQxLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjExNDI6RVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExNDMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTExNTI9dm9pZCBwaHlfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTYzLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjExNjQ6RVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlbW92ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTY1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1MjozOC45NjA1NjI1NTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcwMjU0MDU0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBIWSBGcmFtZXdvcmsgZm9yIEVycm9yIEhhbmRsaW5nIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaW1wbGVtZW50aW5nIHNvbWUgZXJyb3IgaGFuZGxpbmcgaW1wcm92ZW1lbnRzIHdpdGhpbiB0aGUgUEhZIGZyYW1ld29yaywgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgcGh5X3Byb2JlYCBhbmQgYHBoeV9yZW1vdmVgLiBUaGUga2V5IHNlZW1zIHRvIGJlIGZpZ3VyaW5nIG91dCB0aGUgZW50cnkgcG9pbnRzIHRoYXQgd2lsbCB0cmlnZ2VyIHRoZXNlIGZ1bmN0aW9ucy4gSW1tZWRpYXRlbHksIGBwaHlfZGV2aWNlX3JlZ2lzdGVyYCBhbmQgYHBoeV9kZXZpY2VfcmVtb3ZlYCBqdW1wIG91dCBhcyBzdHJvbmcgY2FuZGlkYXRlcywgYW5kIEkgc2hvdWxkIGFsc28ga2VlcCBhbiBleWUgb3V0IGZvciBgcGh5X2RldmljZV9jcmVhdGVgIGFuZCBwb3RlbnRpYWxseSBgZ2V0X3BoeV9kZXZpY2VgIGZvciB0aG9yb3VnaG5lc3MuIFRoZSBwYXRjaCBub3RlcyBmb2N1cyBvbiBgcGh5X3Byb2JlYCBhbmQgYHBoeV9yZW1vdmVgLCB3aGljaCB0aGUgZHJpdmVyIGNvcmUgaW52b2tlcyBkdXJpbmcgZGV2aWNlIHJlZ2lzdHJhdGlvbiBhbmQgd2hlbiBiaW5kaW5nIHRvIGEgZHJpdmVyLlxuXG5TaW5jZSB0aGUgZ29hbCBpcyB0byBlbmhhbmNlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMsIHRyYWNpbmcgdGhlIGNhbGxzIHRoYXQgbGVhZCB0byB0aGVpciBleGVjdXRpb24gaXMgZXNzZW50aWFsLiBUaGUgZHJpdmVyIGNvcmUgaGFuZGxlcyB0aGUgYmluZGluZyBwcm9jZXNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGJpbmRpbmcgbWVjaGFuaXNtIHdvcmtzLiBSZW1lbWJlcmluZyB0aGF0IGBwaHlfcHJvYmVgIGlzIGNhbGxlZCB3aGVuIGEgZHJpdmVyIGJpbmRzLCBJIG5lZWQgdG8ga25vdyB0aGUgdHJpZ2dlcmluZyBldmVudHMuIERyaXZlciBiaW5kaW5nIHNlZW1zIHRvIGhhcHBlbiB2aWEgc3lzZnMgb3IgZHVyaW5nIGRldmljZSByZWdpc3RyYXRpb24uIFRoZXJlZm9yZSwgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGFwcGVhcnMgdG8gYmUgdGhlIG1vc3QgZGlyZWN0IHJvdXRlIHRvIGNhbGwgYHBoeV9wcm9iZWAuXG5cbkJlZm9yZSBwcm9jZWVkaW5nLCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIG1haW4gb25lIGlzIGBDT05GSUdfUEhZTElCYCwgb2J2aW91c2x5LiBJJ2xsIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mIG9yIHJlcXVpcmVtZW50cyBmb3IgdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byB3b3JrIHByb3Blcmx5LiBUaGF0IHdpbGwgYmUgbmV4dCBvbiBteSBsaXN0IHRvIGNoZWNrIGZvci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI0NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1Mjo0NC42NjMxMDcyOTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNDcxNDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQSFlMSUJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9Nj1jb25maWcgUEhZTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTU6bWVudWNvbmZpZyBQSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiUEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ2PWNvbmZpZyBPUEVOX0FMTElBTkNFX0hFTFBFUlNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ5OmNvbmZpZyBQSFlMSUJfTEVEU1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVxcdGRlZl9ib29sIE9GXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE0OjUyOjQ0LjcxMzU4Mzk5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjAyNTI3NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlcGVuZGVuY3kgQ2hlY2s6IFBIWUxJQioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGluLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMgSSBuZWVkIHRvIHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgUEhZTElCYC4gSXQncyBjcnVjaWFsLCBvYnZpb3VzbHksIGJlY2F1c2UgYW55IG1pc3Npbmcgb3IgbWlzY29uZmlndXJlZCBkZXBlbmRlbmNpZXMgd291bGQgaW1tZWRpYXRlbHkgdGFuayB0aGUgd2hvbGUgdGhpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHdvcmtpbmcgd2l0aCB0aGUgY29ycmVjdCB2ZXJzaW9ucyBvZiBhbGwgdGhlIHJlbGV2YW50IHN1cHBvcnRpbmcgbGlicmFyaWVzIGFuZCB0aGF0IHRoZWlyIGJ1aWxkcyBhcmUgY2xlYW4uIEknbSB0aGlua2luZyBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBpbmNsdWRlIHBhdGhzIGFuZCBsaWJyYXJ5IGxpbmtpbmcgaW4gdGhlIGJ1aWxkIHByb2Nlc3MsIHByb2JhYmx5IHdpdGggYSBxdWljayBzY2FuIG9mIHRoZSBidWlsZCBzY3JpcHRzLiBBbnkgY29uZmxpY3RzIG9yIGluY29tcGF0aWJpbGl0aWVzIGhlcmUsIGFuZCBJJ2xsIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBjb25maWd1cmF0aW9uIG9mIGVhY2ggZGVwZW5kZW50IGNvbXBvbmVudC4gSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIG9idmlvdXM6IHN0YW5kYXJkIGxpYnJhcmllcyBhbmQgYW55IGNvcmUgbmV0d29ya2luZyBvciBoYXJkd2FyZSBhYnN0cmFjdGlvbiBjb21wb25lbnRzLiBMZXQncyBnZXQgY3JhY2tpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MzYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1Mjo0Ny45MTYxMTQ0OTdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMTU6XFx0bWVudWNvbmZpZyBQSFlMSUJcXG4gIDE2OlxcdFxcdHRyaXN0YXRlIFxcXCJQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXFxcIlxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcXG4gIDE5OlxcdFxcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxcbiAgMjA6XFx0XFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0aWYgUEhZTElCXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBTV1BIWVxcbiAgMjU6XFx0XFx0Ym9vbFxcbiAgMjY6XFx0XFxuICAyNzpcXHRjb25maWcgUEhZX1BBQ0tBR0VcXG4gIDI4OlxcdFxcdCB0cmlzdGF0ZVxcbiAgMjk6XFx0XFxuICAzMDpcXHRjb25maWcgTEVEX1RSSUdHRVJfUEhZXFxuICAzMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IExFRCB0cmlnZ2VycyBmb3IgdHJhY2tpbmcgbGluayBzdGF0ZVxcXCJcXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBBZGRzIHN1cHBvcnQgZm9yIGEgc2V0IG9mIExFRCB0cmlnZ2VyIGV2ZW50cyBwZXItUEhZLiAgTGlua1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1Mjo0Ny45MTYxODU4MTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE0NTMyNjEwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQSFlMSUIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBgUEhZTElCYCBpcyBzZWxmLWNvbnRhaW5lZCDigJMgbm8gZXh0ZXJuYWwgYmFnZ2FnZSB0byB3b3JyeSBhYm91dC4gVGhhdCdzIGdvb2Q7IG1ha2VzIHRoaW5ncyBzaW1wbGVyLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIGZvY3VzZWQuIExldCdzIGRpZyBpbi4gSSBzZWUgZXJyb3IgaGFuZGxpbmcgaGFzIGJlZW4gYWRkZWQgdG8gYHBoeV9zZnBfcHJvYmVgIGFuZCBgcGh5X2FkZF9wb3J0YCwgd2hpY2ggaXMgYWx3YXlzIGEgd2VsY29tZSBzaWdodC4gQW5kIGBwaHlfc2ZwX3JlbGVhc2VgIGZvciBjbGVhbnVwLCB0aGF0J3MgY3J1Y2lhbDsgcmVzb3VyY2UgbGVha3MgYXJlIHRoZSBiYW5lIG9mIG15IGV4aXN0ZW5jZS4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY29yZSBjaGFuZ2UgdG8gYFBIWUxJQmAuIEl04oCZcyBkZWZpbml0ZWx5IHdvcnRoIGEgZnV6emluZyBjYW1wYWlnbiB0byB2YWxpZGF0ZSB0aGVzZSBuZXcgZXJyb3IgcGF0aHMgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQuXG5cbk15IGZvY3VzIGhhcyB0byBiZSBvbiB0aGVzZSBrZXkgc3ltYm9sczogYHBoeV9kZXZpY2VfcmVnaXN0ZXJgLCBgcGh5X2RldmljZV9yZW1vdmVgLCBgcGh5X2RldmljZV9jcmVhdGVgLCBhbmQgYGdldF9waHlfZGV2aWNlYC4gVGhleSdyZSB0aGUgY3JpdGljYWwgZW50cnkgYW5kIGV4aXQgcG9pbnRzLiBJIHNob3VsZCBhbHNvIGNoZWNrIGhvdyBgcGh5X3Byb2JlYCBmaXRzIGluIHRvIHRoZSBzeXN0ZW0uIE5vLCBzdGF0aWMsIHNvIHRoYXQncyBub3QgYSBkaXJlY3QgcG9pbnQgb2YgYXR0YWNrLiBXaGF0IGFib3V0IGBwaHlfYXR0YWNoX2RpcmVjdGA/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjczODgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1Mjo1NC4wNjE1MTUwMjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0ODk0MTAyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipwaHlfYXR0YWNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMzkwPXZvaWQgcGh5X2F0dGFjaGVkX2luZm8oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTM5My19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzk0OkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaGVkX2luZm8pO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTM5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTM5Nz1jaGFyICpwaHlfYXR0YWNoZWRfaW5mb19pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTQxNi19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNDE3OkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaGVkX2luZm9faXJxKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE0MTgtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNDE5PXZvaWQgcGh5X2F0dGFjaGVkX3ByaW50KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNDM4LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE0Mzk6RVhQT1JUX1NZTUJPTChwaHlfYXR0YWNoZWRfcHJpbnQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTQ0MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTc4MT1pbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkzNS19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTM2OkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkzNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6NTQuNDEwNDYyMDg2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NTQyMzc0MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIEVudHJ5IFBvaW50KipcblxuT2theSwgc28gYHBoeV9hdHRhY2hfZGlyZWN0YCBpcyBleHBvcnRlZCwgYnV0IHRoZSByZWFsIG1lYXQgb2YgdGhlIGRyaXZlciBpbnRlcmFjdGlvbiBzZWVtcyB0byBiZSBoYXBwZW5pbmcgd2l0aGluIGBwaHlfcHJvYmVgIGFuZCBgcGh5X3JlbW92ZWAuIFRob3NlIGFyZSBkcml2ZXIgcHJvYmUgYW5kIHJlbW92ZSBmdW5jdGlvbnMsIHNvIHRoYXQgbWFrZXMgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uXG5cbkJlZm9yZSBkaXZpbmcgaW4gdG9vIGRlZXAsIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIG1lbnRpb25lZCBpbiB0aGUgcGF0Y2guIEkgc2VlIGBDT05GSUdfUEhZTElCX0xFRFNgIHJlZmVyZW5jZWQgd2l0aGluIHRoZSBgcGh5X3Byb2JlYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBpdCdzIHVzZWQgdG8gZW5hYmxlIExFRCBzdXBwb3J0LCBidXQgb25seSBpZiB0aGUgUEhZIGlzbid0IGEgZ2VuZXJpYyBQSFkuIE1pZ2h0IGJlIHNvbWV0aGluZyB1c2VmdWwgdG8gZW5hYmxlIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgc2l0dWF0aW9uLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYFBIWUxJQl9MRURTYCBpbiBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgaXQgZW50YWlscyBhbmQgd2hldGhlciBpdCdzIHJlbGV2YW50IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6NTkuMjY0NzAyMTQ3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQ0NzY0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEhZTElCX0xFRFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDY9Y29uZmlnIE9QRU5fQUxMSUFOQ0VfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDk6Y29uZmlnIFBIWUxJQl9MRURTXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTAtXFx0ZGVmX2Jvb2wgT0ZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTI6NTkuMzExMTU0ODUyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzODQxODA1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBQSFlMSUIgYW5kIFJlbGF0ZWQgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBgUEhZTElCX0xFRFNgIGlzIGEgYGRlZl9ib29sYCB0aGF0IGRlcGVuZHMgb24gYE9GYCBiZWluZyBlbmFibGVkLiBUaGF0IG1lYW5zIGl0J3MgZW5hYmxlZCBpZiBgT0ZgIGlzIGVuYWJsZWQsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGNhbiBzaW1wbGlmeSB0aGlzLiBJIHNob3VsZCBqdXN0IGFkZCBgUEhZTElCYCBhbmQgYE9GYCwgb3IganVzdCBgUEhZTElCYCwgdG8gdGhlIGNvbmZpZ3VyYXRpb24gbGlzdCwgZGVwZW5kaW5nIG9uIHRoZSBkZXNpcmVkIGJlaGF2aW9yLlxuXG5IZXJlJ3MgbXkgZGlzdGlsbGVkIHN1bW1hcnk6IEkndmUgZGV0ZXJtaW5lZCB0aGlzIG1vZHVsZSBpcyB3b3J0aHkgb2YgZnV6emluZy4gTXkga2V5IGZvY3VzIHN5bWJvbHMgd2lsbCBiZSBgcGh5X2RldmljZV9yZWdpc3RlcmAsIGBwaHlfZGV2aWNlX3JlbW92ZWAsIGBwaHlfZGV2aWNlX2NyZWF0ZWAsIGFuZCBgZ2V0X3BoeV9kZXZpY2VgLiBJIHdpbGwgZW5hYmxlIHRoZSBgUEhZTElCYCBjb25maWd1cmF0aW9uLlxuXG5Ob3csIGxldCdzIHZlcmlmeSBteSBjaG9pY2Ugb2YgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgLiBZZXMsIHRoYXQgcmVnaXN0ZXJzIHRoZSBQSFkgZGV2aWNlIHdpdGggdGhlIGRyaXZlciBjb3JlLiBUaGUgY29yZSB0aGVuIHByb2JlcyBpdCwgd2hpY2ggaXMgaWRlYWwuIGBwaHlfZGV2aWNlX3JlbW92ZWAgdW5yZWdpc3RlcnMgdGhlIGRldmljZSB3aGljaCBjYWxscyBgcGh5X3JlbW92ZWAuIFRoaXMgaXMgZXhhY3RseSB0aGUgcmVnaXN0cmF0aW9uIGFuZCB1bnJlZ2lzdHJhdGlvbiBJIG5lZWQgdG8gdHJpZ2dlciBpbnRlcmVzdGluZyBjb2RlIHBhdGhzIGFuZCBlZGdlIGNhc2VzLiBQZXJmZWN0IVxuXG5UaW1lIHRvIHNldCB0aGVzZSByZXN1bHRzIGFuZCBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NjAsIk91dHB1dFRva2VucyI6MTEwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE0OjUzOjA0LjY5NTMzODA3N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMzU0OTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSUJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlfZGV2aWNlX3JlZ2lzdGVyXCIsXG4gICAgXCJwaHlfZGV2aWNlX3JlbW92ZVwiLFxuICAgIFwicGh5X2RldmljZV9jcmVhdGVcIixcbiAgICBcImdldF9waHlfZGV2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBQSFkgbGlicmFyeSBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyBpbiBkcml2ZXIgcHJvYmUvcmVtb3ZlIHBhdGhzIChwaHlfcHJvYmUsIHBoeV9yZW1vdmUpIGFuZCBwb3J0IHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHJlYWNoYWJsZSB3aGVuIFBIWSBkZXZpY2VzIGFyZSByZWdpc3RlcmVkIGFuZCBib3VuZCB0byBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV9kZXZpY2VfcmVnaXN0ZXJcIixcbiAgICBcInBoeV9kZXZpY2VfcmVtb3ZlXCIsXG4gICAgXCJwaHlfZGV2aWNlX2NyZWF0ZVwiLFxuICAgIFwiZ2V0X3BoeV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIGluIGRyaXZlciBwcm9iZS9yZW1vdmUgcGF0aHMgKHBoeV9wcm9iZSwgcGh5X3JlbW92ZSkgYW5kIHBvcnQgc2V0dXAgZnVuY3Rpb25zLiBUaGVzZSBhcmUgcmVhY2hhYmxlIHdoZW4gUEhZIGRldmljZXMgYXJlIHJlZ2lzdGVyZWQgYW5kIGJvdW5kIHRvIGRyaXZlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE0OjUzOjA0Ljc3ODY5OTA1OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2NzkxOTc3MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNDo1MzowNC43NzkyMTQ0MjlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTU2Nzg2Nzg3NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZvY3VzZXMgZW50aXJlbHkgb24gZml4aW5nIHJlc291cmNlIGxlYWtzIGFuZCBpbmNvcnJlY3QgY2xlYW51cCBvcmRlciBvbiBlcnJvciBwYXRocyBpbiB0aGUgUEhZIGRldmljZSBkcml2ZXIgKGUuZy4sIHByb3Blcmx5IGRlc3Ryb3lpbmcgcG9ydHMsIHJlbGVhc2luZyBTRlAgcmVzb3VyY2VzLCBhbmQgY2FsbGluZyB0aGUgZHJpdmVyJ3MgcmVtb3ZlIGNhbGxiYWNrIG9uIGZhaWx1cmUpLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQga21lbWxlYWsuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBub3IgYW55IGNvbnRyb2wgZmxvdyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MDJmNjRiZjVmNzFkNDk2MWE4MzVjNzdjOWE2ZWRlNzgwODEzOWIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTQ6NTI6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggMDYxNTIyODQ1OWVmNC4uYjAwNjBiNDE0NzM0OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0xNzIzLDEyICsxNzIzLDQxIEBAIHN0YXRpYyBpbnQgcGh5X3NmcF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHRcdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbiBcdH1cbiBcbi1cdGlmICghcmV0IFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlc2ZwX2J1cylcbitcdGlmICghcmV0IFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlc2ZwX2J1cykge1xuIFx0XHRyZXQgPSBwaHlfc2V0dXBfc2ZwX3BvcnQocGh5ZGV2KTtcbitcdFx0aWYgKHJldCkge1xuK1x0XHRcdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cdTAwM2VzZnBfYnVzKTtcbitcdFx0XHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4rXHRcdH1cbitcdH1cbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuKy8qKlxuKyAqIHBoeV9zZnBfcmVsZWFzZSAtIHJlbGVhc2UgcmVzb3VyY2VzIHNldCB1cCBieSBwaHlfc2ZwX3Byb2JlKClcbisgKiBAcGh5ZGV2OiB0aGUgUEhZIGRldmljZVxuKyAqXG4rICogUmVsZWFzZSB0aGUgU0ZQIHJlc291cmNlcyBzZXQgdXAgYnkgYSBzdWNjZXNzZnVsIHBoeV9zZnBfcHJvYmUoKS4gVW5yZWdpc3RlclxuKyAqIHRoZSB1cHN0cmVhbSBiZWZvcmUgZGVzdHJveWluZyBpdHMgcGh5X3BvcnQsIHNvIFNGUCB1cHN0cmVhbSBjYWxsYmFja3MgY2Fubm90XG4rICogcmFjZSB3aXRoIHBvcnQgZGVzdHJ1Y3Rpb24uXG4rICovXG4rc3RhdGljIHZvaWQgcGh5X3NmcF9yZWxlYXNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0c3RydWN0IHBoeV9wb3J0ICpwb3J0LCAqdG1wO1xuK1xuK1x0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuK1x0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcnQsIHRtcCwgXHUwMDI2cGh5ZGV2LVx1MDAzZXBvcnRzLCBoZWFkKSB7XG4rXHRcdGlmICghcG9ydC1cdTAwM2Vpc19zZnApXG4rXHRcdFx0Y29udGludWU7XG4rXG4rXHRcdHBoeV9kZWxfcG9ydChwaHlkZXYsIHBvcnQpO1xuK1x0XHRwaHlfcG9ydF9kZXN0cm95KHBvcnQpO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuIHtcbiBcdHJldHVybiBwaHlkcnYtXHUwMDNlY29uZmlnX2ludHIgXHUwMDI2XHUwMDI2IHBoeWRydi1cdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xuQEAgLTM0MjksNiArMzQ1OCw3IEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQgPSBwaHlfcG9ydF9hbGxvYygpO1xuIFx0dW5zaWduZWQgbG9uZyBtb2RlO1xuK1x0aW50IHJldDtcbiBcbiBcdGlmICghcG9ydClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG5AQCAtMzQ1NSw5ICszNDg1LDExIEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0cG9ydC1cdTAwM2VwYWlycyA9IG1heF90KGludCwgcG9ydC1cdTAwM2VwYWlycyxcbiBcdFx0XHRcdCAgICBldGh0b29sX2xpbmttb2RlX25fcGFpcnMobW9kZSkpO1xuIFxuLVx0cGh5X2FkZF9wb3J0KHBoeWRldiwgcG9ydCk7XG4rXHRyZXQgPSBwaHlfYWRkX3BvcnQocGh5ZGV2LCBwb3J0KTtcbitcdGlmIChyZXQpXG4rXHRcdHBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7XG4gXG4tXHRyZXR1cm4gMDtcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyBpbnQgb2ZfcGh5X3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5AQCAtMzUyMiwxMyArMzU1NCwxMyBAQCBzdGF0aWMgaW50IHBoeV9zZXR1cF9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0aWYgKCFwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuIFx0XHRyZXQgPSBwaHlfc2ZwX3Byb2JlKHBoeWRldik7XG4gXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0Z290byBlcnJfcG9ydHM7XG4gXHR9XG4gXG4gXHRpZiAocGh5ZGV2LVx1MDAzZW5fcG9ydHMgXHUwMDNjIHBoeWRldi1cdTAwM2VtYXhfbl9wb3J0cykge1xuIFx0XHRyZXQgPSBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChwaHlkZXYpO1xuIFx0XHRpZiAocmV0KVxuLVx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdGdvdG8gZXJyX3NmcDtcbiBcdH1cbiBcbiBcdGxpbmttb2RlX3plcm8ocG9ydHNfc3VwcG9ydGVkKTtcbkBAIC0zNTU1LDcgKzM1ODcsOSBAQCBzdGF0aWMgaW50IHBoeV9zZXR1cF9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFxuIFx0cmV0dXJuIDA7XG4gXG4tb3V0OlxuK2Vycl9zZnA6XG4rXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbitlcnJfcG9ydHM6XG4gXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMzY4MSw3ICszNzE1LDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcHJvYmUpIHtcbiBcdFx0ZXJyID0gcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2Vwcm9iZShwaHlkZXYpO1xuIFx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdGdvdG8gb3V0X3Jlc2V0O1xuIFx0fVxuIFxuIFx0cGh5X2Rpc2FibGVfaW50ZXJydXB0cyhwaHlkZXYpO1xuQEAgLTM3MDIsNyArMzczNiw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdFx0ZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XG4gXG4gXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbitcdFx0Z290byBvdXRfcmVtb3ZlO1xuIFxuIFx0aWYgKCFsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCxcbiBcdFx0XHQgICAgICAgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCkpXG5AQCAtMzcxOSw3ICszNzUzLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFxuIFx0ZXJyID0gcGh5X3NldHVwX3BvcnRzKHBoeWRldik7XG4gXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbitcdFx0Z290byBvdXRfcmVtb3ZlO1xuIFxuIFx0cGh5X2FkdmVydGlzZV9zdXBwb3J0ZWQocGh5ZGV2KTtcbiBcbkBAIC0zNzI4LDcgKzM3NjIsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHQgKi9cbiBcdGVyciA9IGdlbnBoeV9jNDVfcmVhZF9lZWVfYWR2KHBoeWRldiwgcGh5ZGV2LVx1MDAzZWFkdmVydGlzaW5nX2VlZSk7XG4gXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbitcdFx0Z290byBvdXRfcG9ydHM7XG4gXG4gXHQvKiBHZXQgdGhlIEVFRSBtb2RlcyB3ZSB3YW50IHRvIHByb2hpYml0LiAqL1xuIFx0b2Zfc2V0X3BoeV9lZWVfYnJva2VuKHBoeWRldik7XG5AQCAtMzc4MSwyMiArMzgxNSwyOSBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZTElCX0xFRFMpIFx1MDAyNlx1MDAyNiAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkge1xuIFx0XHRlcnIgPSBvZl9waHlfbGVkcyhwaHlkZXYpO1xuIFx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdGdvdG8gb3V0X2xlZF90cmlnZ2VycztcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuIFxuLW91dDpcbi1cdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cdTAwM2VzZnBfYnVzKTtcbi1cdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbitvdXRfbGVkX3RyaWdnZXJzOlxuK1x0aWYgKCFwaHlkZXYtXHUwMDNlaXNfb25fc2ZwX21vZHVsZSlcbitcdFx0cGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyKHBoeWRldik7XG4rXG4rXHRwaHlkZXYtXHUwMDNlc3RhdGUgPSBQSFlfRE9XTjtcbiBcbitvdXRfcG9ydHM6XG4rXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXG4tXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuLVx0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbitvdXRfcmVtb3ZlOlxuK1x0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKVxuK1x0XHRwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZShwaHlkZXYpO1xuIFxuK291dF9yZXNldDpcbiBcdC8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4rXHRwaHlkZXYtXHUwMDNlZHJ2ID0gTlVMTDtcbiBcbiBcdHJldHVybiBlcnI7XG4gfVxuQEAgLTM4MTUsOSArMzg1Niw3IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXG4gXHRwaHlkZXYtXHUwMDNlc3RhdGUgPSBQSFlfRE9XTjtcbiBcbi1cdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cdTAwM2VzZnBfYnVzKTtcbi1cdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbi1cbitcdHBoeV9zZnBfcmVsZWFzZShwaHlkZXYpO1xuIFx0cGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTtcbiBcbiBcdGlmIChwaHlkZXYtXHUwMDNlZHJ2IFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE0OjUzOjA0Ljc3OTIxNTAzOVoiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTY3ODY1NTUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgUEhZIERldmljZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCwgYW5kIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQncyBhbGwgYWJvdXQgaGFyZGVuaW5nIHRoZSBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBwcm9jZWR1cmVzIHdpdGhpbiB0aGUgUEhZIGRldmljZSBkcml2ZXIuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBjbGFzc2ljIGNhc2Ugb2YgcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgZXJyb3IgcGF0aCBjb3JyZWN0aW9ucy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMgcmV2b2x2ZSBhcm91bmQgYHBoeV9zZnBfcHJvYmVgLCBgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnRgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9wcm9iZWAsIGFuZCBgcGh5X3JlbW92ZWAuIFdlJ3ZlIGludHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24sIGBwaHlfc2ZwX3JlbGVhc2VgLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgY29ycmVjdGx5IHJlbGVhc2luZyBTRlAgcmVzb3VyY2VzIGFuZCBkZXN0cm95aW5nIHBvcnRzLlxuXG5UaGUgZm9jdXMgaXMgc3F1YXJlbHkgb24gZml4aW5nIHJlc291cmNlIGxlYWtzIGFuZCBhZGRyZXNzaW5nIHBvdGVudGlhbCBpc3N1ZXMgbGlrZSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3MgaWYgdGhpbmdzIGdvIHNvdXRoIGR1cmluZyBpbml0aWFsaXphdGlvbiBvciBvcGVyYXRpb24uIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGVyZSB3ZXJlIGluc3RhbmNlcyB3aGVyZSByZXNvdXJjZXMgd2VyZSBiZWluZyBhbGxvY2F0ZWQgYnV0IG5vdCBkZWFsbG9jYXRlZCB3aGVuIGFuIGVycm9yIG9jY3VycmVkLCBsZWFkaW5nIHRvIG1lbW9yeSBsZWFrcyBvciBwb3RlbnRpYWxseSBmcmVlaW5nIGEgcmVzb3VyY2UgdGhhdCdzIHN0aWxsIGluIHVzZS4gVGhlIHBhdGNoIGVuc3VyZXMgdGhhdCBpbiBlcnJvciBjYXNlcyAoZS5nLiwgd2l0aGluIGBwaHlfcG9ydF9kZXN0cm95YCwgYHBoeV9zZnBfcmVsZWFzZWAsIGFuZCB0aGUgYHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlYCBjYWxsIGluIGBwaHlfcHJvYmVgKSwgcmVzb3VyY2VzIGFyZSBwcm9wZXJseSBjbGVhbmVkIHVwLlxuXG5UaGVyZSdzIG5vIGluZGljYXRpb24gaGVyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIHRvIHVzZXIgc3BhY2Ugb3IgaW5mbHVlbmNpbmcgY29udHJvbCBmbG93LiBLTVNBTiwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGlzIG5vdCByZWxldmFudCBoZXJlLiBUaGlzIGlzIHB1cmVseSBhYm91dCBmaXhpbmcgcmVzb3VyY2UgbGVha3MgYW5kIGVuc3VyaW5nIGNsZWFuIGV4aXQgcGF0aHMgaW4gdGhlIGNhc2Ugb2YgZXJyb3JzLCB3aGljaCwgYXMgYW4gZXhwZXJ0IGluIG15IGZpZWxkLCBJIGNhbiBzZWUgaXMgYSB2YWx1YWJsZSBhZGRpdGlvbiB0byB0aGUgY29kZS4gV2UncmUgbG9va2luZyBhdCBzY2VuYXJpb3Mgd2hlcmUgS0FTQU4gb3IgS01FTUxFQUsgd291bGQndmUgY2F1Z2h0IHRoZSBidWdzIHJlbGF0ZWQgdG8gbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlLCBpZiB0aGVzZSB0b29scyB3ZXJlIHVzZWQuXG5cbkknbSBub3cgZ29pbmcgdG8gcXVpY2tseSBnbyB0aHJvdWdoIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgYW5kIGNvbmZpcm0gbXkgaW5pdGlhbCBhc3N1bXB0aW9ucy5cblxuTG9va2luZyBhdCBgcGh5X3NmcF9wcm9iZWA6IFdlIGhhdmUgYW4gYWRkaXRpb24gZm9yIHByb3BlciBzZnAgYnVzIGNsZWFudXAuXG5cbkluIGBwaHlfc2ZwX3JlbGVhc2VgOiBUaGUgbmV3IGZ1bmN0aW9uIGlzIG5vdyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlIHNmcCBidXMgYW5kIGFsc28gZGVzdHJveWluZyByZWxldmFudCBwb3J0cyBvbiB0aGUgUEhZIGRldmljZS5cblxuSW4gYHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0YDogVGhlIGFkZGl0aW9uIGVuc3VyZXMgdGhhdCBpZiBgcGh5X2FkZF9wb3J0YCBmYWlscywgdGhlIGFsbG9jYXRlZCBwb3J0IGlzIHByb3Blcmx5IGRlc3Ryb3llZC5cblxuSW4gYHBoeV9zZXR1cF9wb3J0c2A6IFRoZSBhZGRpdGlvbnMgZW5zdXJlcyB0aGF0IGlmIHRoaW5ncyBnbyB3cm9uZywgdGhlIFNGUCBidXMgaXMgcmVsZWFzZWQsIHBvcnRzIGFyZSBjbGVhbmVkIHVwLCBhbmQgYXNzb2NpYXRlZCBhY3Rpb25zIHBlcmZvcm1lZCBvbiBlcnJvcnMuXG5cbkZpbmFsbHksIGluIGBwaHlfcHJvYmVgOiBUaGUgYWRkaXRpb25zIGVuc3VyZSB0aGF0IHRoZSBkZXZpY2UncyByZXNvdXJjZXMgYW5kIHN0YXRlcyBhcmUgaGFuZGxlZCB3ZWxsIHdoZW4gYW4gZXJyb3IgaXMgZGV0ZWN0ZWQuXG5cblllcCwgdGhlIGFuYWx5c2lzIGhvbGRzLiBUaGlzIGlzIGdvb2Qgc29saWQgZXJyb3IgaGFuZGxpbmcgd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwNSwiT3V0cHV0VG9rZW5zIjoxMzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTQ6NTM6MjAuNDU3ODczOTI2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmb2N1c2VzIGVudGlyZWx5IG9uIGZpeGluZyByZXNvdXJjZSBsZWFrcyBhbmQgaW5jb3JyZWN0IGNsZWFudXAgb3JkZXIgb24gZXJyb3IgcGF0aHMgaW4gdGhlIFBIWSBkZXZpY2UgZHJpdmVyIChlLmcuLCBwcm9wZXJseSBkZXN0cm95aW5nIHBvcnRzLCByZWxlYXNpbmcgU0ZQIHJlc291cmNlcywgYW5kIGNhbGxpbmcgdGhlIGRyaXZlcidzIHJlbW92ZSBjYWxsYmFjayBvbiBmYWlsdXJlKS4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIHBvdGVudGlhbCBtZW1vcnkgbGVha3MgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIGttZW1sZWFrLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb3IgZXhwb3N1cmUgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgbm9yIGFueSBjb250cm9sIGZsb3cgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZm9jdXNlcyBlbnRpcmVseSBvbiBmaXhpbmcgcmVzb3VyY2UgbGVha3MgYW5kIGluY29ycmVjdCBjbGVhbnVwIG9yZGVyIG9uIGVycm9yIHBhdGhzIGluIHRoZSBQSFkgZGV2aWNlIGRyaXZlciAoZS5nLiwgcHJvcGVybHkgZGVzdHJveWluZyBwb3J0cywgcmVsZWFzaW5nIFNGUCByZXNvdXJjZXMsIGFuZCBjYWxsaW5nIHRoZSBkcml2ZXIncyByZW1vdmUgY2FsbGJhY2sgb24gZmFpbHVyZSkuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBrbWVtbGVhay4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIG5vciBhbnkgY29udHJvbCBmbG93IGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow9x4cf[1] Phase: Succeeded StartedAt: 2026-08-13 14:53:31 +0000 UTC FinishedAt: 2026-08-13 14:53:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-13 14:53:31 +0000 UTC FinishedAt: 2026-08-13 14:53:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2] Phase: Succeeded StartedAt: 2026-08-13 14:53:31 +0000 UTC FinishedAt: 2026-08-13 16:32:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-13 14:53:31 +0000 UTC FinishedAt: 2026-08-13 16:32:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-13 14:53:31 +0000 UTC FinishedAt: 2026-08-13 14:53:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-13 14:53:31 +0000 UTC FinishedAt: 2026-08-13 14:53:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow9x4cf/series-workflow9x4cf-convert-artifact-1366356465/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-13 14:53:41 +0000 UTC FinishedAt: 2026-08-13 15:09:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-13 14:53:41 +0000 UTC FinishedAt: 2026-08-13 15:09:59 +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:*dccb9720-5922-4404-a8d8-8cd89c8d5044,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-workflow9x4cf/series-workflow9x4cf-convert-artifact-1366356465/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": "4e8024aa-fbae-4b57-af87-ab52c033af46", "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-workflow9x4cf/series-workflow9x4cf-build-action-2111548447/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-13 14:53:41 +0000 UTC FinishedAt: 2026-08-13 15:09:49 +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:*dccb9720-5922-4404-a8d8-8cd89c8d5044,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-workflow9x4cf/series-workflow9x4cf-convert-artifact-1366356465/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": "4e8024aa-fbae-4b57-af87-ab52c033af46", "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-workflow9x4cf/series-workflow9x4cf-build-action-2111548447/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-13 15:09:59 +0000 UTC FinishedAt: 2026-08-13 15:09:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-13 15:09:59 +0000 UTC FinishedAt: 2026-08-13 15:09:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-13 15:09:59 +0000 UTC FinishedAt: 2026-08-13 15:10:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-13 15:09:59 +0000 UTC FinishedAt: 2026-08-13 15:10:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow9x4cf/series-workflow9x4cf-convert-artifact-2447381060/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-13 15:10:09 +0000 UTC FinishedAt: 2026-08-13 15:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-13 15:10:09 +0000 UTC FinishedAt: 2026-08-13 15:12:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4e8024aa-fbae-4b57-af87-ab52c033af46,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-workflow9x4cf/series-workflow9x4cf-build-action-2111548447/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-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-13 15:12:12 +0000 UTC FinishedAt: 2026-08-13 15:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-13 15:12:12 +0000 UTC FinishedAt: 2026-08-13 15:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-13 15:12:12 +0000 UTC FinishedAt: 2026-08-13 15:29:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-13 15:12:12 +0000 UTC FinishedAt: 2026-08-13 15:29:17 +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:*dccb9720-5922-4404-a8d8-8cd89c8d5044,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-workflow9x4cf/series-workflow9x4cf-convert-artifact-2447381060/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": "7597bfce-469c-4b57-be03-7ea2d9129b4c", "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-workflow9x4cf/series-workflow9x4cf-build-action-22428240/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-13 15:12:12 +0000 UTC FinishedAt: 2026-08-13 15:29:07 +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:*dccb9720-5922-4404-a8d8-8cd89c8d5044,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-workflow9x4cf/series-workflow9x4cf-convert-artifact-2447381060/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": "7597bfce-469c-4b57-be03-7ea2d9129b4c", "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-workflow9x4cf/series-workflow9x4cf-build-action-22428240/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-13 15:29:17 +0000 UTC FinishedAt: 2026-08-13 15:29:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-13 15:29:17 +0000 UTC FinishedAt: 2026-08-13 15:29:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-13 15:29:17 +0000 UTC FinishedAt: 2026-08-13 15:31:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-13 15:29:17 +0000 UTC FinishedAt: 2026-08-13 15:31: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:*7597bfce-469c-4b57-be03-7ea2d9129b4c,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-workflow9x4cf/series-workflow9x4cf-build-action-22428240/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-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-13 15:31:33 +0000 UTC FinishedAt: 2026-08-13 16:32:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-13 15:31:33 +0000 UTC FinishedAt: 2026-08-13 16:32:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"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:*4e8024aa-fbae-4b57-af87-ab52c033af46,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7597bfce-469c-4b57-be03-7ea2d9129b4c,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-workflow9x4cf/series-workflow9x4cf-build-action-2111548447/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-workflow9x4cf/series-workflow9x4cf-build-action-22428240/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-13 15:31:33 +0000 UTC FinishedAt: 2026-08-13 15:31:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-13 15:31:33 +0000 UTC FinishedAt: 2026-08-13 15:31:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"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-workflow9x4cf/series-workflow9x4cf-convert-artifact-1598841165/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-13 15:31:33 +0000 UTC FinishedAt: 2026-08-13 15:31:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-13 15:31:33 +0000 UTC FinishedAt: 2026-08-13 15:31:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-13 15:31:33 +0000 UTC FinishedAt: 2026-08-13 15:31:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-13 15:31:43 +0000 UTC FinishedAt: 2026-08-13 16:32:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9x4cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_device_register","phy_device_remove","phy_device_create","get_phy_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5bbbfec59b4e2fb7520a91de3df8a6174325d6a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB"],"series_id":"7207b8ee-eaea-48ad-84d5-ab75ca8b0314","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-13 15:31:43 +0000 UTC FinishedAt: 2026-08-13 16:32:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4e8024aa-fbae-4b57-af87-ab52c033af46,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7597bfce-469c-4b57-be03-7ea2d9129b4c,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-workflow9x4cf/series-workflow9x4cf-build-action-2111548447/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-workflow9x4cf/series-workflow9x4cf-build-action-22428240/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-workflow9x4cf/series-workflow9x4cf-convert-artifact-1598841165/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,}