Name: series-workflowtx8l9 Phase: Succeeded StartedAt: 2026-08-24 16:29:18 +0000 UTC FinishedAt: 2026-08-24 20:11:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[0] Phase: Succeeded StartedAt: 2026-08-24 16:29:18 +0000 UTC FinishedAt: 2026-08-24 16:31:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[0].run-triage Phase: Succeeded StartedAt: 2026-08-24 16:29:18 +0000 UTC FinishedAt: 2026-08-24 16:31:50 +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": "0a0d1d55dad570724bf8c7ea83409639cfb4be9b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_LOOP", "BLK_DEV_NBD" ], "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": "0a0d1d55dad570724bf8c7ea83409639cfb4be9b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_LOOP", "BLK_DEV_NBD" ], "series_id": "15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "loop_change_fd", "lo_ioctl", "nbd_clear_sock_ioctl", "__nbd_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTE9PUCYjMzQ7LAogICAgJiMzNDtCTEtfREVWX05CRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2xvb3BfY2hhbmdlX2ZkJiMzNDssCiAgICAmIzM0O2xvX2lvY3RsJiMzNDssCiAgICAmIzM0O25iZF9jbGVhcl9zb2NrX2lvY3RsJiMzNDssCiAgICAmIzM0O19fbmJkX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGFydGl0aW9uIHNjYW5uaW5nIGxvZ2ljIGluIHRoZSBsb29wIGFuZCBuYmQgYmxvY2sgZHJpdmVycy4gSW4gYGxvb3BfY2hhbmdlX2ZkYCwgaXQgdW5jb25kaXRpb25hbGx5IGNhbGxzIGBsb29wX3JlcmVhZF9wYXJ0aXRpb25zYCByYXRoZXIgdGhhbiBjaGVja2luZyBgTE9fRkxBR1NfUEFSVFNDQU5gLCB0byBlbnN1cmUgbWFudWFsbHkgYWRkZWQgcGFydGl0aW9ucyBhcmUgZHJvcHBlZC4gSW4gYG5iZF9jbGVhcl9zb2NrX2lvY3RsYCwgaXQgc2V0cyBgR0RfTkVFRF9QQVJUX1NDQU5gIHRvIGRyb3AgcGFydGl0aW9ucyBvbiB0aGUgbmV4dCBvcGVuLiBUaGVzZSBjaGFuZ2VzIG9ubHkgYWx0ZXIgY29udHJvbCBmbG93IGFuZCBzdGF0ZSBmbGFncyByZWxhdGVkIHRvIGJsb2NrIGRldmljZSBwYXJ0aXRpb24gbWFuYWdlbWVudC4gVGhleSBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2ssIGhlYXAsIG9yIHBhZGRpbmcpIG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgd291bGQgYmUgcmVsYXRlZCB0byBvYmplY3QgbGlmZXRpbWVzIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSkgb3IgbG9ja2luZywgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTiBhbmQgTE9DS0RFUC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYXJ0aXRpb24gcmVzY2FubmluZyBsb2dpYyBmb3IgbG9vcCBhbmQgbmJkIGJsb2NrIGRldmljZXMgd2hlbiB0aGVpciBiYWNraW5nIGZpbGVzIG9yIHNvY2tldHMgYXJlIGNoYW5nZWQvY2xlYXJlZC4gVGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSBpb2N0bHMgb24gdmlydHVhbCBibG9jayBkZXZpY2VzIGFuZCBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzJjZjE1YmQyOWZjODAyYTUzYjY4YWMzYzM2M2QxZjQ2ZTJiYTZiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDE2OjMwOjI2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmNcbmluZGV4IDZmMTI5NzYwMzViMDkuLjg5OTM1Y2ZjNTkxZjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9sb29wLmNcbkBAIC01NTAsNyAmIzQzOzU1MCw2IEBAIHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldixcbiBcdHN0cnVjdCBmaWxlICpvbGRfZmlsZTtcbiBcdHVuc2lnbmVkIGludCBtZW1mbGFncztcbiBcdGludCBlcnJvcjtcbi1cdGJvb2wgcGFydHNjYW47XG4gXHRib29sIGlzX2xvb3A7XG4gXG4gXHRpZiAoIWZpbGUpXG5AQCAtNjA0LDcgJiM0Mzs2MDMsNiBAQCBzdGF0aWMgaW50IGxvb3BfY2hhbmdlX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsXG4gXHRsb29wX2Fzc2lnbl9iYWNraW5nX2ZpbGUobG8sIGZpbGUpO1xuIFx0bG9vcF91cGRhdGVfZGlvKGxvKTtcbiBcdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShsby1cdTAwM2Vsb19xdWV1ZSwgbWVtZmxhZ3MpO1xuLVx0cGFydHNjYW4gPSBsby1cdTAwM2Vsb19mbGFncyBcdTAwMjYgTE9fRkxBR1NfUEFSVFNDQU47XG4gXHRsb29wX2dsb2JhbF91bmxvY2sobG8sIGlzX2xvb3ApO1xuIFxuIFx0LypcbkBAIC02MjIsOCAmIzQzOzYyMCwxMiBAQCBzdGF0aWMgaW50IGxvb3BfY2hhbmdlX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsXG4gXHQgKi9cbiBcdGZwdXQob2xkX2ZpbGUpO1xuIFx0ZGV2X3NldF91ZXZlbnRfc3VwcHJlc3MoZGlza190b19kZXYobG8tXHUwMDNlbG9fZGlzayksIDApO1xuLVx0aWYgKHBhcnRzY2FuKVxuLVx0XHRsb29wX3JlcmVhZF9wYXJ0aXRpb25zKGxvKTtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFJlc2NhbiBvciwgd2l0aG91dCBMT19GTEFHU19QQVJUU0NBTiwganVzdCBkcm9wIHRoZSBwYXJ0aXRpb25zIG9mXG4mIzQzO1x0ICogdGhlIG9sZCBiYWNraW5nIGZpbGUuIFRoZXkgY2FuIGV4aXN0IHdpdGhvdXQgTE9fRkxBR1NfUEFSVFNDQU4gYXNcbiYjNDM7XHQgKiB0aGV5IG1heSBoYXZlIGJlZW4gYWRkZWQgbWFudWFsbHkgd2l0aCBCTEtQRy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRsb29wX3JlcmVhZF9wYXJ0aXRpb25zKGxvKTtcbiBcbiBcdGVycm9yID0gMDtcbiBkb25lOlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbmJkLmMgYi9kcml2ZXJzL2Jsb2NrL25iZC5jXG5pbmRleCBmZmNlNTE5YmYwMDg3Li4wOWI0YWQ3MGE1ZDdkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9uYmQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9uYmQuY1xuQEAgLTE2MTYsNiAmIzQzOzE2MTYsMTMgQEAgc3RhdGljIHZvaWQgbmJkX2NsZWFyX3NvY2tfaW9jdGwoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbiBcdG5iZF9jbGVhcl9zb2NrKG5iZCk7XG4gXHRkaXNrX2ZvcmNlX21lZGlhX2NoYW5nZShuYmQtXHUwMDNlZGlzayk7XG4gXHRuYmRfYmRldl9yZXNldChuYmQpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogRHJvcCB0aGUgcGFydGl0aW9ucyBvZiB0aGUgZGlzY29ubmVjdGVkIGRldmljZSBvbiB0aGUgbmV4dCBvcGVuLlxuJiM0MztcdCAqIFRoZXkgY2FuIGV4aXN0IGV2ZW4gd2l0aCBtYXhfcGFydCB6ZXJvIGFzIHRoZXkgbWF5IGhhdmUgYmVlbiBhZGRlZFxuJiM0MztcdCAqIG1hbnVhbGx5IHdpdGggQkxLUEcuIERyb3BwaW5nIHRoZW0gaGVyZSBpcyBub3QgcG9zc2libGUgYXMgdGhhdFxuJiM0MztcdCAqIG5lZWRzIG9wZW5fbXV0ZXgsIHdoaWNoIG5iZF9vcGVuKCkgYWNxdWlyZXMgdW5kZXIgY29uZmlnX2xvY2suXG4mIzQzO1x0ICovXG4mIzQzO1x0c2V0X2JpdChHRF9ORUVEX1BBUlRfU0NBTiwgXHUwMDI2bmJkLVx1MDAzZWRpc2stXHUwMDNlc3RhdGUpO1xuIFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOQkRfUlRfSEFTX0NPTkZJR19SRUYsXG4gXHRcdFx0ICAgICAgIFx1MDAyNm5iZC1cdTAwM2Vjb25maWctXHUwMDNlcnVudGltZV9mbGFncykpXG4gXHRcdG5iZF9jb25maWdfcHV0KG5iZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTY6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTE9PUCYjMzQ7LAogICAgJiMzNDtCTEtfREVWX05CRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2xvb3BfY2hhbmdlX2ZkJiMzNDssCiAgICAmIzM0O2xvX2lvY3RsJiMzNDssCiAgICAmIzM0O25iZF9jbGVhcl9zb2NrX2lvY3RsJiMzNDssCiAgICAmIzM0O19fbmJkX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhcnRpdGlvbiByZXNjYW5uaW5nIGxvZ2ljIGZvciBsb29wIGFuZCBuYmQgYmxvY2sgZGV2aWNlcyB3aGVuIHRoZWlyIGJhY2tpbmcgZmlsZXMgb3Igc29ja2V0cyBhcmUgY2hhbmdlZC9jbGVhcmVkLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIGlvY3RscyBvbiB2aXJ0dWFsIGJsb2NrIGRldmljZXMgYW5kIGhhdmUgZnVuY3Rpb25hbCBpbXBhY3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzMmNmMTViZDI5ZmM4MDJhNTNiNjhhYzNjMzYzZDFmNDZlMmJhNmIyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMjQgMTY6MzA6MjYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYyBiL2RyaXZlcnMvYmxvY2svbG9vcC5jCmluZGV4IDZmMTI5NzYwMzViMDkuLjg5OTM1Y2ZjNTkxZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbG9vcC5jCkBAIC01NTAsNyAmIzQzOzU1MCw2IEBAIHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKIAlzdHJ1Y3QgZmlsZSAqb2xkX2ZpbGU7CiAJdW5zaWduZWQgaW50IG1lbWZsYWdzOwogCWludCBlcnJvcjsKLQlib29sIHBhcnRzY2FuOwogCWJvb2wgaXNfbG9vcDsKIAogCWlmICghZmlsZSkKQEAgLTYwNCw3ICYjNDM7NjAzLDYgQEAgc3RhdGljIGludCBsb29wX2NoYW5nZV9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LAogCWxvb3BfYXNzaWduX2JhY2tpbmdfZmlsZShsbywgZmlsZSk7CiAJbG9vcF91cGRhdGVfZGlvKGxvKTsKIAlibGtfbXFfdW5mcmVlemVfcXVldWUobG8tJmd0O2xvX3F1ZXVlLCBtZW1mbGFncyk7Ci0JcGFydHNjYW4gPSBsby0mZ3Q7bG9fZmxhZ3MgJmFtcDsgTE9fRkxBR1NfUEFSVFNDQU47CiAJbG9vcF9nbG9iYWxfdW5sb2NrKGxvLCBpc19sb29wKTsKIAogCS8qCkBAIC02MjIsOCAmIzQzOzYyMCwxMiBAQCBzdGF0aWMgaW50IGxvb3BfY2hhbmdlX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsCiAJICovCiAJZnB1dChvbGRfZmlsZSk7CiAJZGV2X3NldF91ZXZlbnRfc3VwcHJlc3MoZGlza190b19kZXYobG8tJmd0O2xvX2Rpc2spLCAwKTsKLQlpZiAocGFydHNjYW4pCi0JCWxvb3BfcmVyZWFkX3BhcnRpdGlvbnMobG8pOwomIzQzOwkvKgomIzQzOwkgKiBSZXNjYW4gb3IsIHdpdGhvdXQgTE9fRkxBR1NfUEFSVFNDQU4sIGp1c3QgZHJvcCB0aGUgcGFydGl0aW9ucyBvZgomIzQzOwkgKiB0aGUgb2xkIGJhY2tpbmcgZmlsZS4gVGhleSBjYW4gZXhpc3Qgd2l0aG91dCBMT19GTEFHU19QQVJUU0NBTiBhcwomIzQzOwkgKiB0aGV5IG1heSBoYXZlIGJlZW4gYWRkZWQgbWFudWFsbHkgd2l0aCBCTEtQRy4KJiM0MzsJICovCiYjNDM7CWxvb3BfcmVyZWFkX3BhcnRpdGlvbnMobG8pOwogCiAJZXJyb3IgPSAwOwogZG9uZToKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbmJkLmMgYi9kcml2ZXJzL2Jsb2NrL25iZC5jCmluZGV4IGZmY2U1MTliZjAwODcuLjA5YjRhZDcwYTVkN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbmJkLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9uYmQuYwpAQCAtMTYxNiw2ICYjNDM7MTYxNiwxMyBAQCBzdGF0aWMgdm9pZCBuYmRfY2xlYXJfc29ja19pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKQogCW5iZF9jbGVhcl9zb2NrKG5iZCk7CiAJZGlza19mb3JjZV9tZWRpYV9jaGFuZ2UobmJkLSZndDtkaXNrKTsKIAluYmRfYmRldl9yZXNldChuYmQpOwomIzQzOwkvKgomIzQzOwkgKiBEcm9wIHRoZSBwYXJ0aXRpb25zIG9mIHRoZSBkaXNjb25uZWN0ZWQgZGV2aWNlIG9uIHRoZSBuZXh0IG9wZW4uCiYjNDM7CSAqIFRoZXkgY2FuIGV4aXN0IGV2ZW4gd2l0aCBtYXhfcGFydCB6ZXJvIGFzIHRoZXkgbWF5IGhhdmUgYmVlbiBhZGRlZAomIzQzOwkgKiBtYW51YWxseSB3aXRoIEJMS1BHLiBEcm9wcGluZyB0aGVtIGhlcmUgaXMgbm90IHBvc3NpYmxlIGFzIHRoYXQKJiM0MzsJICogbmVlZHMgb3Blbl9tdXRleCwgd2hpY2ggbmJkX29wZW4oKSBhY3F1aXJlcyB1bmRlciBjb25maWdfbG9jay4KJiM0MzsJICovCiYjNDM7CXNldF9iaXQoR0RfTkVFRF9QQVJUX1NDQU4sICZhbXA7bmJkLSZndDtkaXNrLSZndDtzdGF0ZSk7CiAJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOQkRfUlRfSEFTX0NPTkZJR19SRUYsCiAJCQkgICAgICAgJmFtcDtuYmQtJmd0O2NvbmZpZy0mZ3Q7cnVudGltZV9mbGFncykpCiAJCW5iZF9jb25maWdfcHV0KG5iZCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBCbG9jayBEZXZpY2UgRHJpdmVyczogTE9PUCBhbmQgTkJEKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0d28gcGF0Y2hlcyBoZXJlLCBvbmUgdG91Y2hpbmcgYGRyaXZlcnMvYmxvY2svbG9vcC5jYCBhbmQgdGhlIG90aGVyIGBkcml2ZXJzL2Jsb2NrL25iZC5jYC4gIFRoZSBmaXJzdCBwYXRjaCBpbiBgbG9vcC5jYCBtb2RpZmllcyBgbG9vcF9jaGFuZ2VfZmRgIHRvICphbHdheXMqIGNhbGwgYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnNgIG5vdywgcmVnYXJkbGVzcyBvZiB0aGUgYExPX0ZMQUdTX1BBUlRTQ0FOYCBmbGFnLiBJbnRlcmVzdGluZy4gVGhlIHNlY29uZCBwYXRjaCwgaW4gYG5iZC5jYCwgY2hhbmdlcyBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIHRvIHNldCBgR0RfTkVFRF9QQVJUX1NDQU5gIG9uIGBuYmQtJmd0O2Rpc2stJmd0O3N0YXRlYC4gIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIGNoYW5nZXMgYXJlIGV2ZW4gcmVhY2hhYmxlLCBhbmQgaWYgc28sIHdoZXRoZXIgdGhleSByZXByZXNlbnQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4KCkxldCYjMzk7cyBzZWXigKYgYGxvb3BfY2hhbmdlX2ZkYCBpcyBjYWxsZWQgdGhyb3VnaCB0aGUgYExPT1BfQ0hBTkdFX0ZEYCBpb2N0bCwgYW5kIGBuYmRfY2xlYXJfc29ja19pb2N0bGAgaXMgY2FsbGVkIHZpYSB0aGUgYE5CRF9DTEVBUl9TT0NLYCBpb2N0bC4gUmlnaHQsIGNsYXNzaWMgYmxvY2sgZGV2aWNlIGRyaXZlcnMuIEdvb2QsIHRoZXkmIzM5O3JlIGJsb2NrIGRldmljZXMgc28gSSBjYW4gZWFzaWx5IHNldCB0aGVzZSB1cCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGZvciB0ZXN0aW5nLgoKVGltZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gSSYjMzk7bGwgbmVlZCB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIExPT1AgYW5kIE5CRC4gIGBkcml2ZXJzL2Jsb2NrL0tjb25maWdgIGlzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0LiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX0xPT1AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnPTE0MD1jb25maWcgQkxLX0RFVl9DT1dfQ09NTU9OXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE0My1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoxNDQ6Y29uZmlnIEJMS19ERVZfTE9PUFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE0NS1cdHRyaXN0YXRlIFwmIzM0O0xvb3BiYWNrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE3OC1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoxNzk6Y29uZmlnIEJMS19ERVZfTE9PUF9NSU5fQ09VTlRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xODAtXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIGxvb3AgZGV2aWNlcyB0byBwcmUtY3JlYXRlIGF0IGluaXQgdGltZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyOTAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBJJiMzOTttIHJlYWR5LiBIZXJlJiMzOTtzIGEgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkLCBhbmQgc3RhcnRpbmcgd2l0aCB0aGUgcmVxdWVzdGVkIGJvbGRlZCBoZWFkZXI6CgoqKk15IFBlcnNwZWN0aXZlIG9uIE5CRCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXaGVuIEkgdGhpbmsgYWJvdXQgTkJELCBteSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gdGhlIHByYWN0aWNhbCBhcHBsaWNhdGlvbnMgYW5kIGltcGxpY2F0aW9ucy4gSSYjMzk7bSBjb25zaWRlcmluZyB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiBbaW5zZXJ0IHJlbGV2YW50IGZpZWxkXS4gSSBuZWVkIHRvIGFzc2VzcyB3aGF0IHRoaXMgbWVhbnMgaW4gdGVybXMgb2YgW3NwZWNpZmljIHRlY2huaWNhbCBjb25zaWRlcmF0aW9uc10sIGFuZCBob3cgd2UgY2FuIHJlZmluZSBvdXIgc3RyYXRlZ3kgdG8gbGV2ZXJhZ2UgYW55IG9wcG9ydHVuaXRpZXMgb3IgbWl0aWdhdGUgYW55IHJpc2tzIGlkZW50aWZpZWQuIAoKSSYjMzk7bSBldmFsdWF0aW5nIHdoZXRoZXIgdGhlc2Ugb2JzZXJ2YXRpb25zIGFsaWduIHdpdGggdGhlIGV4aXN0aW5nIGJvZHkgb2Yga25vd2xlZGdlLCBvciBpZiB0aGV5IHN1Z2dlc3QgYSBuZWVkIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gaW4gYSBzcGVjaWZpYyBhcmVhLiBJJiMzOTttIGFsc28gY29uc2lkZXJpbmcgdGhlIHBvdGVudGlhbCBmb3IgdGhpcyB0byBjaGFuZ2UgZXhpc3RpbmcgcmVzZWFyY2ggZGlyZWN0aW9ucy4gVGhlIGFpbSBpcyB0byBjbGFyaWZ5IGhvdyB0aGlzIG1pZ2h0IG1vZGlmeSBvciBjb250cmlidXRlIHRvIG91ciBmaWVsZCBvZiB1bmRlcnN0YW5kaW5nLiAKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0RFVl9OQkQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnPTE5ND1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTUtXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTk2OmNvbmZpZyBCTEtfREVWX05CRFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE5Ny1cdHRyaXN0YXRlIFwmIzM0O05ldHdvcmsgYmxvY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjAyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIEJsb2NrIERldmljZSBNb2R1bGUgQ29uc2lkZXJhdGlvbnMqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYmxvY2sgZGV2aWNlIGltcGxlbWVudGF0aW9ucywgYW5kIHRoZSBkaXNjdXNzaW9uIGhpbmdlcyBvbiBgQkxLX0RFVl9MT09QYCBhbmQgYEJMS19ERVZfTkJEYC4gVGhlc2UgYXJlIGNydWNpYWwuIE5vdywgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgaG93IHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvcnMgYXJlIG1hbmFnZWQsIGFuZCBob3cgd2UgaGFuZGxlIHRoZSBuZXR3b3JrIHNvY2tldC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgY2hhbmdlcyBpbiB0aGUgbG9vcCBkZXZpY2UgZmlsZSBkZXNjcmlwdG9ycyBhbmQgY2xlYXIgbmV0d29yayBzb2NrZXRzLiBTbywgSSBuZWVkIHRvIHRha2UgYSBxdWljayBsb29rIGF0IGBsb29wX2NoYW5nZV9mZGAgYW5kIGBuYmRfY2xlYXJfc29ja19pb2N0bGAsIGJlY2F1c2UgdGhlc2UgYXJlIGtleS4gVGhleSYjMzk7bGwgdGVsbCBtZSBpZiBhbnkgYXNzdW1wdGlvbnMgaGF2ZSBiZWVuIG1hZGUsIG9yIGlmIHRoZXJlIGlzIHRoZSBuZWVkIHRvIGFkanVzdCBvciBleHRlbmQgdG8gc3VwcG9ydCBhIGdpdmVuIGZ1bmN0aW9uYWxpdHkuIEl0JiMzOTtzIGFsbCBhYm91dCBlbnN1cmluZyB0aGUgcGx1bWJpbmcgaXMgc291bmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTY6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bG9vcF9jaGFuZ2VfZmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2xvb3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2xvb3AuYz05Nj1zdGF0aWMgREVGSU5FX01VVEVYKGxvb3BfdmFsaWRhdGVfbXV0ZXgpO1xuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEwNy0gKiBpc19sb29wX2RldmljZSgpIGlzIHRydWUsIHdlIG5lZWQgYSBnbG9iYWwgbG9jayBmb3Igc2VyaWFsaXppbmcgY29uY3VycmVudFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTA4OiAqIGxvb3BfY29uZmlndXJlKCkvbG9vcF9jaGFuZ2VfZmQoKS9fX2xvb3BfY2xyX2ZkKCkgY2FsbHMuXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMDktICovXG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmM9NTI3PXN0YXRpYyBpbnQgbG9vcF9jaGVja19iYWNraW5nX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmMtNTM4LS8qXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzo1Mzk6ICogbG9vcF9jaGFuZ2VfZmQgc3dpdGNoZWQgdGhlIGJhY2tpbmcgc3RvcmUgb2YgYSBsb29wYmFjayBkZXZpY2UgdG9cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTU0MC0gKiBhIG5ldyBmaWxlLiBUaGlzIGlzIHVzZWZ1bCBmb3Igb3BlcmF0aW5nIHN5c3RlbSBpbnN0YWxsZXJzIHRvIGZyZWUgdXBcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy01NDUtICovXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzo1NDY6c3RhdGljIGludCBsb29wX2NoYW5nZV9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxuZHJpdmVycy9ibG9jay9sb29wLmMtNTQ3LVx0XHRcdCAgdW5zaWduZWQgaW50IGFyZylcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYz0xMjEyPXN0YXRpYyBpbnQgbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMjE3LVx0ICogU2luY2UgbG9faW9jdGwoKSBpcyBjYWxsZWQgd2l0aG91dCBsb2NrcyBoZWxkLCBpdCBpcyBwb3NzaWJsZSB0aGF0XG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMjE4Olx0ICogbG9vcF9jb25maWd1cmUoKS9sb29wX2NoYW5nZV9mZCgpIGFuZCBsb29wX2Nscl9mZCgpIHJ1biBpbiBwYXJhbGxlbC5cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEyMTktXHQgKlxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEyMjEtXHQgKiBtYWtlIHN1cmUgdGhhdCBsb29wX3ZhbGlkYXRlX2ZpbGUoKSB3aWxsIGZhaWwgaWYgdGhlIFwmIzM0O3N0cnVjdCBmaWxlXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMjIyOlx0ICogd2hpY2ggbG9vcF9jb25maWd1cmUoKS9sb29wX2NoYW5nZV9mZCgpIGZvdW5kIHZpYSBmZ2V0KCkgd2FzIHRoaXNcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEyMjMtXHQgKiBsb29wIGRldmljZS5cbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYz0xNTM5PXN0YXRpYyBpbnQgbG9faW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE1NjgtXHRjYXNlIExPT1BfQ0hBTkdFX0ZEOlxuZHJpdmVycy9ibG9jay9sb29wLmM6MTU2OTpcdFx0cmV0dXJuIGxvb3BfY2hhbmdlX2ZkKGxvLCBiZGV2LCBhcmcpO1xuZHJpdmVycy9ibG9jay9sb29wLmMtMTU3MC1cdGNhc2UgTE9PUF9DTFJfRkQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTY6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ3NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UmIzM5O3ZlIGRlc2NyaWJlZDoKCioqQW5hbHl6aW5nIGBuYmRfY2xlYXJfc29ja19pb2N0bGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIGZ1bmN0aW9uLiBGcm9tIHdoYXQgSSBjYW4gZ2F0aGVyLCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggY2xlYW5pbmcgdXAgc29ja2V0IGludGVyYWN0aW9ucywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgTmV0d29yayBCbG9jayBEZXZpY2UgZHJpdmVyLiBJIHNlZSBgaW9jdGxgIGJlaW5nIG1lbnRpb25lZCwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgbGlrZWx5IGhhbmRsaW5nIHNvbWUga2luZCBvZiBjb250cm9sIG9wZXJhdGlvbiB2aWEgYSBmaWxlIGRlc2NyaXB0b3IuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoaXMgaXMgcHJvYmFibHkgaW52b2tlZCB3aGVuIGEgY2xpZW50IGRpc2Nvbm5lY3RzIG9yIGFuIGVycm9yIG9jY3VycyB0byBjbGVhbiB1cCBhc3NvY2lhdGVkIHJlc291cmNlcy4gSXQmIzM5O3MgbGlrZWx5IGludm9sdmVkIGluIHJlbGVhc2luZyBzb2NrZXQgY29ubmVjdGlvbnMsIHBvc3NpYmx5IGRlLWFsbG9jYXRpbmcgc3RydWN0dXJlcyByZWxhdGVkIHRvIHRoZSBzb2NrZXQsIGFuZCBlbnN1cmluZyB0aGVyZSBhcmVuJiMzOTt0IGxpbmdlcmluZyBwb2ludGVycyB0aGF0IGNvdWxkIGNhdXNlIGlzc3Vlcy4gSSYjMzk7ZCBleHBlY3QgaXQgdG8gZ3JhY2VmdWxseSBoYW5kbGUgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbnMsIHBlcmhhcHMgY2hlY2tpbmcgcmV0dXJuIHZhbHVlcyBmcm9tIHNvY2tldC1yZWxhdGVkIHN5c3RlbSBjYWxscy4gR2l2ZW4gdGhlIGNvbnRleHQgb2YgYSBibG9jayBkZXZpY2UsIGRhdGEgaW50ZWdyaXR5IHdvdWxkIGJlIHBhcmFtb3VudCwgc28gSSYjMzk7ZCBiZSBsb29raW5nIGZvciBjYXJlZnVsIGVycm9yIGNoZWNraW5nIGFuZCBwZXJoYXBzIHNvbWUgbG9nZ2luZyB0byB0cmFjayB0aGUgc29ja2V0JiMzOTtzIHN0YXR1cy4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZGFuZ2xpbmcgZmlsZSBkZXNjcmlwdG9ycyBvciBtZW1vcnkgbGVha3MuIFVsdGltYXRlbHksIHRoZSBnb2FsIGhlcmUgaXMgdG8gbWFrZSBzdXJlIHdlIGRvbiYjMzk7dCBlbmQgdXAgd2l0aCBhIG1lc3N5IHNvY2tldCBzdGF0ZSBhZnRlciBhIGNvbm5lY3Rpb24gaGFzIGdvbmUgYXdheSwgbWFraW5nIHN1cmUgaXQgZG9lc24mIzM5O3QgbGVhdmUgdGhlIHN5c3RlbSBpbiBhIHVuc3RhYmxlIHN0YXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuYmRfY2xlYXJfc29ja19pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYz0xNTg0PXN0YXRpYyBpbnQgbmJkX3N0YXJ0X2RldmljZV9pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTYxMy1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTYxNDpzdGF0aWMgdm9pZCBuYmRfY2xlYXJfc29ja19pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjE1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE2NDE9c3RhdGljIGludCBfX25iZF9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLFxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTY1MC1cdGNhc2UgTkJEX0NMRUFSX1NPQ0s6XG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE2NTE6XHRcdG5iZF9jbGVhcl9zb2NrX2lvY3RsKG5iZCk7XG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2NTItXHRcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDMxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgQmxvY2sgRGV2aWNlIElPQ1RMczogUGFydGl0aW9uIFJlc2Nhbm5pbmcgYW5kIFNvY2tldCBDbGVhcmluZyoqCgpPa2F5LCBzbyB0aGVzZSB0d28gaW9jdGxzIG9uIGJsb2NrIGRldmljZXMgYXJlIGRlZmluaXRlbHkgaW4gcGxheSDigJMgcmVhY2hhYmxlIGFuZCByaXBlIGZvciBmdXp6aW5nLiBUaGUgY2hhbmdlcyBhcmUgYWxsIGFib3V0IGZpeGluZyBwYXJ0aXRpb24gcmVzY2FubmluZyBsb2dpYyAob3IgcG90ZW50aWFsbHkgZHJvcHBpbmcgcGFydGl0aW9ucywgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nKSB3aGVuIGJhY2tpbmcgZmlsZXMgY2hhbmdlIG9yIE5CRCBzb2NrZXRzIGFyZSBjbGVhcmVkLiBGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhpcyBpcyBhIGNsZWFyIGluZGljYXRpb24gdGhhdCBmdXp6aW5nIGlzIHdhcnJhbnRlZCwgZXNwZWNpYWxseSBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1cmluZyB0aGVzZSB0cmFuc2l0aW9ucy4KCk15IGZvY3VzIGlzIHplcm9lZCBpbiBvbiBgbG9vcF9jaGFuZ2VfZmRgIGFuZCBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIGFzIHRoZSBwcmltYXJ5IHRhcmdldHMgaGVyZS4gTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzLiBXZSBrbm93IHRoYXQgYEJMS19ERVZfTE9PUGAgYW5kIGBCTEtfREVWX05CRGAgYXJlIGVuYWJsZWQuIEEgcXVpY2sgZG91YmxlLWNoZWNrIHJldmVhbHMgdGhhdCBOQkQgbGVhbnMgb24gTkVULCB3aGljaCBpcyBleHBlY3RlZCwgd2hpbGUgTE9PUCBzZWVtcyBwcmV0dHkgc2VsZi1jb250YWluZWQsIG5vdCByZXF1aXJpbmcgbXVjaCBlbHNlLiBOb3cgSSBoYXZlIHRoZSBmdWxsIHBpY3R1cmUgYW5kIGNhbiBzdGFydCBwbGFubmluZyBteSBmdXp6aW5nIGNhbXBhaWducy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9Nj1tZW51Y29uZmlnIEJMS19ERVZcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtCbG9jayBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6ODpcdGRlcGVuZHMgb24gQkxPQ0tcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy05LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTIyPWNvbmZpZyBCTEtfREVWX0ZEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtOb3JtYWwgZmxvcHB5IGRpc2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjI0Olx0ZGVwZW5kcyBvbiBBUkNIX01BWV9IQVZFX1BDX0ZEQ1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTI1LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zNz1jb25maWcgQkxLX0RFVl9GRF9SQVdDTURcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zOC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgcmF3IGZsb3BweSBkaXNrIGNvbW1hbmRzIChERVBSRUNBVEVEKVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjM5Olx0ZGVwZW5kcyBvbiBCTEtfREVWX0ZEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNDAtXHRoZWxwXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTUzPWNvbmZpZyBBTUlHQV9GTE9QUFlcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy01NC1cdHRyaXN0YXRlIFwmIzM0O0FtaWdhIGZsb3BweSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6NTU6XHRkZXBlbmRzIG9uIEFNSUdBXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNTYtXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9NTc9Y29uZmlnIEFUQVJJX0ZMT1BQWVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTU4LVx0dHJpc3RhdGUgXCYjMzQ7QXRhcmkgZmxvcHB5IHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo1OTpcdGRlcGVuZHMgb24gQVRBUklcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy02MC1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz02MT1jb25maWcgTUFDX0ZMT1BQWVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTYyLVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgUG93ZXJNYWMgZmxvcHB5XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6NjM6XHRkZXBlbmRzIG9uIFBQQ19QTUFDIFx1MDAyNlx1MDAyNiAhUFBDX1BNQUM2NFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTY0LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz02OD1jb25maWcgQkxLX0RFVl9TV0lNXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNjktXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBTV0lNIE1hY2ludG9zaCBmbG9wcHlcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo3MDpcdGRlcGVuZHMgb24gTTY4SyBcdTAwMjZcdTAwMjYgTUFDIFx1MDAyNlx1MDAyNiAhSElHSE1FTVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTcxLVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz03NT1jb25maWcgQU1JR0FfWjJSQU1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy03Ni1cdHRyaXN0YXRlIFwmIzM0O0FtaWdhIFpvcnJvIElJIHJhbWRpc2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjc3Olx0ZGVwZW5kcyBvbiBaT1JST1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTc4LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz04Nj1jb25maWcgTjY0Q0FSVFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTg3LVx0Ym9vbCBcJiMzNDtONjQgY2FydCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6ODg6XHRkZXBlbmRzIG9uIE1BQ0hfTklOVEVORE82NFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTg5LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz05NT1jb25maWcgR0RST01cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy05Ni1cdHRyaXN0YXRlIFwmIzM0O1NFR0EgRHJlYW1jYXN0IEdELVJPTSBkcml2ZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjk3Olx0ZGVwZW5kcyBvbiBTSF9EUkVBTUNBU1RcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy05OC1cdHNlbGVjdCBDRFJPTVxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xMTE9Y29uZmlnIEJMS19ERVZfVUJEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTEyLVx0Ym9vbCBcJiMzNDtWaXJ0dWFsIGJsb2NrIGRldmljZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjExMzpcdGRlcGVuZHMgb24gVU1MXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTE0LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xMjA9Y29uZmlnIEJMS19ERVZfVUJEX1NZTkNcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xMjEtXHRib29sIFwmIzM0O0Fsd2F5cyBkbyBzeW5jaHJvbm91cyBkaXNrIElPIGZvciBVQkRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoxMjI6XHRkZXBlbmRzIG9uIEJMS19ERVZfVUJEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xNzk9Y29uZmlnIEJMS19ERVZfTE9PUF9NSU5fQ09VTlRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xODAtXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIGxvb3AgZGV2aWNlcyB0byBwcmUtY3JlYXRlIGF0IGluaXQgdGltZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjE4MTpcdGRlcGVuZHMgb24gQkxLX0RFVl9MT09QXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTgyLVx0ZGVmYXVsdCA4XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTE5Nj1jb25maWcgQkxLX0RFVl9OQkRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTctXHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIGJsb2NrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTk4Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTktXHRoZWxwXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI0Mz1jb25maWcgQkxLX0RFVl9SQU1fQ09VTlRcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjQ1LVx0ZGVmYXVsdCBcJiMzNDsxNlwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjI0NjpcdGRlcGVuZHMgb24gQkxLX0RFVl9SQU1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNDctXHRoZWxwXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI1Mj1jb25maWcgQkxLX0RFVl9SQU1fU0laRVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI1My1cdGludCBcJiMzNDtEZWZhdWx0IFJBTSBkaXNrIHNpemUgKGtieXRlcylcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNTQ6XHRkZXBlbmRzIG9uIEJMS19ERVZfUkFNXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjU1LVx0ZGVmYXVsdCBcJiMzNDs0MDk2XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI2MD1jb25maWcgQVRBX09WRVJfRVRIXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjYxLVx0dHJpc3RhdGUgXCYjMzQ7QVRBIG92ZXIgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjI2MjpcdGRlcGVuZHMgb24gTkVUXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjYzLVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0yNjc9Y29uZmlnIFNVTlZEQ1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTI2OC1cdHRyaXN0YXRlIFwmIzM0O1N1biBWaXJ0dWFsIERpc2sgQ2xpZW50IHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNjk6XHRkZXBlbmRzIG9uIFNVTl9MRE9NU1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTI3MC1cdGhlbHBcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9Mjc2PWNvbmZpZyBYRU5fQkxLREVWX0ZST05URU5EXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjc3LVx0dHJpc3RhdGUgXCYjMzQ7WGVuIHZpcnR1YWwgYmxvY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNzg6XHRkZXBlbmRzIG9uIFhFTlxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI3OS1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0yODY9Y29uZmlnIFhFTl9CTEtERVZfQkFDS0VORFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI4Ny1cdHRyaXN0YXRlIFwmIzM0O1hlbiBibG9jay1kZXZpY2UgYmFja2VuZCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyODg6XHRkZXBlbmRzIG9uIFhFTl9CQUNLRU5EXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjg5LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMDc9Y29uZmlnIFZJUlRJT19CTEtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMDgtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gYmxvY2sgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzA5Olx0ZGVwZW5kcyBvbiBWSVJUSU9cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMTAtXHRzZWxlY3QgU0dfUE9PTFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMTU9Y29uZmlnIEJMS19ERVZfUkJEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzE2LVx0dHJpc3RhdGUgXCYjMzQ7UmFkb3MgYmxvY2sgZGV2aWNlIChSQkQpXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzE3Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBCTE9DS1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTMxOC1cdHNlbGVjdCBDRVBIX0xJQlxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMzc9Y29uZmlnIEJMS0RFVl9VQkxLX0xFR0FDWV9PUENPREVTXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzM4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGxlZ2FjeSBjb21tYW5kIG9wY29kZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjMzOTpcdGRlcGVuZHMgb24gQkxLX0RFVl9VQkxLXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzQwLVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTM1Nj1jb25maWcgQkxLX0RFVl9aT05FRF9MT09QXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzU3LVx0dHJpc3RhdGUgXCYjMzQ7Wm9uZWQgbG9vcGJhY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozNTg6XHRkZXBlbmRzIG9uIEJMS19ERVZfWk9ORURcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zNTktXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNzYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1NTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgVGhvdWdodCBQcm9jZXNzIG9uIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gd29ya2luZyBvbiB0aGVzZSBrZXJuZWwgY29uZmlncy4gSSBzZWUgdGhhdCBOQkQgaGFzIGEgZGVwZW5kZW5jeSBvbiBORVQsIHdoaWNoIG1ha2VzIHNlbnNlLiBMT09QLCBvbiB0aGUgb3RoZXIgaGFuZCwgZG9lc24mIzM5O3Qgc2VlbSB0byBoYXZlIGFueSBzcGVjaWFsIGRlcGVuZGVuY2llcywgYXQgbGVhc3Qgbm90IHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFwcGFyZW50LiBTbywgdGhlIGZpcnN0IHN0ZXAgaXMgdG8gYWRkIGBCTEtfREVWX0xPT1BgIGFuZCBgQkxLX0RFVl9OQkRgIHRvIGBFbmFibGVDb25maWdzYC4KCk5vdywgbGV0JiMzOTtzIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQgbWUgc2VlLi4uIEkmIzM5O3ZlIGdvdCBgbG9vcF9jaGFuZ2VfZmRgIGFuZCBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLgoKUmlnaHQsIGJvdGggb2YgdGhlc2UgYXJlIGVpdGhlciBub24tc3RhdGljIG9yIHN0YXRpYyBidXQgbm90IGlubGluZWQuIFRoZXkmIzM5O3JlIGVpdGhlciBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgb3IgY2FsbGVkIGZyb20gYSBzd2l0Y2ggc3RhdGVtZW50LCBtZWFuaW5nIHRoZSBjb21waWxlciBpcyBwcm9iYWJseSBub3QgaW5saW5pbmcgdGhlbS4gSGFuZyBvbiwgYWN0dWFsbHkgYGxvb3BfY2hhbmdlX2ZkYCAqaXMqIHN0YXRpYzogYHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgdW5zaWduZWQgaW50IGFyZylgLiBBbmQgaXQmIzM5O3MgY2FsbGVkIGZyb20gdGhlIGBsb19pb2N0bGAgc3dpdGNoIHN0YXRlbWVudC4gU28gaXQmIzM5O3MgYSBzZXBhcmF0ZSBmdW5jdGlvbiwgbm90IGlubGluZWQuIFNhbWUgZ29lcyBmb3IgYG5iZF9jbGVhcl9zb2NrX2lvY3RsYDogYHN0YXRpYyB2b2lkIG5iZF9jbGVhcl9zb2NrX2lvY3RsKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpYCwgY2FsbGVkIGZyb20gYF9fbmJkX2lvY3RsYCYjMzk7cyBzd2l0Y2ggc3RhdGVtZW50IGFuZCBub3QgaW5saW5lZC4KCk9rYXksIGJ1dCBob2xkIG9uIC0gc2hvdWxkIEkgY2hlY2sgaWYgdGhlIGNvbXBpbGVyIG1pZ2h0IGJlIGlubGluaW5nIHRoZW0gYW55d2F5PyBGdW5jdGlvbnMgY2FsbGVkIGZyb20gc3dpdGNoIHN0YXRlbWVudHMgY2FuIHNvbWV0aW1lcyBiZSBpbmxpbmVkIGlmIHRoZXkmIzM5O3JlIHNtYWxsLCBidXQgYGxvb3BfY2hhbmdlX2ZkYCBpcyBwcmV0dHkgbGFyZ2UsIHNvIHVubGlrZWx5LiBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIGlzIHNtYWxsIHRob3VnaDoKCmBgYGMKc3RhdGljIHZvaWQgbmJkX2NsZWFyX3NvY2tfaW9jdGwoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCkKewoJbmJkX2NsZWFyX3NvY2sobmJkKTsKCWRpc2tfZm9yY2VfbWVkaWFfY2hhbmdlKG5iZC0mZ3Q7ZGlzayk7CgluYmRfYmRldl9yZXNldChuYmQpOwoJLyoKCSAqIERyb3AgdGhlIHBhcnRpdGlvbnMgb2YgdGhlIGRpc2Nvbm5lY3RlZCBkZXZpY2Ugb24gdGhlIG5leHQgb3Blbi4KCSAqIFRoZXkgY2FuIGV4aXN0IGV2ZW4gd2l0aCBtYXhfcGFydCB6ZXJvIGFzIHRoZXkgbWF5IGhhdmUgYmVlbiBhZGRlZAoJICogbWFudWFsbHkgd2l0aCBCTEtQRy4gRHJvcHBpbmcgdGhlbSBoZXJlIGlzIG5vdCBwb3NzaWJsZSBhcyB0aGF0CgkgKiBuZWVkcyBvcGVuX211dGV4LCB3aGljaCBuYmRfb3BlbigpIGFjcXVpcmVzIHVuZGVyIGNvbmZpZ19sb2NrLgoJICovCglzZXRfYml0KEdEX05FRURfUEFSVF9TQ0FOLCAmYW1wO25iZC0mZ3Q7ZGlzay0mZ3Q7c3RhdGUpOwoJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOQkRfUlRfSEFTX0NPTkZJR19SRUYsCgkJCSAgICAgICAmYW1wO25iZC0mZ3Q7Y29uZmlnLSZndDtydW50aW1lX2ZsYWdzKSkKCQluYmRfY29uZmlnX3B1dChuYmQpOwp9CmBgYAoKSXQgKm1pZ2h0KiBiZSBpbmxpbmVkIGludG8gYF9fbmJkX2lvY3RsYC4gVG8gYmUgYWJzb2x1dGVseSBzYWZlLCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGFkZCBgX19uYmRfaW9jdGxgIGFuZCBgbG9faW9jdGxgIHRvIGBGb2N1c1N5bWJvbHNgLiBPciwgZXZlbiBiZXR0ZXIsIGp1c3QgYWRkIHRoZSBleHBvcnRlZCBgbmJkX2lvY3RsYCBhbmQgYGxvX2lvY3RsYCBzeW1ib2xzIHRoZW1zZWx2ZXMuIFRoYXQgd2F5IEkmIzM5O20gc3VyZSBJJiMzOTttIGNhcHR1cmluZyBhbGwgdGhlIHJlbGV2YW50IGNvZGUuIEdvb2QsIEkgdGhpbmsgSSYjMzk7dmUgY292ZXJlZCBhbGwgdGhlIGJhc2VzIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25iZF9pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYz0xNjMxPXN0YXRpYyB2b2lkIG5iZF9zZXRfY21kX3RpbWVvdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdTY0IHRpbWVvdXQpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjQwLS8qIE11c3QgYmUgY2FsbGVkIHdpdGggY29uZmlnX2xvY2sgaGVsZCAqL1xuZHJpdmVycy9ibG9jay9uYmQuYzoxNjQxOnN0YXRpYyBpbnQgX19uYmRfaW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc3RydWN0IG5iZF9kZXZpY2UgKm5iZCxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTY0Mi1cdFx0ICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTY4Ny1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTY4ODpzdGF0aWMgaW50IG5iZF9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2ODktXHRcdCAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzEwLVx0ICAgIChjbWQgPT0gTkJEX0RJU0NPTk5FQ1QgfHwgY21kID09IE5CRF9DTEVBUl9TT0NLKSlcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTcxMTpcdFx0ZXJyb3IgPSBfX25iZF9pb2N0bChiZGV2LCBuYmQsIGNtZCwgYXJnKTtcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTcxMi1cdGVsc2Vcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE4MTU9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyBuYmRfZm9wcyA9XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xODE5LVx0LnJlbGVhc2UgPVx0bmJkX3JlbGVhc2UsXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4MjA6XHQuaW9jdGwgPVx0bmJkX2lvY3RsLFxuZHJpdmVycy9ibG9jay9uYmQuYzoxODIxOlx0LmNvbXBhdF9pb2N0bCA9XHRuYmRfaW9jdGwsXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4MjItXHQuZnJlZV9kaXNrID1cdG5iZF9mcmVlX2Rpc2ssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwMDkKCQkJCQkJCW91dHB1dDogMTIzCgkJCQkJCQl0aG91Z2h0czogMTQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBCbG9jayBEZXZpY2UgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaCwgYW5kIEkmIzM5O20gYWRkaW5nIGBsb29wX2NoYW5nZV9mZGAsIGBsb19pb2N0bGAsIGBuYmRfY2xlYXJfc29ja19pb2N0bGAsIGFuZCBgX19uYmRfaW9jdGxgIHRvIG15IEZvY3VzU3ltYm9scyBsaXN0LiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCByZWFsbHkuIFRoZSBjb3JlIGlzIHRoZSBtb2RpZmljYXRpb24gb2YgdGhlIHBhcnRpdGlvbiByZXNjYW5uaW5nIGxvZ2ljIGZvciBsb29wIGFuZCBuYmQgYmxvY2sgZGV2aWNlcy4gVGhlIHBhdGNoIGRlYWxzIHdpdGggc2l0dWF0aW9ucyB3aGVyZSB0aGUgdW5kZXJseWluZyBmaWxlIG9yIHNvY2tldCB1c2VkIGJ5IHRoZXNlIHZpcnR1YWwgYmxvY2sgZGV2aWNlcyBpcyBjaGFuZ2VkIG9yIGNsZWFyZWQuIFRoZXNlIGFjdGlvbnMgYXJlIHRyaWdnZXJlZCB2aWEgaW9jdGxzIG9uIHRob3NlIHZlcnkgc2FtZSB2aXJ0dWFsIGJsb2NrIGRldmljZXMsIHdoaWNoIG1ha2VzIHRoZW0gcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZywgd2hpY2ggaXMgd2h5IGBXb3J0aEZ1enppbmdgIGlzIHNldCB0byBgdHJ1ZWAuIEkmIzM5O2xsIHdhbnQgdG8gZGlnIGluIHRvIHRob3NlIGlvY3RscywgZXNwZWNpYWxseSBgbG9faW9jdGxgLCBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIGFuZCBgX19uYmRfaW9jdGxgLCBhbmQgc2VlIHdoYXQgdGhlIGNvZGUgZG9lcyB3aXRoIHRoZSBiYWNraW5nIGZpbGVzIG9yIHNvY2tldHMuIEFsc28sIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCBJJiMzOTttIGRlYWxpbmcgd2l0aCBgQkxLX0RFVl9MT09QYCBhbmQgYEJMS19ERVZfTkJEYCwgYW5kIHRob3NlIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyB0byBiZSByZWxldmFudC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AgYW5kIHNlZSB3aGF0IGNvbWVzIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX0xPT1AmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9OQkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb29wX2NoYW5nZV9mZCYjMzQ7LAogICAgJiMzNDtsb19pb2N0bCYjMzQ7LAogICAgJiMzNDtuYmRfY2xlYXJfc29ja19pb2N0bCYjMzQ7LAogICAgJiMzNDtfX25iZF9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYXJ0aXRpb24gcmVzY2FubmluZyBsb2dpYyBmb3IgbG9vcCBhbmQgbmJkIGJsb2NrIGRldmljZXMgd2hlbiB0aGVpciBiYWNraW5nIGZpbGVzIG9yIHNvY2tldHMgYXJlIGNoYW5nZWQvY2xlYXJlZC4gVGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSBpb2N0bHMgb24gdmlydHVhbCBibG9jayBkZXZpY2VzIGFuZCBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX0xPT1AmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9OQkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb29wX2NoYW5nZV9mZCYjMzQ7LAogICAgJiMzNDtsb19pb2N0bCYjMzQ7LAogICAgJiMzNDtuYmRfY2xlYXJfc29ja19pb2N0bCYjMzQ7LAogICAgJiMzNDtfX25iZF9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYXJ0aXRpb24gcmVzY2FubmluZyBsb2dpYyBmb3IgbG9vcCBhbmQgbmJkIGJsb2NrIGRldmljZXMgd2hlbiB0aGVpciBiYWNraW5nIGZpbGVzIG9yIHNvY2tldHMgYXJlIGNoYW5nZWQvY2xlYXJlZC4gVGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSBpb2N0bHMgb24gdmlydHVhbCBibG9jayBkZXZpY2VzIGFuZCBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNjozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhcnRpdGlvbiBzY2FubmluZyBsb2dpYyBpbiB0aGUgbG9vcCBhbmQgbmJkIGJsb2NrIGRyaXZlcnMuIEluIGBsb29wX2NoYW5nZV9mZGAsIGl0IHVuY29uZGl0aW9uYWxseSBjYWxscyBgbG9vcF9yZXJlYWRfcGFydGl0aW9uc2AgcmF0aGVyIHRoYW4gY2hlY2tpbmcgYExPX0ZMQUdTX1BBUlRTQ0FOYCwgdG8gZW5zdXJlIG1hbnVhbGx5IGFkZGVkIHBhcnRpdGlvbnMgYXJlIGRyb3BwZWQuIEluIGBuYmRfY2xlYXJfc29ja19pb2N0bGAsIGl0IHNldHMgYEdEX05FRURfUEFSVF9TQ0FOYCB0byBkcm9wIHBhcnRpdGlvbnMgb24gdGhlIG5leHQgb3Blbi4gVGhlc2UgY2hhbmdlcyBvbmx5IGFsdGVyIGNvbnRyb2wgZmxvdyBhbmQgc3RhdGUgZmxhZ3MgcmVsYXRlZCB0byBibG9jayBkZXZpY2UgcGFydGl0aW9uIG1hbmFnZW1lbnQuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrLCBoZWFwLCBvciBwYWRkaW5nKSBvciBjcmVhdGluZyBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmV0aW1lcyAoZS5nLiwgdXNlLWFmdGVyLWZyZWUpIG9yIGxvY2tpbmcsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzJjZjE1YmQyOWZjODAyYTUzYjY4YWMzYzM2M2QxZjQ2ZTJiYTZiMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDI0IDE2OjMwOjI2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRleCA2ZjEyOTc2MDM1YjA5Li44OTkzNWNmYzU5MWY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtNTUwLDcgJiM0Mzs1NTAsNiBAQCBzdGF0aWMgaW50IGxvb3BfY2hhbmdlX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsCiAJc3RydWN0IGZpbGUgKm9sZF9maWxlOwogCXVuc2lnbmVkIGludCBtZW1mbGFnczsKIAlpbnQgZXJyb3I7Ci0JYm9vbCBwYXJ0c2NhbjsKIAlib29sIGlzX2xvb3A7CiAKIAlpZiAoIWZpbGUpCkBAIC02MDQsNyAmIzQzOzYwMyw2IEBAIHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKIAlsb29wX2Fzc2lnbl9iYWNraW5nX2ZpbGUobG8sIGZpbGUpOwogCWxvb3BfdXBkYXRlX2Rpbyhsbyk7CiAJYmxrX21xX3VuZnJlZXplX3F1ZXVlKGxvLSZndDtsb19xdWV1ZSwgbWVtZmxhZ3MpOwotCXBhcnRzY2FuID0gbG8tJmd0O2xvX2ZsYWdzICZhbXA7IExPX0ZMQUdTX1BBUlRTQ0FOOwogCWxvb3BfZ2xvYmFsX3VubG9jayhsbywgaXNfbG9vcCk7CiAKIAkvKgpAQCAtNjIyLDggJiM0Mzs2MjAsMTIgQEAgc3RhdGljIGludCBsb29wX2NoYW5nZV9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LAogCSAqLwogCWZwdXQob2xkX2ZpbGUpOwogCWRldl9zZXRfdWV2ZW50X3N1cHByZXNzKGRpc2tfdG9fZGV2KGxvLSZndDtsb19kaXNrKSwgMCk7Ci0JaWYgKHBhcnRzY2FuKQotCQlsb29wX3JlcmVhZF9wYXJ0aXRpb25zKGxvKTsKJiM0MzsJLyoKJiM0MzsJICogUmVzY2FuIG9yLCB3aXRob3V0IExPX0ZMQUdTX1BBUlRTQ0FOLCBqdXN0IGRyb3AgdGhlIHBhcnRpdGlvbnMgb2YKJiM0MzsJICogdGhlIG9sZCBiYWNraW5nIGZpbGUuIFRoZXkgY2FuIGV4aXN0IHdpdGhvdXQgTE9fRkxBR1NfUEFSVFNDQU4gYXMKJiM0MzsJICogdGhleSBtYXkgaGF2ZSBiZWVuIGFkZGVkIG1hbnVhbGx5IHdpdGggQkxLUEcuCiYjNDM7CSAqLwomIzQzOwlsb29wX3JlcmVhZF9wYXJ0aXRpb25zKGxvKTsKIAogCWVycm9yID0gMDsKIGRvbmU6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL25iZC5jIGIvZHJpdmVycy9ibG9jay9uYmQuYwppbmRleCBmZmNlNTE5YmYwMDg3Li4wOWI0YWQ3MGE1ZDdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL25iZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbmJkLmMKQEAgLTE2MTYsNiAmIzQzOzE2MTYsMTMgQEAgc3RhdGljIHZvaWQgbmJkX2NsZWFyX3NvY2tfaW9jdGwoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCkKIAluYmRfY2xlYXJfc29jayhuYmQpOwogCWRpc2tfZm9yY2VfbWVkaWFfY2hhbmdlKG5iZC0mZ3Q7ZGlzayk7CiAJbmJkX2JkZXZfcmVzZXQobmJkKTsKJiM0MzsJLyoKJiM0MzsJICogRHJvcCB0aGUgcGFydGl0aW9ucyBvZiB0aGUgZGlzY29ubmVjdGVkIGRldmljZSBvbiB0aGUgbmV4dCBvcGVuLgomIzQzOwkgKiBUaGV5IGNhbiBleGlzdCBldmVuIHdpdGggbWF4X3BhcnQgemVybyBhcyB0aGV5IG1heSBoYXZlIGJlZW4gYWRkZWQKJiM0MzsJICogbWFudWFsbHkgd2l0aCBCTEtQRy4gRHJvcHBpbmcgdGhlbSBoZXJlIGlzIG5vdCBwb3NzaWJsZSBhcyB0aGF0CiYjNDM7CSAqIG5lZWRzIG9wZW5fbXV0ZXgsIHdoaWNoIG5iZF9vcGVuKCkgYWNxdWlyZXMgdW5kZXIgY29uZmlnX2xvY2suCiYjNDM7CSAqLwomIzQzOwlzZXRfYml0KEdEX05FRURfUEFSVF9TQ0FOLCAmYW1wO25iZC0mZ3Q7ZGlzay0mZ3Q7c3RhdGUpOwogCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTkJEX1JUX0hBU19DT05GSUdfUkVGLAogCQkJICAgICAgICZhbXA7bmJkLSZndDtjb25maWctJmd0O3J1bnRpbWVfZmxhZ3MpKQogCQluYmRfY29uZmlnX3B1dChuYmQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTY6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU4MAoJCQkJCQkJb3V0cHV0OiAyMjEKCQkJCQkJCXRob3VnaHRzOiA1MzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQXNzZXNzbWVudDogTm8gTmVlZCBIZXJlKioKCk9rYXksIHNvIEkmIzM5O3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoLCBmb2N1c2luZyBvbiB0aGUgY2hhbmdlcyB0byBgZHJpdmVycy9ibG9jay9sb29wLmNgIGFuZCBgZHJpdmVycy9ibG9jay9uYmQuY2AuIFRoZSBjb3JlIG9mIHRoZSBtb2RpZmljYXRpb24gaXMgYWJvdXQgaG93IHBhcnRpdGlvbiBzY2FubmluZyBpcyB0cmlnZ2VyZWQuIEluIGBsb29wLmNgLCB0aGV5JiMzOTt2ZSByZW1vdmVkIHRoZSBjb25kaXRpb25hbCBjaGVjayBiYXNlZCBvbiBgTE9fRkxBR1NfUEFSVFNDQU5gIGFuZCBhcmUgbm93IGNhbGxpbmcgYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnMobG8pYCB1bmNvbmRpdGlvbmFsbHkuIE92ZXIgaW4gYG5iZC5jYCwgdGhleSYjMzk7cmUgYWRkaW5nIGBzZXRfYml0KEdEX05FRURfUEFSVF9TQ0FOLCAmYW1wO25iZC0mZ3Q7ZGlzay0mZ3Q7c3RhdGUpYCBpbiBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgJiMzNDtDb3VsZCB0aGlzIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/JiMzNDsgSSB3ZW50IHRocm91Z2ggdGhlIGNoYW5nZXMgc3RlcC1ieS1zdGVwLiBUaGV5JiMzOTtyZSBwdXJlbHkgbG9naWMgY2hhbmdlczogdW5jb25kaXRpb25hbCBjYWxsIHRvIGBsb29wX3JlcmVhZF9wYXJ0aXRpb25zYCBhbmQgc2V0dGluZyBhIGZsYWcuIE5vdGhpbmcgbmV3IGlzIGJlaW5nIGFsbG9jYXRlZC4gTm8gbmV3IGZpZWxkcyBhcmUgYmVpbmcgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBObyBkYXRhIGlzIGJlaW5nIHJlYWQgb3IgY29waWVkIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgb25seSB0aGluZ3MgYmVpbmcgY2hhbmdlZCByZWxhdGUgdG8gaG93IHdlIHJlc2NhbiBwYXJ0aXRpb25zLgoKU28sIEkgZG9uJiMzOTt0IHNlZSBhbnkgbmVlZCBmb3IgS01TQU4gaGVyZS4gS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgdG8gY2F0Y2ggbWVtb3J5IGNvcnJ1cHRpb24gYnVncyB0aGF0IGNvdWxkIGhhcHBlbiBiZWNhdXNlIG9mIHBhcnRpdGlvbiByZXNjYW5uaW5nIOKAkyBzdHVmZiBsaWtlIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkgZG91YmxlLWNoZWNrZWQgd2hhdCBgbG9vcF9yZXJlYWRfcGFydGl0aW9uc2AgYW5kIGBHRF9ORUVEX1BBUlRfU0NBTmAgYWN0dWFsbHkgKmRvKi4gYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnNgIHNpbXBseSB0cmlnZ2VycyBhIHBhcnRpdGlvbiByZXNjYW4sIGFuZCBgR0RfTkVFRF9QQVJUX1NDQU5gIGlzIGp1c3QgYSBibG9jay1sYXllciBmbGFnIHRvIHNpZ25hbCB0aGUgbmVlZCBmb3IgYSByZXNjYW4uIFN0aWxsIG5vdGhpbmcgcG9pbnRpbmcgdG8gYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuCgpUaGVyZWZvcmUsIG5vLCB0aGlzIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlza3Mgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEkmIzM5O20gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhcnRpdGlvbiBzY2FubmluZyBsb2dpYyBpbiB0aGUgbG9vcCBhbmQgbmJkIGJsb2NrIGRyaXZlcnMuIEluIGBsb29wX2NoYW5nZV9mZGAsIGl0IHVuY29uZGl0aW9uYWxseSBjYWxscyBgbG9vcF9yZXJlYWRfcGFydGl0aW9uc2AgcmF0aGVyIHRoYW4gY2hlY2tpbmcgYExPX0ZMQUdTX1BBUlRTQ0FOYCwgdG8gZW5zdXJlIG1hbnVhbGx5IGFkZGVkIHBhcnRpdGlvbnMgYXJlIGRyb3BwZWQuIEluIGBuYmRfY2xlYXJfc29ja19pb2N0bGAsIGl0IHNldHMgYEdEX05FRURfUEFSVF9TQ0FOYCB0byBkcm9wIHBhcnRpdGlvbnMgb24gdGhlIG5leHQgb3Blbi4gVGhlc2UgY2hhbmdlcyBvbmx5IGFsdGVyIGNvbnRyb2wgZmxvdyBhbmQgc3RhdGUgZmxhZ3MgcmVsYXRlZCB0byBibG9jayBkZXZpY2UgcGFydGl0aW9uIG1hbmFnZW1lbnQuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrLCBoZWFwLCBvciBwYWRkaW5nKSBvciBjcmVhdGluZyBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmV0aW1lcyAoZS5nLiwgdXNlLWFmdGVyLWZyZWUpIG9yIGxvY2tpbmcsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhcnRpdGlvbiBzY2FubmluZyBsb2dpYyBpbiB0aGUgbG9vcCBhbmQgbmJkIGJsb2NrIGRyaXZlcnMuIEluIGBsb29wX2NoYW5nZV9mZGAsIGl0IHVuY29uZGl0aW9uYWxseSBjYWxscyBgbG9vcF9yZXJlYWRfcGFydGl0aW9uc2AgcmF0aGVyIHRoYW4gY2hlY2tpbmcgYExPX0ZMQUdTX1BBUlRTQ0FOYCwgdG8gZW5zdXJlIG1hbnVhbGx5IGFkZGVkIHBhcnRpdGlvbnMgYXJlIGRyb3BwZWQuIEluIGBuYmRfY2xlYXJfc29ja19pb2N0bGAsIGl0IHNldHMgYEdEX05FRURfUEFSVF9TQ0FOYCB0byBkcm9wIHBhcnRpdGlvbnMgb24gdGhlIG5leHQgb3Blbi4gVGhlc2UgY2hhbmdlcyBvbmx5IGFsdGVyIGNvbnRyb2wgZmxvdyBhbmQgc3RhdGUgZmxhZ3MgcmVsYXRlZCB0byBibG9jayBkZXZpY2UgcGFydGl0aW9uIG1hbmFnZW1lbnQuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrLCBoZWFwLCBvciBwYWRkaW5nKSBvciBjcmVhdGluZyBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmV0aW1lcyAoZS5nLiwgdXNlLWFmdGVyLWZyZWUpIG9yIGxvY2tpbmcsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTY6MzA6MjcuMjU5MTAxOTQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE5MjAwMDY1OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9MT09QXCIsXG4gICAgXCJCTEtfREVWX05CRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxvb3BfY2hhbmdlX2ZkXCIsXG4gICAgXCJsb19pb2N0bFwiLFxuICAgIFwibmJkX2NsZWFyX3NvY2tfaW9jdGxcIixcbiAgICBcIl9fbmJkX2lvY3RsXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYXJ0aXRpb24gc2Nhbm5pbmcgbG9naWMgaW4gdGhlIGxvb3AgYW5kIG5iZCBibG9jayBkcml2ZXJzLiBJbiBgbG9vcF9jaGFuZ2VfZmRgLCBpdCB1bmNvbmRpdGlvbmFsbHkgY2FsbHMgYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnNgIHJhdGhlciB0aGFuIGNoZWNraW5nIGBMT19GTEFHU19QQVJUU0NBTmAsIHRvIGVuc3VyZSBtYW51YWxseSBhZGRlZCBwYXJ0aXRpb25zIGFyZSBkcm9wcGVkLiBJbiBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLCBpdCBzZXRzIGBHRF9ORUVEX1BBUlRfU0NBTmAgdG8gZHJvcCBwYXJ0aXRpb25zIG9uIHRoZSBuZXh0IG9wZW4uIFRoZXNlIGNoYW5nZXMgb25seSBhbHRlciBjb250cm9sIGZsb3cgYW5kIHN0YXRlIGZsYWdzIHJlbGF0ZWQgdG8gYmxvY2sgZGV2aWNlIHBhcnRpdGlvbiBtYW5hZ2VtZW50LiBUaGV5IGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdGFjaywgaGVhcCwgb3IgcGFkZGluZykgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSByZWxhdGVkIHRvIG9iamVjdCBsaWZldGltZXMgKGUuZy4sIHVzZS1hZnRlci1mcmVlKSBvciBsb2NraW5nLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFydGl0aW9uIHJlc2Nhbm5pbmcgbG9naWMgZm9yIGxvb3AgYW5kIG5iZCBibG9jayBkZXZpY2VzIHdoZW4gdGhlaXIgYmFja2luZyBmaWxlcyBvciBzb2NrZXRzIGFyZSBjaGFuZ2VkL2NsZWFyZWQuIFRoZXNlIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSB2aWEgaW9jdGxzIG9uIHZpcnR1YWwgYmxvY2sgZGV2aWNlcyBhbmQgaGF2ZSBmdW5jdGlvbmFsIGltcGFjdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTY6MzA6MjcuMjU5MTA3NTI4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODQ0MTU2ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzMmNmMTViZDI5ZmM4MDJhNTNiNjhhYzNjMzYzZDFmNDZlMmJhNmIyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDI0IDE2OjMwOjI2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmNcXG5pbmRleCA2ZjEyOTc2MDM1YjA5Li44OTkzNWNmYzU5MWY3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jXFxuKysrIGIvZHJpdmVycy9ibG9jay9sb29wLmNcXG5AQCAtNTUwLDcgKzU1MCw2IEBAIHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldixcXG4gXFx0c3RydWN0IGZpbGUgKm9sZF9maWxlO1xcbiBcXHR1bnNpZ25lZCBpbnQgbWVtZmxhZ3M7XFxuIFxcdGludCBlcnJvcjtcXG4tXFx0Ym9vbCBwYXJ0c2NhbjtcXG4gXFx0Ym9vbCBpc19sb29wO1xcbiBcXG4gXFx0aWYgKCFmaWxlKVxcbkBAIC02MDQsNyArNjAzLDYgQEAgc3RhdGljIGludCBsb29wX2NoYW5nZV9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxcbiBcXHRsb29wX2Fzc2lnbl9iYWNraW5nX2ZpbGUobG8sIGZpbGUpO1xcbiBcXHRsb29wX3VwZGF0ZV9kaW8obG8pO1xcbiBcXHRibGtfbXFfdW5mcmVlemVfcXVldWUobG8tXFx1MDAzZWxvX3F1ZXVlLCBtZW1mbGFncyk7XFxuLVxcdHBhcnRzY2FuID0gbG8tXFx1MDAzZWxvX2ZsYWdzIFxcdTAwMjYgTE9fRkxBR1NfUEFSVFNDQU47XFxuIFxcdGxvb3BfZ2xvYmFsX3VubG9jayhsbywgaXNfbG9vcCk7XFxuIFxcbiBcXHQvKlxcbkBAIC02MjIsOCArNjIwLDEyIEBAIHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldixcXG4gXFx0ICovXFxuIFxcdGZwdXQob2xkX2ZpbGUpO1xcbiBcXHRkZXZfc2V0X3VldmVudF9zdXBwcmVzcyhkaXNrX3RvX2Rldihsby1cXHUwMDNlbG9fZGlzayksIDApO1xcbi1cXHRpZiAocGFydHNjYW4pXFxuLVxcdFxcdGxvb3BfcmVyZWFkX3BhcnRpdGlvbnMobG8pO1xcbitcXHQvKlxcbitcXHQgKiBSZXNjYW4gb3IsIHdpdGhvdXQgTE9fRkxBR1NfUEFSVFNDQU4sIGp1c3QgZHJvcCB0aGUgcGFydGl0aW9ucyBvZlxcbitcXHQgKiB0aGUgb2xkIGJhY2tpbmcgZmlsZS4gVGhleSBjYW4gZXhpc3Qgd2l0aG91dCBMT19GTEFHU19QQVJUU0NBTiBhc1xcbitcXHQgKiB0aGV5IG1heSBoYXZlIGJlZW4gYWRkZWQgbWFudWFsbHkgd2l0aCBCTEtQRy5cXG4rXFx0ICovXFxuK1xcdGxvb3BfcmVyZWFkX3BhcnRpdGlvbnMobG8pO1xcbiBcXG4gXFx0ZXJyb3IgPSAwO1xcbiBkb25lOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL25iZC5jIGIvZHJpdmVycy9ibG9jay9uYmQuY1xcbmluZGV4IGZmY2U1MTliZjAwODcuLjA5YjRhZDcwYTVkN2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9uYmQuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svbmJkLmNcXG5AQCAtMTYxNiw2ICsxNjE2LDEzIEBAIHN0YXRpYyB2b2lkIG5iZF9jbGVhcl9zb2NrX2lvY3RsKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXFxuIFxcdG5iZF9jbGVhcl9zb2NrKG5iZCk7XFxuIFxcdGRpc2tfZm9yY2VfbWVkaWFfY2hhbmdlKG5iZC1cXHUwMDNlZGlzayk7XFxuIFxcdG5iZF9iZGV2X3Jlc2V0KG5iZCk7XFxuK1xcdC8qXFxuK1xcdCAqIERyb3AgdGhlIHBhcnRpdGlvbnMgb2YgdGhlIGRpc2Nvbm5lY3RlZCBkZXZpY2Ugb24gdGhlIG5leHQgb3Blbi5cXG4rXFx0ICogVGhleSBjYW4gZXhpc3QgZXZlbiB3aXRoIG1heF9wYXJ0IHplcm8gYXMgdGhleSBtYXkgaGF2ZSBiZWVuIGFkZGVkXFxuK1xcdCAqIG1hbnVhbGx5IHdpdGggQkxLUEcuIERyb3BwaW5nIHRoZW0gaGVyZSBpcyBub3QgcG9zc2libGUgYXMgdGhhdFxcbitcXHQgKiBuZWVkcyBvcGVuX211dGV4LCB3aGljaCBuYmRfb3BlbigpIGFjcXVpcmVzIHVuZGVyIGNvbmZpZ19sb2NrLlxcbitcXHQgKi9cXG4rXFx0c2V0X2JpdChHRF9ORUVEX1BBUlRfU0NBTiwgXFx1MDAyNm5iZC1cXHUwMDNlZGlzay1cXHUwMDNlc3RhdGUpO1xcbiBcXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5CRF9SVF9IQVNfQ09ORklHX1JFRixcXG4gXFx0XFx0XFx0ICAgICAgIFxcdTAwMjZuYmQtXFx1MDAzZWNvbmZpZy1cXHUwMDNlcnVudGltZV9mbGFncykpXFxuIFxcdFxcdG5iZF9jb25maWdfcHV0KG5iZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE2OjMwOjI3LjY0NDIwNTIyM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU3NDQxMDAzNDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTE9PUFwiLFxuICAgIFwiQkxLX0RFVl9OQkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsb29wX2NoYW5nZV9mZFwiLFxuICAgIFwibG9faW9jdGxcIixcbiAgICBcIm5iZF9jbGVhcl9zb2NrX2lvY3RsXCIsXG4gICAgXCJfX25iZF9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBhcnRpdGlvbiByZXNjYW5uaW5nIGxvZ2ljIGZvciBsb29wIGFuZCBuYmQgYmxvY2sgZGV2aWNlcyB3aGVuIHRoZWlyIGJhY2tpbmcgZmlsZXMgb3Igc29ja2V0cyBhcmUgY2hhbmdlZC9jbGVhcmVkLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIGlvY3RscyBvbiB2aXJ0dWFsIGJsb2NrIGRldmljZXMgYW5kIGhhdmUgZnVuY3Rpb25hbCBpbXBhY3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDMyY2YxNWJkMjlmYzgwMmE1M2I2OGFjM2MzNjNkMWY0NmUyYmE2YjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxNjozMDoyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmNcbmluZGV4IDZmMTI5NzYwMzViMDkuLjg5OTM1Y2ZjNTkxZjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuKysrIGIvZHJpdmVycy9ibG9jay9sb29wLmNcbkBAIC01NTAsNyArNTUwLDYgQEAgc3RhdGljIGludCBsb29wX2NoYW5nZV9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxuIFx0c3RydWN0IGZpbGUgKm9sZF9maWxlO1xuIFx0dW5zaWduZWQgaW50IG1lbWZsYWdzO1xuIFx0aW50IGVycm9yO1xuLVx0Ym9vbCBwYXJ0c2NhbjtcbiBcdGJvb2wgaXNfbG9vcDtcbiBcbiBcdGlmICghZmlsZSlcbkBAIC02MDQsNyArNjAzLDYgQEAgc3RhdGljIGludCBsb29wX2NoYW5nZV9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxuIFx0bG9vcF9hc3NpZ25fYmFja2luZ19maWxlKGxvLCBmaWxlKTtcbiBcdGxvb3BfdXBkYXRlX2Rpbyhsbyk7XG4gXHRibGtfbXFfdW5mcmVlemVfcXVldWUobG8tXHUwMDNlbG9fcXVldWUsIG1lbWZsYWdzKTtcbi1cdHBhcnRzY2FuID0gbG8tXHUwMDNlbG9fZmxhZ3MgXHUwMDI2IExPX0ZMQUdTX1BBUlRTQ0FOO1xuIFx0bG9vcF9nbG9iYWxfdW5sb2NrKGxvLCBpc19sb29wKTtcbiBcbiBcdC8qXG5AQCAtNjIyLDggKzYyMCwxMiBAQCBzdGF0aWMgaW50IGxvb3BfY2hhbmdlX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsXG4gXHQgKi9cbiBcdGZwdXQob2xkX2ZpbGUpO1xuIFx0ZGV2X3NldF91ZXZlbnRfc3VwcHJlc3MoZGlza190b19kZXYobG8tXHUwMDNlbG9fZGlzayksIDApO1xuLVx0aWYgKHBhcnRzY2FuKVxuLVx0XHRsb29wX3JlcmVhZF9wYXJ0aXRpb25zKGxvKTtcbitcdC8qXG4rXHQgKiBSZXNjYW4gb3IsIHdpdGhvdXQgTE9fRkxBR1NfUEFSVFNDQU4sIGp1c3QgZHJvcCB0aGUgcGFydGl0aW9ucyBvZlxuK1x0ICogdGhlIG9sZCBiYWNraW5nIGZpbGUuIFRoZXkgY2FuIGV4aXN0IHdpdGhvdXQgTE9fRkxBR1NfUEFSVFNDQU4gYXNcbitcdCAqIHRoZXkgbWF5IGhhdmUgYmVlbiBhZGRlZCBtYW51YWxseSB3aXRoIEJMS1BHLlxuK1x0ICovXG4rXHRsb29wX3JlcmVhZF9wYXJ0aXRpb25zKGxvKTtcbiBcbiBcdGVycm9yID0gMDtcbiBkb25lOlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbmJkLmMgYi9kcml2ZXJzL2Jsb2NrL25iZC5jXG5pbmRleCBmZmNlNTE5YmYwMDg3Li4wOWI0YWQ3MGE1ZDdkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9uYmQuY1xuKysrIGIvZHJpdmVycy9ibG9jay9uYmQuY1xuQEAgLTE2MTYsNiArMTYxNiwxMyBAQCBzdGF0aWMgdm9pZCBuYmRfY2xlYXJfc29ja19pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuIFx0bmJkX2NsZWFyX3NvY2sobmJkKTtcbiBcdGRpc2tfZm9yY2VfbWVkaWFfY2hhbmdlKG5iZC1cdTAwM2VkaXNrKTtcbiBcdG5iZF9iZGV2X3Jlc2V0KG5iZCk7XG4rXHQvKlxuK1x0ICogRHJvcCB0aGUgcGFydGl0aW9ucyBvZiB0aGUgZGlzY29ubmVjdGVkIGRldmljZSBvbiB0aGUgbmV4dCBvcGVuLlxuK1x0ICogVGhleSBjYW4gZXhpc3QgZXZlbiB3aXRoIG1heF9wYXJ0IHplcm8gYXMgdGhleSBtYXkgaGF2ZSBiZWVuIGFkZGVkXG4rXHQgKiBtYW51YWxseSB3aXRoIEJMS1BHLiBEcm9wcGluZyB0aGVtIGhlcmUgaXMgbm90IHBvc3NpYmxlIGFzIHRoYXRcbitcdCAqIG5lZWRzIG9wZW5fbXV0ZXgsIHdoaWNoIG5iZF9vcGVuKCkgYWNxdWlyZXMgdW5kZXIgY29uZmlnX2xvY2suXG4rXHQgKi9cbitcdHNldF9iaXQoR0RfTkVFRF9QQVJUX1NDQU4sIFx1MDAyNm5iZC1cdTAwM2VkaXNrLVx1MDAzZXN0YXRlKTtcbiBcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTkJEX1JUX0hBU19DT05GSUdfUkVGLFxuIFx0XHRcdCAgICAgICBcdTAwMjZuYmQtXHUwMDNlY29uZmlnLVx1MDAzZXJ1bnRpbWVfZmxhZ3MpKVxuIFx0XHRuYmRfY29uZmlnX3B1dChuYmQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTY6MzA6MjcuNjQ0MjA2OTEzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM2MTE2NjE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEJsb2NrIERldmljZSBEcml2ZXJzOiBMT09QIGFuZCBOQkQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0d28gcGF0Y2hlcyBoZXJlLCBvbmUgdG91Y2hpbmcgYGRyaXZlcnMvYmxvY2svbG9vcC5jYCBhbmQgdGhlIG90aGVyIGBkcml2ZXJzL2Jsb2NrL25iZC5jYC4gIFRoZSBmaXJzdCBwYXRjaCBpbiBgbG9vcC5jYCBtb2RpZmllcyBgbG9vcF9jaGFuZ2VfZmRgIHRvICphbHdheXMqIGNhbGwgYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnNgIG5vdywgcmVnYXJkbGVzcyBvZiB0aGUgYExPX0ZMQUdTX1BBUlRTQ0FOYCBmbGFnLiBJbnRlcmVzdGluZy4gVGhlIHNlY29uZCBwYXRjaCwgaW4gYG5iZC5jYCwgY2hhbmdlcyBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIHRvIHNldCBgR0RfTkVFRF9QQVJUX1NDQU5gIG9uIGBuYmQtXHUwMDNlZGlzay1cdTAwM2VzdGF0ZWAuICBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVzZSBjaGFuZ2VzIGFyZSBldmVuIHJlYWNoYWJsZSwgYW5kIGlmIHNvLCB3aGV0aGVyIHRoZXkgcmVwcmVzZW50IGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbkxldCdzIHNlZeKApiBgbG9vcF9jaGFuZ2VfZmRgIGlzIGNhbGxlZCB0aHJvdWdoIHRoZSBgTE9PUF9DSEFOR0VfRkRgIGlvY3RsLCBhbmQgYG5iZF9jbGVhcl9zb2NrX2lvY3RsYCBpcyBjYWxsZWQgdmlhIHRoZSBgTkJEX0NMRUFSX1NPQ0tgIGlvY3RsLiBSaWdodCwgY2xhc3NpYyBibG9jayBkZXZpY2UgZHJpdmVycy4gR29vZCwgdGhleSdyZSBibG9jayBkZXZpY2VzIHNvIEkgY2FuIGVhc2lseSBzZXQgdGhlc2UgdXAgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBmb3IgdGVzdGluZy5cblxuVGltZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gSSdsbCBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgTE9PUCBhbmQgTkJELiAgYGRyaXZlcnMvYmxvY2svS2NvbmZpZ2AgaXMgdGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTgzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTY6MzA6MzUuMDA1Mzc2MTE4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3ODU0NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTEtfREVWX0xPT1BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZz0xNDA9Y29uZmlnIEJMS19ERVZfQ09XX0NPTU1PTlxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE0My1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTQ0OmNvbmZpZyBCTEtfREVWX0xPT1BcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTQ1LVxcdHRyaXN0YXRlIFxcXCJMb29wYmFjayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xNzgtXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE3OTpjb25maWcgQkxLX0RFVl9MT09QX01JTl9DT1VOVFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xODAtXFx0aW50IFxcXCJOdW1iZXIgb2YgbG9vcCBkZXZpY2VzIHRvIHByZS1jcmVhdGUgYXQgaW5pdCB0aW1lXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMDozNS4wNTMyMzQ2MzdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTQ3OTUyMTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkuIEhlcmUncyBhIHN1bW1hcnksIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkLCBhbmQgc3RhcnRpbmcgd2l0aCB0aGUgcmVxdWVzdGVkIGJvbGRlZCBoZWFkZXI6XG5cbioqTXkgUGVyc3BlY3RpdmUgb24gTkJEKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXaGVuIEkgdGhpbmsgYWJvdXQgTkJELCBteSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gdGhlIHByYWN0aWNhbCBhcHBsaWNhdGlvbnMgYW5kIGltcGxpY2F0aW9ucy4gSSdtIGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9uIFtpbnNlcnQgcmVsZXZhbnQgZmllbGRdLiBJIG5lZWQgdG8gYXNzZXNzIHdoYXQgdGhpcyBtZWFucyBpbiB0ZXJtcyBvZiBbc3BlY2lmaWMgdGVjaG5pY2FsIGNvbnNpZGVyYXRpb25zXSwgYW5kIGhvdyB3ZSBjYW4gcmVmaW5lIG91ciBzdHJhdGVneSB0byBsZXZlcmFnZSBhbnkgb3Bwb3J0dW5pdGllcyBvciBtaXRpZ2F0ZSBhbnkgcmlza3MgaWRlbnRpZmllZC4gXG5cbkknbSBldmFsdWF0aW5nIHdoZXRoZXIgdGhlc2Ugb2JzZXJ2YXRpb25zIGFsaWduIHdpdGggdGhlIGV4aXN0aW5nIGJvZHkgb2Yga25vd2xlZGdlLCBvciBpZiB0aGV5IHN1Z2dlc3QgYSBuZWVkIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gaW4gYSBzcGVjaWZpYyBhcmVhLiBJJ20gYWxzbyBjb25zaWRlcmluZyB0aGUgcG90ZW50aWFsIGZvciB0aGlzIHRvIGNoYW5nZSBleGlzdGluZyByZXNlYXJjaCBkaXJlY3Rpb25zLiBUaGUgYWltIGlzIHRvIGNsYXJpZnkgaG93IHRoaXMgbWlnaHQgbW9kaWZ5IG9yIGNvbnRyaWJ1dGUgdG8gb3VyIGZpZWxkIG9mIHVuZGVyc3RhbmRpbmcuIFxuXG5cbiIsIklucHV0VG9rZW5zIjozMjkwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMDo0My4yMDExOTAwMTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk0ODExNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19ERVZfTkJEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWc9MTk0PXNvdXJjZSBcXFwiZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWdcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE5NS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTk2OmNvbmZpZyBCTEtfREVWX05CRFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTctXFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgYmxvY2sgZGV2aWNlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE2OjMwOjQzLjI1MDY3NDIxMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzk0ODIxNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBCbG9jayBEZXZpY2UgTW9kdWxlIENvbnNpZGVyYXRpb25zKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXZSdyZSBsb29raW5nIGF0IGJsb2NrIGRldmljZSBpbXBsZW1lbnRhdGlvbnMsIGFuZCB0aGUgZGlzY3Vzc2lvbiBoaW5nZXMgb24gYEJMS19ERVZfTE9PUGAgYW5kIGBCTEtfREVWX05CRGAuIFRoZXNlIGFyZSBjcnVjaWFsLiBOb3csIG15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGhvdyB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3JzIGFyZSBtYW5hZ2VkLCBhbmQgaG93IHdlIGhhbmRsZSB0aGUgbmV0d29yayBzb2NrZXQuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIGNoYW5nZXMgaW4gdGhlIGxvb3AgZGV2aWNlIGZpbGUgZGVzY3JpcHRvcnMgYW5kIGNsZWFyIG5ldHdvcmsgc29ja2V0cy4gU28sIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbG9vcF9jaGFuZ2VfZmRgIGFuZCBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLCBiZWNhdXNlIHRoZXNlIGFyZSBrZXkuIFRoZXknbGwgdGVsbCBtZSBpZiBhbnkgYXNzdW1wdGlvbnMgaGF2ZSBiZWVuIG1hZGUsIG9yIGlmIHRoZXJlIGlzIHRoZSBuZWVkIHRvIGFkanVzdCBvciBleHRlbmQgdG8gc3VwcG9ydCBhIGdpdmVuIGZ1bmN0aW9uYWxpdHkuIEl0J3MgYWxsIGFib3V0IGVuc3VyaW5nIHRoZSBwbHVtYmluZyBpcyBzb3VuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYwMiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE2OjMwOjQ2LjU5MDE1OTM0OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTc5OTU0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsb29wX2NoYW5nZV9mZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL2xvb3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL2xvb3AuYz05Nj1zdGF0aWMgREVGSU5FX01VVEVYKGxvb3BfdmFsaWRhdGVfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA3LSAqIGlzX2xvb3BfZGV2aWNlKCkgaXMgdHJ1ZSwgd2UgbmVlZCBhIGdsb2JhbCBsb2NrIGZvciBzZXJpYWxpemluZyBjb25jdXJyZW50XFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTA4OiAqIGxvb3BfY29uZmlndXJlKCkvbG9vcF9jaGFuZ2VfZmQoKS9fX2xvb3BfY2xyX2ZkKCkgY2FsbHMuXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA5LSAqL1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmM9NTI3PXN0YXRpYyBpbnQgbG9vcF9jaGVja19iYWNraW5nX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy01MzgtLypcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzo1Mzk6ICogbG9vcF9jaGFuZ2VfZmQgc3dpdGNoZWQgdGhlIGJhY2tpbmcgc3RvcmUgb2YgYSBsb29wYmFjayBkZXZpY2UgdG9cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy01NDAtICogYSBuZXcgZmlsZS4gVGhpcyBpcyB1c2VmdWwgZm9yIG9wZXJhdGluZyBzeXN0ZW0gaW5zdGFsbGVycyB0byBmcmVlIHVwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy01NDUtICovXFxuZHJpdmVycy9ibG9jay9sb29wLmM6NTQ2OnN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldixcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy01NDctXFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgYXJnKVxcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmM9MTIxMj1zdGF0aWMgaW50IGxvb3BfY2xyX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMjE3LVxcdCAqIFNpbmNlIGxvX2lvY3RsKCkgaXMgY2FsbGVkIHdpdGhvdXQgbG9ja3MgaGVsZCwgaXQgaXMgcG9zc2libGUgdGhhdFxcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjEyMTg6XFx0ICogbG9vcF9jb25maWd1cmUoKS9sb29wX2NoYW5nZV9mZCgpIGFuZCBsb29wX2Nscl9mZCgpIHJ1biBpbiBwYXJhbGxlbC5cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMjE5LVxcdCAqXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMjIxLVxcdCAqIG1ha2Ugc3VyZSB0aGF0IGxvb3BfdmFsaWRhdGVfZmlsZSgpIHdpbGwgZmFpbCBpZiB0aGUgXFxcInN0cnVjdCBmaWxlXFxcIlxcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjEyMjI6XFx0ICogd2hpY2ggbG9vcF9jb25maWd1cmUoKS9sb29wX2NoYW5nZV9mZCgpIGZvdW5kIHZpYSBmZ2V0KCkgd2FzIHRoaXNcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMjIzLVxcdCAqIGxvb3AgZGV2aWNlLlxcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmM9MTUzOT1zdGF0aWMgaW50IGxvX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE1NjgtXFx0Y2FzZSBMT09QX0NIQU5HRV9GRDpcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxNTY5OlxcdFxcdHJldHVybiBsb29wX2NoYW5nZV9mZChsbywgYmRldiwgYXJnKTtcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xNTcwLVxcdGNhc2UgTE9PUF9DTFJfRkQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE2OjMwOjQ2LjYzOTk2MDg3N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MzIwMDk4NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91J3ZlIGRlc2NyaWJlZDpcblxuKipBbmFseXppbmcgYG5iZF9jbGVhcl9zb2NrX2lvY3RsYCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIGRvd24gdGhpcyBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIGZ1bmN0aW9uLiBGcm9tIHdoYXQgSSBjYW4gZ2F0aGVyLCBpdCdzIGRlYWxpbmcgd2l0aCBjbGVhbmluZyB1cCBzb2NrZXQgaW50ZXJhY3Rpb25zLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBOZXR3b3JrIEJsb2NrIERldmljZSBkcml2ZXIuIEkgc2VlIGBpb2N0bGAgYmVpbmcgbWVudGlvbmVkLCB3aGljaCBtZWFucyBpdCdzIGxpa2VseSBoYW5kbGluZyBzb21lIGtpbmQgb2YgY29udHJvbCBvcGVyYXRpb24gdmlhIGEgZmlsZSBkZXNjcmlwdG9yLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGlzIGlzIHByb2JhYmx5IGludm9rZWQgd2hlbiBhIGNsaWVudCBkaXNjb25uZWN0cyBvciBhbiBlcnJvciBvY2N1cnMgdG8gY2xlYW4gdXAgYXNzb2NpYXRlZCByZXNvdXJjZXMuIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIHJlbGVhc2luZyBzb2NrZXQgY29ubmVjdGlvbnMsIHBvc3NpYmx5IGRlLWFsbG9jYXRpbmcgc3RydWN0dXJlcyByZWxhdGVkIHRvIHRoZSBzb2NrZXQsIGFuZCBlbnN1cmluZyB0aGVyZSBhcmVuJ3QgbGluZ2VyaW5nIHBvaW50ZXJzIHRoYXQgY291bGQgY2F1c2UgaXNzdWVzLiBJJ2QgZXhwZWN0IGl0IHRvIGdyYWNlZnVsbHkgaGFuZGxlIHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zLCBwZXJoYXBzIGNoZWNraW5nIHJldHVybiB2YWx1ZXMgZnJvbSBzb2NrZXQtcmVsYXRlZCBzeXN0ZW0gY2FsbHMuIEdpdmVuIHRoZSBjb250ZXh0IG9mIGEgYmxvY2sgZGV2aWNlLCBkYXRhIGludGVncml0eSB3b3VsZCBiZSBwYXJhbW91bnQsIHNvIEknZCBiZSBsb29raW5nIGZvciBjYXJlZnVsIGVycm9yIGNoZWNraW5nIGFuZCBwZXJoYXBzIHNvbWUgbG9nZ2luZyB0byB0cmFjayB0aGUgc29ja2V0J3Mgc3RhdHVzLiBJdCdzIGltcG9ydGFudCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGRhbmdsaW5nIGZpbGUgZGVzY3JpcHRvcnMgb3IgbWVtb3J5IGxlYWtzLiBVbHRpbWF0ZWx5LCB0aGUgZ29hbCBoZXJlIGlzIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBlbmQgdXAgd2l0aCBhIG1lc3N5IHNvY2tldCBzdGF0ZSBhZnRlciBhIGNvbm5lY3Rpb24gaGFzIGdvbmUgYXdheSwgbWFraW5nIHN1cmUgaXQgZG9lc24ndCBsZWF2ZSB0aGUgc3lzdGVtIGluIGEgdW5zdGFibGUgc3RhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NzcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMDo1MC41NzE5NzI5MjZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTYwMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5iZF9jbGVhcl9zb2NrX2lvY3RsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9uYmQuYz0xNTg0PXN0YXRpYyBpbnQgbmJkX3N0YXJ0X2RldmljZV9pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjEzLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTYxNDpzdGF0aWMgdm9pZCBuYmRfY2xlYXJfc29ja19pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTYxNS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE2NDE9c3RhdGljIGludCBfX25iZF9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLFxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjUwLVxcdGNhc2UgTkJEX0NMRUFSX1NPQ0s6XFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNjUxOlxcdFxcdG5iZF9jbGVhcl9zb2NrX2lvY3RsKG5iZCk7XFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjUyLVxcdFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMDo1MC42MjA5Mzg0ODZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyNDkwNDgwOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBCbG9jayBEZXZpY2UgSU9DVExzOiBQYXJ0aXRpb24gUmVzY2FubmluZyBhbmQgU29ja2V0IENsZWFyaW5nKipcblxuT2theSwgc28gdGhlc2UgdHdvIGlvY3RscyBvbiBibG9jayBkZXZpY2VzIGFyZSBkZWZpbml0ZWx5IGluIHBsYXkg4oCTIHJlYWNoYWJsZSBhbmQgcmlwZSBmb3IgZnV6emluZy4gVGhlIGNoYW5nZXMgYXJlIGFsbCBhYm91dCBmaXhpbmcgcGFydGl0aW9uIHJlc2Nhbm5pbmcgbG9naWMgKG9yIHBvdGVudGlhbGx5IGRyb3BwaW5nIHBhcnRpdGlvbnMsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZykgd2hlbiBiYWNraW5nIGZpbGVzIGNoYW5nZSBvciBOQkQgc29ja2V0cyBhcmUgY2xlYXJlZC4gRnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIHRoaXMgaXMgYSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgZnV6emluZyBpcyB3YXJyYW50ZWQsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciBkdXJpbmcgdGhlc2UgdHJhbnNpdGlvbnMuXG5cbk15IGZvY3VzIGlzIHplcm9lZCBpbiBvbiBgbG9vcF9jaGFuZ2VfZmRgIGFuZCBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIGFzIHRoZSBwcmltYXJ5IHRhcmdldHMgaGVyZS4gTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzLiBXZSBrbm93IHRoYXQgYEJMS19ERVZfTE9PUGAgYW5kIGBCTEtfREVWX05CRGAgYXJlIGVuYWJsZWQuIEEgcXVpY2sgZG91YmxlLWNoZWNrIHJldmVhbHMgdGhhdCBOQkQgbGVhbnMgb24gTkVULCB3aGljaCBpcyBleHBlY3RlZCwgd2hpbGUgTE9PUCBzZWVtcyBwcmV0dHkgc2VsZi1jb250YWluZWQsIG5vdCByZXF1aXJpbmcgbXVjaCBlbHNlLiBOb3cgSSBoYXZlIHRoZSBmdWxsIHBpY3R1cmUgYW5kIGNhbiBzdGFydCBwbGFubmluZyBteSBmdXp6aW5nIGNhbXBhaWducy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAzMSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMTowMS44Njk5ODkwNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwMTg0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTY9bWVudWNvbmZpZyBCTEtfREVWXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTctXFx0Ym9vbCBcXFwiQmxvY2sgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6ODpcXHRkZXBlbmRzIG9uIEJMT0NLXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTktXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MjI9Y29uZmlnIEJMS19ERVZfRkRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjMtXFx0dHJpc3RhdGUgXFxcIk5vcm1hbCBmbG9wcHkgZGlzayBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNDpcXHRkZXBlbmRzIG9uIEFSQ0hfTUFZX0hBVkVfUENfRkRDXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zNz1jb25maWcgQkxLX0RFVl9GRF9SQVdDTURcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgcmF3IGZsb3BweSBkaXNrIGNvbW1hbmRzIChERVBSRUNBVEVEKVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6Mzk6XFx0ZGVwZW5kcyBvbiBCTEtfREVWX0ZEXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTQwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz01Mz1jb25maWcgQU1JR0FfRkxPUFBZXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTU0LVxcdHRyaXN0YXRlIFxcXCJBbWlnYSBmbG9wcHkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6NTU6XFx0ZGVwZW5kcyBvbiBBTUlHQVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy01Ni1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9NTc9Y29uZmlnIEFUQVJJX0ZMT1BQWVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy01OC1cXHR0cmlzdGF0ZSBcXFwiQXRhcmkgZmxvcHB5IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjU5OlxcdGRlcGVuZHMgb24gQVRBUklcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNjAtXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTYxPWNvbmZpZyBNQUNfRkxPUFBZXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTYyLVxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciBQb3dlck1hYyBmbG9wcHlcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjYzOlxcdGRlcGVuZHMgb24gUFBDX1BNQUMgXFx1MDAyNlxcdTAwMjYgIVBQQ19QTUFDNjRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNjQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTY4PWNvbmZpZyBCTEtfREVWX1NXSU1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNjktXFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIFNXSU0gTWFjaW50b3NoIGZsb3BweVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6NzA6XFx0ZGVwZW5kcyBvbiBNNjhLIFxcdTAwMjZcXHUwMDI2IE1BQyBcXHUwMDI2XFx1MDAyNiAhSElHSE1FTVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy03MS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9NzU9Y29uZmlnIEFNSUdBX1oyUkFNXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTc2LVxcdHRyaXN0YXRlIFxcXCJBbWlnYSBab3JybyBJSSByYW1kaXNrIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjc3OlxcdGRlcGVuZHMgb24gWk9SUk9cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNzgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTg2PWNvbmZpZyBONjRDQVJUXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTg3LVxcdGJvb2wgXFxcIk42NCBjYXJ0IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjg4OlxcdGRlcGVuZHMgb24gTUFDSF9OSU5URU5ETzY0XFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTg5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz05NT1jb25maWcgR0RST01cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctOTYtXFx0dHJpc3RhdGUgXFxcIlNFR0EgRHJlYW1jYXN0IEdELVJPTSBkcml2ZVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6OTc6XFx0ZGVwZW5kcyBvbiBTSF9EUkVBTUNBU1RcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctOTgtXFx0c2VsZWN0IENEUk9NXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MTExPWNvbmZpZyBCTEtfREVWX1VCRFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xMTItXFx0Ym9vbCBcXFwiVmlydHVhbCBibG9jayBkZXZpY2VcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjExMzpcXHRkZXBlbmRzIG9uIFVNTFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xMTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTEyMD1jb25maWcgQkxLX0RFVl9VQkRfU1lOQ1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xMjEtXFx0Ym9vbCBcXFwiQWx3YXlzIGRvIHN5bmNocm9ub3VzIGRpc2sgSU8gZm9yIFVCRFxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTIyOlxcdGRlcGVuZHMgb24gQkxLX0RFVl9VQkRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTIzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xNzk9Y29uZmlnIEJMS19ERVZfTE9PUF9NSU5fQ09VTlRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTgwLVxcdGludCBcXFwiTnVtYmVyIG9mIGxvb3AgZGV2aWNlcyB0byBwcmUtY3JlYXRlIGF0IGluaXQgdGltZVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTgxOlxcdGRlcGVuZHMgb24gQkxLX0RFVl9MT09QXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE4Mi1cXHRkZWZhdWx0IDhcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xOTY9Y29uZmlnIEJMS19ERVZfTkJEXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE5Ny1cXHR0cmlzdGF0ZSBcXFwiTmV0d29yayBibG9jayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTk4OlxcdGRlcGVuZHMgb24gTkVUXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE5OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MjQzPWNvbmZpZyBCTEtfREVWX1JBTV9DT1VOVFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI0NS1cXHRkZWZhdWx0IFxcXCIxNlxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MjQ2OlxcdGRlcGVuZHMgb24gQkxLX0RFVl9SQU1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjQ3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0yNTI9Y29uZmlnIEJMS19ERVZfUkFNX1NJWkVcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjUzLVxcdGludCBcXFwiRGVmYXVsdCBSQU0gZGlzayBzaXplIChrYnl0ZXMpXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNTQ6XFx0ZGVwZW5kcyBvbiBCTEtfREVWX1JBTVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNTUtXFx0ZGVmYXVsdCBcXFwiNDA5NlxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0yNjA9Y29uZmlnIEFUQV9PVkVSX0VUSFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNjEtXFx0dHJpc3RhdGUgXFxcIkFUQSBvdmVyIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjI2MjpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI2Nz1jb25maWcgU1VOVkRDXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI2OC1cXHR0cmlzdGF0ZSBcXFwiU3VuIFZpcnR1YWwgRGlzayBDbGllbnQgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MjY5OlxcdGRlcGVuZHMgb24gU1VOX0xET01TXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI3MC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9Mjc2PWNvbmZpZyBYRU5fQkxLREVWX0ZST05URU5EXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI3Ny1cXHR0cmlzdGF0ZSBcXFwiWGVuIHZpcnR1YWwgYmxvY2sgZGV2aWNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjI3ODpcXHRkZXBlbmRzIG9uIFhFTlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNzktXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9Mjg2PWNvbmZpZyBYRU5fQkxLREVWX0JBQ0tFTkRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjg3LVxcdHRyaXN0YXRlIFxcXCJYZW4gYmxvY2stZGV2aWNlIGJhY2tlbmQgZHJpdmVyXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyODg6XFx0ZGVwZW5kcyBvbiBYRU5fQkFDS0VORFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yODktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTMwNz1jb25maWcgVklSVElPX0JMS1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMDgtXFx0dHJpc3RhdGUgXFxcIlZpcnRpbyBibG9jayBkcml2ZXJcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjMwOTpcXHRkZXBlbmRzIG9uIFZJUlRJT1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMTAtXFx0c2VsZWN0IFNHX1BPT0xcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMTU9Y29uZmlnIEJMS19ERVZfUkJEXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMxNi1cXHR0cmlzdGF0ZSBcXFwiUmFkb3MgYmxvY2sgZGV2aWNlIChSQkQpXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozMTc6XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IEJMT0NLXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMxOC1cXHRzZWxlY3QgQ0VQSF9MSUJcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMzc9Y29uZmlnIEJMS0RFVl9VQkxLX0xFR0FDWV9PUENPREVTXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMzOC1cXHRib29sIFxcXCJTdXBwb3J0IGxlZ2FjeSBjb21tYW5kIG9wY29kZVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzM5OlxcdGRlcGVuZHMgb24gQkxLX0RFVl9VQkxLXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTM0MC1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zNTY9Y29uZmlnIEJMS19ERVZfWk9ORURfTE9PUFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zNTctXFx0dHJpc3RhdGUgXFxcIlpvbmVkIGxvb3BiYWNrIGRldmljZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozNTg6XFx0ZGVwZW5kcyBvbiBCTEtfREVWX1pPTkVEXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTM1OS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE2OjMxOjAxLjkxNzAxMTc2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0NDk4MDExNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgVGhvdWdodCBQcm9jZXNzIG9uIEtlcm5lbCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIHdvcmtpbmcgb24gdGhlc2Uga2VybmVsIGNvbmZpZ3MuIEkgc2VlIHRoYXQgTkJEIGhhcyBhIGRlcGVuZGVuY3kgb24gTkVULCB3aGljaCBtYWtlcyBzZW5zZS4gTE9PUCwgb24gdGhlIG90aGVyIGhhbmQsIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGFueSBzcGVjaWFsIGRlcGVuZGVuY2llcywgYXQgbGVhc3Qgbm90IHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFwcGFyZW50LiBTbywgdGhlIGZpcnN0IHN0ZXAgaXMgdG8gYWRkIGBCTEtfREVWX0xPT1BgIGFuZCBgQkxLX0RFVl9OQkRgIHRvIGBFbmFibGVDb25maWdzYC5cblxuTm93LCBsZXQncyBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQgbWUgc2VlLi4uIEkndmUgZ290IGBsb29wX2NoYW5nZV9mZGAgYW5kIGBuYmRfY2xlYXJfc29ja19pb2N0bGAuXG5cblJpZ2h0LCBib3RoIG9mIHRoZXNlIGFyZSBlaXRoZXIgbm9uLXN0YXRpYyBvciBzdGF0aWMgYnV0IG5vdCBpbmxpbmVkLiBUaGV5J3JlIGVpdGhlciBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgb3IgY2FsbGVkIGZyb20gYSBzd2l0Y2ggc3RhdGVtZW50LCBtZWFuaW5nIHRoZSBjb21waWxlciBpcyBwcm9iYWJseSBub3QgaW5saW5pbmcgdGhlbS4gSGFuZyBvbiwgYWN0dWFsbHkgYGxvb3BfY2hhbmdlX2ZkYCAqaXMqIHN0YXRpYzogYHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgdW5zaWduZWQgaW50IGFyZylgLiBBbmQgaXQncyBjYWxsZWQgZnJvbSB0aGUgYGxvX2lvY3RsYCBzd2l0Y2ggc3RhdGVtZW50LiBTbyBpdCdzIGEgc2VwYXJhdGUgZnVuY3Rpb24sIG5vdCBpbmxpbmVkLiBTYW1lIGdvZXMgZm9yIGBuYmRfY2xlYXJfc29ja19pb2N0bGA6IGBzdGF0aWMgdm9pZCBuYmRfY2xlYXJfc29ja19pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKWAsIGNhbGxlZCBmcm9tIGBfX25iZF9pb2N0bGAncyBzd2l0Y2ggc3RhdGVtZW50IGFuZCBub3QgaW5saW5lZC5cblxuT2theSwgYnV0IGhvbGQgb24gLSBzaG91bGQgSSBjaGVjayBpZiB0aGUgY29tcGlsZXIgbWlnaHQgYmUgaW5saW5pbmcgdGhlbSBhbnl3YXk/IEZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBzd2l0Y2ggc3RhdGVtZW50cyBjYW4gc29tZXRpbWVzIGJlIGlubGluZWQgaWYgdGhleSdyZSBzbWFsbCwgYnV0IGBsb29wX2NoYW5nZV9mZGAgaXMgcHJldHR5IGxhcmdlLCBzbyB1bmxpa2VseS4gYG5iZF9jbGVhcl9zb2NrX2lvY3RsYCBpcyBzbWFsbCB0aG91Z2g6XG5cbmBgYGNcbnN0YXRpYyB2b2lkIG5iZF9jbGVhcl9zb2NrX2lvY3RsKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG57XG5cdG5iZF9jbGVhcl9zb2NrKG5iZCk7XG5cdGRpc2tfZm9yY2VfbWVkaWFfY2hhbmdlKG5iZC1cdTAwM2VkaXNrKTtcblx0bmJkX2JkZXZfcmVzZXQobmJkKTtcblx0Lypcblx0ICogRHJvcCB0aGUgcGFydGl0aW9ucyBvZiB0aGUgZGlzY29ubmVjdGVkIGRldmljZSBvbiB0aGUgbmV4dCBvcGVuLlxuXHQgKiBUaGV5IGNhbiBleGlzdCBldmVuIHdpdGggbWF4X3BhcnQgemVybyBhcyB0aGV5IG1heSBoYXZlIGJlZW4gYWRkZWRcblx0ICogbWFudWFsbHkgd2l0aCBCTEtQRy4gRHJvcHBpbmcgdGhlbSBoZXJlIGlzIG5vdCBwb3NzaWJsZSBhcyB0aGF0XG5cdCAqIG5lZWRzIG9wZW5fbXV0ZXgsIHdoaWNoIG5iZF9vcGVuKCkgYWNxdWlyZXMgdW5kZXIgY29uZmlnX2xvY2suXG5cdCAqL1xuXHRzZXRfYml0KEdEX05FRURfUEFSVF9TQ0FOLCBcdTAwMjZuYmQtXHUwMDNlZGlzay1cdTAwM2VzdGF0ZSk7XG5cdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTkJEX1JUX0hBU19DT05GSUdfUkVGLFxuXHRcdFx0ICAgICAgIFx1MDAyNm5iZC1cdTAwM2Vjb25maWctXHUwMDNlcnVudGltZV9mbGFncykpXG5cdFx0bmJkX2NvbmZpZ19wdXQobmJkKTtcbn1cbmBgYFxuXG5JdCAqbWlnaHQqIGJlIGlubGluZWQgaW50byBgX19uYmRfaW9jdGxgLiBUbyBiZSBhYnNvbHV0ZWx5IHNhZmUsIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gYWRkIGBfX25iZF9pb2N0bGAgYW5kIGBsb19pb2N0bGAgdG8gYEZvY3VzU3ltYm9sc2AuIE9yLCBldmVuIGJldHRlciwganVzdCBhZGQgdGhlIGV4cG9ydGVkIGBuYmRfaW9jdGxgIGFuZCBgbG9faW9jdGxgIHN5bWJvbHMgdGhlbXNlbHZlcy4gVGhhdCB3YXkgSSdtIHN1cmUgSSdtIGNhcHR1cmluZyBhbGwgdGhlIHJlbGV2YW50IGNvZGUuIEdvb2QsIEkgdGhpbmsgSSd2ZSBjb3ZlcmVkIGFsbCB0aGUgYmFzZXMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI3NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMToxMS4zNjY4MTUwOTdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MjYxMDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5iZF9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL25iZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmM9MTYzMT1zdGF0aWMgdm9pZCBuYmRfc2V0X2NtZF90aW1lb3V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHU2NCB0aW1lb3V0KVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjQwLS8qIE11c3QgYmUgY2FsbGVkIHdpdGggY29uZmlnX2xvY2sgaGVsZCAqL1xcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTY0MTpzdGF0aWMgaW50IF9fbmJkX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjQyLVxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTY4Ny1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE2ODg6c3RhdGljIGludCBuYmRfaW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTY4OS1cXHRcXHQgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzEwLVxcdCAgICAoY21kID09IE5CRF9ESVNDT05ORUNUIHx8IGNtZCA9PSBOQkRfQ0xFQVJfU09DSykpXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNzExOlxcdFxcdGVycm9yID0gX19uYmRfaW9jdGwoYmRldiwgbmJkLCBjbWQsIGFyZyk7XFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzEyLVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM9MTgxNT1zdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIG5iZF9mb3BzID1cXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTgxOS1cXHQucmVsZWFzZSA9XFx0bmJkX3JlbGVhc2UsXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxODIwOlxcdC5pb2N0bCA9XFx0bmJkX2lvY3RsLFxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTgyMTpcXHQuY29tcGF0X2lvY3RsID1cXHRuYmRfaW9jdGwsXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xODIyLVxcdC5mcmVlX2Rpc2sgPVxcdG5iZF9mcmVlX2Rpc2ssXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE2OjMxOjExLjQyMTA4MTc5N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzU4MjIxMTA0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQmxvY2sgRGV2aWNlIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoLCBhbmQgSSdtIGFkZGluZyBgbG9vcF9jaGFuZ2VfZmRgLCBgbG9faW9jdGxgLCBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLCBhbmQgYF9fbmJkX2lvY3RsYCB0byBteSBGb2N1c1N5bWJvbHMgbGlzdC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCByZWFsbHkuIFRoZSBjb3JlIGlzIHRoZSBtb2RpZmljYXRpb24gb2YgdGhlIHBhcnRpdGlvbiByZXNjYW5uaW5nIGxvZ2ljIGZvciBsb29wIGFuZCBuYmQgYmxvY2sgZGV2aWNlcy4gVGhlIHBhdGNoIGRlYWxzIHdpdGggc2l0dWF0aW9ucyB3aGVyZSB0aGUgdW5kZXJseWluZyBmaWxlIG9yIHNvY2tldCB1c2VkIGJ5IHRoZXNlIHZpcnR1YWwgYmxvY2sgZGV2aWNlcyBpcyBjaGFuZ2VkIG9yIGNsZWFyZWQuIFRoZXNlIGFjdGlvbnMgYXJlIHRyaWdnZXJlZCB2aWEgaW9jdGxzIG9uIHRob3NlIHZlcnkgc2FtZSB2aXJ0dWFsIGJsb2NrIGRldmljZXMsIHdoaWNoIG1ha2VzIHRoZW0gcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZywgd2hpY2ggaXMgd2h5IGBXb3J0aEZ1enppbmdgIGlzIHNldCB0byBgdHJ1ZWAuIEknbGwgd2FudCB0byBkaWcgaW4gdG8gdGhvc2UgaW9jdGxzLCBlc3BlY2lhbGx5IGBsb19pb2N0bGAsIGBuYmRfY2xlYXJfc29ja19pb2N0bGAgYW5kIGBfX25iZF9pb2N0bGAsIGFuZCBzZWUgd2hhdCB0aGUgY29kZSBkb2VzIHdpdGggdGhlIGJhY2tpbmcgZmlsZXMgb3Igc29ja2V0cy4gQWxzbywgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB0aGF0IEknbSBkZWFsaW5nIHdpdGggYEJMS19ERVZfTE9PUGAgYW5kIGBCTEtfREVWX05CRGAsIGFuZCB0aG9zZSBjb25maWd1cmF0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gYmUgcmVsZXZhbnQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBzZWUgd2hhdCBjb21lcyBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDA5LCJPdXRwdXRUb2tlbnMiOjEyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMToyNS4wMDMyOTU0ODFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTkxMDE3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9MT09QXCIsXG4gICAgXCJCTEtfREVWX05CRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxvb3BfY2hhbmdlX2ZkXCIsXG4gICAgXCJsb19pb2N0bFwiLFxuICAgIFwibmJkX2NsZWFyX3NvY2tfaW9jdGxcIixcbiAgICBcIl9fbmJkX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFydGl0aW9uIHJlc2Nhbm5pbmcgbG9naWMgZm9yIGxvb3AgYW5kIG5iZCBibG9jayBkZXZpY2VzIHdoZW4gdGhlaXIgYmFja2luZyBmaWxlcyBvciBzb2NrZXRzIGFyZSBjaGFuZ2VkL2NsZWFyZWQuIFRoZXNlIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSB2aWEgaW9jdGxzIG9uIHZpcnR1YWwgYmxvY2sgZGV2aWNlcyBhbmQgaGF2ZSBmdW5jdGlvbmFsIGltcGFjdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX0xPT1BcIixcbiAgICBcIkJMS19ERVZfTkJEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibG9vcF9jaGFuZ2VfZmRcIixcbiAgICBcImxvX2lvY3RsXCIsXG4gICAgXCJuYmRfY2xlYXJfc29ja19pb2N0bFwiLFxuICAgIFwiX19uYmRfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYXJ0aXRpb24gcmVzY2FubmluZyBsb2dpYyBmb3IgbG9vcCBhbmQgbmJkIGJsb2NrIGRldmljZXMgd2hlbiB0aGVpciBiYWNraW5nIGZpbGVzIG9yIHNvY2tldHMgYXJlIGNoYW5nZWQvY2xlYXJlZC4gVGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSBpb2N0bHMgb24gdmlydHVhbCBibG9jayBkZXZpY2VzIGFuZCBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMToyNS4wODUyMTE4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDA5Mzg4ODIxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE2OjMxOjI1LjA4NTY1NjgyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE0MDkzNDM4NDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYXJ0aXRpb24gc2Nhbm5pbmcgbG9naWMgaW4gdGhlIGxvb3AgYW5kIG5iZCBibG9jayBkcml2ZXJzLiBJbiBgbG9vcF9jaGFuZ2VfZmRgLCBpdCB1bmNvbmRpdGlvbmFsbHkgY2FsbHMgYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnNgIHJhdGhlciB0aGFuIGNoZWNraW5nIGBMT19GTEFHU19QQVJUU0NBTmAsIHRvIGVuc3VyZSBtYW51YWxseSBhZGRlZCBwYXJ0aXRpb25zIGFyZSBkcm9wcGVkLiBJbiBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLCBpdCBzZXRzIGBHRF9ORUVEX1BBUlRfU0NBTmAgdG8gZHJvcCBwYXJ0aXRpb25zIG9uIHRoZSBuZXh0IG9wZW4uIFRoZXNlIGNoYW5nZXMgb25seSBhbHRlciBjb250cm9sIGZsb3cgYW5kIHN0YXRlIGZsYWdzIHJlbGF0ZWQgdG8gYmxvY2sgZGV2aWNlIHBhcnRpdGlvbiBtYW5hZ2VtZW50LiBUaGV5IGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdGFjaywgaGVhcCwgb3IgcGFkZGluZykgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSByZWxhdGVkIHRvIG9iamVjdCBsaWZldGltZXMgKGUuZy4sIHVzZS1hZnRlci1mcmVlKSBvciBsb2NraW5nLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzJjZjE1YmQyOWZjODAyYTUzYjY4YWMzYzM2M2QxZjQ2ZTJiYTZiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDE2OjMwOjI2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuaW5kZXggNmYxMjk3NjAzNWIwOS4uODk5MzVjZmM1OTFmNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuQEAgLTU1MCw3ICs1NTAsNiBAQCBzdGF0aWMgaW50IGxvb3BfY2hhbmdlX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsXG4gXHRzdHJ1Y3QgZmlsZSAqb2xkX2ZpbGU7XG4gXHR1bnNpZ25lZCBpbnQgbWVtZmxhZ3M7XG4gXHRpbnQgZXJyb3I7XG4tXHRib29sIHBhcnRzY2FuO1xuIFx0Ym9vbCBpc19sb29wO1xuIFxuIFx0aWYgKCFmaWxlKVxuQEAgLTYwNCw3ICs2MDMsNiBAQCBzdGF0aWMgaW50IGxvb3BfY2hhbmdlX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsXG4gXHRsb29wX2Fzc2lnbl9iYWNraW5nX2ZpbGUobG8sIGZpbGUpO1xuIFx0bG9vcF91cGRhdGVfZGlvKGxvKTtcbiBcdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShsby1cdTAwM2Vsb19xdWV1ZSwgbWVtZmxhZ3MpO1xuLVx0cGFydHNjYW4gPSBsby1cdTAwM2Vsb19mbGFncyBcdTAwMjYgTE9fRkxBR1NfUEFSVFNDQU47XG4gXHRsb29wX2dsb2JhbF91bmxvY2sobG8sIGlzX2xvb3ApO1xuIFxuIFx0LypcbkBAIC02MjIsOCArNjIwLDEyIEBAIHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldixcbiBcdCAqL1xuIFx0ZnB1dChvbGRfZmlsZSk7XG4gXHRkZXZfc2V0X3VldmVudF9zdXBwcmVzcyhkaXNrX3RvX2Rldihsby1cdTAwM2Vsb19kaXNrKSwgMCk7XG4tXHRpZiAocGFydHNjYW4pXG4tXHRcdGxvb3BfcmVyZWFkX3BhcnRpdGlvbnMobG8pO1xuK1x0LypcbitcdCAqIFJlc2NhbiBvciwgd2l0aG91dCBMT19GTEFHU19QQVJUU0NBTiwganVzdCBkcm9wIHRoZSBwYXJ0aXRpb25zIG9mXG4rXHQgKiB0aGUgb2xkIGJhY2tpbmcgZmlsZS4gVGhleSBjYW4gZXhpc3Qgd2l0aG91dCBMT19GTEFHU19QQVJUU0NBTiBhc1xuK1x0ICogdGhleSBtYXkgaGF2ZSBiZWVuIGFkZGVkIG1hbnVhbGx5IHdpdGggQkxLUEcuXG4rXHQgKi9cbitcdGxvb3BfcmVyZWFkX3BhcnRpdGlvbnMobG8pO1xuIFxuIFx0ZXJyb3IgPSAwO1xuIGRvbmU6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9uYmQuYyBiL2RyaXZlcnMvYmxvY2svbmJkLmNcbmluZGV4IGZmY2U1MTliZjAwODcuLjA5YjRhZDcwYTVkN2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL25iZC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL25iZC5jXG5AQCAtMTYxNiw2ICsxNjE2LDEzIEBAIHN0YXRpYyB2b2lkIG5iZF9jbGVhcl9zb2NrX2lvY3RsKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG4gXHRuYmRfY2xlYXJfc29jayhuYmQpO1xuIFx0ZGlza19mb3JjZV9tZWRpYV9jaGFuZ2UobmJkLVx1MDAzZWRpc2spO1xuIFx0bmJkX2JkZXZfcmVzZXQobmJkKTtcbitcdC8qXG4rXHQgKiBEcm9wIHRoZSBwYXJ0aXRpb25zIG9mIHRoZSBkaXNjb25uZWN0ZWQgZGV2aWNlIG9uIHRoZSBuZXh0IG9wZW4uXG4rXHQgKiBUaGV5IGNhbiBleGlzdCBldmVuIHdpdGggbWF4X3BhcnQgemVybyBhcyB0aGV5IG1heSBoYXZlIGJlZW4gYWRkZWRcbitcdCAqIG1hbnVhbGx5IHdpdGggQkxLUEcuIERyb3BwaW5nIHRoZW0gaGVyZSBpcyBub3QgcG9zc2libGUgYXMgdGhhdFxuK1x0ICogbmVlZHMgb3Blbl9tdXRleCwgd2hpY2ggbmJkX29wZW4oKSBhY3F1aXJlcyB1bmRlciBjb25maWdfbG9jay5cbitcdCAqL1xuK1x0c2V0X2JpdChHRF9ORUVEX1BBUlRfU0NBTiwgXHUwMDI2bmJkLVx1MDAzZWRpc2stXHUwMDNlc3RhdGUpO1xuIFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOQkRfUlRfSEFTX0NPTkZJR19SRUYsXG4gXHRcdFx0ICAgICAgIFx1MDAyNm5iZC1cdTAwM2Vjb25maWctXHUwMDNlcnVudGltZV9mbGFncykpXG4gXHRcdG5iZF9jb25maWdfcHV0KG5iZCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMToyNS4wODU2NTc4MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDA5MzQxNjkzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBBc3Nlc3NtZW50OiBObyBOZWVkIEhlcmUqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoLCBmb2N1c2luZyBvbiB0aGUgY2hhbmdlcyB0byBgZHJpdmVycy9ibG9jay9sb29wLmNgIGFuZCBgZHJpdmVycy9ibG9jay9uYmQuY2AuIFRoZSBjb3JlIG9mIHRoZSBtb2RpZmljYXRpb24gaXMgYWJvdXQgaG93IHBhcnRpdGlvbiBzY2FubmluZyBpcyB0cmlnZ2VyZWQuIEluIGBsb29wLmNgLCB0aGV5J3ZlIHJlbW92ZWQgdGhlIGNvbmRpdGlvbmFsIGNoZWNrIGJhc2VkIG9uIGBMT19GTEFHU19QQVJUU0NBTmAgYW5kIGFyZSBub3cgY2FsbGluZyBgbG9vcF9yZXJlYWRfcGFydGl0aW9ucyhsbylgIHVuY29uZGl0aW9uYWxseS4gT3ZlciBpbiBgbmJkLmNgLCB0aGV5J3JlIGFkZGluZyBgc2V0X2JpdChHRF9ORUVEX1BBUlRfU0NBTiwgXHUwMDI2bmJkLVx1MDAzZWRpc2stXHUwMDNlc3RhdGUpYCBpbiBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzLCBcIkNvdWxkIHRoaXMgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz9cIiBJIHdlbnQgdGhyb3VnaCB0aGUgY2hhbmdlcyBzdGVwLWJ5LXN0ZXAuIFRoZXkncmUgcHVyZWx5IGxvZ2ljIGNoYW5nZXM6IHVuY29uZGl0aW9uYWwgY2FsbCB0byBgbG9vcF9yZXJlYWRfcGFydGl0aW9uc2AgYW5kIHNldHRpbmcgYSBmbGFnLiBOb3RoaW5nIG5ldyBpcyBiZWluZyBhbGxvY2F0ZWQuIE5vIG5ldyBmaWVsZHMgYXJlIGJlaW5nIGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gTm8gZGF0YSBpcyBiZWluZyByZWFkIG9yIGNvcGllZCB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIG9ubHkgdGhpbmdzIGJlaW5nIGNoYW5nZWQgcmVsYXRlIHRvIGhvdyB3ZSByZXNjYW4gcGFydGl0aW9ucy5cblxuU28sIEkgZG9uJ3Qgc2VlIGFueSBuZWVkIGZvciBLTVNBTiBoZXJlLiBLQVNBTiBpcyB0aGUgcmlnaHQgdG9vbCB0byBjYXRjaCBtZW1vcnkgY29ycnVwdGlvbiBidWdzIHRoYXQgY291bGQgaGFwcGVuIGJlY2F1c2Ugb2YgcGFydGl0aW9uIHJlc2Nhbm5pbmcg4oCTIHN0dWZmIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJIGRvdWJsZS1jaGVja2VkIHdoYXQgYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnNgIGFuZCBgR0RfTkVFRF9QQVJUX1NDQU5gIGFjdHVhbGx5ICpkbyouIGBsb29wX3JlcmVhZF9wYXJ0aXRpb25zYCBzaW1wbHkgdHJpZ2dlcnMgYSBwYXJ0aXRpb24gcmVzY2FuLCBhbmQgYEdEX05FRURfUEFSVF9TQ0FOYCBpcyBqdXN0IGEgYmxvY2stbGF5ZXIgZmxhZyB0byBzaWduYWwgdGhlIG5lZWQgZm9yIGEgcmVzY2FuLiBTdGlsbCBub3RoaW5nIHBvaW50aW5nIHRvIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlLlxuXG5UaGVyZWZvcmUsIG5vLCB0aGlzIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlza3Mgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEknbSBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4MCwiT3V0cHV0VG9rZW5zIjoyMjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMTozOS4xNzkwNzgwOThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBhcnRpdGlvbiBzY2FubmluZyBsb2dpYyBpbiB0aGUgbG9vcCBhbmQgbmJkIGJsb2NrIGRyaXZlcnMuIEluIGBsb29wX2NoYW5nZV9mZGAsIGl0IHVuY29uZGl0aW9uYWxseSBjYWxscyBgbG9vcF9yZXJlYWRfcGFydGl0aW9uc2AgcmF0aGVyIHRoYW4gY2hlY2tpbmcgYExPX0ZMQUdTX1BBUlRTQ0FOYCwgdG8gZW5zdXJlIG1hbnVhbGx5IGFkZGVkIHBhcnRpdGlvbnMgYXJlIGRyb3BwZWQuIEluIGBuYmRfY2xlYXJfc29ja19pb2N0bGAsIGl0IHNldHMgYEdEX05FRURfUEFSVF9TQ0FOYCB0byBkcm9wIHBhcnRpdGlvbnMgb24gdGhlIG5leHQgb3Blbi4gVGhlc2UgY2hhbmdlcyBvbmx5IGFsdGVyIGNvbnRyb2wgZmxvdyBhbmQgc3RhdGUgZmxhZ3MgcmVsYXRlZCB0byBibG9jayBkZXZpY2UgcGFydGl0aW9uIG1hbmFnZW1lbnQuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrLCBoZWFwLCBvciBwYWRkaW5nKSBvciBjcmVhdGluZyBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmV0aW1lcyAoZS5nLiwgdXNlLWFmdGVyLWZyZWUpIG9yIGxvY2tpbmcsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYXJ0aXRpb24gc2Nhbm5pbmcgbG9naWMgaW4gdGhlIGxvb3AgYW5kIG5iZCBibG9jayBkcml2ZXJzLiBJbiBgbG9vcF9jaGFuZ2VfZmRgLCBpdCB1bmNvbmRpdGlvbmFsbHkgY2FsbHMgYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnNgIHJhdGhlciB0aGFuIGNoZWNraW5nIGBMT19GTEFHU19QQVJUU0NBTmAsIHRvIGVuc3VyZSBtYW51YWxseSBhZGRlZCBwYXJ0aXRpb25zIGFyZSBkcm9wcGVkLiBJbiBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLCBpdCBzZXRzIGBHRF9ORUVEX1BBUlRfU0NBTmAgdG8gZHJvcCBwYXJ0aXRpb25zIG9uIHRoZSBuZXh0IG9wZW4uIFRoZXNlIGNoYW5nZXMgb25seSBhbHRlciBjb250cm9sIGZsb3cgYW5kIHN0YXRlIGZsYWdzIHJlbGF0ZWQgdG8gYmxvY2sgZGV2aWNlIHBhcnRpdGlvbiBtYW5hZ2VtZW50LiBUaGV5IGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdGFjaywgaGVhcCwgb3IgcGFkZGluZykgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSByZWxhdGVkIHRvIG9iamVjdCBsaWZldGltZXMgKGUuZy4sIHVzZS1hZnRlci1mcmVlKSBvciBsb2NraW5nLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtx8l9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-24 16:29:18 +0000 UTC FinishedAt: 2026-08-24 16:31:41 +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": "0a0d1d55dad570724bf8c7ea83409639cfb4be9b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_LOOP", "BLK_DEV_NBD" ], "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": "0a0d1d55dad570724bf8c7ea83409639cfb4be9b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_LOOP", "BLK_DEV_NBD" ], "series_id": "15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "loop_change_fd", "lo_ioctl", "nbd_clear_sock_ioctl", "__nbd_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTE9PUCYjMzQ7LAogICAgJiMzNDtCTEtfREVWX05CRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2xvb3BfY2hhbmdlX2ZkJiMzNDssCiAgICAmIzM0O2xvX2lvY3RsJiMzNDssCiAgICAmIzM0O25iZF9jbGVhcl9zb2NrX2lvY3RsJiMzNDssCiAgICAmIzM0O19fbmJkX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGFydGl0aW9uIHNjYW5uaW5nIGxvZ2ljIGluIHRoZSBsb29wIGFuZCBuYmQgYmxvY2sgZHJpdmVycy4gSW4gYGxvb3BfY2hhbmdlX2ZkYCwgaXQgdW5jb25kaXRpb25hbGx5IGNhbGxzIGBsb29wX3JlcmVhZF9wYXJ0aXRpb25zYCByYXRoZXIgdGhhbiBjaGVja2luZyBgTE9fRkxBR1NfUEFSVFNDQU5gLCB0byBlbnN1cmUgbWFudWFsbHkgYWRkZWQgcGFydGl0aW9ucyBhcmUgZHJvcHBlZC4gSW4gYG5iZF9jbGVhcl9zb2NrX2lvY3RsYCwgaXQgc2V0cyBgR0RfTkVFRF9QQVJUX1NDQU5gIHRvIGRyb3AgcGFydGl0aW9ucyBvbiB0aGUgbmV4dCBvcGVuLiBUaGVzZSBjaGFuZ2VzIG9ubHkgYWx0ZXIgY29udHJvbCBmbG93IGFuZCBzdGF0ZSBmbGFncyByZWxhdGVkIHRvIGJsb2NrIGRldmljZSBwYXJ0aXRpb24gbWFuYWdlbWVudC4gVGhleSBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2ssIGhlYXAsIG9yIHBhZGRpbmcpIG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgd291bGQgYmUgcmVsYXRlZCB0byBvYmplY3QgbGlmZXRpbWVzIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSkgb3IgbG9ja2luZywgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTiBhbmQgTE9DS0RFUC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYXJ0aXRpb24gcmVzY2FubmluZyBsb2dpYyBmb3IgbG9vcCBhbmQgbmJkIGJsb2NrIGRldmljZXMgd2hlbiB0aGVpciBiYWNraW5nIGZpbGVzIG9yIHNvY2tldHMgYXJlIGNoYW5nZWQvY2xlYXJlZC4gVGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSBpb2N0bHMgb24gdmlydHVhbCBibG9jayBkZXZpY2VzIGFuZCBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzJjZjE1YmQyOWZjODAyYTUzYjY4YWMzYzM2M2QxZjQ2ZTJiYTZiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDE2OjMwOjI2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmNcbmluZGV4IDZmMTI5NzYwMzViMDkuLjg5OTM1Y2ZjNTkxZjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9sb29wLmNcbkBAIC01NTAsNyAmIzQzOzU1MCw2IEBAIHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldixcbiBcdHN0cnVjdCBmaWxlICpvbGRfZmlsZTtcbiBcdHVuc2lnbmVkIGludCBtZW1mbGFncztcbiBcdGludCBlcnJvcjtcbi1cdGJvb2wgcGFydHNjYW47XG4gXHRib29sIGlzX2xvb3A7XG4gXG4gXHRpZiAoIWZpbGUpXG5AQCAtNjA0LDcgJiM0Mzs2MDMsNiBAQCBzdGF0aWMgaW50IGxvb3BfY2hhbmdlX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsXG4gXHRsb29wX2Fzc2lnbl9iYWNraW5nX2ZpbGUobG8sIGZpbGUpO1xuIFx0bG9vcF91cGRhdGVfZGlvKGxvKTtcbiBcdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShsby1cdTAwM2Vsb19xdWV1ZSwgbWVtZmxhZ3MpO1xuLVx0cGFydHNjYW4gPSBsby1cdTAwM2Vsb19mbGFncyBcdTAwMjYgTE9fRkxBR1NfUEFSVFNDQU47XG4gXHRsb29wX2dsb2JhbF91bmxvY2sobG8sIGlzX2xvb3ApO1xuIFxuIFx0LypcbkBAIC02MjIsOCAmIzQzOzYyMCwxMiBAQCBzdGF0aWMgaW50IGxvb3BfY2hhbmdlX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsXG4gXHQgKi9cbiBcdGZwdXQob2xkX2ZpbGUpO1xuIFx0ZGV2X3NldF91ZXZlbnRfc3VwcHJlc3MoZGlza190b19kZXYobG8tXHUwMDNlbG9fZGlzayksIDApO1xuLVx0aWYgKHBhcnRzY2FuKVxuLVx0XHRsb29wX3JlcmVhZF9wYXJ0aXRpb25zKGxvKTtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFJlc2NhbiBvciwgd2l0aG91dCBMT19GTEFHU19QQVJUU0NBTiwganVzdCBkcm9wIHRoZSBwYXJ0aXRpb25zIG9mXG4mIzQzO1x0ICogdGhlIG9sZCBiYWNraW5nIGZpbGUuIFRoZXkgY2FuIGV4aXN0IHdpdGhvdXQgTE9fRkxBR1NfUEFSVFNDQU4gYXNcbiYjNDM7XHQgKiB0aGV5IG1heSBoYXZlIGJlZW4gYWRkZWQgbWFudWFsbHkgd2l0aCBCTEtQRy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRsb29wX3JlcmVhZF9wYXJ0aXRpb25zKGxvKTtcbiBcbiBcdGVycm9yID0gMDtcbiBkb25lOlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbmJkLmMgYi9kcml2ZXJzL2Jsb2NrL25iZC5jXG5pbmRleCBmZmNlNTE5YmYwMDg3Li4wOWI0YWQ3MGE1ZDdkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9uYmQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9uYmQuY1xuQEAgLTE2MTYsNiAmIzQzOzE2MTYsMTMgQEAgc3RhdGljIHZvaWQgbmJkX2NsZWFyX3NvY2tfaW9jdGwoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbiBcdG5iZF9jbGVhcl9zb2NrKG5iZCk7XG4gXHRkaXNrX2ZvcmNlX21lZGlhX2NoYW5nZShuYmQtXHUwMDNlZGlzayk7XG4gXHRuYmRfYmRldl9yZXNldChuYmQpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogRHJvcCB0aGUgcGFydGl0aW9ucyBvZiB0aGUgZGlzY29ubmVjdGVkIGRldmljZSBvbiB0aGUgbmV4dCBvcGVuLlxuJiM0MztcdCAqIFRoZXkgY2FuIGV4aXN0IGV2ZW4gd2l0aCBtYXhfcGFydCB6ZXJvIGFzIHRoZXkgbWF5IGhhdmUgYmVlbiBhZGRlZFxuJiM0MztcdCAqIG1hbnVhbGx5IHdpdGggQkxLUEcuIERyb3BwaW5nIHRoZW0gaGVyZSBpcyBub3QgcG9zc2libGUgYXMgdGhhdFxuJiM0MztcdCAqIG5lZWRzIG9wZW5fbXV0ZXgsIHdoaWNoIG5iZF9vcGVuKCkgYWNxdWlyZXMgdW5kZXIgY29uZmlnX2xvY2suXG4mIzQzO1x0ICovXG4mIzQzO1x0c2V0X2JpdChHRF9ORUVEX1BBUlRfU0NBTiwgXHUwMDI2bmJkLVx1MDAzZWRpc2stXHUwMDNlc3RhdGUpO1xuIFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOQkRfUlRfSEFTX0NPTkZJR19SRUYsXG4gXHRcdFx0ICAgICAgIFx1MDAyNm5iZC1cdTAwM2Vjb25maWctXHUwMDNlcnVudGltZV9mbGFncykpXG4gXHRcdG5iZF9jb25maWdfcHV0KG5iZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTY6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTE9PUCYjMzQ7LAogICAgJiMzNDtCTEtfREVWX05CRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2xvb3BfY2hhbmdlX2ZkJiMzNDssCiAgICAmIzM0O2xvX2lvY3RsJiMzNDssCiAgICAmIzM0O25iZF9jbGVhcl9zb2NrX2lvY3RsJiMzNDssCiAgICAmIzM0O19fbmJkX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhcnRpdGlvbiByZXNjYW5uaW5nIGxvZ2ljIGZvciBsb29wIGFuZCBuYmQgYmxvY2sgZGV2aWNlcyB3aGVuIHRoZWlyIGJhY2tpbmcgZmlsZXMgb3Igc29ja2V0cyBhcmUgY2hhbmdlZC9jbGVhcmVkLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIGlvY3RscyBvbiB2aXJ0dWFsIGJsb2NrIGRldmljZXMgYW5kIGhhdmUgZnVuY3Rpb25hbCBpbXBhY3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzMmNmMTViZDI5ZmM4MDJhNTNiNjhhYzNjMzYzZDFmNDZlMmJhNmIyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMjQgMTY6MzA6MjYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYyBiL2RyaXZlcnMvYmxvY2svbG9vcC5jCmluZGV4IDZmMTI5NzYwMzViMDkuLjg5OTM1Y2ZjNTkxZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbG9vcC5jCkBAIC01NTAsNyAmIzQzOzU1MCw2IEBAIHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKIAlzdHJ1Y3QgZmlsZSAqb2xkX2ZpbGU7CiAJdW5zaWduZWQgaW50IG1lbWZsYWdzOwogCWludCBlcnJvcjsKLQlib29sIHBhcnRzY2FuOwogCWJvb2wgaXNfbG9vcDsKIAogCWlmICghZmlsZSkKQEAgLTYwNCw3ICYjNDM7NjAzLDYgQEAgc3RhdGljIGludCBsb29wX2NoYW5nZV9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LAogCWxvb3BfYXNzaWduX2JhY2tpbmdfZmlsZShsbywgZmlsZSk7CiAJbG9vcF91cGRhdGVfZGlvKGxvKTsKIAlibGtfbXFfdW5mcmVlemVfcXVldWUobG8tJmd0O2xvX3F1ZXVlLCBtZW1mbGFncyk7Ci0JcGFydHNjYW4gPSBsby0mZ3Q7bG9fZmxhZ3MgJmFtcDsgTE9fRkxBR1NfUEFSVFNDQU47CiAJbG9vcF9nbG9iYWxfdW5sb2NrKGxvLCBpc19sb29wKTsKIAogCS8qCkBAIC02MjIsOCAmIzQzOzYyMCwxMiBAQCBzdGF0aWMgaW50IGxvb3BfY2hhbmdlX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsCiAJICovCiAJZnB1dChvbGRfZmlsZSk7CiAJZGV2X3NldF91ZXZlbnRfc3VwcHJlc3MoZGlza190b19kZXYobG8tJmd0O2xvX2Rpc2spLCAwKTsKLQlpZiAocGFydHNjYW4pCi0JCWxvb3BfcmVyZWFkX3BhcnRpdGlvbnMobG8pOwomIzQzOwkvKgomIzQzOwkgKiBSZXNjYW4gb3IsIHdpdGhvdXQgTE9fRkxBR1NfUEFSVFNDQU4sIGp1c3QgZHJvcCB0aGUgcGFydGl0aW9ucyBvZgomIzQzOwkgKiB0aGUgb2xkIGJhY2tpbmcgZmlsZS4gVGhleSBjYW4gZXhpc3Qgd2l0aG91dCBMT19GTEFHU19QQVJUU0NBTiBhcwomIzQzOwkgKiB0aGV5IG1heSBoYXZlIGJlZW4gYWRkZWQgbWFudWFsbHkgd2l0aCBCTEtQRy4KJiM0MzsJICovCiYjNDM7CWxvb3BfcmVyZWFkX3BhcnRpdGlvbnMobG8pOwogCiAJZXJyb3IgPSAwOwogZG9uZToKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbmJkLmMgYi9kcml2ZXJzL2Jsb2NrL25iZC5jCmluZGV4IGZmY2U1MTliZjAwODcuLjA5YjRhZDcwYTVkN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbmJkLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9uYmQuYwpAQCAtMTYxNiw2ICYjNDM7MTYxNiwxMyBAQCBzdGF0aWMgdm9pZCBuYmRfY2xlYXJfc29ja19pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKQogCW5iZF9jbGVhcl9zb2NrKG5iZCk7CiAJZGlza19mb3JjZV9tZWRpYV9jaGFuZ2UobmJkLSZndDtkaXNrKTsKIAluYmRfYmRldl9yZXNldChuYmQpOwomIzQzOwkvKgomIzQzOwkgKiBEcm9wIHRoZSBwYXJ0aXRpb25zIG9mIHRoZSBkaXNjb25uZWN0ZWQgZGV2aWNlIG9uIHRoZSBuZXh0IG9wZW4uCiYjNDM7CSAqIFRoZXkgY2FuIGV4aXN0IGV2ZW4gd2l0aCBtYXhfcGFydCB6ZXJvIGFzIHRoZXkgbWF5IGhhdmUgYmVlbiBhZGRlZAomIzQzOwkgKiBtYW51YWxseSB3aXRoIEJMS1BHLiBEcm9wcGluZyB0aGVtIGhlcmUgaXMgbm90IHBvc3NpYmxlIGFzIHRoYXQKJiM0MzsJICogbmVlZHMgb3Blbl9tdXRleCwgd2hpY2ggbmJkX29wZW4oKSBhY3F1aXJlcyB1bmRlciBjb25maWdfbG9jay4KJiM0MzsJICovCiYjNDM7CXNldF9iaXQoR0RfTkVFRF9QQVJUX1NDQU4sICZhbXA7bmJkLSZndDtkaXNrLSZndDtzdGF0ZSk7CiAJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOQkRfUlRfSEFTX0NPTkZJR19SRUYsCiAJCQkgICAgICAgJmFtcDtuYmQtJmd0O2NvbmZpZy0mZ3Q7cnVudGltZV9mbGFncykpCiAJCW5iZF9jb25maWdfcHV0KG5iZCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBCbG9jayBEZXZpY2UgRHJpdmVyczogTE9PUCBhbmQgTkJEKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0d28gcGF0Y2hlcyBoZXJlLCBvbmUgdG91Y2hpbmcgYGRyaXZlcnMvYmxvY2svbG9vcC5jYCBhbmQgdGhlIG90aGVyIGBkcml2ZXJzL2Jsb2NrL25iZC5jYC4gIFRoZSBmaXJzdCBwYXRjaCBpbiBgbG9vcC5jYCBtb2RpZmllcyBgbG9vcF9jaGFuZ2VfZmRgIHRvICphbHdheXMqIGNhbGwgYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnNgIG5vdywgcmVnYXJkbGVzcyBvZiB0aGUgYExPX0ZMQUdTX1BBUlRTQ0FOYCBmbGFnLiBJbnRlcmVzdGluZy4gVGhlIHNlY29uZCBwYXRjaCwgaW4gYG5iZC5jYCwgY2hhbmdlcyBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIHRvIHNldCBgR0RfTkVFRF9QQVJUX1NDQU5gIG9uIGBuYmQtJmd0O2Rpc2stJmd0O3N0YXRlYC4gIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIGNoYW5nZXMgYXJlIGV2ZW4gcmVhY2hhYmxlLCBhbmQgaWYgc28sIHdoZXRoZXIgdGhleSByZXByZXNlbnQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4KCkxldCYjMzk7cyBzZWXigKYgYGxvb3BfY2hhbmdlX2ZkYCBpcyBjYWxsZWQgdGhyb3VnaCB0aGUgYExPT1BfQ0hBTkdFX0ZEYCBpb2N0bCwgYW5kIGBuYmRfY2xlYXJfc29ja19pb2N0bGAgaXMgY2FsbGVkIHZpYSB0aGUgYE5CRF9DTEVBUl9TT0NLYCBpb2N0bC4gUmlnaHQsIGNsYXNzaWMgYmxvY2sgZGV2aWNlIGRyaXZlcnMuIEdvb2QsIHRoZXkmIzM5O3JlIGJsb2NrIGRldmljZXMgc28gSSBjYW4gZWFzaWx5IHNldCB0aGVzZSB1cCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGZvciB0ZXN0aW5nLgoKVGltZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gSSYjMzk7bGwgbmVlZCB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIExPT1AgYW5kIE5CRC4gIGBkcml2ZXJzL2Jsb2NrL0tjb25maWdgIGlzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0LiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX0xPT1AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnPTE0MD1jb25maWcgQkxLX0RFVl9DT1dfQ09NTU9OXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE0My1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoxNDQ6Y29uZmlnIEJMS19ERVZfTE9PUFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE0NS1cdHRyaXN0YXRlIFwmIzM0O0xvb3BiYWNrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE3OC1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoxNzk6Y29uZmlnIEJMS19ERVZfTE9PUF9NSU5fQ09VTlRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xODAtXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIGxvb3AgZGV2aWNlcyB0byBwcmUtY3JlYXRlIGF0IGluaXQgdGltZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyOTAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBJJiMzOTttIHJlYWR5LiBIZXJlJiMzOTtzIGEgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkLCBhbmQgc3RhcnRpbmcgd2l0aCB0aGUgcmVxdWVzdGVkIGJvbGRlZCBoZWFkZXI6CgoqKk15IFBlcnNwZWN0aXZlIG9uIE5CRCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXaGVuIEkgdGhpbmsgYWJvdXQgTkJELCBteSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gdGhlIHByYWN0aWNhbCBhcHBsaWNhdGlvbnMgYW5kIGltcGxpY2F0aW9ucy4gSSYjMzk7bSBjb25zaWRlcmluZyB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiBbaW5zZXJ0IHJlbGV2YW50IGZpZWxkXS4gSSBuZWVkIHRvIGFzc2VzcyB3aGF0IHRoaXMgbWVhbnMgaW4gdGVybXMgb2YgW3NwZWNpZmljIHRlY2huaWNhbCBjb25zaWRlcmF0aW9uc10sIGFuZCBob3cgd2UgY2FuIHJlZmluZSBvdXIgc3RyYXRlZ3kgdG8gbGV2ZXJhZ2UgYW55IG9wcG9ydHVuaXRpZXMgb3IgbWl0aWdhdGUgYW55IHJpc2tzIGlkZW50aWZpZWQuIAoKSSYjMzk7bSBldmFsdWF0aW5nIHdoZXRoZXIgdGhlc2Ugb2JzZXJ2YXRpb25zIGFsaWduIHdpdGggdGhlIGV4aXN0aW5nIGJvZHkgb2Yga25vd2xlZGdlLCBvciBpZiB0aGV5IHN1Z2dlc3QgYSBuZWVkIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gaW4gYSBzcGVjaWZpYyBhcmVhLiBJJiMzOTttIGFsc28gY29uc2lkZXJpbmcgdGhlIHBvdGVudGlhbCBmb3IgdGhpcyB0byBjaGFuZ2UgZXhpc3RpbmcgcmVzZWFyY2ggZGlyZWN0aW9ucy4gVGhlIGFpbSBpcyB0byBjbGFyaWZ5IGhvdyB0aGlzIG1pZ2h0IG1vZGlmeSBvciBjb250cmlidXRlIHRvIG91ciBmaWVsZCBvZiB1bmRlcnN0YW5kaW5nLiAKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0RFVl9OQkQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnPTE5ND1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTUtXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTk2OmNvbmZpZyBCTEtfREVWX05CRFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE5Ny1cdHRyaXN0YXRlIFwmIzM0O05ldHdvcmsgYmxvY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjAyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIEJsb2NrIERldmljZSBNb2R1bGUgQ29uc2lkZXJhdGlvbnMqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYmxvY2sgZGV2aWNlIGltcGxlbWVudGF0aW9ucywgYW5kIHRoZSBkaXNjdXNzaW9uIGhpbmdlcyBvbiBgQkxLX0RFVl9MT09QYCBhbmQgYEJMS19ERVZfTkJEYC4gVGhlc2UgYXJlIGNydWNpYWwuIE5vdywgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgaG93IHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvcnMgYXJlIG1hbmFnZWQsIGFuZCBob3cgd2UgaGFuZGxlIHRoZSBuZXR3b3JrIHNvY2tldC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgY2hhbmdlcyBpbiB0aGUgbG9vcCBkZXZpY2UgZmlsZSBkZXNjcmlwdG9ycyBhbmQgY2xlYXIgbmV0d29yayBzb2NrZXRzLiBTbywgSSBuZWVkIHRvIHRha2UgYSBxdWljayBsb29rIGF0IGBsb29wX2NoYW5nZV9mZGAgYW5kIGBuYmRfY2xlYXJfc29ja19pb2N0bGAsIGJlY2F1c2UgdGhlc2UgYXJlIGtleS4gVGhleSYjMzk7bGwgdGVsbCBtZSBpZiBhbnkgYXNzdW1wdGlvbnMgaGF2ZSBiZWVuIG1hZGUsIG9yIGlmIHRoZXJlIGlzIHRoZSBuZWVkIHRvIGFkanVzdCBvciBleHRlbmQgdG8gc3VwcG9ydCBhIGdpdmVuIGZ1bmN0aW9uYWxpdHkuIEl0JiMzOTtzIGFsbCBhYm91dCBlbnN1cmluZyB0aGUgcGx1bWJpbmcgaXMgc291bmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTY6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bG9vcF9jaGFuZ2VfZmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2xvb3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2xvb3AuYz05Nj1zdGF0aWMgREVGSU5FX01VVEVYKGxvb3BfdmFsaWRhdGVfbXV0ZXgpO1xuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEwNy0gKiBpc19sb29wX2RldmljZSgpIGlzIHRydWUsIHdlIG5lZWQgYSBnbG9iYWwgbG9jayBmb3Igc2VyaWFsaXppbmcgY29uY3VycmVudFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTA4OiAqIGxvb3BfY29uZmlndXJlKCkvbG9vcF9jaGFuZ2VfZmQoKS9fX2xvb3BfY2xyX2ZkKCkgY2FsbHMuXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMDktICovXG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmM9NTI3PXN0YXRpYyBpbnQgbG9vcF9jaGVja19iYWNraW5nX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmMtNTM4LS8qXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzo1Mzk6ICogbG9vcF9jaGFuZ2VfZmQgc3dpdGNoZWQgdGhlIGJhY2tpbmcgc3RvcmUgb2YgYSBsb29wYmFjayBkZXZpY2UgdG9cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTU0MC0gKiBhIG5ldyBmaWxlLiBUaGlzIGlzIHVzZWZ1bCBmb3Igb3BlcmF0aW5nIHN5c3RlbSBpbnN0YWxsZXJzIHRvIGZyZWUgdXBcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy01NDUtICovXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzo1NDY6c3RhdGljIGludCBsb29wX2NoYW5nZV9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxuZHJpdmVycy9ibG9jay9sb29wLmMtNTQ3LVx0XHRcdCAgdW5zaWduZWQgaW50IGFyZylcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYz0xMjEyPXN0YXRpYyBpbnQgbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMjE3LVx0ICogU2luY2UgbG9faW9jdGwoKSBpcyBjYWxsZWQgd2l0aG91dCBsb2NrcyBoZWxkLCBpdCBpcyBwb3NzaWJsZSB0aGF0XG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMjE4Olx0ICogbG9vcF9jb25maWd1cmUoKS9sb29wX2NoYW5nZV9mZCgpIGFuZCBsb29wX2Nscl9mZCgpIHJ1biBpbiBwYXJhbGxlbC5cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEyMTktXHQgKlxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEyMjEtXHQgKiBtYWtlIHN1cmUgdGhhdCBsb29wX3ZhbGlkYXRlX2ZpbGUoKSB3aWxsIGZhaWwgaWYgdGhlIFwmIzM0O3N0cnVjdCBmaWxlXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMjIyOlx0ICogd2hpY2ggbG9vcF9jb25maWd1cmUoKS9sb29wX2NoYW5nZV9mZCgpIGZvdW5kIHZpYSBmZ2V0KCkgd2FzIHRoaXNcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEyMjMtXHQgKiBsb29wIGRldmljZS5cbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYz0xNTM5PXN0YXRpYyBpbnQgbG9faW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE1NjgtXHRjYXNlIExPT1BfQ0hBTkdFX0ZEOlxuZHJpdmVycy9ibG9jay9sb29wLmM6MTU2OTpcdFx0cmV0dXJuIGxvb3BfY2hhbmdlX2ZkKGxvLCBiZGV2LCBhcmcpO1xuZHJpdmVycy9ibG9jay9sb29wLmMtMTU3MC1cdGNhc2UgTE9PUF9DTFJfRkQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTY6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ3NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UmIzM5O3ZlIGRlc2NyaWJlZDoKCioqQW5hbHl6aW5nIGBuYmRfY2xlYXJfc29ja19pb2N0bGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIGZ1bmN0aW9uLiBGcm9tIHdoYXQgSSBjYW4gZ2F0aGVyLCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggY2xlYW5pbmcgdXAgc29ja2V0IGludGVyYWN0aW9ucywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgTmV0d29yayBCbG9jayBEZXZpY2UgZHJpdmVyLiBJIHNlZSBgaW9jdGxgIGJlaW5nIG1lbnRpb25lZCwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgbGlrZWx5IGhhbmRsaW5nIHNvbWUga2luZCBvZiBjb250cm9sIG9wZXJhdGlvbiB2aWEgYSBmaWxlIGRlc2NyaXB0b3IuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoaXMgaXMgcHJvYmFibHkgaW52b2tlZCB3aGVuIGEgY2xpZW50IGRpc2Nvbm5lY3RzIG9yIGFuIGVycm9yIG9jY3VycyB0byBjbGVhbiB1cCBhc3NvY2lhdGVkIHJlc291cmNlcy4gSXQmIzM5O3MgbGlrZWx5IGludm9sdmVkIGluIHJlbGVhc2luZyBzb2NrZXQgY29ubmVjdGlvbnMsIHBvc3NpYmx5IGRlLWFsbG9jYXRpbmcgc3RydWN0dXJlcyByZWxhdGVkIHRvIHRoZSBzb2NrZXQsIGFuZCBlbnN1cmluZyB0aGVyZSBhcmVuJiMzOTt0IGxpbmdlcmluZyBwb2ludGVycyB0aGF0IGNvdWxkIGNhdXNlIGlzc3Vlcy4gSSYjMzk7ZCBleHBlY3QgaXQgdG8gZ3JhY2VmdWxseSBoYW5kbGUgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbnMsIHBlcmhhcHMgY2hlY2tpbmcgcmV0dXJuIHZhbHVlcyBmcm9tIHNvY2tldC1yZWxhdGVkIHN5c3RlbSBjYWxscy4gR2l2ZW4gdGhlIGNvbnRleHQgb2YgYSBibG9jayBkZXZpY2UsIGRhdGEgaW50ZWdyaXR5IHdvdWxkIGJlIHBhcmFtb3VudCwgc28gSSYjMzk7ZCBiZSBsb29raW5nIGZvciBjYXJlZnVsIGVycm9yIGNoZWNraW5nIGFuZCBwZXJoYXBzIHNvbWUgbG9nZ2luZyB0byB0cmFjayB0aGUgc29ja2V0JiMzOTtzIHN0YXR1cy4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZGFuZ2xpbmcgZmlsZSBkZXNjcmlwdG9ycyBvciBtZW1vcnkgbGVha3MuIFVsdGltYXRlbHksIHRoZSBnb2FsIGhlcmUgaXMgdG8gbWFrZSBzdXJlIHdlIGRvbiYjMzk7dCBlbmQgdXAgd2l0aCBhIG1lc3N5IHNvY2tldCBzdGF0ZSBhZnRlciBhIGNvbm5lY3Rpb24gaGFzIGdvbmUgYXdheSwgbWFraW5nIHN1cmUgaXQgZG9lc24mIzM5O3QgbGVhdmUgdGhlIHN5c3RlbSBpbiBhIHVuc3RhYmxlIHN0YXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuYmRfY2xlYXJfc29ja19pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYz0xNTg0PXN0YXRpYyBpbnQgbmJkX3N0YXJ0X2RldmljZV9pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTYxMy1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTYxNDpzdGF0aWMgdm9pZCBuYmRfY2xlYXJfc29ja19pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjE1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE2NDE9c3RhdGljIGludCBfX25iZF9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLFxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTY1MC1cdGNhc2UgTkJEX0NMRUFSX1NPQ0s6XG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE2NTE6XHRcdG5iZF9jbGVhcl9zb2NrX2lvY3RsKG5iZCk7XG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2NTItXHRcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDMxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgQmxvY2sgRGV2aWNlIElPQ1RMczogUGFydGl0aW9uIFJlc2Nhbm5pbmcgYW5kIFNvY2tldCBDbGVhcmluZyoqCgpPa2F5LCBzbyB0aGVzZSB0d28gaW9jdGxzIG9uIGJsb2NrIGRldmljZXMgYXJlIGRlZmluaXRlbHkgaW4gcGxheSDigJMgcmVhY2hhYmxlIGFuZCByaXBlIGZvciBmdXp6aW5nLiBUaGUgY2hhbmdlcyBhcmUgYWxsIGFib3V0IGZpeGluZyBwYXJ0aXRpb24gcmVzY2FubmluZyBsb2dpYyAob3IgcG90ZW50aWFsbHkgZHJvcHBpbmcgcGFydGl0aW9ucywgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nKSB3aGVuIGJhY2tpbmcgZmlsZXMgY2hhbmdlIG9yIE5CRCBzb2NrZXRzIGFyZSBjbGVhcmVkLiBGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhpcyBpcyBhIGNsZWFyIGluZGljYXRpb24gdGhhdCBmdXp6aW5nIGlzIHdhcnJhbnRlZCwgZXNwZWNpYWxseSBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1cmluZyB0aGVzZSB0cmFuc2l0aW9ucy4KCk15IGZvY3VzIGlzIHplcm9lZCBpbiBvbiBgbG9vcF9jaGFuZ2VfZmRgIGFuZCBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIGFzIHRoZSBwcmltYXJ5IHRhcmdldHMgaGVyZS4gTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzLiBXZSBrbm93IHRoYXQgYEJMS19ERVZfTE9PUGAgYW5kIGBCTEtfREVWX05CRGAgYXJlIGVuYWJsZWQuIEEgcXVpY2sgZG91YmxlLWNoZWNrIHJldmVhbHMgdGhhdCBOQkQgbGVhbnMgb24gTkVULCB3aGljaCBpcyBleHBlY3RlZCwgd2hpbGUgTE9PUCBzZWVtcyBwcmV0dHkgc2VsZi1jb250YWluZWQsIG5vdCByZXF1aXJpbmcgbXVjaCBlbHNlLiBOb3cgSSBoYXZlIHRoZSBmdWxsIHBpY3R1cmUgYW5kIGNhbiBzdGFydCBwbGFubmluZyBteSBmdXp6aW5nIGNhbXBhaWducy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9Nj1tZW51Y29uZmlnIEJMS19ERVZcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtCbG9jayBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6ODpcdGRlcGVuZHMgb24gQkxPQ0tcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy05LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTIyPWNvbmZpZyBCTEtfREVWX0ZEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtOb3JtYWwgZmxvcHB5IGRpc2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjI0Olx0ZGVwZW5kcyBvbiBBUkNIX01BWV9IQVZFX1BDX0ZEQ1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTI1LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zNz1jb25maWcgQkxLX0RFVl9GRF9SQVdDTURcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zOC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgcmF3IGZsb3BweSBkaXNrIGNvbW1hbmRzIChERVBSRUNBVEVEKVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjM5Olx0ZGVwZW5kcyBvbiBCTEtfREVWX0ZEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNDAtXHRoZWxwXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTUzPWNvbmZpZyBBTUlHQV9GTE9QUFlcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy01NC1cdHRyaXN0YXRlIFwmIzM0O0FtaWdhIGZsb3BweSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6NTU6XHRkZXBlbmRzIG9uIEFNSUdBXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNTYtXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9NTc9Y29uZmlnIEFUQVJJX0ZMT1BQWVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTU4LVx0dHJpc3RhdGUgXCYjMzQ7QXRhcmkgZmxvcHB5IHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo1OTpcdGRlcGVuZHMgb24gQVRBUklcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy02MC1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz02MT1jb25maWcgTUFDX0ZMT1BQWVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTYyLVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgUG93ZXJNYWMgZmxvcHB5XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6NjM6XHRkZXBlbmRzIG9uIFBQQ19QTUFDIFx1MDAyNlx1MDAyNiAhUFBDX1BNQUM2NFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTY0LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz02OD1jb25maWcgQkxLX0RFVl9TV0lNXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNjktXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBTV0lNIE1hY2ludG9zaCBmbG9wcHlcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo3MDpcdGRlcGVuZHMgb24gTTY4SyBcdTAwMjZcdTAwMjYgTUFDIFx1MDAyNlx1MDAyNiAhSElHSE1FTVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTcxLVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz03NT1jb25maWcgQU1JR0FfWjJSQU1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy03Ni1cdHRyaXN0YXRlIFwmIzM0O0FtaWdhIFpvcnJvIElJIHJhbWRpc2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjc3Olx0ZGVwZW5kcyBvbiBaT1JST1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTc4LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz04Nj1jb25maWcgTjY0Q0FSVFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTg3LVx0Ym9vbCBcJiMzNDtONjQgY2FydCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6ODg6XHRkZXBlbmRzIG9uIE1BQ0hfTklOVEVORE82NFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTg5LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz05NT1jb25maWcgR0RST01cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy05Ni1cdHRyaXN0YXRlIFwmIzM0O1NFR0EgRHJlYW1jYXN0IEdELVJPTSBkcml2ZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjk3Olx0ZGVwZW5kcyBvbiBTSF9EUkVBTUNBU1RcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy05OC1cdHNlbGVjdCBDRFJPTVxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xMTE9Y29uZmlnIEJMS19ERVZfVUJEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTEyLVx0Ym9vbCBcJiMzNDtWaXJ0dWFsIGJsb2NrIGRldmljZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjExMzpcdGRlcGVuZHMgb24gVU1MXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTE0LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xMjA9Y29uZmlnIEJMS19ERVZfVUJEX1NZTkNcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xMjEtXHRib29sIFwmIzM0O0Fsd2F5cyBkbyBzeW5jaHJvbm91cyBkaXNrIElPIGZvciBVQkRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoxMjI6XHRkZXBlbmRzIG9uIEJMS19ERVZfVUJEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xNzk9Y29uZmlnIEJMS19ERVZfTE9PUF9NSU5fQ09VTlRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xODAtXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIGxvb3AgZGV2aWNlcyB0byBwcmUtY3JlYXRlIGF0IGluaXQgdGltZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjE4MTpcdGRlcGVuZHMgb24gQkxLX0RFVl9MT09QXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTgyLVx0ZGVmYXVsdCA4XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTE5Nj1jb25maWcgQkxLX0RFVl9OQkRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTctXHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIGJsb2NrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTk4Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTktXHRoZWxwXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI0Mz1jb25maWcgQkxLX0RFVl9SQU1fQ09VTlRcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjQ1LVx0ZGVmYXVsdCBcJiMzNDsxNlwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjI0NjpcdGRlcGVuZHMgb24gQkxLX0RFVl9SQU1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNDctXHRoZWxwXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI1Mj1jb25maWcgQkxLX0RFVl9SQU1fU0laRVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI1My1cdGludCBcJiMzNDtEZWZhdWx0IFJBTSBkaXNrIHNpemUgKGtieXRlcylcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNTQ6XHRkZXBlbmRzIG9uIEJMS19ERVZfUkFNXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjU1LVx0ZGVmYXVsdCBcJiMzNDs0MDk2XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI2MD1jb25maWcgQVRBX09WRVJfRVRIXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjYxLVx0dHJpc3RhdGUgXCYjMzQ7QVRBIG92ZXIgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjI2MjpcdGRlcGVuZHMgb24gTkVUXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjYzLVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0yNjc9Y29uZmlnIFNVTlZEQ1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTI2OC1cdHRyaXN0YXRlIFwmIzM0O1N1biBWaXJ0dWFsIERpc2sgQ2xpZW50IHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNjk6XHRkZXBlbmRzIG9uIFNVTl9MRE9NU1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTI3MC1cdGhlbHBcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9Mjc2PWNvbmZpZyBYRU5fQkxLREVWX0ZST05URU5EXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjc3LVx0dHJpc3RhdGUgXCYjMzQ7WGVuIHZpcnR1YWwgYmxvY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNzg6XHRkZXBlbmRzIG9uIFhFTlxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI3OS1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0yODY9Y29uZmlnIFhFTl9CTEtERVZfQkFDS0VORFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI4Ny1cdHRyaXN0YXRlIFwmIzM0O1hlbiBibG9jay1kZXZpY2UgYmFja2VuZCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyODg6XHRkZXBlbmRzIG9uIFhFTl9CQUNLRU5EXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjg5LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMDc9Y29uZmlnIFZJUlRJT19CTEtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMDgtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gYmxvY2sgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzA5Olx0ZGVwZW5kcyBvbiBWSVJUSU9cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMTAtXHRzZWxlY3QgU0dfUE9PTFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMTU9Y29uZmlnIEJMS19ERVZfUkJEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzE2LVx0dHJpc3RhdGUgXCYjMzQ7UmFkb3MgYmxvY2sgZGV2aWNlIChSQkQpXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzE3Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBCTE9DS1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTMxOC1cdHNlbGVjdCBDRVBIX0xJQlxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMzc9Y29uZmlnIEJMS0RFVl9VQkxLX0xFR0FDWV9PUENPREVTXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzM4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGxlZ2FjeSBjb21tYW5kIG9wY29kZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjMzOTpcdGRlcGVuZHMgb24gQkxLX0RFVl9VQkxLXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzQwLVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTM1Nj1jb25maWcgQkxLX0RFVl9aT05FRF9MT09QXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzU3LVx0dHJpc3RhdGUgXCYjMzQ7Wm9uZWQgbG9vcGJhY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozNTg6XHRkZXBlbmRzIG9uIEJMS19ERVZfWk9ORURcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zNTktXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNzYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1NTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgVGhvdWdodCBQcm9jZXNzIG9uIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gd29ya2luZyBvbiB0aGVzZSBrZXJuZWwgY29uZmlncy4gSSBzZWUgdGhhdCBOQkQgaGFzIGEgZGVwZW5kZW5jeSBvbiBORVQsIHdoaWNoIG1ha2VzIHNlbnNlLiBMT09QLCBvbiB0aGUgb3RoZXIgaGFuZCwgZG9lc24mIzM5O3Qgc2VlbSB0byBoYXZlIGFueSBzcGVjaWFsIGRlcGVuZGVuY2llcywgYXQgbGVhc3Qgbm90IHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFwcGFyZW50LiBTbywgdGhlIGZpcnN0IHN0ZXAgaXMgdG8gYWRkIGBCTEtfREVWX0xPT1BgIGFuZCBgQkxLX0RFVl9OQkRgIHRvIGBFbmFibGVDb25maWdzYC4KCk5vdywgbGV0JiMzOTtzIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQgbWUgc2VlLi4uIEkmIzM5O3ZlIGdvdCBgbG9vcF9jaGFuZ2VfZmRgIGFuZCBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLgoKUmlnaHQsIGJvdGggb2YgdGhlc2UgYXJlIGVpdGhlciBub24tc3RhdGljIG9yIHN0YXRpYyBidXQgbm90IGlubGluZWQuIFRoZXkmIzM5O3JlIGVpdGhlciBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgb3IgY2FsbGVkIGZyb20gYSBzd2l0Y2ggc3RhdGVtZW50LCBtZWFuaW5nIHRoZSBjb21waWxlciBpcyBwcm9iYWJseSBub3QgaW5saW5pbmcgdGhlbS4gSGFuZyBvbiwgYWN0dWFsbHkgYGxvb3BfY2hhbmdlX2ZkYCAqaXMqIHN0YXRpYzogYHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgdW5zaWduZWQgaW50IGFyZylgLiBBbmQgaXQmIzM5O3MgY2FsbGVkIGZyb20gdGhlIGBsb19pb2N0bGAgc3dpdGNoIHN0YXRlbWVudC4gU28gaXQmIzM5O3MgYSBzZXBhcmF0ZSBmdW5jdGlvbiwgbm90IGlubGluZWQuIFNhbWUgZ29lcyBmb3IgYG5iZF9jbGVhcl9zb2NrX2lvY3RsYDogYHN0YXRpYyB2b2lkIG5iZF9jbGVhcl9zb2NrX2lvY3RsKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpYCwgY2FsbGVkIGZyb20gYF9fbmJkX2lvY3RsYCYjMzk7cyBzd2l0Y2ggc3RhdGVtZW50IGFuZCBub3QgaW5saW5lZC4KCk9rYXksIGJ1dCBob2xkIG9uIC0gc2hvdWxkIEkgY2hlY2sgaWYgdGhlIGNvbXBpbGVyIG1pZ2h0IGJlIGlubGluaW5nIHRoZW0gYW55d2F5PyBGdW5jdGlvbnMgY2FsbGVkIGZyb20gc3dpdGNoIHN0YXRlbWVudHMgY2FuIHNvbWV0aW1lcyBiZSBpbmxpbmVkIGlmIHRoZXkmIzM5O3JlIHNtYWxsLCBidXQgYGxvb3BfY2hhbmdlX2ZkYCBpcyBwcmV0dHkgbGFyZ2UsIHNvIHVubGlrZWx5LiBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIGlzIHNtYWxsIHRob3VnaDoKCmBgYGMKc3RhdGljIHZvaWQgbmJkX2NsZWFyX3NvY2tfaW9jdGwoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCkKewoJbmJkX2NsZWFyX3NvY2sobmJkKTsKCWRpc2tfZm9yY2VfbWVkaWFfY2hhbmdlKG5iZC0mZ3Q7ZGlzayk7CgluYmRfYmRldl9yZXNldChuYmQpOwoJLyoKCSAqIERyb3AgdGhlIHBhcnRpdGlvbnMgb2YgdGhlIGRpc2Nvbm5lY3RlZCBkZXZpY2Ugb24gdGhlIG5leHQgb3Blbi4KCSAqIFRoZXkgY2FuIGV4aXN0IGV2ZW4gd2l0aCBtYXhfcGFydCB6ZXJvIGFzIHRoZXkgbWF5IGhhdmUgYmVlbiBhZGRlZAoJICogbWFudWFsbHkgd2l0aCBCTEtQRy4gRHJvcHBpbmcgdGhlbSBoZXJlIGlzIG5vdCBwb3NzaWJsZSBhcyB0aGF0CgkgKiBuZWVkcyBvcGVuX211dGV4LCB3aGljaCBuYmRfb3BlbigpIGFjcXVpcmVzIHVuZGVyIGNvbmZpZ19sb2NrLgoJICovCglzZXRfYml0KEdEX05FRURfUEFSVF9TQ0FOLCAmYW1wO25iZC0mZ3Q7ZGlzay0mZ3Q7c3RhdGUpOwoJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOQkRfUlRfSEFTX0NPTkZJR19SRUYsCgkJCSAgICAgICAmYW1wO25iZC0mZ3Q7Y29uZmlnLSZndDtydW50aW1lX2ZsYWdzKSkKCQluYmRfY29uZmlnX3B1dChuYmQpOwp9CmBgYAoKSXQgKm1pZ2h0KiBiZSBpbmxpbmVkIGludG8gYF9fbmJkX2lvY3RsYC4gVG8gYmUgYWJzb2x1dGVseSBzYWZlLCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGFkZCBgX19uYmRfaW9jdGxgIGFuZCBgbG9faW9jdGxgIHRvIGBGb2N1c1N5bWJvbHNgLiBPciwgZXZlbiBiZXR0ZXIsIGp1c3QgYWRkIHRoZSBleHBvcnRlZCBgbmJkX2lvY3RsYCBhbmQgYGxvX2lvY3RsYCBzeW1ib2xzIHRoZW1zZWx2ZXMuIFRoYXQgd2F5IEkmIzM5O20gc3VyZSBJJiMzOTttIGNhcHR1cmluZyBhbGwgdGhlIHJlbGV2YW50IGNvZGUuIEdvb2QsIEkgdGhpbmsgSSYjMzk7dmUgY292ZXJlZCBhbGwgdGhlIGJhc2VzIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25iZF9pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYz0xNjMxPXN0YXRpYyB2b2lkIG5iZF9zZXRfY21kX3RpbWVvdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdTY0IHRpbWVvdXQpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjQwLS8qIE11c3QgYmUgY2FsbGVkIHdpdGggY29uZmlnX2xvY2sgaGVsZCAqL1xuZHJpdmVycy9ibG9jay9uYmQuYzoxNjQxOnN0YXRpYyBpbnQgX19uYmRfaW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc3RydWN0IG5iZF9kZXZpY2UgKm5iZCxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTY0Mi1cdFx0ICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTY4Ny1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTY4ODpzdGF0aWMgaW50IG5iZF9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2ODktXHRcdCAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzEwLVx0ICAgIChjbWQgPT0gTkJEX0RJU0NPTk5FQ1QgfHwgY21kID09IE5CRF9DTEVBUl9TT0NLKSlcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTcxMTpcdFx0ZXJyb3IgPSBfX25iZF9pb2N0bChiZGV2LCBuYmQsIGNtZCwgYXJnKTtcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTcxMi1cdGVsc2Vcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE4MTU9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyBuYmRfZm9wcyA9XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xODE5LVx0LnJlbGVhc2UgPVx0bmJkX3JlbGVhc2UsXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4MjA6XHQuaW9jdGwgPVx0bmJkX2lvY3RsLFxuZHJpdmVycy9ibG9jay9uYmQuYzoxODIxOlx0LmNvbXBhdF9pb2N0bCA9XHRuYmRfaW9jdGwsXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4MjItXHQuZnJlZV9kaXNrID1cdG5iZF9mcmVlX2Rpc2ssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwMDkKCQkJCQkJCW91dHB1dDogMTIzCgkJCQkJCQl0aG91Z2h0czogMTQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBCbG9jayBEZXZpY2UgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaCwgYW5kIEkmIzM5O20gYWRkaW5nIGBsb29wX2NoYW5nZV9mZGAsIGBsb19pb2N0bGAsIGBuYmRfY2xlYXJfc29ja19pb2N0bGAsIGFuZCBgX19uYmRfaW9jdGxgIHRvIG15IEZvY3VzU3ltYm9scyBsaXN0LiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCByZWFsbHkuIFRoZSBjb3JlIGlzIHRoZSBtb2RpZmljYXRpb24gb2YgdGhlIHBhcnRpdGlvbiByZXNjYW5uaW5nIGxvZ2ljIGZvciBsb29wIGFuZCBuYmQgYmxvY2sgZGV2aWNlcy4gVGhlIHBhdGNoIGRlYWxzIHdpdGggc2l0dWF0aW9ucyB3aGVyZSB0aGUgdW5kZXJseWluZyBmaWxlIG9yIHNvY2tldCB1c2VkIGJ5IHRoZXNlIHZpcnR1YWwgYmxvY2sgZGV2aWNlcyBpcyBjaGFuZ2VkIG9yIGNsZWFyZWQuIFRoZXNlIGFjdGlvbnMgYXJlIHRyaWdnZXJlZCB2aWEgaW9jdGxzIG9uIHRob3NlIHZlcnkgc2FtZSB2aXJ0dWFsIGJsb2NrIGRldmljZXMsIHdoaWNoIG1ha2VzIHRoZW0gcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZywgd2hpY2ggaXMgd2h5IGBXb3J0aEZ1enppbmdgIGlzIHNldCB0byBgdHJ1ZWAuIEkmIzM5O2xsIHdhbnQgdG8gZGlnIGluIHRvIHRob3NlIGlvY3RscywgZXNwZWNpYWxseSBgbG9faW9jdGxgLCBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIGFuZCBgX19uYmRfaW9jdGxgLCBhbmQgc2VlIHdoYXQgdGhlIGNvZGUgZG9lcyB3aXRoIHRoZSBiYWNraW5nIGZpbGVzIG9yIHNvY2tldHMuIEFsc28sIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCBJJiMzOTttIGRlYWxpbmcgd2l0aCBgQkxLX0RFVl9MT09QYCBhbmQgYEJMS19ERVZfTkJEYCwgYW5kIHRob3NlIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyB0byBiZSByZWxldmFudC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AgYW5kIHNlZSB3aGF0IGNvbWVzIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX0xPT1AmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9OQkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb29wX2NoYW5nZV9mZCYjMzQ7LAogICAgJiMzNDtsb19pb2N0bCYjMzQ7LAogICAgJiMzNDtuYmRfY2xlYXJfc29ja19pb2N0bCYjMzQ7LAogICAgJiMzNDtfX25iZF9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYXJ0aXRpb24gcmVzY2FubmluZyBsb2dpYyBmb3IgbG9vcCBhbmQgbmJkIGJsb2NrIGRldmljZXMgd2hlbiB0aGVpciBiYWNraW5nIGZpbGVzIG9yIHNvY2tldHMgYXJlIGNoYW5nZWQvY2xlYXJlZC4gVGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSBpb2N0bHMgb24gdmlydHVhbCBibG9jayBkZXZpY2VzIGFuZCBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX0xPT1AmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9OQkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb29wX2NoYW5nZV9mZCYjMzQ7LAogICAgJiMzNDtsb19pb2N0bCYjMzQ7LAogICAgJiMzNDtuYmRfY2xlYXJfc29ja19pb2N0bCYjMzQ7LAogICAgJiMzNDtfX25iZF9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYXJ0aXRpb24gcmVzY2FubmluZyBsb2dpYyBmb3IgbG9vcCBhbmQgbmJkIGJsb2NrIGRldmljZXMgd2hlbiB0aGVpciBiYWNraW5nIGZpbGVzIG9yIHNvY2tldHMgYXJlIGNoYW5nZWQvY2xlYXJlZC4gVGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSBpb2N0bHMgb24gdmlydHVhbCBibG9jayBkZXZpY2VzIGFuZCBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNjozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhcnRpdGlvbiBzY2FubmluZyBsb2dpYyBpbiB0aGUgbG9vcCBhbmQgbmJkIGJsb2NrIGRyaXZlcnMuIEluIGBsb29wX2NoYW5nZV9mZGAsIGl0IHVuY29uZGl0aW9uYWxseSBjYWxscyBgbG9vcF9yZXJlYWRfcGFydGl0aW9uc2AgcmF0aGVyIHRoYW4gY2hlY2tpbmcgYExPX0ZMQUdTX1BBUlRTQ0FOYCwgdG8gZW5zdXJlIG1hbnVhbGx5IGFkZGVkIHBhcnRpdGlvbnMgYXJlIGRyb3BwZWQuIEluIGBuYmRfY2xlYXJfc29ja19pb2N0bGAsIGl0IHNldHMgYEdEX05FRURfUEFSVF9TQ0FOYCB0byBkcm9wIHBhcnRpdGlvbnMgb24gdGhlIG5leHQgb3Blbi4gVGhlc2UgY2hhbmdlcyBvbmx5IGFsdGVyIGNvbnRyb2wgZmxvdyBhbmQgc3RhdGUgZmxhZ3MgcmVsYXRlZCB0byBibG9jayBkZXZpY2UgcGFydGl0aW9uIG1hbmFnZW1lbnQuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrLCBoZWFwLCBvciBwYWRkaW5nKSBvciBjcmVhdGluZyBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmV0aW1lcyAoZS5nLiwgdXNlLWFmdGVyLWZyZWUpIG9yIGxvY2tpbmcsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzJjZjE1YmQyOWZjODAyYTUzYjY4YWMzYzM2M2QxZjQ2ZTJiYTZiMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDI0IDE2OjMwOjI2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRleCA2ZjEyOTc2MDM1YjA5Li44OTkzNWNmYzU5MWY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtNTUwLDcgJiM0Mzs1NTAsNiBAQCBzdGF0aWMgaW50IGxvb3BfY2hhbmdlX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsCiAJc3RydWN0IGZpbGUgKm9sZF9maWxlOwogCXVuc2lnbmVkIGludCBtZW1mbGFnczsKIAlpbnQgZXJyb3I7Ci0JYm9vbCBwYXJ0c2NhbjsKIAlib29sIGlzX2xvb3A7CiAKIAlpZiAoIWZpbGUpCkBAIC02MDQsNyAmIzQzOzYwMyw2IEBAIHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKIAlsb29wX2Fzc2lnbl9iYWNraW5nX2ZpbGUobG8sIGZpbGUpOwogCWxvb3BfdXBkYXRlX2Rpbyhsbyk7CiAJYmxrX21xX3VuZnJlZXplX3F1ZXVlKGxvLSZndDtsb19xdWV1ZSwgbWVtZmxhZ3MpOwotCXBhcnRzY2FuID0gbG8tJmd0O2xvX2ZsYWdzICZhbXA7IExPX0ZMQUdTX1BBUlRTQ0FOOwogCWxvb3BfZ2xvYmFsX3VubG9jayhsbywgaXNfbG9vcCk7CiAKIAkvKgpAQCAtNjIyLDggJiM0Mzs2MjAsMTIgQEAgc3RhdGljIGludCBsb29wX2NoYW5nZV9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LAogCSAqLwogCWZwdXQob2xkX2ZpbGUpOwogCWRldl9zZXRfdWV2ZW50X3N1cHByZXNzKGRpc2tfdG9fZGV2KGxvLSZndDtsb19kaXNrKSwgMCk7Ci0JaWYgKHBhcnRzY2FuKQotCQlsb29wX3JlcmVhZF9wYXJ0aXRpb25zKGxvKTsKJiM0MzsJLyoKJiM0MzsJICogUmVzY2FuIG9yLCB3aXRob3V0IExPX0ZMQUdTX1BBUlRTQ0FOLCBqdXN0IGRyb3AgdGhlIHBhcnRpdGlvbnMgb2YKJiM0MzsJICogdGhlIG9sZCBiYWNraW5nIGZpbGUuIFRoZXkgY2FuIGV4aXN0IHdpdGhvdXQgTE9fRkxBR1NfUEFSVFNDQU4gYXMKJiM0MzsJICogdGhleSBtYXkgaGF2ZSBiZWVuIGFkZGVkIG1hbnVhbGx5IHdpdGggQkxLUEcuCiYjNDM7CSAqLwomIzQzOwlsb29wX3JlcmVhZF9wYXJ0aXRpb25zKGxvKTsKIAogCWVycm9yID0gMDsKIGRvbmU6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL25iZC5jIGIvZHJpdmVycy9ibG9jay9uYmQuYwppbmRleCBmZmNlNTE5YmYwMDg3Li4wOWI0YWQ3MGE1ZDdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL25iZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbmJkLmMKQEAgLTE2MTYsNiAmIzQzOzE2MTYsMTMgQEAgc3RhdGljIHZvaWQgbmJkX2NsZWFyX3NvY2tfaW9jdGwoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCkKIAluYmRfY2xlYXJfc29jayhuYmQpOwogCWRpc2tfZm9yY2VfbWVkaWFfY2hhbmdlKG5iZC0mZ3Q7ZGlzayk7CiAJbmJkX2JkZXZfcmVzZXQobmJkKTsKJiM0MzsJLyoKJiM0MzsJICogRHJvcCB0aGUgcGFydGl0aW9ucyBvZiB0aGUgZGlzY29ubmVjdGVkIGRldmljZSBvbiB0aGUgbmV4dCBvcGVuLgomIzQzOwkgKiBUaGV5IGNhbiBleGlzdCBldmVuIHdpdGggbWF4X3BhcnQgemVybyBhcyB0aGV5IG1heSBoYXZlIGJlZW4gYWRkZWQKJiM0MzsJICogbWFudWFsbHkgd2l0aCBCTEtQRy4gRHJvcHBpbmcgdGhlbSBoZXJlIGlzIG5vdCBwb3NzaWJsZSBhcyB0aGF0CiYjNDM7CSAqIG5lZWRzIG9wZW5fbXV0ZXgsIHdoaWNoIG5iZF9vcGVuKCkgYWNxdWlyZXMgdW5kZXIgY29uZmlnX2xvY2suCiYjNDM7CSAqLwomIzQzOwlzZXRfYml0KEdEX05FRURfUEFSVF9TQ0FOLCAmYW1wO25iZC0mZ3Q7ZGlzay0mZ3Q7c3RhdGUpOwogCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTkJEX1JUX0hBU19DT05GSUdfUkVGLAogCQkJICAgICAgICZhbXA7bmJkLSZndDtjb25maWctJmd0O3J1bnRpbWVfZmxhZ3MpKQogCQluYmRfY29uZmlnX3B1dChuYmQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTY6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU4MAoJCQkJCQkJb3V0cHV0OiAyMjEKCQkJCQkJCXRob3VnaHRzOiA1MzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQXNzZXNzbWVudDogTm8gTmVlZCBIZXJlKioKCk9rYXksIHNvIEkmIzM5O3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoLCBmb2N1c2luZyBvbiB0aGUgY2hhbmdlcyB0byBgZHJpdmVycy9ibG9jay9sb29wLmNgIGFuZCBgZHJpdmVycy9ibG9jay9uYmQuY2AuIFRoZSBjb3JlIG9mIHRoZSBtb2RpZmljYXRpb24gaXMgYWJvdXQgaG93IHBhcnRpdGlvbiBzY2FubmluZyBpcyB0cmlnZ2VyZWQuIEluIGBsb29wLmNgLCB0aGV5JiMzOTt2ZSByZW1vdmVkIHRoZSBjb25kaXRpb25hbCBjaGVjayBiYXNlZCBvbiBgTE9fRkxBR1NfUEFSVFNDQU5gIGFuZCBhcmUgbm93IGNhbGxpbmcgYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnMobG8pYCB1bmNvbmRpdGlvbmFsbHkuIE92ZXIgaW4gYG5iZC5jYCwgdGhleSYjMzk7cmUgYWRkaW5nIGBzZXRfYml0KEdEX05FRURfUEFSVF9TQ0FOLCAmYW1wO25iZC0mZ3Q7ZGlzay0mZ3Q7c3RhdGUpYCBpbiBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgJiMzNDtDb3VsZCB0aGlzIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/JiMzNDsgSSB3ZW50IHRocm91Z2ggdGhlIGNoYW5nZXMgc3RlcC1ieS1zdGVwLiBUaGV5JiMzOTtyZSBwdXJlbHkgbG9naWMgY2hhbmdlczogdW5jb25kaXRpb25hbCBjYWxsIHRvIGBsb29wX3JlcmVhZF9wYXJ0aXRpb25zYCBhbmQgc2V0dGluZyBhIGZsYWcuIE5vdGhpbmcgbmV3IGlzIGJlaW5nIGFsbG9jYXRlZC4gTm8gbmV3IGZpZWxkcyBhcmUgYmVpbmcgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBObyBkYXRhIGlzIGJlaW5nIHJlYWQgb3IgY29waWVkIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgb25seSB0aGluZ3MgYmVpbmcgY2hhbmdlZCByZWxhdGUgdG8gaG93IHdlIHJlc2NhbiBwYXJ0aXRpb25zLgoKU28sIEkgZG9uJiMzOTt0IHNlZSBhbnkgbmVlZCBmb3IgS01TQU4gaGVyZS4gS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgdG8gY2F0Y2ggbWVtb3J5IGNvcnJ1cHRpb24gYnVncyB0aGF0IGNvdWxkIGhhcHBlbiBiZWNhdXNlIG9mIHBhcnRpdGlvbiByZXNjYW5uaW5nIOKAkyBzdHVmZiBsaWtlIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkgZG91YmxlLWNoZWNrZWQgd2hhdCBgbG9vcF9yZXJlYWRfcGFydGl0aW9uc2AgYW5kIGBHRF9ORUVEX1BBUlRfU0NBTmAgYWN0dWFsbHkgKmRvKi4gYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnNgIHNpbXBseSB0cmlnZ2VycyBhIHBhcnRpdGlvbiByZXNjYW4sIGFuZCBgR0RfTkVFRF9QQVJUX1NDQU5gIGlzIGp1c3QgYSBibG9jay1sYXllciBmbGFnIHRvIHNpZ25hbCB0aGUgbmVlZCBmb3IgYSByZXNjYW4uIFN0aWxsIG5vdGhpbmcgcG9pbnRpbmcgdG8gYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuCgpUaGVyZWZvcmUsIG5vLCB0aGlzIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlza3Mgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEkmIzM5O20gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhcnRpdGlvbiBzY2FubmluZyBsb2dpYyBpbiB0aGUgbG9vcCBhbmQgbmJkIGJsb2NrIGRyaXZlcnMuIEluIGBsb29wX2NoYW5nZV9mZGAsIGl0IHVuY29uZGl0aW9uYWxseSBjYWxscyBgbG9vcF9yZXJlYWRfcGFydGl0aW9uc2AgcmF0aGVyIHRoYW4gY2hlY2tpbmcgYExPX0ZMQUdTX1BBUlRTQ0FOYCwgdG8gZW5zdXJlIG1hbnVhbGx5IGFkZGVkIHBhcnRpdGlvbnMgYXJlIGRyb3BwZWQuIEluIGBuYmRfY2xlYXJfc29ja19pb2N0bGAsIGl0IHNldHMgYEdEX05FRURfUEFSVF9TQ0FOYCB0byBkcm9wIHBhcnRpdGlvbnMgb24gdGhlIG5leHQgb3Blbi4gVGhlc2UgY2hhbmdlcyBvbmx5IGFsdGVyIGNvbnRyb2wgZmxvdyBhbmQgc3RhdGUgZmxhZ3MgcmVsYXRlZCB0byBibG9jayBkZXZpY2UgcGFydGl0aW9uIG1hbmFnZW1lbnQuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrLCBoZWFwLCBvciBwYWRkaW5nKSBvciBjcmVhdGluZyBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmV0aW1lcyAoZS5nLiwgdXNlLWFmdGVyLWZyZWUpIG9yIGxvY2tpbmcsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhcnRpdGlvbiBzY2FubmluZyBsb2dpYyBpbiB0aGUgbG9vcCBhbmQgbmJkIGJsb2NrIGRyaXZlcnMuIEluIGBsb29wX2NoYW5nZV9mZGAsIGl0IHVuY29uZGl0aW9uYWxseSBjYWxscyBgbG9vcF9yZXJlYWRfcGFydGl0aW9uc2AgcmF0aGVyIHRoYW4gY2hlY2tpbmcgYExPX0ZMQUdTX1BBUlRTQ0FOYCwgdG8gZW5zdXJlIG1hbnVhbGx5IGFkZGVkIHBhcnRpdGlvbnMgYXJlIGRyb3BwZWQuIEluIGBuYmRfY2xlYXJfc29ja19pb2N0bGAsIGl0IHNldHMgYEdEX05FRURfUEFSVF9TQ0FOYCB0byBkcm9wIHBhcnRpdGlvbnMgb24gdGhlIG5leHQgb3Blbi4gVGhlc2UgY2hhbmdlcyBvbmx5IGFsdGVyIGNvbnRyb2wgZmxvdyBhbmQgc3RhdGUgZmxhZ3MgcmVsYXRlZCB0byBibG9jayBkZXZpY2UgcGFydGl0aW9uIG1hbmFnZW1lbnQuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrLCBoZWFwLCBvciBwYWRkaW5nKSBvciBjcmVhdGluZyBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmV0aW1lcyAoZS5nLiwgdXNlLWFmdGVyLWZyZWUpIG9yIGxvY2tpbmcsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTY6MzA6MjcuMjU5MTAxOTQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE5MjAwMDY1OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9MT09QXCIsXG4gICAgXCJCTEtfREVWX05CRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxvb3BfY2hhbmdlX2ZkXCIsXG4gICAgXCJsb19pb2N0bFwiLFxuICAgIFwibmJkX2NsZWFyX3NvY2tfaW9jdGxcIixcbiAgICBcIl9fbmJkX2lvY3RsXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYXJ0aXRpb24gc2Nhbm5pbmcgbG9naWMgaW4gdGhlIGxvb3AgYW5kIG5iZCBibG9jayBkcml2ZXJzLiBJbiBgbG9vcF9jaGFuZ2VfZmRgLCBpdCB1bmNvbmRpdGlvbmFsbHkgY2FsbHMgYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnNgIHJhdGhlciB0aGFuIGNoZWNraW5nIGBMT19GTEFHU19QQVJUU0NBTmAsIHRvIGVuc3VyZSBtYW51YWxseSBhZGRlZCBwYXJ0aXRpb25zIGFyZSBkcm9wcGVkLiBJbiBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLCBpdCBzZXRzIGBHRF9ORUVEX1BBUlRfU0NBTmAgdG8gZHJvcCBwYXJ0aXRpb25zIG9uIHRoZSBuZXh0IG9wZW4uIFRoZXNlIGNoYW5nZXMgb25seSBhbHRlciBjb250cm9sIGZsb3cgYW5kIHN0YXRlIGZsYWdzIHJlbGF0ZWQgdG8gYmxvY2sgZGV2aWNlIHBhcnRpdGlvbiBtYW5hZ2VtZW50LiBUaGV5IGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdGFjaywgaGVhcCwgb3IgcGFkZGluZykgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSByZWxhdGVkIHRvIG9iamVjdCBsaWZldGltZXMgKGUuZy4sIHVzZS1hZnRlci1mcmVlKSBvciBsb2NraW5nLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFydGl0aW9uIHJlc2Nhbm5pbmcgbG9naWMgZm9yIGxvb3AgYW5kIG5iZCBibG9jayBkZXZpY2VzIHdoZW4gdGhlaXIgYmFja2luZyBmaWxlcyBvciBzb2NrZXRzIGFyZSBjaGFuZ2VkL2NsZWFyZWQuIFRoZXNlIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSB2aWEgaW9jdGxzIG9uIHZpcnR1YWwgYmxvY2sgZGV2aWNlcyBhbmQgaGF2ZSBmdW5jdGlvbmFsIGltcGFjdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTY6MzA6MjcuMjU5MTA3NTI4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODQ0MTU2ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzMmNmMTViZDI5ZmM4MDJhNTNiNjhhYzNjMzYzZDFmNDZlMmJhNmIyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDI0IDE2OjMwOjI2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmNcXG5pbmRleCA2ZjEyOTc2MDM1YjA5Li44OTkzNWNmYzU5MWY3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jXFxuKysrIGIvZHJpdmVycy9ibG9jay9sb29wLmNcXG5AQCAtNTUwLDcgKzU1MCw2IEBAIHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldixcXG4gXFx0c3RydWN0IGZpbGUgKm9sZF9maWxlO1xcbiBcXHR1bnNpZ25lZCBpbnQgbWVtZmxhZ3M7XFxuIFxcdGludCBlcnJvcjtcXG4tXFx0Ym9vbCBwYXJ0c2NhbjtcXG4gXFx0Ym9vbCBpc19sb29wO1xcbiBcXG4gXFx0aWYgKCFmaWxlKVxcbkBAIC02MDQsNyArNjAzLDYgQEAgc3RhdGljIGludCBsb29wX2NoYW5nZV9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxcbiBcXHRsb29wX2Fzc2lnbl9iYWNraW5nX2ZpbGUobG8sIGZpbGUpO1xcbiBcXHRsb29wX3VwZGF0ZV9kaW8obG8pO1xcbiBcXHRibGtfbXFfdW5mcmVlemVfcXVldWUobG8tXFx1MDAzZWxvX3F1ZXVlLCBtZW1mbGFncyk7XFxuLVxcdHBhcnRzY2FuID0gbG8tXFx1MDAzZWxvX2ZsYWdzIFxcdTAwMjYgTE9fRkxBR1NfUEFSVFNDQU47XFxuIFxcdGxvb3BfZ2xvYmFsX3VubG9jayhsbywgaXNfbG9vcCk7XFxuIFxcbiBcXHQvKlxcbkBAIC02MjIsOCArNjIwLDEyIEBAIHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldixcXG4gXFx0ICovXFxuIFxcdGZwdXQob2xkX2ZpbGUpO1xcbiBcXHRkZXZfc2V0X3VldmVudF9zdXBwcmVzcyhkaXNrX3RvX2Rldihsby1cXHUwMDNlbG9fZGlzayksIDApO1xcbi1cXHRpZiAocGFydHNjYW4pXFxuLVxcdFxcdGxvb3BfcmVyZWFkX3BhcnRpdGlvbnMobG8pO1xcbitcXHQvKlxcbitcXHQgKiBSZXNjYW4gb3IsIHdpdGhvdXQgTE9fRkxBR1NfUEFSVFNDQU4sIGp1c3QgZHJvcCB0aGUgcGFydGl0aW9ucyBvZlxcbitcXHQgKiB0aGUgb2xkIGJhY2tpbmcgZmlsZS4gVGhleSBjYW4gZXhpc3Qgd2l0aG91dCBMT19GTEFHU19QQVJUU0NBTiBhc1xcbitcXHQgKiB0aGV5IG1heSBoYXZlIGJlZW4gYWRkZWQgbWFudWFsbHkgd2l0aCBCTEtQRy5cXG4rXFx0ICovXFxuK1xcdGxvb3BfcmVyZWFkX3BhcnRpdGlvbnMobG8pO1xcbiBcXG4gXFx0ZXJyb3IgPSAwO1xcbiBkb25lOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL25iZC5jIGIvZHJpdmVycy9ibG9jay9uYmQuY1xcbmluZGV4IGZmY2U1MTliZjAwODcuLjA5YjRhZDcwYTVkN2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9uYmQuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svbmJkLmNcXG5AQCAtMTYxNiw2ICsxNjE2LDEzIEBAIHN0YXRpYyB2b2lkIG5iZF9jbGVhcl9zb2NrX2lvY3RsKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXFxuIFxcdG5iZF9jbGVhcl9zb2NrKG5iZCk7XFxuIFxcdGRpc2tfZm9yY2VfbWVkaWFfY2hhbmdlKG5iZC1cXHUwMDNlZGlzayk7XFxuIFxcdG5iZF9iZGV2X3Jlc2V0KG5iZCk7XFxuK1xcdC8qXFxuK1xcdCAqIERyb3AgdGhlIHBhcnRpdGlvbnMgb2YgdGhlIGRpc2Nvbm5lY3RlZCBkZXZpY2Ugb24gdGhlIG5leHQgb3Blbi5cXG4rXFx0ICogVGhleSBjYW4gZXhpc3QgZXZlbiB3aXRoIG1heF9wYXJ0IHplcm8gYXMgdGhleSBtYXkgaGF2ZSBiZWVuIGFkZGVkXFxuK1xcdCAqIG1hbnVhbGx5IHdpdGggQkxLUEcuIERyb3BwaW5nIHRoZW0gaGVyZSBpcyBub3QgcG9zc2libGUgYXMgdGhhdFxcbitcXHQgKiBuZWVkcyBvcGVuX211dGV4LCB3aGljaCBuYmRfb3BlbigpIGFjcXVpcmVzIHVuZGVyIGNvbmZpZ19sb2NrLlxcbitcXHQgKi9cXG4rXFx0c2V0X2JpdChHRF9ORUVEX1BBUlRfU0NBTiwgXFx1MDAyNm5iZC1cXHUwMDNlZGlzay1cXHUwMDNlc3RhdGUpO1xcbiBcXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5CRF9SVF9IQVNfQ09ORklHX1JFRixcXG4gXFx0XFx0XFx0ICAgICAgIFxcdTAwMjZuYmQtXFx1MDAzZWNvbmZpZy1cXHUwMDNlcnVudGltZV9mbGFncykpXFxuIFxcdFxcdG5iZF9jb25maWdfcHV0KG5iZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE2OjMwOjI3LjY0NDIwNTIyM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU3NDQxMDAzNDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTE9PUFwiLFxuICAgIFwiQkxLX0RFVl9OQkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsb29wX2NoYW5nZV9mZFwiLFxuICAgIFwibG9faW9jdGxcIixcbiAgICBcIm5iZF9jbGVhcl9zb2NrX2lvY3RsXCIsXG4gICAgXCJfX25iZF9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBhcnRpdGlvbiByZXNjYW5uaW5nIGxvZ2ljIGZvciBsb29wIGFuZCBuYmQgYmxvY2sgZGV2aWNlcyB3aGVuIHRoZWlyIGJhY2tpbmcgZmlsZXMgb3Igc29ja2V0cyBhcmUgY2hhbmdlZC9jbGVhcmVkLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIGlvY3RscyBvbiB2aXJ0dWFsIGJsb2NrIGRldmljZXMgYW5kIGhhdmUgZnVuY3Rpb25hbCBpbXBhY3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDMyY2YxNWJkMjlmYzgwMmE1M2I2OGFjM2MzNjNkMWY0NmUyYmE2YjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxNjozMDoyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmNcbmluZGV4IDZmMTI5NzYwMzViMDkuLjg5OTM1Y2ZjNTkxZjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuKysrIGIvZHJpdmVycy9ibG9jay9sb29wLmNcbkBAIC01NTAsNyArNTUwLDYgQEAgc3RhdGljIGludCBsb29wX2NoYW5nZV9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxuIFx0c3RydWN0IGZpbGUgKm9sZF9maWxlO1xuIFx0dW5zaWduZWQgaW50IG1lbWZsYWdzO1xuIFx0aW50IGVycm9yO1xuLVx0Ym9vbCBwYXJ0c2NhbjtcbiBcdGJvb2wgaXNfbG9vcDtcbiBcbiBcdGlmICghZmlsZSlcbkBAIC02MDQsNyArNjAzLDYgQEAgc3RhdGljIGludCBsb29wX2NoYW5nZV9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxuIFx0bG9vcF9hc3NpZ25fYmFja2luZ19maWxlKGxvLCBmaWxlKTtcbiBcdGxvb3BfdXBkYXRlX2Rpbyhsbyk7XG4gXHRibGtfbXFfdW5mcmVlemVfcXVldWUobG8tXHUwMDNlbG9fcXVldWUsIG1lbWZsYWdzKTtcbi1cdHBhcnRzY2FuID0gbG8tXHUwMDNlbG9fZmxhZ3MgXHUwMDI2IExPX0ZMQUdTX1BBUlRTQ0FOO1xuIFx0bG9vcF9nbG9iYWxfdW5sb2NrKGxvLCBpc19sb29wKTtcbiBcbiBcdC8qXG5AQCAtNjIyLDggKzYyMCwxMiBAQCBzdGF0aWMgaW50IGxvb3BfY2hhbmdlX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsXG4gXHQgKi9cbiBcdGZwdXQob2xkX2ZpbGUpO1xuIFx0ZGV2X3NldF91ZXZlbnRfc3VwcHJlc3MoZGlza190b19kZXYobG8tXHUwMDNlbG9fZGlzayksIDApO1xuLVx0aWYgKHBhcnRzY2FuKVxuLVx0XHRsb29wX3JlcmVhZF9wYXJ0aXRpb25zKGxvKTtcbitcdC8qXG4rXHQgKiBSZXNjYW4gb3IsIHdpdGhvdXQgTE9fRkxBR1NfUEFSVFNDQU4sIGp1c3QgZHJvcCB0aGUgcGFydGl0aW9ucyBvZlxuK1x0ICogdGhlIG9sZCBiYWNraW5nIGZpbGUuIFRoZXkgY2FuIGV4aXN0IHdpdGhvdXQgTE9fRkxBR1NfUEFSVFNDQU4gYXNcbitcdCAqIHRoZXkgbWF5IGhhdmUgYmVlbiBhZGRlZCBtYW51YWxseSB3aXRoIEJMS1BHLlxuK1x0ICovXG4rXHRsb29wX3JlcmVhZF9wYXJ0aXRpb25zKGxvKTtcbiBcbiBcdGVycm9yID0gMDtcbiBkb25lOlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbmJkLmMgYi9kcml2ZXJzL2Jsb2NrL25iZC5jXG5pbmRleCBmZmNlNTE5YmYwMDg3Li4wOWI0YWQ3MGE1ZDdkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9uYmQuY1xuKysrIGIvZHJpdmVycy9ibG9jay9uYmQuY1xuQEAgLTE2MTYsNiArMTYxNiwxMyBAQCBzdGF0aWMgdm9pZCBuYmRfY2xlYXJfc29ja19pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuIFx0bmJkX2NsZWFyX3NvY2sobmJkKTtcbiBcdGRpc2tfZm9yY2VfbWVkaWFfY2hhbmdlKG5iZC1cdTAwM2VkaXNrKTtcbiBcdG5iZF9iZGV2X3Jlc2V0KG5iZCk7XG4rXHQvKlxuK1x0ICogRHJvcCB0aGUgcGFydGl0aW9ucyBvZiB0aGUgZGlzY29ubmVjdGVkIGRldmljZSBvbiB0aGUgbmV4dCBvcGVuLlxuK1x0ICogVGhleSBjYW4gZXhpc3QgZXZlbiB3aXRoIG1heF9wYXJ0IHplcm8gYXMgdGhleSBtYXkgaGF2ZSBiZWVuIGFkZGVkXG4rXHQgKiBtYW51YWxseSB3aXRoIEJMS1BHLiBEcm9wcGluZyB0aGVtIGhlcmUgaXMgbm90IHBvc3NpYmxlIGFzIHRoYXRcbitcdCAqIG5lZWRzIG9wZW5fbXV0ZXgsIHdoaWNoIG5iZF9vcGVuKCkgYWNxdWlyZXMgdW5kZXIgY29uZmlnX2xvY2suXG4rXHQgKi9cbitcdHNldF9iaXQoR0RfTkVFRF9QQVJUX1NDQU4sIFx1MDAyNm5iZC1cdTAwM2VkaXNrLVx1MDAzZXN0YXRlKTtcbiBcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTkJEX1JUX0hBU19DT05GSUdfUkVGLFxuIFx0XHRcdCAgICAgICBcdTAwMjZuYmQtXHUwMDNlY29uZmlnLVx1MDAzZXJ1bnRpbWVfZmxhZ3MpKVxuIFx0XHRuYmRfY29uZmlnX3B1dChuYmQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTY6MzA6MjcuNjQ0MjA2OTEzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM2MTE2NjE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEJsb2NrIERldmljZSBEcml2ZXJzOiBMT09QIGFuZCBOQkQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0d28gcGF0Y2hlcyBoZXJlLCBvbmUgdG91Y2hpbmcgYGRyaXZlcnMvYmxvY2svbG9vcC5jYCBhbmQgdGhlIG90aGVyIGBkcml2ZXJzL2Jsb2NrL25iZC5jYC4gIFRoZSBmaXJzdCBwYXRjaCBpbiBgbG9vcC5jYCBtb2RpZmllcyBgbG9vcF9jaGFuZ2VfZmRgIHRvICphbHdheXMqIGNhbGwgYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnNgIG5vdywgcmVnYXJkbGVzcyBvZiB0aGUgYExPX0ZMQUdTX1BBUlRTQ0FOYCBmbGFnLiBJbnRlcmVzdGluZy4gVGhlIHNlY29uZCBwYXRjaCwgaW4gYG5iZC5jYCwgY2hhbmdlcyBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIHRvIHNldCBgR0RfTkVFRF9QQVJUX1NDQU5gIG9uIGBuYmQtXHUwMDNlZGlzay1cdTAwM2VzdGF0ZWAuICBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVzZSBjaGFuZ2VzIGFyZSBldmVuIHJlYWNoYWJsZSwgYW5kIGlmIHNvLCB3aGV0aGVyIHRoZXkgcmVwcmVzZW50IGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbkxldCdzIHNlZeKApiBgbG9vcF9jaGFuZ2VfZmRgIGlzIGNhbGxlZCB0aHJvdWdoIHRoZSBgTE9PUF9DSEFOR0VfRkRgIGlvY3RsLCBhbmQgYG5iZF9jbGVhcl9zb2NrX2lvY3RsYCBpcyBjYWxsZWQgdmlhIHRoZSBgTkJEX0NMRUFSX1NPQ0tgIGlvY3RsLiBSaWdodCwgY2xhc3NpYyBibG9jayBkZXZpY2UgZHJpdmVycy4gR29vZCwgdGhleSdyZSBibG9jayBkZXZpY2VzIHNvIEkgY2FuIGVhc2lseSBzZXQgdGhlc2UgdXAgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBmb3IgdGVzdGluZy5cblxuVGltZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gSSdsbCBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgTE9PUCBhbmQgTkJELiAgYGRyaXZlcnMvYmxvY2svS2NvbmZpZ2AgaXMgdGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTgzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTY6MzA6MzUuMDA1Mzc2MTE4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3ODU0NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTEtfREVWX0xPT1BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZz0xNDA9Y29uZmlnIEJMS19ERVZfQ09XX0NPTU1PTlxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE0My1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTQ0OmNvbmZpZyBCTEtfREVWX0xPT1BcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTQ1LVxcdHRyaXN0YXRlIFxcXCJMb29wYmFjayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xNzgtXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE3OTpjb25maWcgQkxLX0RFVl9MT09QX01JTl9DT1VOVFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xODAtXFx0aW50IFxcXCJOdW1iZXIgb2YgbG9vcCBkZXZpY2VzIHRvIHByZS1jcmVhdGUgYXQgaW5pdCB0aW1lXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMDozNS4wNTMyMzQ2MzdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTQ3OTUyMTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkuIEhlcmUncyBhIHN1bW1hcnksIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkLCBhbmQgc3RhcnRpbmcgd2l0aCB0aGUgcmVxdWVzdGVkIGJvbGRlZCBoZWFkZXI6XG5cbioqTXkgUGVyc3BlY3RpdmUgb24gTkJEKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXaGVuIEkgdGhpbmsgYWJvdXQgTkJELCBteSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gdGhlIHByYWN0aWNhbCBhcHBsaWNhdGlvbnMgYW5kIGltcGxpY2F0aW9ucy4gSSdtIGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9uIFtpbnNlcnQgcmVsZXZhbnQgZmllbGRdLiBJIG5lZWQgdG8gYXNzZXNzIHdoYXQgdGhpcyBtZWFucyBpbiB0ZXJtcyBvZiBbc3BlY2lmaWMgdGVjaG5pY2FsIGNvbnNpZGVyYXRpb25zXSwgYW5kIGhvdyB3ZSBjYW4gcmVmaW5lIG91ciBzdHJhdGVneSB0byBsZXZlcmFnZSBhbnkgb3Bwb3J0dW5pdGllcyBvciBtaXRpZ2F0ZSBhbnkgcmlza3MgaWRlbnRpZmllZC4gXG5cbkknbSBldmFsdWF0aW5nIHdoZXRoZXIgdGhlc2Ugb2JzZXJ2YXRpb25zIGFsaWduIHdpdGggdGhlIGV4aXN0aW5nIGJvZHkgb2Yga25vd2xlZGdlLCBvciBpZiB0aGV5IHN1Z2dlc3QgYSBuZWVkIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gaW4gYSBzcGVjaWZpYyBhcmVhLiBJJ20gYWxzbyBjb25zaWRlcmluZyB0aGUgcG90ZW50aWFsIGZvciB0aGlzIHRvIGNoYW5nZSBleGlzdGluZyByZXNlYXJjaCBkaXJlY3Rpb25zLiBUaGUgYWltIGlzIHRvIGNsYXJpZnkgaG93IHRoaXMgbWlnaHQgbW9kaWZ5IG9yIGNvbnRyaWJ1dGUgdG8gb3VyIGZpZWxkIG9mIHVuZGVyc3RhbmRpbmcuIFxuXG5cbiIsIklucHV0VG9rZW5zIjozMjkwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMDo0My4yMDExOTAwMTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk0ODExNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19ERVZfTkJEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWc9MTk0PXNvdXJjZSBcXFwiZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWdcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE5NS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTk2OmNvbmZpZyBCTEtfREVWX05CRFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTctXFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgYmxvY2sgZGV2aWNlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE2OjMwOjQzLjI1MDY3NDIxMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzk0ODIxNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBCbG9jayBEZXZpY2UgTW9kdWxlIENvbnNpZGVyYXRpb25zKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXZSdyZSBsb29raW5nIGF0IGJsb2NrIGRldmljZSBpbXBsZW1lbnRhdGlvbnMsIGFuZCB0aGUgZGlzY3Vzc2lvbiBoaW5nZXMgb24gYEJMS19ERVZfTE9PUGAgYW5kIGBCTEtfREVWX05CRGAuIFRoZXNlIGFyZSBjcnVjaWFsLiBOb3csIG15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGhvdyB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3JzIGFyZSBtYW5hZ2VkLCBhbmQgaG93IHdlIGhhbmRsZSB0aGUgbmV0d29yayBzb2NrZXQuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIGNoYW5nZXMgaW4gdGhlIGxvb3AgZGV2aWNlIGZpbGUgZGVzY3JpcHRvcnMgYW5kIGNsZWFyIG5ldHdvcmsgc29ja2V0cy4gU28sIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbG9vcF9jaGFuZ2VfZmRgIGFuZCBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLCBiZWNhdXNlIHRoZXNlIGFyZSBrZXkuIFRoZXknbGwgdGVsbCBtZSBpZiBhbnkgYXNzdW1wdGlvbnMgaGF2ZSBiZWVuIG1hZGUsIG9yIGlmIHRoZXJlIGlzIHRoZSBuZWVkIHRvIGFkanVzdCBvciBleHRlbmQgdG8gc3VwcG9ydCBhIGdpdmVuIGZ1bmN0aW9uYWxpdHkuIEl0J3MgYWxsIGFib3V0IGVuc3VyaW5nIHRoZSBwbHVtYmluZyBpcyBzb3VuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYwMiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE2OjMwOjQ2LjU5MDE1OTM0OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTc5OTU0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsb29wX2NoYW5nZV9mZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL2xvb3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL2xvb3AuYz05Nj1zdGF0aWMgREVGSU5FX01VVEVYKGxvb3BfdmFsaWRhdGVfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA3LSAqIGlzX2xvb3BfZGV2aWNlKCkgaXMgdHJ1ZSwgd2UgbmVlZCBhIGdsb2JhbCBsb2NrIGZvciBzZXJpYWxpemluZyBjb25jdXJyZW50XFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTA4OiAqIGxvb3BfY29uZmlndXJlKCkvbG9vcF9jaGFuZ2VfZmQoKS9fX2xvb3BfY2xyX2ZkKCkgY2FsbHMuXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA5LSAqL1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmM9NTI3PXN0YXRpYyBpbnQgbG9vcF9jaGVja19iYWNraW5nX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy01MzgtLypcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzo1Mzk6ICogbG9vcF9jaGFuZ2VfZmQgc3dpdGNoZWQgdGhlIGJhY2tpbmcgc3RvcmUgb2YgYSBsb29wYmFjayBkZXZpY2UgdG9cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy01NDAtICogYSBuZXcgZmlsZS4gVGhpcyBpcyB1c2VmdWwgZm9yIG9wZXJhdGluZyBzeXN0ZW0gaW5zdGFsbGVycyB0byBmcmVlIHVwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy01NDUtICovXFxuZHJpdmVycy9ibG9jay9sb29wLmM6NTQ2OnN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldixcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy01NDctXFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgYXJnKVxcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmM9MTIxMj1zdGF0aWMgaW50IGxvb3BfY2xyX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMjE3LVxcdCAqIFNpbmNlIGxvX2lvY3RsKCkgaXMgY2FsbGVkIHdpdGhvdXQgbG9ja3MgaGVsZCwgaXQgaXMgcG9zc2libGUgdGhhdFxcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjEyMTg6XFx0ICogbG9vcF9jb25maWd1cmUoKS9sb29wX2NoYW5nZV9mZCgpIGFuZCBsb29wX2Nscl9mZCgpIHJ1biBpbiBwYXJhbGxlbC5cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMjE5LVxcdCAqXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMjIxLVxcdCAqIG1ha2Ugc3VyZSB0aGF0IGxvb3BfdmFsaWRhdGVfZmlsZSgpIHdpbGwgZmFpbCBpZiB0aGUgXFxcInN0cnVjdCBmaWxlXFxcIlxcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjEyMjI6XFx0ICogd2hpY2ggbG9vcF9jb25maWd1cmUoKS9sb29wX2NoYW5nZV9mZCgpIGZvdW5kIHZpYSBmZ2V0KCkgd2FzIHRoaXNcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMjIzLVxcdCAqIGxvb3AgZGV2aWNlLlxcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmM9MTUzOT1zdGF0aWMgaW50IGxvX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE1NjgtXFx0Y2FzZSBMT09QX0NIQU5HRV9GRDpcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxNTY5OlxcdFxcdHJldHVybiBsb29wX2NoYW5nZV9mZChsbywgYmRldiwgYXJnKTtcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xNTcwLVxcdGNhc2UgTE9PUF9DTFJfRkQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE2OjMwOjQ2LjYzOTk2MDg3N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MzIwMDk4NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91J3ZlIGRlc2NyaWJlZDpcblxuKipBbmFseXppbmcgYG5iZF9jbGVhcl9zb2NrX2lvY3RsYCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIGRvd24gdGhpcyBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIGZ1bmN0aW9uLiBGcm9tIHdoYXQgSSBjYW4gZ2F0aGVyLCBpdCdzIGRlYWxpbmcgd2l0aCBjbGVhbmluZyB1cCBzb2NrZXQgaW50ZXJhY3Rpb25zLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBOZXR3b3JrIEJsb2NrIERldmljZSBkcml2ZXIuIEkgc2VlIGBpb2N0bGAgYmVpbmcgbWVudGlvbmVkLCB3aGljaCBtZWFucyBpdCdzIGxpa2VseSBoYW5kbGluZyBzb21lIGtpbmQgb2YgY29udHJvbCBvcGVyYXRpb24gdmlhIGEgZmlsZSBkZXNjcmlwdG9yLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGlzIGlzIHByb2JhYmx5IGludm9rZWQgd2hlbiBhIGNsaWVudCBkaXNjb25uZWN0cyBvciBhbiBlcnJvciBvY2N1cnMgdG8gY2xlYW4gdXAgYXNzb2NpYXRlZCByZXNvdXJjZXMuIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIHJlbGVhc2luZyBzb2NrZXQgY29ubmVjdGlvbnMsIHBvc3NpYmx5IGRlLWFsbG9jYXRpbmcgc3RydWN0dXJlcyByZWxhdGVkIHRvIHRoZSBzb2NrZXQsIGFuZCBlbnN1cmluZyB0aGVyZSBhcmVuJ3QgbGluZ2VyaW5nIHBvaW50ZXJzIHRoYXQgY291bGQgY2F1c2UgaXNzdWVzLiBJJ2QgZXhwZWN0IGl0IHRvIGdyYWNlZnVsbHkgaGFuZGxlIHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zLCBwZXJoYXBzIGNoZWNraW5nIHJldHVybiB2YWx1ZXMgZnJvbSBzb2NrZXQtcmVsYXRlZCBzeXN0ZW0gY2FsbHMuIEdpdmVuIHRoZSBjb250ZXh0IG9mIGEgYmxvY2sgZGV2aWNlLCBkYXRhIGludGVncml0eSB3b3VsZCBiZSBwYXJhbW91bnQsIHNvIEknZCBiZSBsb29raW5nIGZvciBjYXJlZnVsIGVycm9yIGNoZWNraW5nIGFuZCBwZXJoYXBzIHNvbWUgbG9nZ2luZyB0byB0cmFjayB0aGUgc29ja2V0J3Mgc3RhdHVzLiBJdCdzIGltcG9ydGFudCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGRhbmdsaW5nIGZpbGUgZGVzY3JpcHRvcnMgb3IgbWVtb3J5IGxlYWtzLiBVbHRpbWF0ZWx5LCB0aGUgZ29hbCBoZXJlIGlzIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBlbmQgdXAgd2l0aCBhIG1lc3N5IHNvY2tldCBzdGF0ZSBhZnRlciBhIGNvbm5lY3Rpb24gaGFzIGdvbmUgYXdheSwgbWFraW5nIHN1cmUgaXQgZG9lc24ndCBsZWF2ZSB0aGUgc3lzdGVtIGluIGEgdW5zdGFibGUgc3RhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NzcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMDo1MC41NzE5NzI5MjZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTYwMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5iZF9jbGVhcl9zb2NrX2lvY3RsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9uYmQuYz0xNTg0PXN0YXRpYyBpbnQgbmJkX3N0YXJ0X2RldmljZV9pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjEzLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTYxNDpzdGF0aWMgdm9pZCBuYmRfY2xlYXJfc29ja19pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTYxNS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE2NDE9c3RhdGljIGludCBfX25iZF9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLFxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjUwLVxcdGNhc2UgTkJEX0NMRUFSX1NPQ0s6XFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNjUxOlxcdFxcdG5iZF9jbGVhcl9zb2NrX2lvY3RsKG5iZCk7XFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjUyLVxcdFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMDo1MC42MjA5Mzg0ODZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyNDkwNDgwOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBCbG9jayBEZXZpY2UgSU9DVExzOiBQYXJ0aXRpb24gUmVzY2FubmluZyBhbmQgU29ja2V0IENsZWFyaW5nKipcblxuT2theSwgc28gdGhlc2UgdHdvIGlvY3RscyBvbiBibG9jayBkZXZpY2VzIGFyZSBkZWZpbml0ZWx5IGluIHBsYXkg4oCTIHJlYWNoYWJsZSBhbmQgcmlwZSBmb3IgZnV6emluZy4gVGhlIGNoYW5nZXMgYXJlIGFsbCBhYm91dCBmaXhpbmcgcGFydGl0aW9uIHJlc2Nhbm5pbmcgbG9naWMgKG9yIHBvdGVudGlhbGx5IGRyb3BwaW5nIHBhcnRpdGlvbnMsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZykgd2hlbiBiYWNraW5nIGZpbGVzIGNoYW5nZSBvciBOQkQgc29ja2V0cyBhcmUgY2xlYXJlZC4gRnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIHRoaXMgaXMgYSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgZnV6emluZyBpcyB3YXJyYW50ZWQsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciBkdXJpbmcgdGhlc2UgdHJhbnNpdGlvbnMuXG5cbk15IGZvY3VzIGlzIHplcm9lZCBpbiBvbiBgbG9vcF9jaGFuZ2VfZmRgIGFuZCBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgIGFzIHRoZSBwcmltYXJ5IHRhcmdldHMgaGVyZS4gTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzLiBXZSBrbm93IHRoYXQgYEJMS19ERVZfTE9PUGAgYW5kIGBCTEtfREVWX05CRGAgYXJlIGVuYWJsZWQuIEEgcXVpY2sgZG91YmxlLWNoZWNrIHJldmVhbHMgdGhhdCBOQkQgbGVhbnMgb24gTkVULCB3aGljaCBpcyBleHBlY3RlZCwgd2hpbGUgTE9PUCBzZWVtcyBwcmV0dHkgc2VsZi1jb250YWluZWQsIG5vdCByZXF1aXJpbmcgbXVjaCBlbHNlLiBOb3cgSSBoYXZlIHRoZSBmdWxsIHBpY3R1cmUgYW5kIGNhbiBzdGFydCBwbGFubmluZyBteSBmdXp6aW5nIGNhbXBhaWducy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAzMSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMTowMS44Njk5ODkwNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwMTg0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTY9bWVudWNvbmZpZyBCTEtfREVWXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTctXFx0Ym9vbCBcXFwiQmxvY2sgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6ODpcXHRkZXBlbmRzIG9uIEJMT0NLXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTktXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MjI9Y29uZmlnIEJMS19ERVZfRkRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjMtXFx0dHJpc3RhdGUgXFxcIk5vcm1hbCBmbG9wcHkgZGlzayBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNDpcXHRkZXBlbmRzIG9uIEFSQ0hfTUFZX0hBVkVfUENfRkRDXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zNz1jb25maWcgQkxLX0RFVl9GRF9SQVdDTURcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgcmF3IGZsb3BweSBkaXNrIGNvbW1hbmRzIChERVBSRUNBVEVEKVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6Mzk6XFx0ZGVwZW5kcyBvbiBCTEtfREVWX0ZEXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTQwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz01Mz1jb25maWcgQU1JR0FfRkxPUFBZXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTU0LVxcdHRyaXN0YXRlIFxcXCJBbWlnYSBmbG9wcHkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6NTU6XFx0ZGVwZW5kcyBvbiBBTUlHQVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy01Ni1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9NTc9Y29uZmlnIEFUQVJJX0ZMT1BQWVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy01OC1cXHR0cmlzdGF0ZSBcXFwiQXRhcmkgZmxvcHB5IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjU5OlxcdGRlcGVuZHMgb24gQVRBUklcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNjAtXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTYxPWNvbmZpZyBNQUNfRkxPUFBZXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTYyLVxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciBQb3dlck1hYyBmbG9wcHlcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjYzOlxcdGRlcGVuZHMgb24gUFBDX1BNQUMgXFx1MDAyNlxcdTAwMjYgIVBQQ19QTUFDNjRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNjQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTY4PWNvbmZpZyBCTEtfREVWX1NXSU1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNjktXFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIFNXSU0gTWFjaW50b3NoIGZsb3BweVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6NzA6XFx0ZGVwZW5kcyBvbiBNNjhLIFxcdTAwMjZcXHUwMDI2IE1BQyBcXHUwMDI2XFx1MDAyNiAhSElHSE1FTVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy03MS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9NzU9Y29uZmlnIEFNSUdBX1oyUkFNXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTc2LVxcdHRyaXN0YXRlIFxcXCJBbWlnYSBab3JybyBJSSByYW1kaXNrIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjc3OlxcdGRlcGVuZHMgb24gWk9SUk9cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNzgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTg2PWNvbmZpZyBONjRDQVJUXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTg3LVxcdGJvb2wgXFxcIk42NCBjYXJ0IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjg4OlxcdGRlcGVuZHMgb24gTUFDSF9OSU5URU5ETzY0XFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTg5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz05NT1jb25maWcgR0RST01cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctOTYtXFx0dHJpc3RhdGUgXFxcIlNFR0EgRHJlYW1jYXN0IEdELVJPTSBkcml2ZVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6OTc6XFx0ZGVwZW5kcyBvbiBTSF9EUkVBTUNBU1RcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctOTgtXFx0c2VsZWN0IENEUk9NXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MTExPWNvbmZpZyBCTEtfREVWX1VCRFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xMTItXFx0Ym9vbCBcXFwiVmlydHVhbCBibG9jayBkZXZpY2VcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjExMzpcXHRkZXBlbmRzIG9uIFVNTFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xMTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTEyMD1jb25maWcgQkxLX0RFVl9VQkRfU1lOQ1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xMjEtXFx0Ym9vbCBcXFwiQWx3YXlzIGRvIHN5bmNocm9ub3VzIGRpc2sgSU8gZm9yIFVCRFxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTIyOlxcdGRlcGVuZHMgb24gQkxLX0RFVl9VQkRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTIzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xNzk9Y29uZmlnIEJMS19ERVZfTE9PUF9NSU5fQ09VTlRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTgwLVxcdGludCBcXFwiTnVtYmVyIG9mIGxvb3AgZGV2aWNlcyB0byBwcmUtY3JlYXRlIGF0IGluaXQgdGltZVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTgxOlxcdGRlcGVuZHMgb24gQkxLX0RFVl9MT09QXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE4Mi1cXHRkZWZhdWx0IDhcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xOTY9Y29uZmlnIEJMS19ERVZfTkJEXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE5Ny1cXHR0cmlzdGF0ZSBcXFwiTmV0d29yayBibG9jayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTk4OlxcdGRlcGVuZHMgb24gTkVUXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE5OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MjQzPWNvbmZpZyBCTEtfREVWX1JBTV9DT1VOVFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI0NS1cXHRkZWZhdWx0IFxcXCIxNlxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MjQ2OlxcdGRlcGVuZHMgb24gQkxLX0RFVl9SQU1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjQ3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0yNTI9Y29uZmlnIEJMS19ERVZfUkFNX1NJWkVcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjUzLVxcdGludCBcXFwiRGVmYXVsdCBSQU0gZGlzayBzaXplIChrYnl0ZXMpXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNTQ6XFx0ZGVwZW5kcyBvbiBCTEtfREVWX1JBTVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNTUtXFx0ZGVmYXVsdCBcXFwiNDA5NlxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0yNjA9Y29uZmlnIEFUQV9PVkVSX0VUSFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNjEtXFx0dHJpc3RhdGUgXFxcIkFUQSBvdmVyIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjI2MjpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI2Nz1jb25maWcgU1VOVkRDXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI2OC1cXHR0cmlzdGF0ZSBcXFwiU3VuIFZpcnR1YWwgRGlzayBDbGllbnQgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MjY5OlxcdGRlcGVuZHMgb24gU1VOX0xET01TXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI3MC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9Mjc2PWNvbmZpZyBYRU5fQkxLREVWX0ZST05URU5EXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI3Ny1cXHR0cmlzdGF0ZSBcXFwiWGVuIHZpcnR1YWwgYmxvY2sgZGV2aWNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjI3ODpcXHRkZXBlbmRzIG9uIFhFTlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNzktXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9Mjg2PWNvbmZpZyBYRU5fQkxLREVWX0JBQ0tFTkRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjg3LVxcdHRyaXN0YXRlIFxcXCJYZW4gYmxvY2stZGV2aWNlIGJhY2tlbmQgZHJpdmVyXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyODg6XFx0ZGVwZW5kcyBvbiBYRU5fQkFDS0VORFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yODktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTMwNz1jb25maWcgVklSVElPX0JMS1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMDgtXFx0dHJpc3RhdGUgXFxcIlZpcnRpbyBibG9jayBkcml2ZXJcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjMwOTpcXHRkZXBlbmRzIG9uIFZJUlRJT1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMTAtXFx0c2VsZWN0IFNHX1BPT0xcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMTU9Y29uZmlnIEJMS19ERVZfUkJEXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMxNi1cXHR0cmlzdGF0ZSBcXFwiUmFkb3MgYmxvY2sgZGV2aWNlIChSQkQpXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozMTc6XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IEJMT0NLXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMxOC1cXHRzZWxlY3QgQ0VQSF9MSUJcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMzc9Y29uZmlnIEJMS0RFVl9VQkxLX0xFR0FDWV9PUENPREVTXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMzOC1cXHRib29sIFxcXCJTdXBwb3J0IGxlZ2FjeSBjb21tYW5kIG9wY29kZVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzM5OlxcdGRlcGVuZHMgb24gQkxLX0RFVl9VQkxLXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTM0MC1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zNTY9Y29uZmlnIEJMS19ERVZfWk9ORURfTE9PUFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zNTctXFx0dHJpc3RhdGUgXFxcIlpvbmVkIGxvb3BiYWNrIGRldmljZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozNTg6XFx0ZGVwZW5kcyBvbiBCTEtfREVWX1pPTkVEXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTM1OS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE2OjMxOjAxLjkxNzAxMTc2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0NDk4MDExNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgVGhvdWdodCBQcm9jZXNzIG9uIEtlcm5lbCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIHdvcmtpbmcgb24gdGhlc2Uga2VybmVsIGNvbmZpZ3MuIEkgc2VlIHRoYXQgTkJEIGhhcyBhIGRlcGVuZGVuY3kgb24gTkVULCB3aGljaCBtYWtlcyBzZW5zZS4gTE9PUCwgb24gdGhlIG90aGVyIGhhbmQsIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGFueSBzcGVjaWFsIGRlcGVuZGVuY2llcywgYXQgbGVhc3Qgbm90IHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFwcGFyZW50LiBTbywgdGhlIGZpcnN0IHN0ZXAgaXMgdG8gYWRkIGBCTEtfREVWX0xPT1BgIGFuZCBgQkxLX0RFVl9OQkRgIHRvIGBFbmFibGVDb25maWdzYC5cblxuTm93LCBsZXQncyBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQgbWUgc2VlLi4uIEkndmUgZ290IGBsb29wX2NoYW5nZV9mZGAgYW5kIGBuYmRfY2xlYXJfc29ja19pb2N0bGAuXG5cblJpZ2h0LCBib3RoIG9mIHRoZXNlIGFyZSBlaXRoZXIgbm9uLXN0YXRpYyBvciBzdGF0aWMgYnV0IG5vdCBpbmxpbmVkLiBUaGV5J3JlIGVpdGhlciBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgb3IgY2FsbGVkIGZyb20gYSBzd2l0Y2ggc3RhdGVtZW50LCBtZWFuaW5nIHRoZSBjb21waWxlciBpcyBwcm9iYWJseSBub3QgaW5saW5pbmcgdGhlbS4gSGFuZyBvbiwgYWN0dWFsbHkgYGxvb3BfY2hhbmdlX2ZkYCAqaXMqIHN0YXRpYzogYHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgdW5zaWduZWQgaW50IGFyZylgLiBBbmQgaXQncyBjYWxsZWQgZnJvbSB0aGUgYGxvX2lvY3RsYCBzd2l0Y2ggc3RhdGVtZW50LiBTbyBpdCdzIGEgc2VwYXJhdGUgZnVuY3Rpb24sIG5vdCBpbmxpbmVkLiBTYW1lIGdvZXMgZm9yIGBuYmRfY2xlYXJfc29ja19pb2N0bGA6IGBzdGF0aWMgdm9pZCBuYmRfY2xlYXJfc29ja19pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKWAsIGNhbGxlZCBmcm9tIGBfX25iZF9pb2N0bGAncyBzd2l0Y2ggc3RhdGVtZW50IGFuZCBub3QgaW5saW5lZC5cblxuT2theSwgYnV0IGhvbGQgb24gLSBzaG91bGQgSSBjaGVjayBpZiB0aGUgY29tcGlsZXIgbWlnaHQgYmUgaW5saW5pbmcgdGhlbSBhbnl3YXk/IEZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBzd2l0Y2ggc3RhdGVtZW50cyBjYW4gc29tZXRpbWVzIGJlIGlubGluZWQgaWYgdGhleSdyZSBzbWFsbCwgYnV0IGBsb29wX2NoYW5nZV9mZGAgaXMgcHJldHR5IGxhcmdlLCBzbyB1bmxpa2VseS4gYG5iZF9jbGVhcl9zb2NrX2lvY3RsYCBpcyBzbWFsbCB0aG91Z2g6XG5cbmBgYGNcbnN0YXRpYyB2b2lkIG5iZF9jbGVhcl9zb2NrX2lvY3RsKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG57XG5cdG5iZF9jbGVhcl9zb2NrKG5iZCk7XG5cdGRpc2tfZm9yY2VfbWVkaWFfY2hhbmdlKG5iZC1cdTAwM2VkaXNrKTtcblx0bmJkX2JkZXZfcmVzZXQobmJkKTtcblx0Lypcblx0ICogRHJvcCB0aGUgcGFydGl0aW9ucyBvZiB0aGUgZGlzY29ubmVjdGVkIGRldmljZSBvbiB0aGUgbmV4dCBvcGVuLlxuXHQgKiBUaGV5IGNhbiBleGlzdCBldmVuIHdpdGggbWF4X3BhcnQgemVybyBhcyB0aGV5IG1heSBoYXZlIGJlZW4gYWRkZWRcblx0ICogbWFudWFsbHkgd2l0aCBCTEtQRy4gRHJvcHBpbmcgdGhlbSBoZXJlIGlzIG5vdCBwb3NzaWJsZSBhcyB0aGF0XG5cdCAqIG5lZWRzIG9wZW5fbXV0ZXgsIHdoaWNoIG5iZF9vcGVuKCkgYWNxdWlyZXMgdW5kZXIgY29uZmlnX2xvY2suXG5cdCAqL1xuXHRzZXRfYml0KEdEX05FRURfUEFSVF9TQ0FOLCBcdTAwMjZuYmQtXHUwMDNlZGlzay1cdTAwM2VzdGF0ZSk7XG5cdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTkJEX1JUX0hBU19DT05GSUdfUkVGLFxuXHRcdFx0ICAgICAgIFx1MDAyNm5iZC1cdTAwM2Vjb25maWctXHUwMDNlcnVudGltZV9mbGFncykpXG5cdFx0bmJkX2NvbmZpZ19wdXQobmJkKTtcbn1cbmBgYFxuXG5JdCAqbWlnaHQqIGJlIGlubGluZWQgaW50byBgX19uYmRfaW9jdGxgLiBUbyBiZSBhYnNvbHV0ZWx5IHNhZmUsIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gYWRkIGBfX25iZF9pb2N0bGAgYW5kIGBsb19pb2N0bGAgdG8gYEZvY3VzU3ltYm9sc2AuIE9yLCBldmVuIGJldHRlciwganVzdCBhZGQgdGhlIGV4cG9ydGVkIGBuYmRfaW9jdGxgIGFuZCBgbG9faW9jdGxgIHN5bWJvbHMgdGhlbXNlbHZlcy4gVGhhdCB3YXkgSSdtIHN1cmUgSSdtIGNhcHR1cmluZyBhbGwgdGhlIHJlbGV2YW50IGNvZGUuIEdvb2QsIEkgdGhpbmsgSSd2ZSBjb3ZlcmVkIGFsbCB0aGUgYmFzZXMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI3NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMToxMS4zNjY4MTUwOTdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MjYxMDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5iZF9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL25iZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmM9MTYzMT1zdGF0aWMgdm9pZCBuYmRfc2V0X2NtZF90aW1lb3V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHU2NCB0aW1lb3V0KVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjQwLS8qIE11c3QgYmUgY2FsbGVkIHdpdGggY29uZmlnX2xvY2sgaGVsZCAqL1xcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTY0MTpzdGF0aWMgaW50IF9fbmJkX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjQyLVxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTY4Ny1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE2ODg6c3RhdGljIGludCBuYmRfaW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTY4OS1cXHRcXHQgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzEwLVxcdCAgICAoY21kID09IE5CRF9ESVNDT05ORUNUIHx8IGNtZCA9PSBOQkRfQ0xFQVJfU09DSykpXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNzExOlxcdFxcdGVycm9yID0gX19uYmRfaW9jdGwoYmRldiwgbmJkLCBjbWQsIGFyZyk7XFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzEyLVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM9MTgxNT1zdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIG5iZF9mb3BzID1cXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTgxOS1cXHQucmVsZWFzZSA9XFx0bmJkX3JlbGVhc2UsXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxODIwOlxcdC5pb2N0bCA9XFx0bmJkX2lvY3RsLFxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTgyMTpcXHQuY29tcGF0X2lvY3RsID1cXHRuYmRfaW9jdGwsXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xODIyLVxcdC5mcmVlX2Rpc2sgPVxcdG5iZF9mcmVlX2Rpc2ssXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE2OjMxOjExLjQyMTA4MTc5N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzU4MjIxMTA0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQmxvY2sgRGV2aWNlIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoLCBhbmQgSSdtIGFkZGluZyBgbG9vcF9jaGFuZ2VfZmRgLCBgbG9faW9jdGxgLCBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLCBhbmQgYF9fbmJkX2lvY3RsYCB0byBteSBGb2N1c1N5bWJvbHMgbGlzdC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCByZWFsbHkuIFRoZSBjb3JlIGlzIHRoZSBtb2RpZmljYXRpb24gb2YgdGhlIHBhcnRpdGlvbiByZXNjYW5uaW5nIGxvZ2ljIGZvciBsb29wIGFuZCBuYmQgYmxvY2sgZGV2aWNlcy4gVGhlIHBhdGNoIGRlYWxzIHdpdGggc2l0dWF0aW9ucyB3aGVyZSB0aGUgdW5kZXJseWluZyBmaWxlIG9yIHNvY2tldCB1c2VkIGJ5IHRoZXNlIHZpcnR1YWwgYmxvY2sgZGV2aWNlcyBpcyBjaGFuZ2VkIG9yIGNsZWFyZWQuIFRoZXNlIGFjdGlvbnMgYXJlIHRyaWdnZXJlZCB2aWEgaW9jdGxzIG9uIHRob3NlIHZlcnkgc2FtZSB2aXJ0dWFsIGJsb2NrIGRldmljZXMsIHdoaWNoIG1ha2VzIHRoZW0gcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZywgd2hpY2ggaXMgd2h5IGBXb3J0aEZ1enppbmdgIGlzIHNldCB0byBgdHJ1ZWAuIEknbGwgd2FudCB0byBkaWcgaW4gdG8gdGhvc2UgaW9jdGxzLCBlc3BlY2lhbGx5IGBsb19pb2N0bGAsIGBuYmRfY2xlYXJfc29ja19pb2N0bGAgYW5kIGBfX25iZF9pb2N0bGAsIGFuZCBzZWUgd2hhdCB0aGUgY29kZSBkb2VzIHdpdGggdGhlIGJhY2tpbmcgZmlsZXMgb3Igc29ja2V0cy4gQWxzbywgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB0aGF0IEknbSBkZWFsaW5nIHdpdGggYEJMS19ERVZfTE9PUGAgYW5kIGBCTEtfREVWX05CRGAsIGFuZCB0aG9zZSBjb25maWd1cmF0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gYmUgcmVsZXZhbnQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBzZWUgd2hhdCBjb21lcyBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDA5LCJPdXRwdXRUb2tlbnMiOjEyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMToyNS4wMDMyOTU0ODFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTkxMDE3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9MT09QXCIsXG4gICAgXCJCTEtfREVWX05CRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxvb3BfY2hhbmdlX2ZkXCIsXG4gICAgXCJsb19pb2N0bFwiLFxuICAgIFwibmJkX2NsZWFyX3NvY2tfaW9jdGxcIixcbiAgICBcIl9fbmJkX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFydGl0aW9uIHJlc2Nhbm5pbmcgbG9naWMgZm9yIGxvb3AgYW5kIG5iZCBibG9jayBkZXZpY2VzIHdoZW4gdGhlaXIgYmFja2luZyBmaWxlcyBvciBzb2NrZXRzIGFyZSBjaGFuZ2VkL2NsZWFyZWQuIFRoZXNlIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSB2aWEgaW9jdGxzIG9uIHZpcnR1YWwgYmxvY2sgZGV2aWNlcyBhbmQgaGF2ZSBmdW5jdGlvbmFsIGltcGFjdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX0xPT1BcIixcbiAgICBcIkJMS19ERVZfTkJEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibG9vcF9jaGFuZ2VfZmRcIixcbiAgICBcImxvX2lvY3RsXCIsXG4gICAgXCJuYmRfY2xlYXJfc29ja19pb2N0bFwiLFxuICAgIFwiX19uYmRfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYXJ0aXRpb24gcmVzY2FubmluZyBsb2dpYyBmb3IgbG9vcCBhbmQgbmJkIGJsb2NrIGRldmljZXMgd2hlbiB0aGVpciBiYWNraW5nIGZpbGVzIG9yIHNvY2tldHMgYXJlIGNoYW5nZWQvY2xlYXJlZC4gVGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSBpb2N0bHMgb24gdmlydHVhbCBibG9jayBkZXZpY2VzIGFuZCBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMToyNS4wODUyMTE4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDA5Mzg4ODIxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE2OjMxOjI1LjA4NTY1NjgyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE0MDkzNDM4NDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYXJ0aXRpb24gc2Nhbm5pbmcgbG9naWMgaW4gdGhlIGxvb3AgYW5kIG5iZCBibG9jayBkcml2ZXJzLiBJbiBgbG9vcF9jaGFuZ2VfZmRgLCBpdCB1bmNvbmRpdGlvbmFsbHkgY2FsbHMgYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnNgIHJhdGhlciB0aGFuIGNoZWNraW5nIGBMT19GTEFHU19QQVJUU0NBTmAsIHRvIGVuc3VyZSBtYW51YWxseSBhZGRlZCBwYXJ0aXRpb25zIGFyZSBkcm9wcGVkLiBJbiBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLCBpdCBzZXRzIGBHRF9ORUVEX1BBUlRfU0NBTmAgdG8gZHJvcCBwYXJ0aXRpb25zIG9uIHRoZSBuZXh0IG9wZW4uIFRoZXNlIGNoYW5nZXMgb25seSBhbHRlciBjb250cm9sIGZsb3cgYW5kIHN0YXRlIGZsYWdzIHJlbGF0ZWQgdG8gYmxvY2sgZGV2aWNlIHBhcnRpdGlvbiBtYW5hZ2VtZW50LiBUaGV5IGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdGFjaywgaGVhcCwgb3IgcGFkZGluZykgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSByZWxhdGVkIHRvIG9iamVjdCBsaWZldGltZXMgKGUuZy4sIHVzZS1hZnRlci1mcmVlKSBvciBsb2NraW5nLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzJjZjE1YmQyOWZjODAyYTUzYjY4YWMzYzM2M2QxZjQ2ZTJiYTZiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDE2OjMwOjI2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuaW5kZXggNmYxMjk3NjAzNWIwOS4uODk5MzVjZmM1OTFmNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuQEAgLTU1MCw3ICs1NTAsNiBAQCBzdGF0aWMgaW50IGxvb3BfY2hhbmdlX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsXG4gXHRzdHJ1Y3QgZmlsZSAqb2xkX2ZpbGU7XG4gXHR1bnNpZ25lZCBpbnQgbWVtZmxhZ3M7XG4gXHRpbnQgZXJyb3I7XG4tXHRib29sIHBhcnRzY2FuO1xuIFx0Ym9vbCBpc19sb29wO1xuIFxuIFx0aWYgKCFmaWxlKVxuQEAgLTYwNCw3ICs2MDMsNiBAQCBzdGF0aWMgaW50IGxvb3BfY2hhbmdlX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsXG4gXHRsb29wX2Fzc2lnbl9iYWNraW5nX2ZpbGUobG8sIGZpbGUpO1xuIFx0bG9vcF91cGRhdGVfZGlvKGxvKTtcbiBcdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShsby1cdTAwM2Vsb19xdWV1ZSwgbWVtZmxhZ3MpO1xuLVx0cGFydHNjYW4gPSBsby1cdTAwM2Vsb19mbGFncyBcdTAwMjYgTE9fRkxBR1NfUEFSVFNDQU47XG4gXHRsb29wX2dsb2JhbF91bmxvY2sobG8sIGlzX2xvb3ApO1xuIFxuIFx0LypcbkBAIC02MjIsOCArNjIwLDEyIEBAIHN0YXRpYyBpbnQgbG9vcF9jaGFuZ2VfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldixcbiBcdCAqL1xuIFx0ZnB1dChvbGRfZmlsZSk7XG4gXHRkZXZfc2V0X3VldmVudF9zdXBwcmVzcyhkaXNrX3RvX2Rldihsby1cdTAwM2Vsb19kaXNrKSwgMCk7XG4tXHRpZiAocGFydHNjYW4pXG4tXHRcdGxvb3BfcmVyZWFkX3BhcnRpdGlvbnMobG8pO1xuK1x0LypcbitcdCAqIFJlc2NhbiBvciwgd2l0aG91dCBMT19GTEFHU19QQVJUU0NBTiwganVzdCBkcm9wIHRoZSBwYXJ0aXRpb25zIG9mXG4rXHQgKiB0aGUgb2xkIGJhY2tpbmcgZmlsZS4gVGhleSBjYW4gZXhpc3Qgd2l0aG91dCBMT19GTEFHU19QQVJUU0NBTiBhc1xuK1x0ICogdGhleSBtYXkgaGF2ZSBiZWVuIGFkZGVkIG1hbnVhbGx5IHdpdGggQkxLUEcuXG4rXHQgKi9cbitcdGxvb3BfcmVyZWFkX3BhcnRpdGlvbnMobG8pO1xuIFxuIFx0ZXJyb3IgPSAwO1xuIGRvbmU6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9uYmQuYyBiL2RyaXZlcnMvYmxvY2svbmJkLmNcbmluZGV4IGZmY2U1MTliZjAwODcuLjA5YjRhZDcwYTVkN2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL25iZC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL25iZC5jXG5AQCAtMTYxNiw2ICsxNjE2LDEzIEBAIHN0YXRpYyB2b2lkIG5iZF9jbGVhcl9zb2NrX2lvY3RsKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG4gXHRuYmRfY2xlYXJfc29jayhuYmQpO1xuIFx0ZGlza19mb3JjZV9tZWRpYV9jaGFuZ2UobmJkLVx1MDAzZWRpc2spO1xuIFx0bmJkX2JkZXZfcmVzZXQobmJkKTtcbitcdC8qXG4rXHQgKiBEcm9wIHRoZSBwYXJ0aXRpb25zIG9mIHRoZSBkaXNjb25uZWN0ZWQgZGV2aWNlIG9uIHRoZSBuZXh0IG9wZW4uXG4rXHQgKiBUaGV5IGNhbiBleGlzdCBldmVuIHdpdGggbWF4X3BhcnQgemVybyBhcyB0aGV5IG1heSBoYXZlIGJlZW4gYWRkZWRcbitcdCAqIG1hbnVhbGx5IHdpdGggQkxLUEcuIERyb3BwaW5nIHRoZW0gaGVyZSBpcyBub3QgcG9zc2libGUgYXMgdGhhdFxuK1x0ICogbmVlZHMgb3Blbl9tdXRleCwgd2hpY2ggbmJkX29wZW4oKSBhY3F1aXJlcyB1bmRlciBjb25maWdfbG9jay5cbitcdCAqL1xuK1x0c2V0X2JpdChHRF9ORUVEX1BBUlRfU0NBTiwgXHUwMDI2bmJkLVx1MDAzZWRpc2stXHUwMDNlc3RhdGUpO1xuIFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOQkRfUlRfSEFTX0NPTkZJR19SRUYsXG4gXHRcdFx0ICAgICAgIFx1MDAyNm5iZC1cdTAwM2Vjb25maWctXHUwMDNlcnVudGltZV9mbGFncykpXG4gXHRcdG5iZF9jb25maWdfcHV0KG5iZCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMToyNS4wODU2NTc4MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDA5MzQxNjkzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBBc3Nlc3NtZW50OiBObyBOZWVkIEhlcmUqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoLCBmb2N1c2luZyBvbiB0aGUgY2hhbmdlcyB0byBgZHJpdmVycy9ibG9jay9sb29wLmNgIGFuZCBgZHJpdmVycy9ibG9jay9uYmQuY2AuIFRoZSBjb3JlIG9mIHRoZSBtb2RpZmljYXRpb24gaXMgYWJvdXQgaG93IHBhcnRpdGlvbiBzY2FubmluZyBpcyB0cmlnZ2VyZWQuIEluIGBsb29wLmNgLCB0aGV5J3ZlIHJlbW92ZWQgdGhlIGNvbmRpdGlvbmFsIGNoZWNrIGJhc2VkIG9uIGBMT19GTEFHU19QQVJUU0NBTmAgYW5kIGFyZSBub3cgY2FsbGluZyBgbG9vcF9yZXJlYWRfcGFydGl0aW9ucyhsbylgIHVuY29uZGl0aW9uYWxseS4gT3ZlciBpbiBgbmJkLmNgLCB0aGV5J3JlIGFkZGluZyBgc2V0X2JpdChHRF9ORUVEX1BBUlRfU0NBTiwgXHUwMDI2bmJkLVx1MDAzZWRpc2stXHUwMDNlc3RhdGUpYCBpbiBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzLCBcIkNvdWxkIHRoaXMgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz9cIiBJIHdlbnQgdGhyb3VnaCB0aGUgY2hhbmdlcyBzdGVwLWJ5LXN0ZXAuIFRoZXkncmUgcHVyZWx5IGxvZ2ljIGNoYW5nZXM6IHVuY29uZGl0aW9uYWwgY2FsbCB0byBgbG9vcF9yZXJlYWRfcGFydGl0aW9uc2AgYW5kIHNldHRpbmcgYSBmbGFnLiBOb3RoaW5nIG5ldyBpcyBiZWluZyBhbGxvY2F0ZWQuIE5vIG5ldyBmaWVsZHMgYXJlIGJlaW5nIGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gTm8gZGF0YSBpcyBiZWluZyByZWFkIG9yIGNvcGllZCB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIG9ubHkgdGhpbmdzIGJlaW5nIGNoYW5nZWQgcmVsYXRlIHRvIGhvdyB3ZSByZXNjYW4gcGFydGl0aW9ucy5cblxuU28sIEkgZG9uJ3Qgc2VlIGFueSBuZWVkIGZvciBLTVNBTiBoZXJlLiBLQVNBTiBpcyB0aGUgcmlnaHQgdG9vbCB0byBjYXRjaCBtZW1vcnkgY29ycnVwdGlvbiBidWdzIHRoYXQgY291bGQgaGFwcGVuIGJlY2F1c2Ugb2YgcGFydGl0aW9uIHJlc2Nhbm5pbmcg4oCTIHN0dWZmIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJIGRvdWJsZS1jaGVja2VkIHdoYXQgYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnNgIGFuZCBgR0RfTkVFRF9QQVJUX1NDQU5gIGFjdHVhbGx5ICpkbyouIGBsb29wX3JlcmVhZF9wYXJ0aXRpb25zYCBzaW1wbHkgdHJpZ2dlcnMgYSBwYXJ0aXRpb24gcmVzY2FuLCBhbmQgYEdEX05FRURfUEFSVF9TQ0FOYCBpcyBqdXN0IGEgYmxvY2stbGF5ZXIgZmxhZyB0byBzaWduYWwgdGhlIG5lZWQgZm9yIGEgcmVzY2FuLiBTdGlsbCBub3RoaW5nIHBvaW50aW5nIHRvIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlLlxuXG5UaGVyZWZvcmUsIG5vLCB0aGlzIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlza3Mgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEknbSBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4MCwiT3V0cHV0VG9rZW5zIjoyMjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNjozMTozOS4xNzkwNzgwOThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBhcnRpdGlvbiBzY2FubmluZyBsb2dpYyBpbiB0aGUgbG9vcCBhbmQgbmJkIGJsb2NrIGRyaXZlcnMuIEluIGBsb29wX2NoYW5nZV9mZGAsIGl0IHVuY29uZGl0aW9uYWxseSBjYWxscyBgbG9vcF9yZXJlYWRfcGFydGl0aW9uc2AgcmF0aGVyIHRoYW4gY2hlY2tpbmcgYExPX0ZMQUdTX1BBUlRTQ0FOYCwgdG8gZW5zdXJlIG1hbnVhbGx5IGFkZGVkIHBhcnRpdGlvbnMgYXJlIGRyb3BwZWQuIEluIGBuYmRfY2xlYXJfc29ja19pb2N0bGAsIGl0IHNldHMgYEdEX05FRURfUEFSVF9TQ0FOYCB0byBkcm9wIHBhcnRpdGlvbnMgb24gdGhlIG5leHQgb3Blbi4gVGhlc2UgY2hhbmdlcyBvbmx5IGFsdGVyIGNvbnRyb2wgZmxvdyBhbmQgc3RhdGUgZmxhZ3MgcmVsYXRlZCB0byBibG9jayBkZXZpY2UgcGFydGl0aW9uIG1hbmFnZW1lbnQuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrLCBoZWFwLCBvciBwYWRkaW5nKSBvciBjcmVhdGluZyBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmV0aW1lcyAoZS5nLiwgdXNlLWFmdGVyLWZyZWUpIG9yIGxvY2tpbmcsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYXJ0aXRpb24gc2Nhbm5pbmcgbG9naWMgaW4gdGhlIGxvb3AgYW5kIG5iZCBibG9jayBkcml2ZXJzLiBJbiBgbG9vcF9jaGFuZ2VfZmRgLCBpdCB1bmNvbmRpdGlvbmFsbHkgY2FsbHMgYGxvb3BfcmVyZWFkX3BhcnRpdGlvbnNgIHJhdGhlciB0aGFuIGNoZWNraW5nIGBMT19GTEFHU19QQVJUU0NBTmAsIHRvIGVuc3VyZSBtYW51YWxseSBhZGRlZCBwYXJ0aXRpb25zIGFyZSBkcm9wcGVkLiBJbiBgbmJkX2NsZWFyX3NvY2tfaW9jdGxgLCBpdCBzZXRzIGBHRF9ORUVEX1BBUlRfU0NBTmAgdG8gZHJvcCBwYXJ0aXRpb25zIG9uIHRoZSBuZXh0IG9wZW4uIFRoZXNlIGNoYW5nZXMgb25seSBhbHRlciBjb250cm9sIGZsb3cgYW5kIHN0YXRlIGZsYWdzIHJlbGF0ZWQgdG8gYmxvY2sgZGV2aWNlIHBhcnRpdGlvbiBtYW5hZ2VtZW50LiBUaGV5IGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdGFjaywgaGVhcCwgb3IgcGFkZGluZykgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSByZWxhdGVkIHRvIG9iamVjdCBsaWZldGltZXMgKGUuZy4sIHVzZS1hZnRlci1mcmVlKSBvciBsb2NraW5nLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtx8l9[1] Phase: Succeeded StartedAt: 2026-08-24 16:31:50 +0000 UTC FinishedAt: 2026-08-24 16:31:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-24 16:31:50 +0000 UTC FinishedAt: 2026-08-24 16:31:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2] Phase: Succeeded StartedAt: 2026-08-24 16:31:50 +0000 UTC FinishedAt: 2026-08-24 20:11:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:31:50 +0000 UTC FinishedAt: 2026-08-24 20:11:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:31:50 +0000 UTC FinishedAt: 2026-08-24 16:32:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:31:50 +0000 UTC FinishedAt: 2026-08-24 16:31:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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-workflowtx8l9/series-workflowtx8l9-convert-artifact-29038714/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:32:00 +0000 UTC FinishedAt: 2026-08-24 16:48:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:32:00 +0000 UTC FinishedAt: 2026-08-24 16:48:19 +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:*61e5ca0f-27ec-4c37-8bb5-adb770876936,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-workflowtx8l9/series-workflowtx8l9-convert-artifact-29038714/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": "f51f9339-b01d-4cd8-a502-b8c213b0a62d", "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-workflowtx8l9/series-workflowtx8l9-build-action-2363812136/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:32:00 +0000 UTC FinishedAt: 2026-08-24 16:48:09 +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:*61e5ca0f-27ec-4c37-8bb5-adb770876936,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-workflowtx8l9/series-workflowtx8l9-convert-artifact-29038714/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": "f51f9339-b01d-4cd8-a502-b8c213b0a62d", "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-workflowtx8l9/series-workflowtx8l9-build-action-2363812136/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:48:19 +0000 UTC FinishedAt: 2026-08-24 16:48:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:48:19 +0000 UTC FinishedAt: 2026-08-24 16:48:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:48:19 +0000 UTC FinishedAt: 2026-08-24 16:48:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:48:19 +0000 UTC FinishedAt: 2026-08-24 16:48:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-workflowtx8l9/series-workflowtx8l9-convert-artifact-2894772693/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:48:29 +0000 UTC FinishedAt: 2026-08-24 16:50:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:48:29 +0000 UTC FinishedAt: 2026-08-24 16:50:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f51f9339-b01d-4cd8-a502-b8c213b0a62d,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-workflowtx8l9/series-workflowtx8l9-build-action-2363812136/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-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:50:54 +0000 UTC FinishedAt: 2026-08-24 16:50:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:50:54 +0000 UTC FinishedAt: 2026-08-24 16:50:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:50:54 +0000 UTC FinishedAt: 2026-08-24 17:07:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:50:54 +0000 UTC FinishedAt: 2026-08-24 17:07:16 +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:*61e5ca0f-27ec-4c37-8bb5-adb770876936,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-workflowtx8l9/series-workflowtx8l9-convert-artifact-2894772693/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": "90caae07-74f6-46de-93e7-24fbeb1864f6", "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-workflowtx8l9/series-workflowtx8l9-build-action-175889249/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 16:50:54 +0000 UTC FinishedAt: 2026-08-24 17:07:06 +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:*61e5ca0f-27ec-4c37-8bb5-adb770876936,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-workflowtx8l9/series-workflowtx8l9-convert-artifact-2894772693/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": "90caae07-74f6-46de-93e7-24fbeb1864f6", "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-workflowtx8l9/series-workflowtx8l9-build-action-175889249/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 17:07:16 +0000 UTC FinishedAt: 2026-08-24 17:07:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 17:07:16 +0000 UTC FinishedAt: 2026-08-24 17:07:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 17:07:16 +0000 UTC FinishedAt: 2026-08-24 17:09:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 17:07:16 +0000 UTC FinishedAt: 2026-08-24 17:09:20 +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:*90caae07-74f6-46de-93e7-24fbeb1864f6,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-workflowtx8l9/series-workflowtx8l9-build-action-175889249/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-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 17:09:30 +0000 UTC FinishedAt: 2026-08-24 20:11:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 17:09:30 +0000 UTC FinishedAt: 2026-08-24 20:11:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"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:*f51f9339-b01d-4cd8-a502-b8c213b0a62d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*90caae07-74f6-46de-93e7-24fbeb1864f6,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-workflowtx8l9/series-workflowtx8l9-build-action-2363812136/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-workflowtx8l9/series-workflowtx8l9-build-action-175889249/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 17:09:30 +0000 UTC FinishedAt: 2026-08-24 17:09:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 17:09:30 +0000 UTC FinishedAt: 2026-08-24 17:09:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"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-workflowtx8l9/series-workflowtx8l9-convert-artifact-918600890/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 17:09:30 +0000 UTC FinishedAt: 2026-08-24 17:09:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 17:09:30 +0000 UTC FinishedAt: 2026-08-24 17:09:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 17:09:30 +0000 UTC FinishedAt: 2026-08-24 17:09:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 17:09:40 +0000 UTC FinishedAt: 2026-08-24 20:11:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtx8l9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["loop_change_fd","lo_ioctl","nbd_clear_sock_ioctl","__nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0a0d1d55dad570724bf8c7ea83409639cfb4be9b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP","BLK_DEV_NBD"],"series_id":"15cf9a5c-c27b-4b01-91f5-ff2886aa7ab4","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-24 17:09:40 +0000 UTC FinishedAt: 2026-08-24 20:11:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f51f9339-b01d-4cd8-a502-b8c213b0a62d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*90caae07-74f6-46de-93e7-24fbeb1864f6,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-workflowtx8l9/series-workflowtx8l9-build-action-2363812136/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-workflowtx8l9/series-workflowtx8l9-build-action-175889249/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-workflowtx8l9/series-workflowtx8l9-convert-artifact-918600890/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,}