Name: series-workflow4r2p6 Phase: Succeeded StartedAt: 2026-08-14 08:38:45 +0000 UTC FinishedAt: 2026-08-14 13:12:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[0] Phase: Succeeded StartedAt: 2026-08-14 08:38:45 +0000 UTC FinishedAt: 2026-08-14 09:22:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 08:38:45 +0000 UTC FinishedAt: 2026-08-14 09:22:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a275b5bfc9ee29b7eeef4ee6a635ac5461290df4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK", "BLK_DEV_ZONED" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a275b5bfc9ee29b7eeef4ee6a635ac5461290df4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK", "BLK_DEV_ZONED" ], "series_id": "a4426117-cbf6-4f5a-a78e-9d90707f8078" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "nullb_device_power_store", "null_free_zoned_dev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA5OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsX2ZyZWVfem9uZWRfZGV2JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlLiBUaGlzIGZpeGVzIGEgbWVtb3J5IGxlYWsgd2hlcmUgem9uZWQgZGV2aWNlIHJlc291cmNlcyB3ZXJlIG5vdCBmcmVlZCB1cG9uIGRldmljZSBwb3dlciBkb3duLiBNZW1vcnkgbGVha3MgYXJlIGRldGVjdGVkIGJ5IGttZW1sZWFrLCBhbmQgYW55IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gdGhpcyB3b3VsZCBiZSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBpbmZvLWxlYWtzLCBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIGBudWxsX2ZyZWVfem9uZWRfZGV2YCBpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCB0byBwcm9wZXJseSBmcmVlIHpvbmVkIGRldmljZSByZXNvdXJjZXMgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlIHZpYSBjb25maWdmcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgdmlydHVhbCBibG9jayBkZXZpY2UgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVlZTNmMzA0MTgxNGRkNzI4M2Y5MzlmYzViOTE0MzY5NmM4NjNkZGJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAwOToyMTowNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhLi5mYjAwMWQwMDJkMTdhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5AQCAtNTExLDYgJiM0Mzs1MTEsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIFx0XHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuIFx0XHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG4gXHRcdFx0bnVsbF9kZWxfZGV2KGRldi1cdTAwM2VudWxsYik7XG4mIzQzO1x0XHRcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdFx0fVxuIFx0XHRjbGVhcl9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsX2ZyZWVfem9uZWRfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIGBudWxsX2ZyZWVfem9uZWRfZGV2YCBpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCB0byBwcm9wZXJseSBmcmVlIHpvbmVkIGRldmljZSByZXNvdXJjZXMgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlIHZpYSBjb25maWdmcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgdmlydHVhbCBibG9jayBkZXZpY2UgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVlZTNmMzA0MTgxNGRkNzI4M2Y5MzlmYzViOTE0MzY5NmM4NjNkZGIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAwOToyMTowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKaW5kZXggZjhjMGZkNTdlMDQxYS4uZmIwMDFkMDAyZDE3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKQEAgLTUxMSw2ICYjNDM7NTExLDcgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKIAkJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsICZhbXA7ZGV2LSZndDtmbGFncykpIHsKIAkJCWRldi0mZ3Q7cG93ZXIgPSBuZXdwOwogCQkJbnVsbF9kZWxfZGV2KGRldi0mZ3Q7bnVsbGIpOwomIzQzOwkJCW51bGxfZnJlZV96b25lZF9kZXYoZGV2KTsKIAkJfQogCQljbGVhcl9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncyk7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDA0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvd2VyIE1hbmFnZW1lbnQgUGF0Y2ggZm9yIHRoZSBOdWxsIEJsb2NrIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgdGhlIGBudWxsX2Jsa2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AuIEl0JiMzOTtzIGludHJvZHVjaW5nIGEgY2FsbCB0byBgbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO2Agd2l0aGluIHRoZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBmdW5jdGlvbi4gUmlnaHQgYXdheSwgbXkgYnJhaW4gZmxhZ3MgdGhlIHNpZ25pZmljYW5jZTogdGhpcyBpcyB0aGUgdmlydHVhbCBibG9jayBkZXZpY2UgZHJpdmVyLCBzbyBhbnl0aGluZyBoYXBwZW5pbmcgaGVyZSBpcyBkZWZpbml0ZWx5IHJlbGV2YW50IGZvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIGlzIHNvbWV0aGluZyBJIGFsd2F5cyBrZWVwIGluIG1pbmQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBwb3dlciBtYW5hZ2VtZW50IGhvb2sgaXMgZG9pbmcgYW5kIHdoeSB0aGlzIGZyZWVpbmcgb3BlcmF0aW9uIGlzIG5lY2Vzc2FyeSB3aXRoaW4gaXQuIE15IG5leHQgc3RlcCBpcyB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlOiBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSBkaXNzZWN0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBib3RoIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGFuZCBgbnVsbF9mcmVlX3pvbmVkX2RldmAgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB0cmlnZ2VyaW5nIHRoaXMgY2FsbCBhbmQgd2hhdCByZXNvdXJjZXMgYXJlIGJlaW5nIG1hbmFnZWQsIHdoaWNoIGlzIGxpa2VseSBhIGRhdGEgc3RydWN0dXJlIHVzZWQgYnkgem9uZWQgYmxvY2sgZGV2aWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00Nzk9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4My1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4NDpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDg1LVx0XHRcdFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ4OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgYG51bGxfZnJlZV96b25lZF9kZXZgKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG5hbWluZyBjb252ZW50aW9uLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGl0cyBwb3RlbnRpYWwgdXNhZ2Ugd2l0aGluIGEgY29kZWJhc2UuIFRoZSBwaHJhc2UgJiMzNDtudWxsX2ZyZWUmIzM0OyBzdWdnZXN0cyBhIHNwZWNpZmljIGdvYWw6IHRvIGRlc2lnbiBvciBpbXBsZW1lbnQgYSBwYXJ0aWN1bGFyIHBpZWNlIG9mIHNvZnR3YXJlLCBhcmVhIG9mIGZ1bmN0aW9uYWxpdHksIG9yIHNldCBvZiBkYXRhIGluIHN1Y2ggYSB3YXkgYXMgdG8gYXZvaWQsIG9yIGRyYXN0aWNhbGx5IHJlZHVjZSwgaW5zdGFuY2VzIG9mIGBudWxsYCB2YWx1ZXMuIFRoaXMgaXMgbGlrZWx5IGEga2V5IGRlc2lnbiBwcmluY2lwbGUuCgomIzM0O1pvbmVkJiMzNDsgaXMgaW50ZXJlc3RpbmcuIFRoYXQgaW1wbGllcyBzb21lIGtpbmQgb2YgcGFydGl0aW9uaW5nIG9yIGxvZ2ljYWwgc2VwYXJhdGlvbi4gSSYjMzk7bSBwaWN0dXJpbmcgZGlzdGluY3QgYXJlYXMgd2l0aGluIGEgc3lzdGVtLiBUaGlzIGNvdWxkIGJlIHJlbGF0ZWQgdG8gbWVtb3J5IG1hbmFnZW1lbnQsIGRhdGEgc3RydWN0dXJlcywgYSBzcGVjaWZpYyBmZWF0dXJlIHNldCwgb3IgZXZlbiBvcmdhbml6YXRpb25hbCBzdHJ1Y3R1cmUuIFRoaXMgJiMzNDt6b25lJiMzNDsgaXMgbGlrZWx5IGFuIGlzb2xhdGVkIGFyZWEgYW5kIHBvdGVudGlhbGx5IGNvbnRyb2xsZWQsIG1hbmFnZWQsIG9yIGd1YXJkZWQgaW4gc29tZSBtYW5uZXIgZnJvbSBleHRlcm5hbCBjb21wb25lbnRzLgoKRmluYWxseSwgJiMzNDtkZXYmIzM0OyAoYXNzdW1pbmcgaXQmIzM5O3Mgc2hvcnQgZm9yICYjMzQ7ZGV2ZWxvcG1lbnQmIzM0OykgaXMgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIHBhcnQuIEl0IGxpa2VseSBpbmRpY2F0ZXMgdGhhdCB0aGlzIHJlcHJlc2VudHMgYSBkZXZlbG9wbWVudCBicmFuY2gsIGZlYXR1cmUgc2V0LCBvciBhcmVhIG9mIHdvcmssIGFuZCB0aGF0IHRoZSBjb2RlIHdpdGhpbiB0aGlzIHpvbmUgaXMgbGlrZWx5IHN0aWxsIHVuZGVyIGNvbnN0cnVjdGlvbiBhbmQgcG9zc2libHkgZXhwZXJpbWVudGFsLgoKU28sIHBpZWNpbmcgaXQgdG9nZXRoZXIsIEkmIzM5O20gZW52aXNpb25pbmcgYSBkZXZlbG9wbWVudCBlZmZvcnQuIFRoaXMgY291bGQgYmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgZmVhdHVyZSBkZXNpZ25lZCBmcm9tIHRoZSBncm91bmQgdXAgdG8gcHJldmVudCBgbnVsbGAgdmFsdWVzLCBsaWtlbHkgYWNoaWV2ZWQgdGhyb3VnaCBzdHJpY3QgdHlwaW5nLCB1c2Ugb2Ygb3B0aW9uYWwgdHlwZXMsIGRlZmVuc2l2ZSBwcm9ncmFtbWluZywgZGVzaWduIHBhdHRlcm5zIGxpa2UgdGhlIE51bGwgT2JqZWN0IHBhdHRlcm4sIG9yIHBlcmhhcHMgZXZlbiBhIGNvbXBsZXRlIGFyY2hpdGVjdHVyZSBzaGlmdCB0aGF0IGluaGVyZW50bHkgYXZvaWRzIG51bGxzIGJ5IGRlc2lnbi4gVGhlICYjMzQ7em9uZSYjMzQ7IGVsZW1lbnQgc3VnZ2VzdHMgYSBkZWdyZWUgb2YgY29udGFpbm1lbnQsIHBlcmhhcHMgYSBzcGVjaWZpYyBzdWJzeXN0ZW0sIGxpYnJhcnksIG9yIG1vZHVsZSwgdGhhdCBpcyBzcGVjaWZpY2FsbHkgYnVpbHQgdG8gb3BlcmF0ZSBpbiB0aGlzIGBudWxsX2ZyZWVgIG1hbm5lci4gSSB3b25kZXIgaWYgdGhlcmUgaXMgYSBwbGFuIHRvIG1lcmdlIHRoaXMgem9uZSBpbnRvIHRoZSB3aWRlciBjb2RlYmFzZSBsYXRlci4gSXQgYWxzbyBjYXVzZXMgbWUgdG8gd29uZGVyIGhvdyB0aGUgJiMzNDtub24tbnVsbCYjMzQ7IGFzc3VtcHRpb24gaXMgaGFuZGxlZCB3aXRoaW4gdGhpcyBwYXJ0aXRpb25lZCBzdHJ1Y3R1cmUuIElzIHRoZXJlIGEgbmVlZCB0byB2YWxpZGF0ZSB0aGF0IHRoZSBib3VuZGFyeSB0byB0aGlzIHpvbmUgcmVtYWlucyBmcmVlIG9mIG51bGxzPwoKVWx0aW1hdGVseSwgdGhpcyBzdWdnZXN0cyBhIGNvbmNlcnRlZCBlZmZvcnQgdG8gY3JlYXRlIGEgbW9yZSByb2J1c3QgYW5kIHByZWRpY3RhYmxlIHBhcnQgb2YgdGhlIHN5c3RlbSwgbGlrZWx5IGRyaXZlbiBieSBhIGRlc2lyZSB0byByZWR1Y2UgbnVsbCBwb2ludGVyIGV4Y2VwdGlvbnMgb3IgaW1wcm92ZSBjb2RlIGNsYXJpdHkgYW5kIG1haW50YWluYWJpbGl0eS4gTXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0byBkcmlsbCBkb3duIGludG8gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgaW1tZWRpYXRlbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGNob2ljZXMsIHRoZSBsYW5ndWFnZSBmZWF0dXJlcyBsZXZlcmFnZWQsIGFuZCB0aGUgb3ZlcmFsbCBkZXNpZ24gc3RyYXRlZ3kgdG8gZnVsbHkgZ3Jhc3AgdGhlIHNpZ25pZmljYW5jZSBhbmQgZWZmZWN0aXZlbmVzcyBvZiB0aGlzICYjMzQ7bnVsbC1mcmVlIHpvbmUuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudWxsX2ZyZWVfem9uZWRfZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDg0PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTEzLVx0XHRcdG51bGxfZGVsX2RldihkZXYtXHUwMDNlbnVsbGIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTE0Olx0XHRcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUxNS1cdFx0fVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTgzNT1zdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04MzktXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4NDA6XHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04NDEtXHRiYWRibG9ja3NfZXhpdChcdTAwMjZkZXYtXHUwMDNlYmFkYmxvY2tzKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTU2PXN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDY3LW91dF9jbGVhbnVwX3pvbmU6XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDY4Olx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA2OS1vdXRfY2xlYW51cF90YWdzOlxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNDM9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oOjE0NDp2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNDUtaW50IG51bGxfcmVwb3J0X3pvbmVzKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBzZWN0b3JfdCBzZWN0b3IsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTE2MT1zdGF0aWMgaW5saW5lIGludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjQtfVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oOjE2NTpzdGF0aWMgaW5saW5lIHZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpIHt9XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTY2LXN0YXRpYyBpbmxpbmUgYmxrX3N0YXR1c190IG51bGxfcHJvY2Vzc196b25lZF9jbWQoc3RydWN0IG51bGxiX2NtZCAqY21kLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYz0xNzU9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4Ni1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYzoxODc6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYy0xODgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA5OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoaXMgaXMgYSBzeXNmcy9jb25maWdmcyBzdG9yZSBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgYG51bGxfYmxrYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGl0LiBUaGlzIGNvbnRleHQgaXMgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIHN5c3RlbS4gS25vd2luZyB0aGUgS2NvbmZpZyBvcHRpb25zIHdpbGwgdGVsbCBtZSBpZiB0aGlzIGlzIGEgY29uZGl0aW9uYWxseSBjb21waWxlZCBmdW5jdGlvbiwgb3Igd2hhdCBzcGVjaWZpYyBmZWF0dXJlcyB0aGlzIGZ1bmN0aW9uIGVuYWJsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19ERVZfTlVMTF9CTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O051bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMDpjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTAxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUgd2UgZ28uLi4KCioqQ2hlY2tpbmcgZm9yIENvbmZpZyBPdmVybG9va3MqKgoKUmlnaHQsIHNvIEkmIzM5O3ZlIGdvdHRlbiB0aGlzIGZhciwgaW1wbGVtZW50ZWQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSwgYW5kIGV2ZXJ5dGhpbmcgKnNlZW1zKiB0byBiZSB3b3JraW5nIGFzIGV4cGVjdGVkLiBCdXQsIEkga25vdyBiZXR0ZXIgdGhhbiB0byBqdXN0IGFzc3VtZSBldmVyeXRoaW5nJiMzOTtzIHBlcmZlY3QuIFRoZSBkZXZpbCBpcyBhbHdheXMgaW4gdGhlIGRldGFpbHMsIGVzcGVjaWFsbHkgd2l0aCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWV0aWN1bG91c2x5IHJldmlldywgb25lIGxhc3QgdGltZSwgdG8gc2VlIGlmIEkmIzM5O3ZlIG1pc3NlZCBhbnl0aGluZy4gQXJlIHRoZXJlIGFueSBvYnNjdXJlIHNldHRpbmdzIEkgb3Zlcmxvb2tlZD8gQW55IGVkZ2UgY2FzZXMgdGhhdCBtaWdodCByZXF1aXJlIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbj8gV2hhdCBhYm91dCBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyBJIGZvcmdvdCB0byBzZXQ/IFRoaXMgaXMgY3J1Y2lhbC4gSSBjYW4mIzM5O3QgbGF1bmNoIHRoaXMgd2l0aG91dCBjb21wbGV0ZSBjb25maWRlbmNlLiBBIG1pc3NlZCBjb25maWcgY2FuIGxlYWQgdG8gdGhlIHByb2plY3QgZmFpbGluZy4gSSBuZWVkIHRvIGlkZW50aWZ5IGFueSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdGhhdCBhcmUgY3JpdGljYWwgdG8gdGhlIHN5c3RlbSYjMzk7cyBzdGFiaWxpdHksIHNlY3VyaXR5LCBvciBwZXJmb3JtYW5jZS4gTm8gc3RvbmUgbGVmdCB1bnR1cm5lZC4gVGhpcyBmaW5hbCBjb25maWd1cmF0aW9uIGNoZWNrIGlzIHBhcmFtb3VudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIE51bGwgYmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4gICA4Olx0XHRzZWxlY3QgQ09ORklHRlNfRlNcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbiAgMTE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbiAgMTI6XHRcdGRlcGVuZHMgb24gQkxLX0RFVl9OVUxMX0JMSyBcdTAwMjZcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA5OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0OTIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE51bGwgQmxvY2sgRGV2aWNlIFBvd2VyIE1hbmFnZW1lbnQqKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBzZXQgdG8gYEJMS19ERVZfTlVMTF9CTEtgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIHRoZSBudWxsIGJsb2NrIGRldmljZS4gTXkgZm9jdXMsIHRoZW4sIGlzIG9uIHRoZSBwb3dlciBtYW5hZ2VtZW50IHNpZGUgb2YgdGhpcywgc3BlY2lmaWNhbGx5IHRoZSBmdW5jdGlvbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYC4gQmFzZWQgb24gdGhlIGNvbnRleHQsIHRoaXMgZnVuY3Rpb24gaXMgb2J2aW91c2x5IHBhcnQgb2YgdGhlIGBudWxsX2Jsa2AgY29uZmlnZnMuIFJpZ2h0LCBjb25maWdmcy4uLiBnb29kLgoKVG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIHRoaW5nIGJlaGF2ZXMsIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHNvdXJjZSBjb2RlLiBMZXQgbWUgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLiBNeSBiZXN0IGJldCBpcyB0byBmaW5kIGl0IHdpdGhpbiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBUaGF0IHNob3VsZCBjb250YWluIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgZm9yIHRoaXMgbnVsbCBibG9jayBkZXZpY2UgbW9kdWxlLCBpbmNsdWRpbmcgdGhlIHBvd2VyIG1hbmFnZW1lbnQgaG9va3MuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBnb2luZyBvbiBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDg0Olx0c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbiA0ODU6XHRcdFx0XHRcdCAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxuIDQ4NjpcdHtcbiA0ODc6XHRcdHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiA9IHRvX251bGxiX2RldmljZShpdGVtKTtcbiA0ODg6XHRcdGJvb2wgbmV3cCA9IGZhbHNlO1xuIDQ4OTpcdFx0c3NpemVfdCByZXQ7XG4gNDkwOlx0XG4gNDkxOlx0XHRyZXQgPSBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKFx1MDAyNm5ld3AsIHBhZ2UsIGNvdW50KTtcbiA0OTI6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gNDkzOlx0XHRcdHJldHVybiByZXQ7XG4gNDk0Olx0XG4gNDk1Olx0XHRyZXQgPSBjb3VudDtcbiA0OTY6XHRcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4gNDk3Olx0XHRpZiAoIWRldi1cdTAwM2Vwb3dlciBcdTAwMjZcdTAwMjYgbmV3cCkge1xuIDQ5ODpcdFx0XHRpZiAodGVzdF9hbmRfc2V0X2JpdChOVUxMQl9ERVZfRkxfVVAsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpXG4gNDk5Olx0XHRcdFx0Z290byBvdXQ7XG4gNTAwOlx0XG4gNTAxOlx0XHRcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xuIDUwMjpcdFx0XHRpZiAocmV0KSB7XG4gNTAzOlx0XHRcdFx0Y2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbiA1MDQ6XHRcdFx0XHRnb3RvIG91dDtcbiA1MDU6XHRcdFx0fVxuIDUwNjpcdFxuIDUwNzpcdFx0XHRzZXRfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuIDUwODpcdFx0XHRkZXYtXHUwMDNlcG93ZXIgPSBuZXdwO1xuIDUwOTpcdFx0XHRyZXQgPSBjb3VudDtcbiA1MTA6XHRcdH0gZWxzZSBpZiAoZGV2LVx1MDAzZXBvd2VyIFx1MDAyNlx1MDAyNiAhbmV3cCkge1xuIDUxMTpcdFx0XHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuIDUxMjpcdFx0XHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG4gNTEzOlx0XHRcdFx0bnVsbF9kZWxfZGV2KGRldi1cdTAwM2VudWxsYik7XG4gNTE0Olx0XHRcdFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuIDUxNTpcdFx0XHR9XG4gNTE2Olx0XHRcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbiA1MTc6XHRcdH1cbiA1MTg6XHRcbiA1MTk6XHRvdXQ6XG4gNTIwOlx0XHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4gNTIxOlx0XHRyZXR1cm4gcmV0O1xuIDUyMjpcdH1cbiA1MjM6XHRcbiA1MjQ6XHRDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIHBvd2VyKTtcbiA1MjU6XHRcbiA1MjY6XHRzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYmFkYmxvY2tzX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuIDUyNzpcdHtcbiA1Mjg6XHRcdHN0cnVjdCBudWxsYl9kZXZpY2UgKnRfZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xuIDUyOTpcdFxuIDUzMDpcdFx0cmV0dXJuIGJhZGJsb2Nrc19zaG93KFx1MDAyNnRfZGV2LVx1MDAzZWJhZGJsb2NrcywgcGFnZSwgMCk7XG4gNTMxOlx0fVxuIDUzMjpcdFxuIDUzMzpcdHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9iYWRibG9ja3Nfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTQyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG93ZXIgTWFuYWdlbWVudCBQYXRjaCBmb3IgTnVsbCBCbG9jayBEZXZpY2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7YCB3aXRoaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAuIFRoaXMgaXMgcmVhY2hhYmxlIHRocm91Z2ggY29uZmlnZnMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiBoZXJlIGlzIGBCTEtfREVWX05VTExfQkxLYC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLiBCdXQsIGhvbGQgb24sIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcuLi4gaXMgaXQgc3RhdGljPyBZdXAsIGl0IGlzLiBSaWdodC4gQW5kIGl0cyBzdGF0aWMgc3RhdHVzIGNvdWxkIGNvbXBsaWNhdGUgdGhpbmdzLCBJIG5lZWQgdG8gZm9jdXMgb24gc29tZXRoaW5nIGVsc2UuIEhvd2V2ZXIsIGl0JiMzOTtzIGEgY2FsbGJhY2sgd2l0aGluIHRoZSBjb25maWdmcyBmcmFtZXdvcmssIHNvIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIHN0YXRpYywgaXRzIGFkZHJlc3Mgd2lsbCBiZSB0YWtlbiwgYW5kIGl0IGxpa2VseSB3b24mIzM5O3QgYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIFNvLCBJIGhhdmUgb3B0aW9ucyBoZXJlLgoKR2l2ZW4gdGhlIHByb21wdCYjMzk7cyBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMsIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlcnMsIGl0JiMzOTtzIHdvcnRoIGNvbnNpZGVyaW5nIGFsdGVybmF0aXZlcy4gV2hpbGUgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgbWlnaHQgYmUgdmlhYmxlIGJlY2F1c2Ugb2YgaXRzIGNhbGxiYWNrIG5hdHVyZSwgSSBzaG91bGQgY29uc2lkZXIgdGhlIG90aGVyIGZ1bmN0aW9ucyBtZW50aW9uZWQuIFNwZWNpZmljYWxseSwgYG51bGxfZnJlZV96b25lZF9kZXZgLCBgbnVsbF9hZGRfZGV2YCwgb3IgYG51bGxfZGVsX2RldmAuIExldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG51bGxfZnJlZV96b25lZF9kZXZgIGZpcnN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2b2lkIG51bGxfZnJlZV96b25lZF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg9MTQzPWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNDQ6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTQ1LWludCBudWxsX3JlcG9ydF96b25lcyhzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc2VjdG9yX3Qgc2VjdG9yLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNjE9c3RhdGljIGlubGluZSBpbnQgbnVsbF9yZWdpc3Rlcl96b25lZF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTY0LX1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNjU6c3RhdGljIGlubGluZSB2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KSB7fVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE2Ni1zdGF0aWMgaW5saW5lIGJsa19zdGF0dXNfdCBudWxsX3Byb2Nlc3Nfem9uZWRfY21kKHN0cnVjdCBudWxsYl9jbWQgKmNtZCxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM9MTc1PWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYy0xODYtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM6MTg3OnZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMtMTg4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ2MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYSBgbnVsbF9mcmVlX3pvbmVkX2RldmAgQ29uY2VybioqCgpIbW0sIHNvIGBudWxsX2ZyZWVfem9uZWRfZGV2YCBpcyAqbm90KiBhIHN0YXRpYyB2YXJpYWJsZSwgdGhhdCYjMzk7cyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIGBCTEtfREVWX1pPTkVEYC4gVGhlIHF1ZXN0aW9uIGlzLCBpcyBgQkxLX0RFVl9aT05FRGAgYSBtYW5kYXRvcnkgY29tcGlsZS10aW1lIGRlcGVuZGVuY3kgZm9yIGBudWxsX2ZyZWVfem9uZWRfZGV2YD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQgaXMuIFRoZSBxdWlja2VzdCB3YXkgdG8gZGV0ZXJtaW5lIHRoYXQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBidWlsZCBzeXN0ZW0gYW5kIHNlZSBob3cgdGhpcyBhbGwgY29ubmVjdHMuIExldCYjMzk7cyBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBNYWtlZmlsZWAgaW4gYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvYCB0byBzZWUgaG93IHRoZXNlIGVsZW1lbnRzIGludGVyYWN0IGR1cmluZyBjb21waWxhdGlvbi4gVGhpcyBzaG91bGQgcmV2ZWFsIHRoZSBidWlsZC10aW1lIGRlcGVuZGVuY2llcywgaWYgYW55LCB0aGF0IGFmZmVjdCBgbnVsbF9mcmVlX3pvbmVkX2RldmAuIFRoaXMgc2hvdWxkIG1ha2UgdGhlIGNvbm5lY3Rpb24gY2xlYXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA5OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0IyBuZWVkZWQgZm9yIHRyYWNlIGV2ZW50c1xuICAgNDpcdGNjZmxhZ3MteVx0XHRcdCYjNDM7PSAtSSQoc3JjKVxuICAgNTpcdFxuICAgNjpcdG9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVx0JiM0Mzs9IG51bGxfYmxrLm9cbiAgIDc6XHRudWxsX2Jsay1vYmpzXHRcdFx0Oj0gbWFpbi5vXG4gICA4Olx0aWZlcSAoJChDT05GSUdfQkxLX0RFVl9aT05FRCksIHkpXG4gICA5Olx0bnVsbF9ibGstJChDT05GSUdfVFJBQ0lORykgXHQmIzQzOz0gdHJhY2Uub1xuICAxMDpcdGVuZGlmXG4gIDExOlx0bnVsbF9ibGstJChDT05GSUdfQkxLX0RFVl9aT05FRCkgJiM0Mzs9IHpvbmVkLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkzMAoJCQkJCQkJb3V0cHV0OiAxMzMKCQkJCQkJCXRob3VnaHRzOiA3NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZm9yIGEgZnV6emluZyBzdHJhdGVneS4gRmlyc3QsIEkgc2VlIHRoYXQgYENPTkZJR19CTEtfREVWX1pPTkVEYCBpcyBkZWZpbml0ZWx5IGNydWNpYWwgYmVjYXVzZSBpdCYjMzk7cyByZXF1aXJlZCBmb3IgYHpvbmVkLm9gLCB3aGljaCBpbmNsdWRlcyBgbnVsbF9mcmVlX3pvbmVkX2RldmAuIFRoaXMgbWVhbnMgd2UgbmVlZCBgQkxLX0RFVl9aT05FRGAgaW4gb3VyIGBFbmFibGVDb25maWdzYC4gQnV0IHdhaXQsIGBudWxsX2ZyZWVfem9uZWRfZGV2YCBpcyBhbiBlbXB0eSBpbmxpbmUgZnVuY3Rpb24gdW5sZXNzIGBDT05GSUdfQkxLX0RFVl9aT05FRGAgaXMgZW5hYmxlZC4gU28gdGhlIGJ1ZyAqbWlnaHQqIG9ubHkgYmUgdHJpZ2dlcmVkIGlmIHRoYXQgY29uZmlnIG9wdGlvbiBpcyBzZXQuCgpOZXh0LCBJIG5lZWQgdG8gY29uZmlybSBgQkxLX0RFVl9OVUxMX0JMS2AuIFllcywgaXQmIzM5O3MgYSBoYXJkIHJlcXVpcmVtZW50LiBUaGVyZWZvcmUsIHRoZSBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGJlIGBbJiMzNDtCTEtfREVWX05VTExfQkxLJiMzNDssICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7XWAuCgpOb3csIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLiBJIGluaXRpYWxseSB0aG91Z2h0IG9mIGp1c3QgYG51bGxfZnJlZV96b25lZF9kZXZgIG9yIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLiBUaGUgbGF0dGVyLCBiZWluZyBgc3RhdGljYCwgbWlnaHQgYmUgaW5saW5lZCBhbmQgb3B0aW1pemVkIGF3YXkuIEJ1dCwgSSByZW1lbWJlciB0aGF0IGl0JiMzOTtzIHVzZWQgYXMgYSBjYWxsYmFjayBpbiBgQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBwb3dlcik7YC4gVGhpcyBtZWFucyB0aGUgZnVuY3Rpb24gcG9pbnRlciB3aWxsIGJlIGluY2x1ZGVkLCBhbmQgdGhlcmVmb3JlLCBpdCB3aWxsIG5vdCBiZSBpbmxpbmVkLiBTbywgaXQmIzM5O3MgcGVyZmVjdGx5IHZhbGlkIHRvIGluY2x1ZGUgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYXMgYSBmb2N1cyBzeW1ib2wuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdC4uLiBZZXAsIGl0JiMzOTtzIGEgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2sgaW4gYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jYC4KCk9rYXksIEkmIzM5O20gY29uZmlkZW50LiBJJiMzOTtsbCBpbmNsdWRlIGJvdGggYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYW5kIGBudWxsX2ZyZWVfem9uZWRfZGV2YC4KCkNoZWNraW5nIGBDT05GSUdGU19GU2AgZm9yIGFueSBvdGhlciBkZXBlbmRlbmNpZXMuLi5pdCYjMzk7cyBzZWxlY3RlZCBieSBgQkxLX0RFVl9OVUxMX0JMS2AuIFNvLCB3ZSYjMzk7cmUgZ29vZCB3aXRoIGp1c3QgYEJMS19ERVZfTlVMTF9CTEtgIGFuZCBgQkxLX0RFVl9aT05FRGAgaW4gdGhlIGNvbmZpZyBsaXN0LgoKTm93IGxldCYjMzk7cyByZXZpZXcgdGhlIHBhdGNoIGl0c2VsZjoKCmBgYGMKQEAgLTUxMSw2ICYjNDM7NTExLDcgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKIAkJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsICZhbXA7ZGV2LSZndDtmbGFncykpIHsKIAkJCWRldi0mZ3Q7cG93ZXIgPSBuZXdwOwogCQkJbnVsbF9kZWxfZGV2KGRldi0mZ3Q7bnVsbGIpOwomIzQzOwkJCW51bGxfZnJlZV96b25lZF9kZXYoZGV2KTsKIAkJfQogCQljbGVhcl9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncyk7CiAJfQpgYGAKClRoZSBwYXRjaCBjbGVhcmx5IGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIG9yIHNvbWV0aGluZyBzaW1pbGFyIHdoZW4gYSBudWxsX2JsayBkZXZpY2UgaXMgcG93ZXJlZCBkb3duIHZpYSBjb25maWdmcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB3aGljaCBtYWtlcyBpdCB3b3J0aCBmdXp6aW5nLiBJIHdpbGwgaW5jbHVkZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBhbmQgYG51bGxfZnJlZV96b25lZF9kZXZgIGFzIGZvY3VzIHN5bWJvbHMgYW5kIGBCTEtfREVWX05VTExfQkxLYCBhbmQgYEJMS19ERVZfWk9ORURgIGFzIHRoZSBjb25maWd1cmF0aW9ucyB0byBlbmFibGUuCgpJJiMzOTttIGRvdWJsZS1jaGVja2luZyBgbnVsbF9mcmVlX3pvbmVkX2RldmAgcmVhbGx5IHF1aWNrLiBJdCAqaXMqIGEgc3RhdGljIGlubGluZSBmdW5jdGlvbiBpZiBgQkxLX0RFVl9aT05FRGAgaXMgKm5vdCogc2V0LiBCdXQgd2hlbiBgQkxLX0RFVl9aT05FRGAgaXMgc2V0LCBpdCBiZWNvbWVzIGEgJiMzNDtyZWFsJiMzNDsgZnVuY3Rpb24uIEl0JiMzOTtzIHNhZmUgdG8gdXNlIGl0IGFzIGEgZm9jdXMgc3ltYm9sLgoKT2theSwgbGV0JiMzOTtzIGNoZWNrIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIG9uZSBsYXN0IHRpbWUuIEl0JiMzOTtzIHN0YXRpYywgYnV0IGl0cyBhZGRyZXNzIGlzIHRha2VuIGJlY2F1c2UgaXQmIzM5O3MgcGFydCBvZiBgQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBwb3dlcik7YC4gVGhpcyBtYWtlcyBpdCBwYXJ0IG9mIGEgYHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGVgLCB0aHVzIGd1YXJhbnRlZWluZyBpdCB3aWxsIG5vdCBiZSBpbmxpbmVkLgoKSSYjMzk7bSByZWFkeS4gTGV0JiMzOTtzIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA5OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX05VTExfQkxLJiMzNDssCiAgICAmIzM0O0JMS19ERVZfWk9ORUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbF9mcmVlX3pvbmVkX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBgbnVsbF9mcmVlX3pvbmVkX2RldmAgaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgdG8gcHJvcGVybHkgZnJlZSB6b25lZCBkZXZpY2UgcmVzb3VyY2VzIHdoZW4gcG93ZXJpbmcgZG93biBhIG51bGxfYmxrIGRldmljZSB2aWEgY29uZmlnZnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHZpcnR1YWwgYmxvY2sgZGV2aWNlIGRyaXZlciB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsX2ZyZWVfem9uZWRfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIGBudWxsX2ZyZWVfem9uZWRfZGV2YCBpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCB0byBwcm9wZXJseSBmcmVlIHpvbmVkIGRldmljZSByZXNvdXJjZXMgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlIHZpYSBjb25maWdmcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgdmlydHVhbCBibG9jayBkZXZpY2UgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBgbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpYCBpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCB3aGVuIHBvd2VyaW5nIGRvd24gYSBudWxsX2JsayBkZXZpY2UuIFRoaXMgZml4ZXMgYSBtZW1vcnkgbGVhayB3aGVyZSB6b25lZCBkZXZpY2UgcmVzb3VyY2VzIHdlcmUgbm90IGZyZWVkIHVwb24gZGV2aWNlIHBvd2VyIGRvd24uIE1lbW9yeSBsZWFrcyBhcmUgZGV0ZWN0ZWQgYnkga21lbWxlYWssIGFuZCBhbnkgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIHdvdWxkIGJlIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGluZm8tbGVha3MsIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWVlM2YzMDQxODE0ZGQ3MjgzZjkzOWZjNWI5MTQzNjk2Yzg2M2RkYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDA5OjIxOjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwppbmRleCBmOGMwZmQ1N2UwNDFhLi5mYjAwMWQwMDJkMTdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwpAQCAtNTExLDYgJiM0Mzs1MTEsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAogCQlpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgJmFtcDtkZXYtJmd0O2ZsYWdzKSkgewogCQkJZGV2LSZndDtwb3dlciA9IG5ld3A7CiAJCQludWxsX2RlbF9kZXYoZGV2LSZndDtudWxsYik7CiYjNDM7CQkJbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpOwogCQl9CiAJCWNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgJmFtcDtkZXYtJmd0O2ZsYWdzKTsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG51bGxfYmxrYCBEcml2ZXIgUG93ZXIgTWFuYWdlbWVudCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AsIHNwZWNpZmljYWxseSB0aGUgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtgIHdoZW4gdGhlIGRldmljZSBpcyBiZWluZyBwb3dlcmVkIGRvd24gKGkuZS4sIGBuZXdwYCBpcyBmYWxzZSkuIExldCYjMzk7cyBzdGVwIHRocm91Z2ggdGhlIGNvZGUgdG8gY2xhcmlmeSBteSB1bmRlcnN0YW5kaW5nLgoKYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgaGFuZGxlcyB0aGUgcG93ZXIgc3RhdGUgdHJhbnNpdGlvbi4gSXQgY2hlY2tzIGlmIHdlIGFyZSBnb2luZyBmcm9tIG9mZiB0byBvbiwgb3IgZnJvbSBvbiB0byBvZmYuIEN1cnJlbnRseSwgaXQgaW5jbHVkZXM6Ci0gICBJZiB3ZSBhcmUgZ29pbmcgZnJvbSBvZmYgdG8gb24sIGl0IGNhbGxzIGBudWxsX2FkZF9kZXZgLgotICAgSWYgd2UgYXJlIGdvaW5nIGZyb20gb24gdG8gb2ZmLCBpdCBjYWxscyBgbnVsbF9kZWxfZGV2YC4KCkFkZGluZyBgbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpYCBvbiB0aGUgcG93ZXItZG93biBwYXRoIHN1Z2dlc3RzIGEgY2xlYW51cCBvcGVyYXRpb24uIE15IGluaXRpYWwgdGhvdWdodHMgYXJlIHRoYXQgdGhpcyBpcyBsaWtlbHkgYWRkcmVzc2luZyBhIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlLiBFaXRoZXIgYSBtZW1vcnkgbGVhaywgYSB1c2UtYWZ0ZXItZnJlZSwgb3IgcGVyaGFwcyBhbiBpc3N1ZSB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgY29tbWVudCBpbiB0aGUgcGF0Y2ggbWVudGlvbnMgaXQgaXMgdG8gZnJlZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIHpvbmVkIGRldmljZXMuIEkgc3VzcGVjdCB0aGUga2VybmVsIG1heSBoYXZlIGEga21lbWxlYWsgZGV0ZWN0aW9uIGFuZC9vciBLQVNBTiB0byBkZXRlY3QgdGhlc2UgaXNzdWVzLiBCdXQgdGhlIHBhdGNoIHNlZW1zIHRvIGFkZHJlc3MgdGhlIGZyZWUgaXRzZWxmLCBub3QgdGhlIGluaXRpYWxpemF0aW9uLgoKSWYgdGhlIG1lbW9yeSB3YXNuJiMzOTt0IGZyZWVkLCBpdCYjMzk7cyBhIG1lbW9yeSBsZWFrLCB3aGljaCBga21lbWxlYWtgIHNob3VsZCBjYXRjaC4gSWYgdGhlIG1lbW9yeSB3YXMgYWNjZXNzZWQgKmFmdGVyKiBiZWluZyBmcmVlZCwgdGhhdCYjMzk7cyBhIHVzZS1hZnRlci1mcmVlLCBhbmQgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgc2hvdWxkIGZsYWcgdGhhdC4gQnV0IGZyb20gdGhlIGxvb2tzIG9mIGl0LCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgZnJlZWluZyB0aGUgbWVtb3J5LiBJdCB3aWxsIGJlIGhlbHBmdWwgdG8gbG9vayBhdCB0aGUgZnVuY3Rpb24gYG51bGxfZnJlZV96b25lZF9kZXZgIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnVsbF9mcmVlX3pvbmVkX2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ4ND1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUxMy1cdFx0XHRudWxsX2RlbF9kZXYoZGV2LVx1MDAzZW51bGxiKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUxNDpcdFx0XHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MTUtXHRcdH1cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz04MzU9c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODM5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6ODQwOlx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODQxLVx0YmFkYmxvY2tzX2V4aXQoXHUwMDI2ZGV2LVx1MDAzZWJhZGJsb2Nrcyk7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTk1Nj1zdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA2Ny1vdXRfY2xlYW51cF96b25lOlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjA2ODpcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwNjktb3V0X2NsZWFudXBfdGFnczpcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg9MTQzPWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNDQ6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTQ1LWludCBudWxsX3JlcG9ydF96b25lcyhzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc2VjdG9yX3Qgc2VjdG9yLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNjE9c3RhdGljIGlubGluZSBpbnQgbnVsbF9yZWdpc3Rlcl96b25lZF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTY0LX1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNjU6c3RhdGljIGlubGluZSB2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KSB7fVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE2Ni1zdGF0aWMgaW5saW5lIGJsa19zdGF0dXNfdCBudWxsX3Byb2Nlc3Nfem9uZWRfY21kKHN0cnVjdCBudWxsYl9jbWQgKmNtZCxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM9MTc1PWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYy0xODYtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM6MTg3OnZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMtMTg4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcwNwoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiAxOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE1lbW9yeSBMZWFrIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBzcXVhc2hpbmcgYSBuYXN0eSBtZW1vcnkgbGVhay4gSXQgc2VlbXMgdGhhdCB3aGVuIGEgZGV2aWNlIHVzaW5nIGBjb25maWdmc2AgcG93ZXJzIGRvd24sIHRoZSBmdW5jdGlvbiBgbnVsbF9mcmVlX3pvbmVkX2RldmAgd2FzbiYjMzk7dCBiZWluZyBjYWxsZWQuIENvbnNlcXVlbnRseSwgem9uZWQgZGV2aWNlIG1lbW9yeSB3YXMganVzdC4uLmxlZnQgaGFuZ2luZyBvdXQgdGhlcmUsIG5vdCBiZWluZyBmcmVlZC4gVGhhdCYjMzk7cyBhIHRleHRib29rIG1lbW9yeSBsZWFrLgoKRm9ydHVuYXRlbHksIHdlIGNhdWdodCB0aGlzIHdpdGggYGttZW1sZWFrYCwgd2hpY2ggaXMgdGhlIGNvcnJlY3QgdG9vbCBmb3IgdGhlc2Uga2luZHMgb2YgcHJvYmxlbXMsIG5vdCBgS01TQU5gLiBObyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgaGVyZS4KClNvLCB0aGUgcGF0Y2ggaXMgc2ltcGxlOiBqdXN0IGFkZCBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgd2l0aGluIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIHdoZW4gcG93ZXJpbmcgZG93biBhIGBudWxsX2Jsa2AgZGV2aWNlLiBUaGlzIGVuc3VyZXMgdGhlIHpvbmVkIGRldmljZSByZXNvdXJjZXMgYXJlIHJlbGVhc2VkIHByb3Blcmx5IGR1cmluZyBwb3dlciBkb3duLgoKV2UmIzM5O3JlIG5vdCBpbnRyb2R1Y2luZyBvciBleHBvc2luZyBhbnkgbmV3IHJpc2tzIGhlcmUsIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHNoZW5hbmlnYW5zLCBubyBpbmZvIGxlYWtzLiBBbmQgdGhlcmUmIzM5O3Mgbm8gY29uZGl0aW9uYWwgbG9naWMgdGhhdCBkZXBlbmRzIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIGBLTVNBTmAgZnV6emluZyBzZXNzaW9uIGlzbiYjMzk7dCB3YXJyYW50ZWQuIFRoaXMgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZCwgZGlyZWN0bHkgYWRkcmVzc2VzIHRoZSBsZWFrLCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgYXR0YWNrIHZlY3RvcnMuIEdvb2Qgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlLiBUaGlzIGZpeGVzIGEgbWVtb3J5IGxlYWsgd2hlcmUgem9uZWQgZGV2aWNlIHJlc291cmNlcyB3ZXJlIG5vdCBmcmVlZCB1cG9uIGRldmljZSBwb3dlciBkb3duLiBNZW1vcnkgbGVha3MgYXJlIGRldGVjdGVkIGJ5IGttZW1sZWFrLCBhbmQgYW55IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gdGhpcyB3b3VsZCBiZSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBpbmZvLWxlYWtzLCBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBgbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpYCBpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCB3aGVuIHBvd2VyaW5nIGRvd24gYSBudWxsX2JsayBkZXZpY2UuIFRoaXMgZml4ZXMgYSBtZW1vcnkgbGVhayB3aGVyZSB6b25lZCBkZXZpY2UgcmVzb3VyY2VzIHdlcmUgbm90IGZyZWVkIHVwb24gZGV2aWNlIHBvd2VyIGRvd24uIE1lbW9yeSBsZWFrcyBhcmUgZGV0ZWN0ZWQgYnkga21lbWxlYWssIGFuZCBhbnkgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIHdvdWxkIGJlIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGluZm8tbGVha3MsIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MDcuMjY5OTQyNDI4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE0MDI4OTIwMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiLFxuICAgIFwiQkxLX0RFVl9aT05FRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zdG9yZVwiLFxuICAgIFwibnVsbF9mcmVlX3pvbmVkX2RldlwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlLiBUaGlzIGZpeGVzIGEgbWVtb3J5IGxlYWsgd2hlcmUgem9uZWQgZGV2aWNlIHJlc291cmNlcyB3ZXJlIG5vdCBmcmVlZCB1cG9uIGRldmljZSBwb3dlciBkb3duLiBNZW1vcnkgbGVha3MgYXJlIGRldGVjdGVkIGJ5IGttZW1sZWFrLCBhbmQgYW55IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gdGhpcyB3b3VsZCBiZSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBpbmZvLWxlYWtzLCBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXZgIGluIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIHRvIHByb3Blcmx5IGZyZWUgem9uZWQgZGV2aWNlIHJlc291cmNlcyB3aGVuIHBvd2VyaW5nIGRvd24gYSBudWxsX2JsayBkZXZpY2UgdmlhIGNvbmZpZ2ZzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSB2aXJ0dWFsIGJsb2NrIGRldmljZSBkcml2ZXIgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwOToyMTowNy4yNjk5NDkzMDhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1Njk3MTcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVlZTNmMzA0MTgxNGRkNzI4M2Y5MzlmYzViOTE0MzY5NmM4NjNkZGJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMDk6MjE6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbmluZGV4IGY4YzBmZDU3ZTA0MWEuLmZiMDAxZDAwMmQxN2EgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbkBAIC01MTEsNiArNTExLDcgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG4gXFx0XFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSkge1xcbiBcXHRcXHRcXHRkZXYtXFx1MDAzZXBvd2VyID0gbmV3cDtcXG4gXFx0XFx0XFx0bnVsbF9kZWxfZGV2KGRldi1cXHUwMDNlbnVsbGIpO1xcbitcXHRcXHRcXHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XFxuIFxcdFxcdH1cXG4gXFx0XFx0Y2xlYXJfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncyk7XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MDcuODI4MDI3MjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNzM0OTE2ODU1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCIsXG4gICAgXCJCTEtfREVWX1pPTkVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsX2ZyZWVfem9uZWRfZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXZgIGluIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIHRvIHByb3Blcmx5IGZyZWUgem9uZWQgZGV2aWNlIHJlc291cmNlcyB3aGVuIHBvd2VyaW5nIGRvd24gYSBudWxsX2JsayBkZXZpY2UgdmlhIGNvbmZpZ2ZzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSB2aXJ0dWFsIGJsb2NrIGRldmljZSBkcml2ZXIgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZWUzZjMwNDE4MTRkZDcyODNmOTM5ZmM1YjkxNDM2OTZjODYzZGRiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMDk6MjE6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhLi5mYjAwMWQwMDJkMTdhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5AQCAtNTExLDYgKzUxMSw3IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4gXHRcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdFx0ZGV2LVx1MDAzZXBvd2VyID0gbmV3cDtcbiBcdFx0XHRudWxsX2RlbF9kZXYoZGV2LVx1MDAzZW51bGxiKTtcbitcdFx0XHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XG4gXHRcdH1cbiBcdFx0Y2xlYXJfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MDcuODI4MDQxOTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzg4MjQ4NTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvd2VyIE1hbmFnZW1lbnQgUGF0Y2ggZm9yIHRoZSBOdWxsIEJsb2NrIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBgbnVsbF9ibGtgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBJdCdzIGludHJvZHVjaW5nIGEgY2FsbCB0byBgbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO2Agd2l0aGluIHRoZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBmdW5jdGlvbi4gUmlnaHQgYXdheSwgbXkgYnJhaW4gZmxhZ3MgdGhlIHNpZ25pZmljYW5jZTogdGhpcyBpcyB0aGUgdmlydHVhbCBibG9jayBkZXZpY2UgZHJpdmVyLCBzbyBhbnl0aGluZyBoYXBwZW5pbmcgaGVyZSBpcyBkZWZpbml0ZWx5IHJlbGV2YW50IGZvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIGlzIHNvbWV0aGluZyBJIGFsd2F5cyBrZWVwIGluIG1pbmQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBwb3dlciBtYW5hZ2VtZW50IGhvb2sgaXMgZG9pbmcgYW5kIHdoeSB0aGlzIGZyZWVpbmcgb3BlcmF0aW9uIGlzIG5lY2Vzc2FyeSB3aXRoaW4gaXQuIE15IG5leHQgc3RlcCBpcyB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlOiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IGRpc3NlY3QgdGhlIGltcGxlbWVudGF0aW9uIG9mIGJvdGggYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYW5kIGBudWxsX2ZyZWVfem9uZWRfZGV2YCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHRyaWdnZXJpbmcgdGhpcyBjYWxsIGFuZCB3aGF0IHJlc291cmNlcyBhcmUgYmVpbmcgbWFuYWdlZCwgd2hpY2ggaXMgbGlrZWx5IGEgZGF0YSBzdHJ1Y3R1cmUgdXNlZCBieSB6b25lZCBibG9jayBkZXZpY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDA0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MTEuNjE2MzA0MTg1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4NDEwMzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm51bGxiX2RldmljZV9wb3dlcl9zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00Nzk9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDgzLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4NDpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4NS1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MTEuNzA0NzIwNzE2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1ODk2Mzg2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgYG51bGxfZnJlZV96b25lZF9kZXZgKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuYW1pbmcgY29udmVudGlvbi4gSSdtIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGl0cyBwb3RlbnRpYWwgdXNhZ2Ugd2l0aGluIGEgY29kZWJhc2UuIFRoZSBwaHJhc2UgXCJudWxsX2ZyZWVcIiBzdWdnZXN0cyBhIHNwZWNpZmljIGdvYWw6IHRvIGRlc2lnbiBvciBpbXBsZW1lbnQgYSBwYXJ0aWN1bGFyIHBpZWNlIG9mIHNvZnR3YXJlLCBhcmVhIG9mIGZ1bmN0aW9uYWxpdHksIG9yIHNldCBvZiBkYXRhIGluIHN1Y2ggYSB3YXkgYXMgdG8gYXZvaWQsIG9yIGRyYXN0aWNhbGx5IHJlZHVjZSwgaW5zdGFuY2VzIG9mIGBudWxsYCB2YWx1ZXMuIFRoaXMgaXMgbGlrZWx5IGEga2V5IGRlc2lnbiBwcmluY2lwbGUuXG5cblwiWm9uZWRcIiBpcyBpbnRlcmVzdGluZy4gVGhhdCBpbXBsaWVzIHNvbWUga2luZCBvZiBwYXJ0aXRpb25pbmcgb3IgbG9naWNhbCBzZXBhcmF0aW9uLiBJJ20gcGljdHVyaW5nIGRpc3RpbmN0IGFyZWFzIHdpdGhpbiBhIHN5c3RlbS4gVGhpcyBjb3VsZCBiZSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50LCBkYXRhIHN0cnVjdHVyZXMsIGEgc3BlY2lmaWMgZmVhdHVyZSBzZXQsIG9yIGV2ZW4gb3JnYW5pemF0aW9uYWwgc3RydWN0dXJlLiBUaGlzIFwiem9uZVwiIGlzIGxpa2VseSBhbiBpc29sYXRlZCBhcmVhIGFuZCBwb3RlbnRpYWxseSBjb250cm9sbGVkLCBtYW5hZ2VkLCBvciBndWFyZGVkIGluIHNvbWUgbWFubmVyIGZyb20gZXh0ZXJuYWwgY29tcG9uZW50cy5cblxuRmluYWxseSwgXCJkZXZcIiAoYXNzdW1pbmcgaXQncyBzaG9ydCBmb3IgXCJkZXZlbG9wbWVudFwiKSBpcyB0aGUgbW9zdCBzdHJhaWdodGZvcndhcmQgcGFydC4gSXQgbGlrZWx5IGluZGljYXRlcyB0aGF0IHRoaXMgcmVwcmVzZW50cyBhIGRldmVsb3BtZW50IGJyYW5jaCwgZmVhdHVyZSBzZXQsIG9yIGFyZWEgb2Ygd29yaywgYW5kIHRoYXQgdGhlIGNvZGUgd2l0aGluIHRoaXMgem9uZSBpcyBsaWtlbHkgc3RpbGwgdW5kZXIgY29uc3RydWN0aW9uIGFuZCBwb3NzaWJseSBleHBlcmltZW50YWwuXG5cblNvLCBwaWVjaW5nIGl0IHRvZ2V0aGVyLCBJJ20gZW52aXNpb25pbmcgYSBkZXZlbG9wbWVudCBlZmZvcnQuIFRoaXMgY291bGQgYmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgZmVhdHVyZSBkZXNpZ25lZCBmcm9tIHRoZSBncm91bmQgdXAgdG8gcHJldmVudCBgbnVsbGAgdmFsdWVzLCBsaWtlbHkgYWNoaWV2ZWQgdGhyb3VnaCBzdHJpY3QgdHlwaW5nLCB1c2Ugb2Ygb3B0aW9uYWwgdHlwZXMsIGRlZmVuc2l2ZSBwcm9ncmFtbWluZywgZGVzaWduIHBhdHRlcm5zIGxpa2UgdGhlIE51bGwgT2JqZWN0IHBhdHRlcm4sIG9yIHBlcmhhcHMgZXZlbiBhIGNvbXBsZXRlIGFyY2hpdGVjdHVyZSBzaGlmdCB0aGF0IGluaGVyZW50bHkgYXZvaWRzIG51bGxzIGJ5IGRlc2lnbi4gVGhlIFwiem9uZVwiIGVsZW1lbnQgc3VnZ2VzdHMgYSBkZWdyZWUgb2YgY29udGFpbm1lbnQsIHBlcmhhcHMgYSBzcGVjaWZpYyBzdWJzeXN0ZW0sIGxpYnJhcnksIG9yIG1vZHVsZSwgdGhhdCBpcyBzcGVjaWZpY2FsbHkgYnVpbHQgdG8gb3BlcmF0ZSBpbiB0aGlzIGBudWxsX2ZyZWVgIG1hbm5lci4gSSB3b25kZXIgaWYgdGhlcmUgaXMgYSBwbGFuIHRvIG1lcmdlIHRoaXMgem9uZSBpbnRvIHRoZSB3aWRlciBjb2RlYmFzZSBsYXRlci4gSXQgYWxzbyBjYXVzZXMgbWUgdG8gd29uZGVyIGhvdyB0aGUgXCJub24tbnVsbFwiIGFzc3VtcHRpb24gaXMgaGFuZGxlZCB3aXRoaW4gdGhpcyBwYXJ0aXRpb25lZCBzdHJ1Y3R1cmUuIElzIHRoZXJlIGEgbmVlZCB0byB2YWxpZGF0ZSB0aGF0IHRoZSBib3VuZGFyeSB0byB0aGlzIHpvbmUgcmVtYWlucyBmcmVlIG9mIG51bGxzP1xuXG5VbHRpbWF0ZWx5LCB0aGlzIHN1Z2dlc3RzIGEgY29uY2VydGVkIGVmZm9ydCB0byBjcmVhdGUgYSBtb3JlIHJvYnVzdCBhbmQgcHJlZGljdGFibGUgcGFydCBvZiB0aGUgc3lzdGVtLCBsaWtlbHkgZHJpdmVuIGJ5IGEgZGVzaXJlIHRvIHJlZHVjZSBudWxsIHBvaW50ZXIgZXhjZXB0aW9ucyBvciBpbXByb3ZlIGNvZGUgY2xhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LiBNeSBleHBlcnQgaW50dWl0aW9uIHRlbGxzIG1lIHRvIGRyaWxsIGRvd24gaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBpbW1lZGlhdGVseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyYWwgY2hvaWNlcywgdGhlIGxhbmd1YWdlIGZlYXR1cmVzIGxldmVyYWdlZCwgYW5kIHRoZSBvdmVyYWxsIGRlc2lnbiBzdHJhdGVneSB0byBmdWxseSBncmFzcCB0aGUgc2lnbmlmaWNhbmNlIGFuZCBlZmZlY3RpdmVuZXNzIG9mIHRoaXMgXCJudWxsLWZyZWUgem9uZS5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDg4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MTUuODYzNjg3MDkzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODQ0MDM4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudWxsX2ZyZWVfem9uZWRfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ4ND1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTEzLVxcdFxcdFxcdG51bGxfZGVsX2RldihkZXYtXFx1MDAzZW51bGxiKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MTQ6XFx0XFx0XFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUxNS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz04MzU9c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04MzktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6ODQwOlxcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04NDEtXFx0YmFkYmxvY2tzX2V4aXQoXFx1MDAyNmRldi1cXHUwMDNlYmFkYmxvY2tzKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE5NTY9c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA2Ny1vdXRfY2xlYW51cF96b25lOlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIwNjg6XFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwNjktb3V0X2NsZWFudXBfdGFnczpcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNDM9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNDQ6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE0NS1pbnQgbnVsbF9yZXBvcnRfem9uZXMoc3RydWN0IGdlbmRpc2sgKmRpc2ssIHNlY3Rvcl90IHNlY3RvcixcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNjE9c3RhdGljIGlubGluZSBpbnQgbnVsbF9yZWdpc3Rlcl96b25lZF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjQtfVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNjU6c3RhdGljIGlubGluZSB2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KSB7fVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjYtc3RhdGljIGlubGluZSBibGtfc3RhdHVzX3QgbnVsbF9wcm9jZXNzX3pvbmVkX2NtZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM9MTc1PWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4Ni1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM6MTg3OnZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4OC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjE1Ljk3MjEzMzQwMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NzI1MDcxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGZ1bmN0aW9uLCBhbmQgaXQncyBpbW1lZGlhdGVseSBjbGVhciB0aGlzIGlzIGEgc3lzZnMvY29uZmlnZnMgc3RvcmUgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZm9yIGBudWxsX2Jsa2AgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgYW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBpdC4gVGhpcyBjb250ZXh0IGlzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgaG93IHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBzeXN0ZW0uIEtub3dpbmcgdGhlIEtjb25maWcgb3B0aW9ucyB3aWxsIHRlbGwgbWUgaWYgdGhpcyBpcyBhIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgZnVuY3Rpb24sIG9yIHdoYXQgc3BlY2lmaWMgZmVhdHVyZXMgdGhpcyBmdW5jdGlvbiBlbmFibGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzU5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MTguNTQ0NjQzNTM0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDU3OTYxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9OVUxMX0JMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6Njpjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cXHRib29sIFxcXCJTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MTguNjQ5MjI4NTkzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2MDA2ODg0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSB3ZSBnby4uLlxuXG4qKkNoZWNraW5nIGZvciBDb25maWcgT3Zlcmxvb2tzKipcblxuUmlnaHQsIHNvIEkndmUgZ290dGVuIHRoaXMgZmFyLCBpbXBsZW1lbnRlZCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBhbmQgZXZlcnl0aGluZyAqc2VlbXMqIHRvIGJlIHdvcmtpbmcgYXMgZXhwZWN0ZWQuIEJ1dCwgSSBrbm93IGJldHRlciB0aGFuIHRvIGp1c3QgYXNzdW1lIGV2ZXJ5dGhpbmcncyBwZXJmZWN0LiBUaGUgZGV2aWwgaXMgYWx3YXlzIGluIHRoZSBkZXRhaWxzLCBlc3BlY2lhbGx5IHdpdGggY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ldGljdWxvdXNseSByZXZpZXcsIG9uZSBsYXN0IHRpbWUsIHRvIHNlZSBpZiBJJ3ZlIG1pc3NlZCBhbnl0aGluZy4gQXJlIHRoZXJlIGFueSBvYnNjdXJlIHNldHRpbmdzIEkgb3Zlcmxvb2tlZD8gQW55IGVkZ2UgY2FzZXMgdGhhdCBtaWdodCByZXF1aXJlIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbj8gV2hhdCBhYm91dCBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyBJIGZvcmdvdCB0byBzZXQ/IFRoaXMgaXMgY3J1Y2lhbC4gSSBjYW4ndCBsYXVuY2ggdGhpcyB3aXRob3V0IGNvbXBsZXRlIGNvbmZpZGVuY2UuIEEgbWlzc2VkIGNvbmZpZyBjYW4gbGVhZCB0byB0aGUgcHJvamVjdCBmYWlsaW5nLiBJIG5lZWQgdG8gaWRlbnRpZnkgYW55IGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0aGF0IGFyZSBjcml0aWNhbCB0byB0aGUgc3lzdGVtJ3Mgc3RhYmlsaXR5LCBzZWN1cml0eSwgb3IgcGVyZm9ybWFuY2UuIE5vIHN0b25lIGxlZnQgdW50dXJuZWQuIFRoaXMgZmluYWwgY29uZmlndXJhdGlvbiBjaGVjayBpcyBwYXJhbW91bnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMDEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwOToyMToyMS44MDkzMDk0OTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE51bGwgYmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclxcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBDT05GSUdGU19GU1xcbiAgIDk6XFx0XFxuICAxMDpcXHRjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG4gIDExOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbiAgMTI6XFx0XFx0ZGVwZW5kcyBvbiBCTEtfREVWX05VTExfQkxLIFxcdTAwMjZcXHUwMDI2IEZBVUxUX0lOSkVDVElPTl9DT05GSUdGU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwOToyMToyMS44MDk1MzY0OTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3ODg3NzY2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE51bGwgQmxvY2sgRGV2aWNlIFBvd2VyIE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgQkxLX0RFVl9OVUxMX0JMS2AuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhlIG51bGwgYmxvY2sgZGV2aWNlLiBNeSBmb2N1cywgdGhlbiwgaXMgb24gdGhlIHBvd2VyIG1hbmFnZW1lbnQgc2lkZSBvZiB0aGlzLCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9uIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLiBCYXNlZCBvbiB0aGUgY29udGV4dCwgdGhpcyBmdW5jdGlvbiBpcyBvYnZpb3VzbHkgcGFydCBvZiB0aGUgYG51bGxfYmxrYCBjb25maWdmcy4gUmlnaHQsIGNvbmZpZ2ZzLi4uIGdvb2QuXG5cblRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyB0aGluZyBiZWhhdmVzLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHNvdXJjZSBjb2RlLiBMZXQgbWUgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLiBNeSBiZXN0IGJldCBpcyB0byBmaW5kIGl0IHdpdGhpbiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBUaGF0IHNob3VsZCBjb250YWluIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgZm9yIHRoaXMgbnVsbCBibG9jayBkZXZpY2UgbW9kdWxlLCBpbmNsdWRpbmcgdGhlIHBvd2VyIG1hbmFnZW1lbnQgaG9va3MuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24gaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0OTIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjI0Ljg4ODQxNzg1M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODkwMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDg0LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDg0OlxcdHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuIDQ4NTpcXHRcXHRcXHRcXHRcXHQgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcXG4gNDg2OlxcdHtcXG4gNDg3OlxcdFxcdHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiA9IHRvX251bGxiX2RldmljZShpdGVtKTtcXG4gNDg4OlxcdFxcdGJvb2wgbmV3cCA9IGZhbHNlO1xcbiA0ODk6XFx0XFx0c3NpemVfdCByZXQ7XFxuIDQ5MDpcXHRcXG4gNDkxOlxcdFxcdHJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoXFx1MDAyNm5ld3AsIHBhZ2UsIGNvdW50KTtcXG4gNDkyOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA0OTM6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDk0OlxcdFxcbiA0OTU6XFx0XFx0cmV0ID0gY291bnQ7XFxuIDQ5NjpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4gNDk3OlxcdFxcdGlmICghZGV2LVxcdTAwM2Vwb3dlciBcXHUwMDI2XFx1MDAyNiBuZXdwKSB7XFxuIDQ5ODpcXHRcXHRcXHRpZiAodGVzdF9hbmRfc2V0X2JpdChOVUxMQl9ERVZfRkxfVVAsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSlcXG4gNDk5OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA1MDA6XFx0XFxuIDUwMTpcXHRcXHRcXHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcXG4gNTAyOlxcdFxcdFxcdGlmIChyZXQpIHtcXG4gNTAzOlxcdFxcdFxcdFxcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKTtcXG4gNTA0OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA1MDU6XFx0XFx0XFx0fVxcbiA1MDY6XFx0XFxuIDUwNzpcXHRcXHRcXHRzZXRfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncyk7XFxuIDUwODpcXHRcXHRcXHRkZXYtXFx1MDAzZXBvd2VyID0gbmV3cDtcXG4gNTA5OlxcdFxcdFxcdHJldCA9IGNvdW50O1xcbiA1MTA6XFx0XFx0fSBlbHNlIGlmIChkZXYtXFx1MDAzZXBvd2VyIFxcdTAwMjZcXHUwMDI2ICFuZXdwKSB7XFxuIDUxMTpcXHRcXHRcXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKSB7XFxuIDUxMjpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXBvd2VyID0gbmV3cDtcXG4gNTEzOlxcdFxcdFxcdFxcdG51bGxfZGVsX2RldihkZXYtXFx1MDAzZW51bGxiKTtcXG4gNTE0OlxcdFxcdFxcdFxcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcXG4gNTE1OlxcdFxcdFxcdH1cXG4gNTE2OlxcdFxcdFxcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpO1xcbiA1MTc6XFx0XFx0fVxcbiA1MTg6XFx0XFxuIDUxOTpcXHRvdXQ6XFxuIDUyMDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcbiA1MjE6XFx0XFx0cmV0dXJuIHJldDtcXG4gNTIyOlxcdH1cXG4gNTIzOlxcdFxcbiA1MjQ6XFx0Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBwb3dlcik7XFxuIDUyNTpcXHRcXG4gNTI2OlxcdHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9iYWRibG9ja3Nfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXFxuIDUyNzpcXHR7XFxuIDUyODpcXHRcXHRzdHJ1Y3QgbnVsbGJfZGV2aWNlICp0X2RldiA9IHRvX251bGxiX2RldmljZShpdGVtKTtcXG4gNTI5OlxcdFxcbiA1MzA6XFx0XFx0cmV0dXJuIGJhZGJsb2Nrc19zaG93KFxcdTAwMjZ0X2Rldi1cXHUwMDNlYmFkYmxvY2tzLCBwYWdlLCAwKTtcXG4gNTMxOlxcdH1cXG4gNTMyOlxcdFxcbiA1MzM6XFx0c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjI0Ljg4ODYwOTQzM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzgwNDMzNTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG93ZXIgTWFuYWdlbWVudCBQYXRjaCBmb3IgTnVsbCBCbG9jayBEZXZpY2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtgIHdpdGhpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYC4gVGhpcyBpcyByZWFjaGFibGUgdGhyb3VnaCBjb25maWdmcywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSByZWxldmFudCBjb25maWcgb3B0aW9uIGhlcmUgaXMgYEJMS19ERVZfTlVMTF9CTEtgLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYC4gQnV0LCBob2xkIG9uLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLi4uIGlzIGl0IHN0YXRpYz8gWXVwLCBpdCBpcy4gUmlnaHQuIEFuZCBpdHMgc3RhdGljIHN0YXR1cyBjb3VsZCBjb21wbGljYXRlIHRoaW5ncywgSSBuZWVkIHRvIGZvY3VzIG9uIHNvbWV0aGluZyBlbHNlLiBIb3dldmVyLCBpdCdzIGEgY2FsbGJhY2sgd2l0aGluIHRoZSBjb25maWdmcyBmcmFtZXdvcmssIHNvIGV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLCBpdHMgYWRkcmVzcyB3aWxsIGJlIHRha2VuLCBhbmQgaXQgbGlrZWx5IHdvbid0IGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBTbywgSSBoYXZlIG9wdGlvbnMgaGVyZS5cblxuR2l2ZW4gdGhlIHByb21wdCdzIHByZWZlcmVuY2UgZm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cywgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVycywgaXQncyB3b3J0aCBjb25zaWRlcmluZyBhbHRlcm5hdGl2ZXMuIFdoaWxlIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIG1pZ2h0IGJlIHZpYWJsZSBiZWNhdXNlIG9mIGl0cyBjYWxsYmFjayBuYXR1cmUsIEkgc2hvdWxkIGNvbnNpZGVyIHRoZSBvdGhlciBmdW5jdGlvbnMgbWVudGlvbmVkLiBTcGVjaWZpY2FsbHksIGBudWxsX2ZyZWVfem9uZWRfZGV2YCwgYG51bGxfYWRkX2RldmAsIG9yIGBudWxsX2RlbF9kZXZgLiBMZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG51bGxfZnJlZV96b25lZF9kZXZgIGZpcnN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTQyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MjkuNjY5MDQ2NzI2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM1ODM4NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNDM9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNDQ6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE0NS1pbnQgbnVsbF9yZXBvcnRfem9uZXMoc3RydWN0IGdlbmRpc2sgKmRpc2ssIHNlY3Rvcl90IHNlY3RvcixcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNjE9c3RhdGljIGlubGluZSBpbnQgbnVsbF9yZWdpc3Rlcl96b25lZF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjQtfVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNjU6c3RhdGljIGlubGluZSB2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KSB7fVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjYtc3RhdGljIGlubGluZSBibGtfc3RhdHVzX3QgbnVsbF9wcm9jZXNzX3pvbmVkX2NtZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM9MTc1PWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4Ni1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM6MTg3OnZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4OC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjI5LjgyMjYzNjM3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NDU3NzE0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYSBgbnVsbF9mcmVlX3pvbmVkX2RldmAgQ29uY2VybioqXG5cbkhtbSwgc28gYG51bGxfZnJlZV96b25lZF9kZXZgIGlzICpub3QqIGEgc3RhdGljIHZhcmlhYmxlLCB0aGF0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBgQkxLX0RFVl9aT05FRGAuIFRoZSBxdWVzdGlvbiBpcywgaXMgYEJMS19ERVZfWk9ORURgIGEgbWFuZGF0b3J5IGNvbXBpbGUtdGltZSBkZXBlbmRlbmN5IGZvciBgbnVsbF9mcmVlX3pvbmVkX2RldmA/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0IGlzLiBUaGUgcXVpY2tlc3Qgd2F5IHRvIGRldGVybWluZSB0aGF0IGlzIHRvIGRpdmUgaW50byB0aGUgYnVpbGQgc3lzdGVtIGFuZCBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLiBMZXQncyBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBNYWtlZmlsZWAgaW4gYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvYCB0byBzZWUgaG93IHRoZXNlIGVsZW1lbnRzIGludGVyYWN0IGR1cmluZyBjb21waWxhdGlvbi4gVGhpcyBzaG91bGQgcmV2ZWFsIHRoZSBidWlsZC10aW1lIGRlcGVuZGVuY2llcywgaWYgYW55LCB0aGF0IGFmZmVjdCBgbnVsbF9mcmVlX3pvbmVkX2RldmAuIFRoaXMgc2hvdWxkIG1ha2UgdGhlIGNvbm5lY3Rpb24gY2xlYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NjAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwOToyMTozMy4zNjg0MTI1MzFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0XFxuICAgMzpcXHQjIG5lZWRlZCBmb3IgdHJhY2UgZXZlbnRzXFxuICAgNDpcXHRjY2ZsYWdzLXlcXHRcXHRcXHQrPSAtSSQoc3JjKVxcbiAgIDU6XFx0XFxuICAgNjpcXHRvYmotJChDT05GSUdfQkxLX0RFVl9OVUxMX0JMSylcXHQrPSBudWxsX2Jsay5vXFxuICAgNzpcXHRudWxsX2Jsay1vYmpzXFx0XFx0XFx0Oj0gbWFpbi5vXFxuICAgODpcXHRpZmVxICgkKENPTkZJR19CTEtfREVWX1pPTkVEKSwgeSlcXG4gICA5OlxcdG51bGxfYmxrLSQoQ09ORklHX1RSQUNJTkcpIFxcdCs9IHRyYWNlLm9cXG4gIDEwOlxcdGVuZGlmXFxuICAxMTpcXHRudWxsX2Jsay0kKENPTkZJR19CTEtfREVWX1pPTkVEKSArPSB6b25lZC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjMzLjM2ODUyODg4MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTYzNTkyNzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2ggYW5kIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gZm9yIGEgZnV6emluZyBzdHJhdGVneS4gRmlyc3QsIEkgc2VlIHRoYXQgYENPTkZJR19CTEtfREVWX1pPTkVEYCBpcyBkZWZpbml0ZWx5IGNydWNpYWwgYmVjYXVzZSBpdCdzIHJlcXVpcmVkIGZvciBgem9uZWQub2AsIHdoaWNoIGluY2x1ZGVzIGBudWxsX2ZyZWVfem9uZWRfZGV2YC4gVGhpcyBtZWFucyB3ZSBuZWVkIGBCTEtfREVWX1pPTkVEYCBpbiBvdXIgYEVuYWJsZUNvbmZpZ3NgLiBCdXQgd2FpdCwgYG51bGxfZnJlZV96b25lZF9kZXZgIGlzIGFuIGVtcHR5IGlubGluZSBmdW5jdGlvbiB1bmxlc3MgYENPTkZJR19CTEtfREVWX1pPTkVEYCBpcyBlbmFibGVkLiBTbyB0aGUgYnVnICptaWdodCogb25seSBiZSB0cmlnZ2VyZWQgaWYgdGhhdCBjb25maWcgb3B0aW9uIGlzIHNldC5cblxuTmV4dCwgSSBuZWVkIHRvIGNvbmZpcm0gYEJMS19ERVZfTlVMTF9CTEtgLiBZZXMsIGl0J3MgYSBoYXJkIHJlcXVpcmVtZW50LiBUaGVyZWZvcmUsIHRoZSBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGJlIGBbXCJCTEtfREVWX05VTExfQkxLXCIsIFwiQkxLX0RFVl9aT05FRFwiXWAuXG5cbk5vdywgdGhlIGltcG9ydGFudCBmdW5jdGlvbnMgdG8gZm9jdXMgb24uIEkgaW5pdGlhbGx5IHRob3VnaHQgb2YganVzdCBgbnVsbF9mcmVlX3pvbmVkX2RldmAgb3IgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAuIFRoZSBsYXR0ZXIsIGJlaW5nIGBzdGF0aWNgLCBtaWdodCBiZSBpbmxpbmVkIGFuZCBvcHRpbWl6ZWQgYXdheS4gQnV0LCBJIHJlbWVtYmVyIHRoYXQgaXQncyB1c2VkIGFzIGEgY2FsbGJhY2sgaW4gYENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgcG93ZXIpO2AuIFRoaXMgbWVhbnMgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgd2lsbCBiZSBpbmNsdWRlZCwgYW5kIHRoZXJlZm9yZSwgaXQgd2lsbCBub3QgYmUgaW5saW5lZC4gU28sIGl0J3MgcGVyZmVjdGx5IHZhbGlkIHRvIGluY2x1ZGUgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYXMgYSBmb2N1cyBzeW1ib2wuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdC4uLiBZZXAsIGl0J3MgYSBjb25maWdmcyBzdG9yZSBjYWxsYmFjayBpbiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLlxuXG5Pa2F5LCBJJ20gY29uZmlkZW50LiBJJ2xsIGluY2x1ZGUgYm90aCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBhbmQgYG51bGxfZnJlZV96b25lZF9kZXZgLlxuXG5DaGVja2luZyBgQ09ORklHRlNfRlNgIGZvciBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzLi4uaXQncyBzZWxlY3RlZCBieSBgQkxLX0RFVl9OVUxMX0JMS2AuIFNvLCB3ZSdyZSBnb29kIHdpdGgganVzdCBgQkxLX0RFVl9OVUxMX0JMS2AgYW5kIGBCTEtfREVWX1pPTkVEYCBpbiB0aGUgY29uZmlnIGxpc3QuXG5cbk5vdyBsZXQncyByZXZpZXcgdGhlIHBhdGNoIGl0c2VsZjpcblxuYGBgY1xuQEAgLTUxMSw2ICs1MTEsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIFx0XHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuIFx0XHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG4gXHRcdFx0bnVsbF9kZWxfZGV2KGRldi1cdTAwM2VudWxsYik7XG4rXHRcdFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuIFx0XHR9XG4gXHRcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbiBcdH1cbmBgYFxuXG5UaGUgcGF0Y2ggY2xlYXJseSBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayBvciBzb21ldGhpbmcgc2ltaWxhciB3aGVuIGEgbnVsbF9ibGsgZGV2aWNlIGlzIHBvd2VyZWQgZG93biB2aWEgY29uZmlnZnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggbWFrZXMgaXQgd29ydGggZnV6emluZy4gSSB3aWxsIGluY2x1ZGUgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYW5kIGBudWxsX2ZyZWVfem9uZWRfZGV2YCBhcyBmb2N1cyBzeW1ib2xzIGFuZCBgQkxLX0RFVl9OVUxMX0JMS2AgYW5kIGBCTEtfREVWX1pPTkVEYCBhcyB0aGUgY29uZmlndXJhdGlvbnMgdG8gZW5hYmxlLlxuXG5JJ20gZG91YmxlLWNoZWNraW5nIGBudWxsX2ZyZWVfem9uZWRfZGV2YCByZWFsbHkgcXVpY2suIEl0ICppcyogYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uIGlmIGBCTEtfREVWX1pPTkVEYCBpcyAqbm90KiBzZXQuIEJ1dCB3aGVuIGBCTEtfREVWX1pPTkVEYCBpcyBzZXQsIGl0IGJlY29tZXMgYSBcInJlYWxcIiBmdW5jdGlvbi4gSXQncyBzYWZlIHRvIHVzZSBpdCBhcyBhIGZvY3VzIHN5bWJvbC5cblxuT2theSwgbGV0J3MgY2hlY2sgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgb25lIGxhc3QgdGltZS4gSXQncyBzdGF0aWMsIGJ1dCBpdHMgYWRkcmVzcyBpcyB0YWtlbiBiZWNhdXNlIGl0J3MgcGFydCBvZiBgQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBwb3dlcik7YC4gVGhpcyBtYWtlcyBpdCBwYXJ0IG9mIGEgYHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGVgLCB0aHVzIGd1YXJhbnRlZWluZyBpdCB3aWxsIG5vdCBiZSBpbmxpbmVkLlxuXG5JJ20gcmVhZHkuIExldCdzIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MzAsIk91dHB1dFRva2VucyI6MTMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6NDUuMDA0NDU4OTRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI3MzExNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTlVMTF9CTEtcIixcbiAgICBcIkJMS19ERVZfWk9ORURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgICBcIm51bGxfZnJlZV96b25lZF9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBgbnVsbF9mcmVlX3pvbmVkX2RldmAgaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgdG8gcHJvcGVybHkgZnJlZSB6b25lZCBkZXZpY2UgcmVzb3VyY2VzIHdoZW4gcG93ZXJpbmcgZG93biBhIG51bGxfYmxrIGRldmljZSB2aWEgY29uZmlnZnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHZpcnR1YWwgYmxvY2sgZGV2aWNlIGRyaXZlciB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiLFxuICAgIFwiQkxLX0RFVl9aT05FRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zdG9yZVwiLFxuICAgIFwibnVsbF9mcmVlX3pvbmVkX2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIGBudWxsX2ZyZWVfem9uZWRfZGV2YCBpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCB0byBwcm9wZXJseSBmcmVlIHpvbmVkIGRldmljZSByZXNvdXJjZXMgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlIHZpYSBjb25maWdmcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgdmlydHVhbCBibG9jayBkZXZpY2UgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6NDUuMTc3MjAwOTkzWiIsIlNlcSI6MTksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ5NTYxOTE4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjQ1LjE3ODA2ODc2M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMzQ5NDc0NDU0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlLiBUaGlzIGZpeGVzIGEgbWVtb3J5IGxlYWsgd2hlcmUgem9uZWQgZGV2aWNlIHJlc291cmNlcyB3ZXJlIG5vdCBmcmVlZCB1cG9uIGRldmljZSBwb3dlciBkb3duLiBNZW1vcnkgbGVha3MgYXJlIGRldGVjdGVkIGJ5IGttZW1sZWFrLCBhbmQgYW55IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gdGhpcyB3b3VsZCBiZSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBpbmZvLWxlYWtzLCBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWVlM2YzMDQxODE0ZGQ3MjgzZjkzOWZjNWI5MTQzNjk2Yzg2M2RkYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDA5OjIxOjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuaW5kZXggZjhjMGZkNTdlMDQxYS4uZmIwMDFkMDAyZDE3YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuQEAgLTUxMSw2ICs1MTEsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIFx0XHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuIFx0XHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG4gXHRcdFx0bnVsbF9kZWxfZGV2KGRldi1cdTAwM2VudWxsYik7XG4rXHRcdFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuIFx0XHR9XG4gXHRcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjQ1LjE3ODA3MDkxM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTA3OTcwMTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG51bGxfYmxrYCBEcml2ZXIgUG93ZXIgTWFuYWdlbWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGEgY2FsbCB0byBgbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO2Agd2hlbiB0aGUgZGV2aWNlIGlzIGJlaW5nIHBvd2VyZWQgZG93biAoaS5lLiwgYG5ld3BgIGlzIGZhbHNlKS4gTGV0J3Mgc3RlcCB0aHJvdWdoIHRoZSBjb2RlIHRvIGNsYXJpZnkgbXkgdW5kZXJzdGFuZGluZy5cblxuYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgaGFuZGxlcyB0aGUgcG93ZXIgc3RhdGUgdHJhbnNpdGlvbi4gSXQgY2hlY2tzIGlmIHdlIGFyZSBnb2luZyBmcm9tIG9mZiB0byBvbiwgb3IgZnJvbSBvbiB0byBvZmYuIEN1cnJlbnRseSwgaXQgaW5jbHVkZXM6XG4tICAgSWYgd2UgYXJlIGdvaW5nIGZyb20gb2ZmIHRvIG9uLCBpdCBjYWxscyBgbnVsbF9hZGRfZGV2YC5cbi0gICBJZiB3ZSBhcmUgZ29pbmcgZnJvbSBvbiB0byBvZmYsIGl0IGNhbGxzIGBudWxsX2RlbF9kZXZgLlxuXG5BZGRpbmcgYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgb24gdGhlIHBvd2VyLWRvd24gcGF0aCBzdWdnZXN0cyBhIGNsZWFudXAgb3BlcmF0aW9uLiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSB0aGF0IHRoaXMgaXMgbGlrZWx5IGFkZHJlc3NpbmcgYSBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZS4gRWl0aGVyIGEgbWVtb3J5IGxlYWssIGEgdXNlLWFmdGVyLWZyZWUsIG9yIHBlcmhhcHMgYW4gaXNzdWUgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNvbW1lbnQgaW4gdGhlIHBhdGNoIG1lbnRpb25zIGl0IGlzIHRvIGZyZWUgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB6b25lZCBkZXZpY2VzLiBJIHN1c3BlY3QgdGhlIGtlcm5lbCBtYXkgaGF2ZSBhIGttZW1sZWFrIGRldGVjdGlvbiBhbmQvb3IgS0FTQU4gdG8gZGV0ZWN0IHRoZXNlIGlzc3Vlcy4gQnV0IHRoZSBwYXRjaCBzZWVtcyB0byBhZGRyZXNzIHRoZSBmcmVlIGl0c2VsZiwgbm90IHRoZSBpbml0aWFsaXphdGlvbi5cblxuSWYgdGhlIG1lbW9yeSB3YXNuJ3QgZnJlZWQsIGl0J3MgYSBtZW1vcnkgbGVhaywgd2hpY2ggYGttZW1sZWFrYCBzaG91bGQgY2F0Y2guIElmIHRoZSBtZW1vcnkgd2FzIGFjY2Vzc2VkICphZnRlciogYmVpbmcgZnJlZWQsIHRoYXQncyBhIHVzZS1hZnRlci1mcmVlLCBhbmQgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgc2hvdWxkIGZsYWcgdGhhdC4gQnV0IGZyb20gdGhlIGxvb2tzIG9mIGl0LCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgZnJlZWluZyB0aGUgbWVtb3J5LiBJdCB3aWxsIGJlIGhlbHBmdWwgdG8gbG9vayBhdCB0aGUgZnVuY3Rpb24gYG51bGxfZnJlZV96b25lZF9kZXZgIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjUzLjA4NjA0NDQ1OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzNjcwOTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm51bGxfZnJlZV96b25lZF9kZXZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDg0PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MTMtXFx0XFx0XFx0bnVsbF9kZWxfZGV2KGRldi1cXHUwMDNlbnVsbGIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUxNDpcXHRcXHRcXHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTE1LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTgzNT1zdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTgzOS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4NDA6XFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg0MS1cXHRiYWRibG9ja3NfZXhpdChcXHUwMDI2ZGV2LVxcdTAwM2ViYWRibG9ja3MpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTk1Nj1zdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDY3LW91dF9jbGVhbnVwX3pvbmU6XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjA2ODpcXHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA2OS1vdXRfY2xlYW51cF90YWdzOlxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTE0Mz1pbnQgbnVsbF9yZWdpc3Rlcl96b25lZF9kZXYoc3RydWN0IG51bGxiICpudWxsYik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oOjE0NDp2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTQ1LWludCBudWxsX3JlcG9ydF96b25lcyhzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc2VjdG9yX3Qgc2VjdG9yLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTE2MT1zdGF0aWMgaW5saW5lIGludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE2NC19XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oOjE2NTpzdGF0aWMgaW5saW5lIHZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpIHt9XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE2Ni1zdGF0aWMgaW5saW5lIGJsa19zdGF0dXNfdCBudWxsX3Byb2Nlc3Nfem9uZWRfY21kKHN0cnVjdCBudWxsYl9jbWQgKmNtZCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYz0xNzU9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMtMTg2LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYzoxODc6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMtMTg4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6NTMuMTk5NzkyMDQ3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NzI5NjQ4MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE1lbW9yeSBMZWFrIEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IHNxdWFzaGluZyBhIG5hc3R5IG1lbW9yeSBsZWFrLiBJdCBzZWVtcyB0aGF0IHdoZW4gYSBkZXZpY2UgdXNpbmcgYGNvbmZpZ2ZzYCBwb3dlcnMgZG93biwgdGhlIGZ1bmN0aW9uIGBudWxsX2ZyZWVfem9uZWRfZGV2YCB3YXNuJ3QgYmVpbmcgY2FsbGVkLiBDb25zZXF1ZW50bHksIHpvbmVkIGRldmljZSBtZW1vcnkgd2FzIGp1c3QuLi5sZWZ0IGhhbmdpbmcgb3V0IHRoZXJlLCBub3QgYmVpbmcgZnJlZWQuIFRoYXQncyBhIHRleHRib29rIG1lbW9yeSBsZWFrLlxuXG5Gb3J0dW5hdGVseSwgd2UgY2F1Z2h0IHRoaXMgd2l0aCBga21lbWxlYWtgLCB3aGljaCBpcyB0aGUgY29ycmVjdCB0b29sIGZvciB0aGVzZSBraW5kcyBvZiBwcm9ibGVtcywgbm90IGBLTVNBTmAuIE5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyBoZXJlLlxuXG5TbywgdGhlIHBhdGNoIGlzIHNpbXBsZToganVzdCBhZGQgYSBjYWxsIHRvIGBudWxsX2ZyZWVfem9uZWRfZGV2KGRldilgIHdpdGhpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCB3aGVuIHBvd2VyaW5nIGRvd24gYSBgbnVsbF9ibGtgIGRldmljZS4gVGhpcyBlbnN1cmVzIHRoZSB6b25lZCBkZXZpY2UgcmVzb3VyY2VzIGFyZSByZWxlYXNlZCBwcm9wZXJseSBkdXJpbmcgcG93ZXIgZG93bi5cblxuV2UncmUgbm90IGludHJvZHVjaW5nIG9yIGV4cG9zaW5nIGFueSBuZXcgcmlza3MgaGVyZSwgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgc2hlbmFuaWdhbnMsIG5vIGluZm8gbGVha3MuIEFuZCB0aGVyZSdzIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZGVwZW5kcyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBgS01TQU5gIGZ1enppbmcgc2Vzc2lvbiBpc24ndCB3YXJyYW50ZWQuIFRoaXMgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZCwgZGlyZWN0bHkgYWRkcmVzc2VzIHRoZSBsZWFrLCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBhdHRhY2sgdmVjdG9ycy4gR29vZCB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzA3LCJPdXRwdXRUb2tlbnMiOjE0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwOToyMTo1OC42NzI3NjA2NTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIGBudWxsX2ZyZWVfem9uZWRfZGV2KGRldilgIGluIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIHdoZW4gcG93ZXJpbmcgZG93biBhIG51bGxfYmxrIGRldmljZS4gVGhpcyBmaXhlcyBhIG1lbW9yeSBsZWFrIHdoZXJlIHpvbmVkIGRldmljZSByZXNvdXJjZXMgd2VyZSBub3QgZnJlZWQgdXBvbiBkZXZpY2UgcG93ZXIgZG93bi4gTWVtb3J5IGxlYWtzIGFyZSBkZXRlY3RlZCBieSBrbWVtbGVhaywgYW5kIGFueSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnVncyByZWxhdGVkIHRvIHRoaXMgd291bGQgYmUgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgaW5mby1sZWFrcywgb3IgY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIGBudWxsX2ZyZWVfem9uZWRfZGV2KGRldilgIGluIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIHdoZW4gcG93ZXJpbmcgZG93biBhIG51bGxfYmxrIGRldmljZS4gVGhpcyBmaXhlcyBhIG1lbW9yeSBsZWFrIHdoZXJlIHpvbmVkIGRldmljZSByZXNvdXJjZXMgd2VyZSBub3QgZnJlZWQgdXBvbiBkZXZpY2UgcG93ZXIgZG93bi4gTWVtb3J5IGxlYWtzIGFyZSBkZXRlY3RlZCBieSBrbWVtbGVhaywgYW5kIGFueSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnVncyByZWxhdGVkIHRvIHRoaXMgd291bGQgYmUgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgaW5mby1sZWFrcywgb3IgY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4r2p6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 08:38:45 +0000 UTC FinishedAt: 2026-08-14 09:22:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a275b5bfc9ee29b7eeef4ee6a635ac5461290df4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK", "BLK_DEV_ZONED" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a275b5bfc9ee29b7eeef4ee6a635ac5461290df4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK", "BLK_DEV_ZONED" ], "series_id": "a4426117-cbf6-4f5a-a78e-9d90707f8078" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "nullb_device_power_store", "null_free_zoned_dev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA5OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsX2ZyZWVfem9uZWRfZGV2JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlLiBUaGlzIGZpeGVzIGEgbWVtb3J5IGxlYWsgd2hlcmUgem9uZWQgZGV2aWNlIHJlc291cmNlcyB3ZXJlIG5vdCBmcmVlZCB1cG9uIGRldmljZSBwb3dlciBkb3duLiBNZW1vcnkgbGVha3MgYXJlIGRldGVjdGVkIGJ5IGttZW1sZWFrLCBhbmQgYW55IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gdGhpcyB3b3VsZCBiZSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBpbmZvLWxlYWtzLCBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIGBudWxsX2ZyZWVfem9uZWRfZGV2YCBpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCB0byBwcm9wZXJseSBmcmVlIHpvbmVkIGRldmljZSByZXNvdXJjZXMgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlIHZpYSBjb25maWdmcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgdmlydHVhbCBibG9jayBkZXZpY2UgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVlZTNmMzA0MTgxNGRkNzI4M2Y5MzlmYzViOTE0MzY5NmM4NjNkZGJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAwOToyMTowNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhLi5mYjAwMWQwMDJkMTdhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5AQCAtNTExLDYgJiM0Mzs1MTEsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIFx0XHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuIFx0XHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG4gXHRcdFx0bnVsbF9kZWxfZGV2KGRldi1cdTAwM2VudWxsYik7XG4mIzQzO1x0XHRcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdFx0fVxuIFx0XHRjbGVhcl9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsX2ZyZWVfem9uZWRfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIGBudWxsX2ZyZWVfem9uZWRfZGV2YCBpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCB0byBwcm9wZXJseSBmcmVlIHpvbmVkIGRldmljZSByZXNvdXJjZXMgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlIHZpYSBjb25maWdmcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgdmlydHVhbCBibG9jayBkZXZpY2UgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVlZTNmMzA0MTgxNGRkNzI4M2Y5MzlmYzViOTE0MzY5NmM4NjNkZGIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAwOToyMTowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKaW5kZXggZjhjMGZkNTdlMDQxYS4uZmIwMDFkMDAyZDE3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKQEAgLTUxMSw2ICYjNDM7NTExLDcgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKIAkJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsICZhbXA7ZGV2LSZndDtmbGFncykpIHsKIAkJCWRldi0mZ3Q7cG93ZXIgPSBuZXdwOwogCQkJbnVsbF9kZWxfZGV2KGRldi0mZ3Q7bnVsbGIpOwomIzQzOwkJCW51bGxfZnJlZV96b25lZF9kZXYoZGV2KTsKIAkJfQogCQljbGVhcl9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncyk7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDA0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvd2VyIE1hbmFnZW1lbnQgUGF0Y2ggZm9yIHRoZSBOdWxsIEJsb2NrIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgdGhlIGBudWxsX2Jsa2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AuIEl0JiMzOTtzIGludHJvZHVjaW5nIGEgY2FsbCB0byBgbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO2Agd2l0aGluIHRoZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBmdW5jdGlvbi4gUmlnaHQgYXdheSwgbXkgYnJhaW4gZmxhZ3MgdGhlIHNpZ25pZmljYW5jZTogdGhpcyBpcyB0aGUgdmlydHVhbCBibG9jayBkZXZpY2UgZHJpdmVyLCBzbyBhbnl0aGluZyBoYXBwZW5pbmcgaGVyZSBpcyBkZWZpbml0ZWx5IHJlbGV2YW50IGZvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIGlzIHNvbWV0aGluZyBJIGFsd2F5cyBrZWVwIGluIG1pbmQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBwb3dlciBtYW5hZ2VtZW50IGhvb2sgaXMgZG9pbmcgYW5kIHdoeSB0aGlzIGZyZWVpbmcgb3BlcmF0aW9uIGlzIG5lY2Vzc2FyeSB3aXRoaW4gaXQuIE15IG5leHQgc3RlcCBpcyB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlOiBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSBkaXNzZWN0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBib3RoIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGFuZCBgbnVsbF9mcmVlX3pvbmVkX2RldmAgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB0cmlnZ2VyaW5nIHRoaXMgY2FsbCBhbmQgd2hhdCByZXNvdXJjZXMgYXJlIGJlaW5nIG1hbmFnZWQsIHdoaWNoIGlzIGxpa2VseSBhIGRhdGEgc3RydWN0dXJlIHVzZWQgYnkgem9uZWQgYmxvY2sgZGV2aWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00Nzk9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4My1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4NDpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDg1LVx0XHRcdFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ4OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgYG51bGxfZnJlZV96b25lZF9kZXZgKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG5hbWluZyBjb252ZW50aW9uLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGl0cyBwb3RlbnRpYWwgdXNhZ2Ugd2l0aGluIGEgY29kZWJhc2UuIFRoZSBwaHJhc2UgJiMzNDtudWxsX2ZyZWUmIzM0OyBzdWdnZXN0cyBhIHNwZWNpZmljIGdvYWw6IHRvIGRlc2lnbiBvciBpbXBsZW1lbnQgYSBwYXJ0aWN1bGFyIHBpZWNlIG9mIHNvZnR3YXJlLCBhcmVhIG9mIGZ1bmN0aW9uYWxpdHksIG9yIHNldCBvZiBkYXRhIGluIHN1Y2ggYSB3YXkgYXMgdG8gYXZvaWQsIG9yIGRyYXN0aWNhbGx5IHJlZHVjZSwgaW5zdGFuY2VzIG9mIGBudWxsYCB2YWx1ZXMuIFRoaXMgaXMgbGlrZWx5IGEga2V5IGRlc2lnbiBwcmluY2lwbGUuCgomIzM0O1pvbmVkJiMzNDsgaXMgaW50ZXJlc3RpbmcuIFRoYXQgaW1wbGllcyBzb21lIGtpbmQgb2YgcGFydGl0aW9uaW5nIG9yIGxvZ2ljYWwgc2VwYXJhdGlvbi4gSSYjMzk7bSBwaWN0dXJpbmcgZGlzdGluY3QgYXJlYXMgd2l0aGluIGEgc3lzdGVtLiBUaGlzIGNvdWxkIGJlIHJlbGF0ZWQgdG8gbWVtb3J5IG1hbmFnZW1lbnQsIGRhdGEgc3RydWN0dXJlcywgYSBzcGVjaWZpYyBmZWF0dXJlIHNldCwgb3IgZXZlbiBvcmdhbml6YXRpb25hbCBzdHJ1Y3R1cmUuIFRoaXMgJiMzNDt6b25lJiMzNDsgaXMgbGlrZWx5IGFuIGlzb2xhdGVkIGFyZWEgYW5kIHBvdGVudGlhbGx5IGNvbnRyb2xsZWQsIG1hbmFnZWQsIG9yIGd1YXJkZWQgaW4gc29tZSBtYW5uZXIgZnJvbSBleHRlcm5hbCBjb21wb25lbnRzLgoKRmluYWxseSwgJiMzNDtkZXYmIzM0OyAoYXNzdW1pbmcgaXQmIzM5O3Mgc2hvcnQgZm9yICYjMzQ7ZGV2ZWxvcG1lbnQmIzM0OykgaXMgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIHBhcnQuIEl0IGxpa2VseSBpbmRpY2F0ZXMgdGhhdCB0aGlzIHJlcHJlc2VudHMgYSBkZXZlbG9wbWVudCBicmFuY2gsIGZlYXR1cmUgc2V0LCBvciBhcmVhIG9mIHdvcmssIGFuZCB0aGF0IHRoZSBjb2RlIHdpdGhpbiB0aGlzIHpvbmUgaXMgbGlrZWx5IHN0aWxsIHVuZGVyIGNvbnN0cnVjdGlvbiBhbmQgcG9zc2libHkgZXhwZXJpbWVudGFsLgoKU28sIHBpZWNpbmcgaXQgdG9nZXRoZXIsIEkmIzM5O20gZW52aXNpb25pbmcgYSBkZXZlbG9wbWVudCBlZmZvcnQuIFRoaXMgY291bGQgYmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgZmVhdHVyZSBkZXNpZ25lZCBmcm9tIHRoZSBncm91bmQgdXAgdG8gcHJldmVudCBgbnVsbGAgdmFsdWVzLCBsaWtlbHkgYWNoaWV2ZWQgdGhyb3VnaCBzdHJpY3QgdHlwaW5nLCB1c2Ugb2Ygb3B0aW9uYWwgdHlwZXMsIGRlZmVuc2l2ZSBwcm9ncmFtbWluZywgZGVzaWduIHBhdHRlcm5zIGxpa2UgdGhlIE51bGwgT2JqZWN0IHBhdHRlcm4sIG9yIHBlcmhhcHMgZXZlbiBhIGNvbXBsZXRlIGFyY2hpdGVjdHVyZSBzaGlmdCB0aGF0IGluaGVyZW50bHkgYXZvaWRzIG51bGxzIGJ5IGRlc2lnbi4gVGhlICYjMzQ7em9uZSYjMzQ7IGVsZW1lbnQgc3VnZ2VzdHMgYSBkZWdyZWUgb2YgY29udGFpbm1lbnQsIHBlcmhhcHMgYSBzcGVjaWZpYyBzdWJzeXN0ZW0sIGxpYnJhcnksIG9yIG1vZHVsZSwgdGhhdCBpcyBzcGVjaWZpY2FsbHkgYnVpbHQgdG8gb3BlcmF0ZSBpbiB0aGlzIGBudWxsX2ZyZWVgIG1hbm5lci4gSSB3b25kZXIgaWYgdGhlcmUgaXMgYSBwbGFuIHRvIG1lcmdlIHRoaXMgem9uZSBpbnRvIHRoZSB3aWRlciBjb2RlYmFzZSBsYXRlci4gSXQgYWxzbyBjYXVzZXMgbWUgdG8gd29uZGVyIGhvdyB0aGUgJiMzNDtub24tbnVsbCYjMzQ7IGFzc3VtcHRpb24gaXMgaGFuZGxlZCB3aXRoaW4gdGhpcyBwYXJ0aXRpb25lZCBzdHJ1Y3R1cmUuIElzIHRoZXJlIGEgbmVlZCB0byB2YWxpZGF0ZSB0aGF0IHRoZSBib3VuZGFyeSB0byB0aGlzIHpvbmUgcmVtYWlucyBmcmVlIG9mIG51bGxzPwoKVWx0aW1hdGVseSwgdGhpcyBzdWdnZXN0cyBhIGNvbmNlcnRlZCBlZmZvcnQgdG8gY3JlYXRlIGEgbW9yZSByb2J1c3QgYW5kIHByZWRpY3RhYmxlIHBhcnQgb2YgdGhlIHN5c3RlbSwgbGlrZWx5IGRyaXZlbiBieSBhIGRlc2lyZSB0byByZWR1Y2UgbnVsbCBwb2ludGVyIGV4Y2VwdGlvbnMgb3IgaW1wcm92ZSBjb2RlIGNsYXJpdHkgYW5kIG1haW50YWluYWJpbGl0eS4gTXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0byBkcmlsbCBkb3duIGludG8gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgaW1tZWRpYXRlbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGNob2ljZXMsIHRoZSBsYW5ndWFnZSBmZWF0dXJlcyBsZXZlcmFnZWQsIGFuZCB0aGUgb3ZlcmFsbCBkZXNpZ24gc3RyYXRlZ3kgdG8gZnVsbHkgZ3Jhc3AgdGhlIHNpZ25pZmljYW5jZSBhbmQgZWZmZWN0aXZlbmVzcyBvZiB0aGlzICYjMzQ7bnVsbC1mcmVlIHpvbmUuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudWxsX2ZyZWVfem9uZWRfZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDg0PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTEzLVx0XHRcdG51bGxfZGVsX2RldihkZXYtXHUwMDNlbnVsbGIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTE0Olx0XHRcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUxNS1cdFx0fVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTgzNT1zdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04MzktXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4NDA6XHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04NDEtXHRiYWRibG9ja3NfZXhpdChcdTAwMjZkZXYtXHUwMDNlYmFkYmxvY2tzKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTU2PXN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDY3LW91dF9jbGVhbnVwX3pvbmU6XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDY4Olx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA2OS1vdXRfY2xlYW51cF90YWdzOlxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNDM9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oOjE0NDp2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNDUtaW50IG51bGxfcmVwb3J0X3pvbmVzKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBzZWN0b3JfdCBzZWN0b3IsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTE2MT1zdGF0aWMgaW5saW5lIGludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjQtfVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oOjE2NTpzdGF0aWMgaW5saW5lIHZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpIHt9XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTY2LXN0YXRpYyBpbmxpbmUgYmxrX3N0YXR1c190IG51bGxfcHJvY2Vzc196b25lZF9jbWQoc3RydWN0IG51bGxiX2NtZCAqY21kLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYz0xNzU9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4Ni1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYzoxODc6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYy0xODgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA5OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoaXMgaXMgYSBzeXNmcy9jb25maWdmcyBzdG9yZSBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgYG51bGxfYmxrYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGl0LiBUaGlzIGNvbnRleHQgaXMgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIHN5c3RlbS4gS25vd2luZyB0aGUgS2NvbmZpZyBvcHRpb25zIHdpbGwgdGVsbCBtZSBpZiB0aGlzIGlzIGEgY29uZGl0aW9uYWxseSBjb21waWxlZCBmdW5jdGlvbiwgb3Igd2hhdCBzcGVjaWZpYyBmZWF0dXJlcyB0aGlzIGZ1bmN0aW9uIGVuYWJsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19ERVZfTlVMTF9CTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O051bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMDpjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTAxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUgd2UgZ28uLi4KCioqQ2hlY2tpbmcgZm9yIENvbmZpZyBPdmVybG9va3MqKgoKUmlnaHQsIHNvIEkmIzM5O3ZlIGdvdHRlbiB0aGlzIGZhciwgaW1wbGVtZW50ZWQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSwgYW5kIGV2ZXJ5dGhpbmcgKnNlZW1zKiB0byBiZSB3b3JraW5nIGFzIGV4cGVjdGVkLiBCdXQsIEkga25vdyBiZXR0ZXIgdGhhbiB0byBqdXN0IGFzc3VtZSBldmVyeXRoaW5nJiMzOTtzIHBlcmZlY3QuIFRoZSBkZXZpbCBpcyBhbHdheXMgaW4gdGhlIGRldGFpbHMsIGVzcGVjaWFsbHkgd2l0aCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWV0aWN1bG91c2x5IHJldmlldywgb25lIGxhc3QgdGltZSwgdG8gc2VlIGlmIEkmIzM5O3ZlIG1pc3NlZCBhbnl0aGluZy4gQXJlIHRoZXJlIGFueSBvYnNjdXJlIHNldHRpbmdzIEkgb3Zlcmxvb2tlZD8gQW55IGVkZ2UgY2FzZXMgdGhhdCBtaWdodCByZXF1aXJlIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbj8gV2hhdCBhYm91dCBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyBJIGZvcmdvdCB0byBzZXQ/IFRoaXMgaXMgY3J1Y2lhbC4gSSBjYW4mIzM5O3QgbGF1bmNoIHRoaXMgd2l0aG91dCBjb21wbGV0ZSBjb25maWRlbmNlLiBBIG1pc3NlZCBjb25maWcgY2FuIGxlYWQgdG8gdGhlIHByb2plY3QgZmFpbGluZy4gSSBuZWVkIHRvIGlkZW50aWZ5IGFueSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdGhhdCBhcmUgY3JpdGljYWwgdG8gdGhlIHN5c3RlbSYjMzk7cyBzdGFiaWxpdHksIHNlY3VyaXR5LCBvciBwZXJmb3JtYW5jZS4gTm8gc3RvbmUgbGVmdCB1bnR1cm5lZC4gVGhpcyBmaW5hbCBjb25maWd1cmF0aW9uIGNoZWNrIGlzIHBhcmFtb3VudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIE51bGwgYmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4gICA4Olx0XHRzZWxlY3QgQ09ORklHRlNfRlNcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbiAgMTE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbiAgMTI6XHRcdGRlcGVuZHMgb24gQkxLX0RFVl9OVUxMX0JMSyBcdTAwMjZcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA5OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0OTIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE51bGwgQmxvY2sgRGV2aWNlIFBvd2VyIE1hbmFnZW1lbnQqKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBzZXQgdG8gYEJMS19ERVZfTlVMTF9CTEtgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIHRoZSBudWxsIGJsb2NrIGRldmljZS4gTXkgZm9jdXMsIHRoZW4sIGlzIG9uIHRoZSBwb3dlciBtYW5hZ2VtZW50IHNpZGUgb2YgdGhpcywgc3BlY2lmaWNhbGx5IHRoZSBmdW5jdGlvbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYC4gQmFzZWQgb24gdGhlIGNvbnRleHQsIHRoaXMgZnVuY3Rpb24gaXMgb2J2aW91c2x5IHBhcnQgb2YgdGhlIGBudWxsX2Jsa2AgY29uZmlnZnMuIFJpZ2h0LCBjb25maWdmcy4uLiBnb29kLgoKVG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIHRoaW5nIGJlaGF2ZXMsIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHNvdXJjZSBjb2RlLiBMZXQgbWUgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLiBNeSBiZXN0IGJldCBpcyB0byBmaW5kIGl0IHdpdGhpbiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBUaGF0IHNob3VsZCBjb250YWluIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgZm9yIHRoaXMgbnVsbCBibG9jayBkZXZpY2UgbW9kdWxlLCBpbmNsdWRpbmcgdGhlIHBvd2VyIG1hbmFnZW1lbnQgaG9va3MuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBnb2luZyBvbiBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDg0Olx0c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbiA0ODU6XHRcdFx0XHRcdCAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxuIDQ4NjpcdHtcbiA0ODc6XHRcdHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiA9IHRvX251bGxiX2RldmljZShpdGVtKTtcbiA0ODg6XHRcdGJvb2wgbmV3cCA9IGZhbHNlO1xuIDQ4OTpcdFx0c3NpemVfdCByZXQ7XG4gNDkwOlx0XG4gNDkxOlx0XHRyZXQgPSBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKFx1MDAyNm5ld3AsIHBhZ2UsIGNvdW50KTtcbiA0OTI6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gNDkzOlx0XHRcdHJldHVybiByZXQ7XG4gNDk0Olx0XG4gNDk1Olx0XHRyZXQgPSBjb3VudDtcbiA0OTY6XHRcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4gNDk3Olx0XHRpZiAoIWRldi1cdTAwM2Vwb3dlciBcdTAwMjZcdTAwMjYgbmV3cCkge1xuIDQ5ODpcdFx0XHRpZiAodGVzdF9hbmRfc2V0X2JpdChOVUxMQl9ERVZfRkxfVVAsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpXG4gNDk5Olx0XHRcdFx0Z290byBvdXQ7XG4gNTAwOlx0XG4gNTAxOlx0XHRcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xuIDUwMjpcdFx0XHRpZiAocmV0KSB7XG4gNTAzOlx0XHRcdFx0Y2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbiA1MDQ6XHRcdFx0XHRnb3RvIG91dDtcbiA1MDU6XHRcdFx0fVxuIDUwNjpcdFxuIDUwNzpcdFx0XHRzZXRfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuIDUwODpcdFx0XHRkZXYtXHUwMDNlcG93ZXIgPSBuZXdwO1xuIDUwOTpcdFx0XHRyZXQgPSBjb3VudDtcbiA1MTA6XHRcdH0gZWxzZSBpZiAoZGV2LVx1MDAzZXBvd2VyIFx1MDAyNlx1MDAyNiAhbmV3cCkge1xuIDUxMTpcdFx0XHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuIDUxMjpcdFx0XHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG4gNTEzOlx0XHRcdFx0bnVsbF9kZWxfZGV2KGRldi1cdTAwM2VudWxsYik7XG4gNTE0Olx0XHRcdFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuIDUxNTpcdFx0XHR9XG4gNTE2Olx0XHRcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbiA1MTc6XHRcdH1cbiA1MTg6XHRcbiA1MTk6XHRvdXQ6XG4gNTIwOlx0XHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4gNTIxOlx0XHRyZXR1cm4gcmV0O1xuIDUyMjpcdH1cbiA1MjM6XHRcbiA1MjQ6XHRDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIHBvd2VyKTtcbiA1MjU6XHRcbiA1MjY6XHRzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYmFkYmxvY2tzX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuIDUyNzpcdHtcbiA1Mjg6XHRcdHN0cnVjdCBudWxsYl9kZXZpY2UgKnRfZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xuIDUyOTpcdFxuIDUzMDpcdFx0cmV0dXJuIGJhZGJsb2Nrc19zaG93KFx1MDAyNnRfZGV2LVx1MDAzZWJhZGJsb2NrcywgcGFnZSwgMCk7XG4gNTMxOlx0fVxuIDUzMjpcdFxuIDUzMzpcdHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9iYWRibG9ja3Nfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTQyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG93ZXIgTWFuYWdlbWVudCBQYXRjaCBmb3IgTnVsbCBCbG9jayBEZXZpY2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7YCB3aXRoaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAuIFRoaXMgaXMgcmVhY2hhYmxlIHRocm91Z2ggY29uZmlnZnMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiBoZXJlIGlzIGBCTEtfREVWX05VTExfQkxLYC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLiBCdXQsIGhvbGQgb24sIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcuLi4gaXMgaXQgc3RhdGljPyBZdXAsIGl0IGlzLiBSaWdodC4gQW5kIGl0cyBzdGF0aWMgc3RhdHVzIGNvdWxkIGNvbXBsaWNhdGUgdGhpbmdzLCBJIG5lZWQgdG8gZm9jdXMgb24gc29tZXRoaW5nIGVsc2UuIEhvd2V2ZXIsIGl0JiMzOTtzIGEgY2FsbGJhY2sgd2l0aGluIHRoZSBjb25maWdmcyBmcmFtZXdvcmssIHNvIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIHN0YXRpYywgaXRzIGFkZHJlc3Mgd2lsbCBiZSB0YWtlbiwgYW5kIGl0IGxpa2VseSB3b24mIzM5O3QgYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIFNvLCBJIGhhdmUgb3B0aW9ucyBoZXJlLgoKR2l2ZW4gdGhlIHByb21wdCYjMzk7cyBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMsIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlcnMsIGl0JiMzOTtzIHdvcnRoIGNvbnNpZGVyaW5nIGFsdGVybmF0aXZlcy4gV2hpbGUgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgbWlnaHQgYmUgdmlhYmxlIGJlY2F1c2Ugb2YgaXRzIGNhbGxiYWNrIG5hdHVyZSwgSSBzaG91bGQgY29uc2lkZXIgdGhlIG90aGVyIGZ1bmN0aW9ucyBtZW50aW9uZWQuIFNwZWNpZmljYWxseSwgYG51bGxfZnJlZV96b25lZF9kZXZgLCBgbnVsbF9hZGRfZGV2YCwgb3IgYG51bGxfZGVsX2RldmAuIExldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG51bGxfZnJlZV96b25lZF9kZXZgIGZpcnN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2b2lkIG51bGxfZnJlZV96b25lZF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg9MTQzPWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNDQ6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTQ1LWludCBudWxsX3JlcG9ydF96b25lcyhzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc2VjdG9yX3Qgc2VjdG9yLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNjE9c3RhdGljIGlubGluZSBpbnQgbnVsbF9yZWdpc3Rlcl96b25lZF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTY0LX1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNjU6c3RhdGljIGlubGluZSB2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KSB7fVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE2Ni1zdGF0aWMgaW5saW5lIGJsa19zdGF0dXNfdCBudWxsX3Byb2Nlc3Nfem9uZWRfY21kKHN0cnVjdCBudWxsYl9jbWQgKmNtZCxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM9MTc1PWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYy0xODYtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM6MTg3OnZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMtMTg4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ2MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYSBgbnVsbF9mcmVlX3pvbmVkX2RldmAgQ29uY2VybioqCgpIbW0sIHNvIGBudWxsX2ZyZWVfem9uZWRfZGV2YCBpcyAqbm90KiBhIHN0YXRpYyB2YXJpYWJsZSwgdGhhdCYjMzk7cyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIGBCTEtfREVWX1pPTkVEYC4gVGhlIHF1ZXN0aW9uIGlzLCBpcyBgQkxLX0RFVl9aT05FRGAgYSBtYW5kYXRvcnkgY29tcGlsZS10aW1lIGRlcGVuZGVuY3kgZm9yIGBudWxsX2ZyZWVfem9uZWRfZGV2YD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQgaXMuIFRoZSBxdWlja2VzdCB3YXkgdG8gZGV0ZXJtaW5lIHRoYXQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBidWlsZCBzeXN0ZW0gYW5kIHNlZSBob3cgdGhpcyBhbGwgY29ubmVjdHMuIExldCYjMzk7cyBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBNYWtlZmlsZWAgaW4gYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvYCB0byBzZWUgaG93IHRoZXNlIGVsZW1lbnRzIGludGVyYWN0IGR1cmluZyBjb21waWxhdGlvbi4gVGhpcyBzaG91bGQgcmV2ZWFsIHRoZSBidWlsZC10aW1lIGRlcGVuZGVuY2llcywgaWYgYW55LCB0aGF0IGFmZmVjdCBgbnVsbF9mcmVlX3pvbmVkX2RldmAuIFRoaXMgc2hvdWxkIG1ha2UgdGhlIGNvbm5lY3Rpb24gY2xlYXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA5OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0IyBuZWVkZWQgZm9yIHRyYWNlIGV2ZW50c1xuICAgNDpcdGNjZmxhZ3MteVx0XHRcdCYjNDM7PSAtSSQoc3JjKVxuICAgNTpcdFxuICAgNjpcdG9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVx0JiM0Mzs9IG51bGxfYmxrLm9cbiAgIDc6XHRudWxsX2Jsay1vYmpzXHRcdFx0Oj0gbWFpbi5vXG4gICA4Olx0aWZlcSAoJChDT05GSUdfQkxLX0RFVl9aT05FRCksIHkpXG4gICA5Olx0bnVsbF9ibGstJChDT05GSUdfVFJBQ0lORykgXHQmIzQzOz0gdHJhY2Uub1xuICAxMDpcdGVuZGlmXG4gIDExOlx0bnVsbF9ibGstJChDT05GSUdfQkxLX0RFVl9aT05FRCkgJiM0Mzs9IHpvbmVkLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkzMAoJCQkJCQkJb3V0cHV0OiAxMzMKCQkJCQkJCXRob3VnaHRzOiA3NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZm9yIGEgZnV6emluZyBzdHJhdGVneS4gRmlyc3QsIEkgc2VlIHRoYXQgYENPTkZJR19CTEtfREVWX1pPTkVEYCBpcyBkZWZpbml0ZWx5IGNydWNpYWwgYmVjYXVzZSBpdCYjMzk7cyByZXF1aXJlZCBmb3IgYHpvbmVkLm9gLCB3aGljaCBpbmNsdWRlcyBgbnVsbF9mcmVlX3pvbmVkX2RldmAuIFRoaXMgbWVhbnMgd2UgbmVlZCBgQkxLX0RFVl9aT05FRGAgaW4gb3VyIGBFbmFibGVDb25maWdzYC4gQnV0IHdhaXQsIGBudWxsX2ZyZWVfem9uZWRfZGV2YCBpcyBhbiBlbXB0eSBpbmxpbmUgZnVuY3Rpb24gdW5sZXNzIGBDT05GSUdfQkxLX0RFVl9aT05FRGAgaXMgZW5hYmxlZC4gU28gdGhlIGJ1ZyAqbWlnaHQqIG9ubHkgYmUgdHJpZ2dlcmVkIGlmIHRoYXQgY29uZmlnIG9wdGlvbiBpcyBzZXQuCgpOZXh0LCBJIG5lZWQgdG8gY29uZmlybSBgQkxLX0RFVl9OVUxMX0JMS2AuIFllcywgaXQmIzM5O3MgYSBoYXJkIHJlcXVpcmVtZW50LiBUaGVyZWZvcmUsIHRoZSBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGJlIGBbJiMzNDtCTEtfREVWX05VTExfQkxLJiMzNDssICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7XWAuCgpOb3csIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLiBJIGluaXRpYWxseSB0aG91Z2h0IG9mIGp1c3QgYG51bGxfZnJlZV96b25lZF9kZXZgIG9yIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLiBUaGUgbGF0dGVyLCBiZWluZyBgc3RhdGljYCwgbWlnaHQgYmUgaW5saW5lZCBhbmQgb3B0aW1pemVkIGF3YXkuIEJ1dCwgSSByZW1lbWJlciB0aGF0IGl0JiMzOTtzIHVzZWQgYXMgYSBjYWxsYmFjayBpbiBgQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBwb3dlcik7YC4gVGhpcyBtZWFucyB0aGUgZnVuY3Rpb24gcG9pbnRlciB3aWxsIGJlIGluY2x1ZGVkLCBhbmQgdGhlcmVmb3JlLCBpdCB3aWxsIG5vdCBiZSBpbmxpbmVkLiBTbywgaXQmIzM5O3MgcGVyZmVjdGx5IHZhbGlkIHRvIGluY2x1ZGUgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYXMgYSBmb2N1cyBzeW1ib2wuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdC4uLiBZZXAsIGl0JiMzOTtzIGEgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2sgaW4gYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jYC4KCk9rYXksIEkmIzM5O20gY29uZmlkZW50LiBJJiMzOTtsbCBpbmNsdWRlIGJvdGggYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYW5kIGBudWxsX2ZyZWVfem9uZWRfZGV2YC4KCkNoZWNraW5nIGBDT05GSUdGU19GU2AgZm9yIGFueSBvdGhlciBkZXBlbmRlbmNpZXMuLi5pdCYjMzk7cyBzZWxlY3RlZCBieSBgQkxLX0RFVl9OVUxMX0JMS2AuIFNvLCB3ZSYjMzk7cmUgZ29vZCB3aXRoIGp1c3QgYEJMS19ERVZfTlVMTF9CTEtgIGFuZCBgQkxLX0RFVl9aT05FRGAgaW4gdGhlIGNvbmZpZyBsaXN0LgoKTm93IGxldCYjMzk7cyByZXZpZXcgdGhlIHBhdGNoIGl0c2VsZjoKCmBgYGMKQEAgLTUxMSw2ICYjNDM7NTExLDcgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKIAkJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsICZhbXA7ZGV2LSZndDtmbGFncykpIHsKIAkJCWRldi0mZ3Q7cG93ZXIgPSBuZXdwOwogCQkJbnVsbF9kZWxfZGV2KGRldi0mZ3Q7bnVsbGIpOwomIzQzOwkJCW51bGxfZnJlZV96b25lZF9kZXYoZGV2KTsKIAkJfQogCQljbGVhcl9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncyk7CiAJfQpgYGAKClRoZSBwYXRjaCBjbGVhcmx5IGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIG9yIHNvbWV0aGluZyBzaW1pbGFyIHdoZW4gYSBudWxsX2JsayBkZXZpY2UgaXMgcG93ZXJlZCBkb3duIHZpYSBjb25maWdmcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB3aGljaCBtYWtlcyBpdCB3b3J0aCBmdXp6aW5nLiBJIHdpbGwgaW5jbHVkZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBhbmQgYG51bGxfZnJlZV96b25lZF9kZXZgIGFzIGZvY3VzIHN5bWJvbHMgYW5kIGBCTEtfREVWX05VTExfQkxLYCBhbmQgYEJMS19ERVZfWk9ORURgIGFzIHRoZSBjb25maWd1cmF0aW9ucyB0byBlbmFibGUuCgpJJiMzOTttIGRvdWJsZS1jaGVja2luZyBgbnVsbF9mcmVlX3pvbmVkX2RldmAgcmVhbGx5IHF1aWNrLiBJdCAqaXMqIGEgc3RhdGljIGlubGluZSBmdW5jdGlvbiBpZiBgQkxLX0RFVl9aT05FRGAgaXMgKm5vdCogc2V0LiBCdXQgd2hlbiBgQkxLX0RFVl9aT05FRGAgaXMgc2V0LCBpdCBiZWNvbWVzIGEgJiMzNDtyZWFsJiMzNDsgZnVuY3Rpb24uIEl0JiMzOTtzIHNhZmUgdG8gdXNlIGl0IGFzIGEgZm9jdXMgc3ltYm9sLgoKT2theSwgbGV0JiMzOTtzIGNoZWNrIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIG9uZSBsYXN0IHRpbWUuIEl0JiMzOTtzIHN0YXRpYywgYnV0IGl0cyBhZGRyZXNzIGlzIHRha2VuIGJlY2F1c2UgaXQmIzM5O3MgcGFydCBvZiBgQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBwb3dlcik7YC4gVGhpcyBtYWtlcyBpdCBwYXJ0IG9mIGEgYHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGVgLCB0aHVzIGd1YXJhbnRlZWluZyBpdCB3aWxsIG5vdCBiZSBpbmxpbmVkLgoKSSYjMzk7bSByZWFkeS4gTGV0JiMzOTtzIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA5OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX05VTExfQkxLJiMzNDssCiAgICAmIzM0O0JMS19ERVZfWk9ORUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbF9mcmVlX3pvbmVkX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBgbnVsbF9mcmVlX3pvbmVkX2RldmAgaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgdG8gcHJvcGVybHkgZnJlZSB6b25lZCBkZXZpY2UgcmVzb3VyY2VzIHdoZW4gcG93ZXJpbmcgZG93biBhIG51bGxfYmxrIGRldmljZSB2aWEgY29uZmlnZnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHZpcnR1YWwgYmxvY2sgZGV2aWNlIGRyaXZlciB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsX2ZyZWVfem9uZWRfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIGBudWxsX2ZyZWVfem9uZWRfZGV2YCBpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCB0byBwcm9wZXJseSBmcmVlIHpvbmVkIGRldmljZSByZXNvdXJjZXMgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlIHZpYSBjb25maWdmcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgdmlydHVhbCBibG9jayBkZXZpY2UgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBgbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpYCBpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCB3aGVuIHBvd2VyaW5nIGRvd24gYSBudWxsX2JsayBkZXZpY2UuIFRoaXMgZml4ZXMgYSBtZW1vcnkgbGVhayB3aGVyZSB6b25lZCBkZXZpY2UgcmVzb3VyY2VzIHdlcmUgbm90IGZyZWVkIHVwb24gZGV2aWNlIHBvd2VyIGRvd24uIE1lbW9yeSBsZWFrcyBhcmUgZGV0ZWN0ZWQgYnkga21lbWxlYWssIGFuZCBhbnkgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIHdvdWxkIGJlIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGluZm8tbGVha3MsIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWVlM2YzMDQxODE0ZGQ3MjgzZjkzOWZjNWI5MTQzNjk2Yzg2M2RkYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDA5OjIxOjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwppbmRleCBmOGMwZmQ1N2UwNDFhLi5mYjAwMWQwMDJkMTdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwpAQCAtNTExLDYgJiM0Mzs1MTEsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAogCQlpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgJmFtcDtkZXYtJmd0O2ZsYWdzKSkgewogCQkJZGV2LSZndDtwb3dlciA9IG5ld3A7CiAJCQludWxsX2RlbF9kZXYoZGV2LSZndDtudWxsYik7CiYjNDM7CQkJbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpOwogCQl9CiAJCWNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgJmFtcDtkZXYtJmd0O2ZsYWdzKTsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwOToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG51bGxfYmxrYCBEcml2ZXIgUG93ZXIgTWFuYWdlbWVudCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AsIHNwZWNpZmljYWxseSB0aGUgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtgIHdoZW4gdGhlIGRldmljZSBpcyBiZWluZyBwb3dlcmVkIGRvd24gKGkuZS4sIGBuZXdwYCBpcyBmYWxzZSkuIExldCYjMzk7cyBzdGVwIHRocm91Z2ggdGhlIGNvZGUgdG8gY2xhcmlmeSBteSB1bmRlcnN0YW5kaW5nLgoKYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgaGFuZGxlcyB0aGUgcG93ZXIgc3RhdGUgdHJhbnNpdGlvbi4gSXQgY2hlY2tzIGlmIHdlIGFyZSBnb2luZyBmcm9tIG9mZiB0byBvbiwgb3IgZnJvbSBvbiB0byBvZmYuIEN1cnJlbnRseSwgaXQgaW5jbHVkZXM6Ci0gICBJZiB3ZSBhcmUgZ29pbmcgZnJvbSBvZmYgdG8gb24sIGl0IGNhbGxzIGBudWxsX2FkZF9kZXZgLgotICAgSWYgd2UgYXJlIGdvaW5nIGZyb20gb24gdG8gb2ZmLCBpdCBjYWxscyBgbnVsbF9kZWxfZGV2YC4KCkFkZGluZyBgbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpYCBvbiB0aGUgcG93ZXItZG93biBwYXRoIHN1Z2dlc3RzIGEgY2xlYW51cCBvcGVyYXRpb24uIE15IGluaXRpYWwgdGhvdWdodHMgYXJlIHRoYXQgdGhpcyBpcyBsaWtlbHkgYWRkcmVzc2luZyBhIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlLiBFaXRoZXIgYSBtZW1vcnkgbGVhaywgYSB1c2UtYWZ0ZXItZnJlZSwgb3IgcGVyaGFwcyBhbiBpc3N1ZSB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgY29tbWVudCBpbiB0aGUgcGF0Y2ggbWVudGlvbnMgaXQgaXMgdG8gZnJlZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIHpvbmVkIGRldmljZXMuIEkgc3VzcGVjdCB0aGUga2VybmVsIG1heSBoYXZlIGEga21lbWxlYWsgZGV0ZWN0aW9uIGFuZC9vciBLQVNBTiB0byBkZXRlY3QgdGhlc2UgaXNzdWVzLiBCdXQgdGhlIHBhdGNoIHNlZW1zIHRvIGFkZHJlc3MgdGhlIGZyZWUgaXRzZWxmLCBub3QgdGhlIGluaXRpYWxpemF0aW9uLgoKSWYgdGhlIG1lbW9yeSB3YXNuJiMzOTt0IGZyZWVkLCBpdCYjMzk7cyBhIG1lbW9yeSBsZWFrLCB3aGljaCBga21lbWxlYWtgIHNob3VsZCBjYXRjaC4gSWYgdGhlIG1lbW9yeSB3YXMgYWNjZXNzZWQgKmFmdGVyKiBiZWluZyBmcmVlZCwgdGhhdCYjMzk7cyBhIHVzZS1hZnRlci1mcmVlLCBhbmQgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgc2hvdWxkIGZsYWcgdGhhdC4gQnV0IGZyb20gdGhlIGxvb2tzIG9mIGl0LCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgZnJlZWluZyB0aGUgbWVtb3J5LiBJdCB3aWxsIGJlIGhlbHBmdWwgdG8gbG9vayBhdCB0aGUgZnVuY3Rpb24gYG51bGxfZnJlZV96b25lZF9kZXZgIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnVsbF9mcmVlX3pvbmVkX2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ4ND1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUxMy1cdFx0XHRudWxsX2RlbF9kZXYoZGV2LVx1MDAzZW51bGxiKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUxNDpcdFx0XHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MTUtXHRcdH1cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz04MzU9c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODM5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6ODQwOlx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODQxLVx0YmFkYmxvY2tzX2V4aXQoXHUwMDI2ZGV2LVx1MDAzZWJhZGJsb2Nrcyk7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTk1Nj1zdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA2Ny1vdXRfY2xlYW51cF96b25lOlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjA2ODpcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwNjktb3V0X2NsZWFudXBfdGFnczpcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg9MTQzPWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNDQ6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTQ1LWludCBudWxsX3JlcG9ydF96b25lcyhzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc2VjdG9yX3Qgc2VjdG9yLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNjE9c3RhdGljIGlubGluZSBpbnQgbnVsbF9yZWdpc3Rlcl96b25lZF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTY0LX1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNjU6c3RhdGljIGlubGluZSB2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KSB7fVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE2Ni1zdGF0aWMgaW5saW5lIGJsa19zdGF0dXNfdCBudWxsX3Byb2Nlc3Nfem9uZWRfY21kKHN0cnVjdCBudWxsYl9jbWQgKmNtZCxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM9MTc1PWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYy0xODYtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM6MTg3OnZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMtMTg4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcwNwoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiAxOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE1lbW9yeSBMZWFrIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBzcXVhc2hpbmcgYSBuYXN0eSBtZW1vcnkgbGVhay4gSXQgc2VlbXMgdGhhdCB3aGVuIGEgZGV2aWNlIHVzaW5nIGBjb25maWdmc2AgcG93ZXJzIGRvd24sIHRoZSBmdW5jdGlvbiBgbnVsbF9mcmVlX3pvbmVkX2RldmAgd2FzbiYjMzk7dCBiZWluZyBjYWxsZWQuIENvbnNlcXVlbnRseSwgem9uZWQgZGV2aWNlIG1lbW9yeSB3YXMganVzdC4uLmxlZnQgaGFuZ2luZyBvdXQgdGhlcmUsIG5vdCBiZWluZyBmcmVlZC4gVGhhdCYjMzk7cyBhIHRleHRib29rIG1lbW9yeSBsZWFrLgoKRm9ydHVuYXRlbHksIHdlIGNhdWdodCB0aGlzIHdpdGggYGttZW1sZWFrYCwgd2hpY2ggaXMgdGhlIGNvcnJlY3QgdG9vbCBmb3IgdGhlc2Uga2luZHMgb2YgcHJvYmxlbXMsIG5vdCBgS01TQU5gLiBObyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgaGVyZS4KClNvLCB0aGUgcGF0Y2ggaXMgc2ltcGxlOiBqdXN0IGFkZCBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgd2l0aGluIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIHdoZW4gcG93ZXJpbmcgZG93biBhIGBudWxsX2Jsa2AgZGV2aWNlLiBUaGlzIGVuc3VyZXMgdGhlIHpvbmVkIGRldmljZSByZXNvdXJjZXMgYXJlIHJlbGVhc2VkIHByb3Blcmx5IGR1cmluZyBwb3dlciBkb3duLgoKV2UmIzM5O3JlIG5vdCBpbnRyb2R1Y2luZyBvciBleHBvc2luZyBhbnkgbmV3IHJpc2tzIGhlcmUsIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHNoZW5hbmlnYW5zLCBubyBpbmZvIGxlYWtzLiBBbmQgdGhlcmUmIzM5O3Mgbm8gY29uZGl0aW9uYWwgbG9naWMgdGhhdCBkZXBlbmRzIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIGBLTVNBTmAgZnV6emluZyBzZXNzaW9uIGlzbiYjMzk7dCB3YXJyYW50ZWQuIFRoaXMgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZCwgZGlyZWN0bHkgYWRkcmVzc2VzIHRoZSBsZWFrLCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgYXR0YWNrIHZlY3RvcnMuIEdvb2Qgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlLiBUaGlzIGZpeGVzIGEgbWVtb3J5IGxlYWsgd2hlcmUgem9uZWQgZGV2aWNlIHJlc291cmNlcyB3ZXJlIG5vdCBmcmVlZCB1cG9uIGRldmljZSBwb3dlciBkb3duLiBNZW1vcnkgbGVha3MgYXJlIGRldGVjdGVkIGJ5IGttZW1sZWFrLCBhbmQgYW55IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gdGhpcyB3b3VsZCBiZSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBpbmZvLWxlYWtzLCBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBgbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpYCBpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCB3aGVuIHBvd2VyaW5nIGRvd24gYSBudWxsX2JsayBkZXZpY2UuIFRoaXMgZml4ZXMgYSBtZW1vcnkgbGVhayB3aGVyZSB6b25lZCBkZXZpY2UgcmVzb3VyY2VzIHdlcmUgbm90IGZyZWVkIHVwb24gZGV2aWNlIHBvd2VyIGRvd24uIE1lbW9yeSBsZWFrcyBhcmUgZGV0ZWN0ZWQgYnkga21lbWxlYWssIGFuZCBhbnkgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIHdvdWxkIGJlIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGluZm8tbGVha3MsIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MDcuMjY5OTQyNDI4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE0MDI4OTIwMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiLFxuICAgIFwiQkxLX0RFVl9aT05FRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zdG9yZVwiLFxuICAgIFwibnVsbF9mcmVlX3pvbmVkX2RldlwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlLiBUaGlzIGZpeGVzIGEgbWVtb3J5IGxlYWsgd2hlcmUgem9uZWQgZGV2aWNlIHJlc291cmNlcyB3ZXJlIG5vdCBmcmVlZCB1cG9uIGRldmljZSBwb3dlciBkb3duLiBNZW1vcnkgbGVha3MgYXJlIGRldGVjdGVkIGJ5IGttZW1sZWFrLCBhbmQgYW55IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gdGhpcyB3b3VsZCBiZSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBpbmZvLWxlYWtzLCBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXZgIGluIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIHRvIHByb3Blcmx5IGZyZWUgem9uZWQgZGV2aWNlIHJlc291cmNlcyB3aGVuIHBvd2VyaW5nIGRvd24gYSBudWxsX2JsayBkZXZpY2UgdmlhIGNvbmZpZ2ZzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSB2aXJ0dWFsIGJsb2NrIGRldmljZSBkcml2ZXIgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwOToyMTowNy4yNjk5NDkzMDhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1Njk3MTcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVlZTNmMzA0MTgxNGRkNzI4M2Y5MzlmYzViOTE0MzY5NmM4NjNkZGJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMDk6MjE6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbmluZGV4IGY4YzBmZDU3ZTA0MWEuLmZiMDAxZDAwMmQxN2EgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbkBAIC01MTEsNiArNTExLDcgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG4gXFx0XFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSkge1xcbiBcXHRcXHRcXHRkZXYtXFx1MDAzZXBvd2VyID0gbmV3cDtcXG4gXFx0XFx0XFx0bnVsbF9kZWxfZGV2KGRldi1cXHUwMDNlbnVsbGIpO1xcbitcXHRcXHRcXHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XFxuIFxcdFxcdH1cXG4gXFx0XFx0Y2xlYXJfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncyk7XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MDcuODI4MDI3MjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNzM0OTE2ODU1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCIsXG4gICAgXCJCTEtfREVWX1pPTkVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsX2ZyZWVfem9uZWRfZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXZgIGluIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIHRvIHByb3Blcmx5IGZyZWUgem9uZWQgZGV2aWNlIHJlc291cmNlcyB3aGVuIHBvd2VyaW5nIGRvd24gYSBudWxsX2JsayBkZXZpY2UgdmlhIGNvbmZpZ2ZzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSB2aXJ0dWFsIGJsb2NrIGRldmljZSBkcml2ZXIgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZWUzZjMwNDE4MTRkZDcyODNmOTM5ZmM1YjkxNDM2OTZjODYzZGRiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMDk6MjE6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhLi5mYjAwMWQwMDJkMTdhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5AQCAtNTExLDYgKzUxMSw3IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4gXHRcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdFx0ZGV2LVx1MDAzZXBvd2VyID0gbmV3cDtcbiBcdFx0XHRudWxsX2RlbF9kZXYoZGV2LVx1MDAzZW51bGxiKTtcbitcdFx0XHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XG4gXHRcdH1cbiBcdFx0Y2xlYXJfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MDcuODI4MDQxOTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzg4MjQ4NTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvd2VyIE1hbmFnZW1lbnQgUGF0Y2ggZm9yIHRoZSBOdWxsIEJsb2NrIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBgbnVsbF9ibGtgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBJdCdzIGludHJvZHVjaW5nIGEgY2FsbCB0byBgbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO2Agd2l0aGluIHRoZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBmdW5jdGlvbi4gUmlnaHQgYXdheSwgbXkgYnJhaW4gZmxhZ3MgdGhlIHNpZ25pZmljYW5jZTogdGhpcyBpcyB0aGUgdmlydHVhbCBibG9jayBkZXZpY2UgZHJpdmVyLCBzbyBhbnl0aGluZyBoYXBwZW5pbmcgaGVyZSBpcyBkZWZpbml0ZWx5IHJlbGV2YW50IGZvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIGlzIHNvbWV0aGluZyBJIGFsd2F5cyBrZWVwIGluIG1pbmQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBwb3dlciBtYW5hZ2VtZW50IGhvb2sgaXMgZG9pbmcgYW5kIHdoeSB0aGlzIGZyZWVpbmcgb3BlcmF0aW9uIGlzIG5lY2Vzc2FyeSB3aXRoaW4gaXQuIE15IG5leHQgc3RlcCBpcyB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlOiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IGRpc3NlY3QgdGhlIGltcGxlbWVudGF0aW9uIG9mIGJvdGggYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYW5kIGBudWxsX2ZyZWVfem9uZWRfZGV2YCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHRyaWdnZXJpbmcgdGhpcyBjYWxsIGFuZCB3aGF0IHJlc291cmNlcyBhcmUgYmVpbmcgbWFuYWdlZCwgd2hpY2ggaXMgbGlrZWx5IGEgZGF0YSBzdHJ1Y3R1cmUgdXNlZCBieSB6b25lZCBibG9jayBkZXZpY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDA0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MTEuNjE2MzA0MTg1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4NDEwMzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm51bGxiX2RldmljZV9wb3dlcl9zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00Nzk9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDgzLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4NDpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4NS1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MTEuNzA0NzIwNzE2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1ODk2Mzg2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgYG51bGxfZnJlZV96b25lZF9kZXZgKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuYW1pbmcgY29udmVudGlvbi4gSSdtIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGl0cyBwb3RlbnRpYWwgdXNhZ2Ugd2l0aGluIGEgY29kZWJhc2UuIFRoZSBwaHJhc2UgXCJudWxsX2ZyZWVcIiBzdWdnZXN0cyBhIHNwZWNpZmljIGdvYWw6IHRvIGRlc2lnbiBvciBpbXBsZW1lbnQgYSBwYXJ0aWN1bGFyIHBpZWNlIG9mIHNvZnR3YXJlLCBhcmVhIG9mIGZ1bmN0aW9uYWxpdHksIG9yIHNldCBvZiBkYXRhIGluIHN1Y2ggYSB3YXkgYXMgdG8gYXZvaWQsIG9yIGRyYXN0aWNhbGx5IHJlZHVjZSwgaW5zdGFuY2VzIG9mIGBudWxsYCB2YWx1ZXMuIFRoaXMgaXMgbGlrZWx5IGEga2V5IGRlc2lnbiBwcmluY2lwbGUuXG5cblwiWm9uZWRcIiBpcyBpbnRlcmVzdGluZy4gVGhhdCBpbXBsaWVzIHNvbWUga2luZCBvZiBwYXJ0aXRpb25pbmcgb3IgbG9naWNhbCBzZXBhcmF0aW9uLiBJJ20gcGljdHVyaW5nIGRpc3RpbmN0IGFyZWFzIHdpdGhpbiBhIHN5c3RlbS4gVGhpcyBjb3VsZCBiZSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50LCBkYXRhIHN0cnVjdHVyZXMsIGEgc3BlY2lmaWMgZmVhdHVyZSBzZXQsIG9yIGV2ZW4gb3JnYW5pemF0aW9uYWwgc3RydWN0dXJlLiBUaGlzIFwiem9uZVwiIGlzIGxpa2VseSBhbiBpc29sYXRlZCBhcmVhIGFuZCBwb3RlbnRpYWxseSBjb250cm9sbGVkLCBtYW5hZ2VkLCBvciBndWFyZGVkIGluIHNvbWUgbWFubmVyIGZyb20gZXh0ZXJuYWwgY29tcG9uZW50cy5cblxuRmluYWxseSwgXCJkZXZcIiAoYXNzdW1pbmcgaXQncyBzaG9ydCBmb3IgXCJkZXZlbG9wbWVudFwiKSBpcyB0aGUgbW9zdCBzdHJhaWdodGZvcndhcmQgcGFydC4gSXQgbGlrZWx5IGluZGljYXRlcyB0aGF0IHRoaXMgcmVwcmVzZW50cyBhIGRldmVsb3BtZW50IGJyYW5jaCwgZmVhdHVyZSBzZXQsIG9yIGFyZWEgb2Ygd29yaywgYW5kIHRoYXQgdGhlIGNvZGUgd2l0aGluIHRoaXMgem9uZSBpcyBsaWtlbHkgc3RpbGwgdW5kZXIgY29uc3RydWN0aW9uIGFuZCBwb3NzaWJseSBleHBlcmltZW50YWwuXG5cblNvLCBwaWVjaW5nIGl0IHRvZ2V0aGVyLCBJJ20gZW52aXNpb25pbmcgYSBkZXZlbG9wbWVudCBlZmZvcnQuIFRoaXMgY291bGQgYmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgZmVhdHVyZSBkZXNpZ25lZCBmcm9tIHRoZSBncm91bmQgdXAgdG8gcHJldmVudCBgbnVsbGAgdmFsdWVzLCBsaWtlbHkgYWNoaWV2ZWQgdGhyb3VnaCBzdHJpY3QgdHlwaW5nLCB1c2Ugb2Ygb3B0aW9uYWwgdHlwZXMsIGRlZmVuc2l2ZSBwcm9ncmFtbWluZywgZGVzaWduIHBhdHRlcm5zIGxpa2UgdGhlIE51bGwgT2JqZWN0IHBhdHRlcm4sIG9yIHBlcmhhcHMgZXZlbiBhIGNvbXBsZXRlIGFyY2hpdGVjdHVyZSBzaGlmdCB0aGF0IGluaGVyZW50bHkgYXZvaWRzIG51bGxzIGJ5IGRlc2lnbi4gVGhlIFwiem9uZVwiIGVsZW1lbnQgc3VnZ2VzdHMgYSBkZWdyZWUgb2YgY29udGFpbm1lbnQsIHBlcmhhcHMgYSBzcGVjaWZpYyBzdWJzeXN0ZW0sIGxpYnJhcnksIG9yIG1vZHVsZSwgdGhhdCBpcyBzcGVjaWZpY2FsbHkgYnVpbHQgdG8gb3BlcmF0ZSBpbiB0aGlzIGBudWxsX2ZyZWVgIG1hbm5lci4gSSB3b25kZXIgaWYgdGhlcmUgaXMgYSBwbGFuIHRvIG1lcmdlIHRoaXMgem9uZSBpbnRvIHRoZSB3aWRlciBjb2RlYmFzZSBsYXRlci4gSXQgYWxzbyBjYXVzZXMgbWUgdG8gd29uZGVyIGhvdyB0aGUgXCJub24tbnVsbFwiIGFzc3VtcHRpb24gaXMgaGFuZGxlZCB3aXRoaW4gdGhpcyBwYXJ0aXRpb25lZCBzdHJ1Y3R1cmUuIElzIHRoZXJlIGEgbmVlZCB0byB2YWxpZGF0ZSB0aGF0IHRoZSBib3VuZGFyeSB0byB0aGlzIHpvbmUgcmVtYWlucyBmcmVlIG9mIG51bGxzP1xuXG5VbHRpbWF0ZWx5LCB0aGlzIHN1Z2dlc3RzIGEgY29uY2VydGVkIGVmZm9ydCB0byBjcmVhdGUgYSBtb3JlIHJvYnVzdCBhbmQgcHJlZGljdGFibGUgcGFydCBvZiB0aGUgc3lzdGVtLCBsaWtlbHkgZHJpdmVuIGJ5IGEgZGVzaXJlIHRvIHJlZHVjZSBudWxsIHBvaW50ZXIgZXhjZXB0aW9ucyBvciBpbXByb3ZlIGNvZGUgY2xhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LiBNeSBleHBlcnQgaW50dWl0aW9uIHRlbGxzIG1lIHRvIGRyaWxsIGRvd24gaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBpbW1lZGlhdGVseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyYWwgY2hvaWNlcywgdGhlIGxhbmd1YWdlIGZlYXR1cmVzIGxldmVyYWdlZCwgYW5kIHRoZSBvdmVyYWxsIGRlc2lnbiBzdHJhdGVneSB0byBmdWxseSBncmFzcCB0aGUgc2lnbmlmaWNhbmNlIGFuZCBlZmZlY3RpdmVuZXNzIG9mIHRoaXMgXCJudWxsLWZyZWUgem9uZS5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDg4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MTUuODYzNjg3MDkzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODQ0MDM4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudWxsX2ZyZWVfem9uZWRfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ4ND1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTEzLVxcdFxcdFxcdG51bGxfZGVsX2RldihkZXYtXFx1MDAzZW51bGxiKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MTQ6XFx0XFx0XFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUxNS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz04MzU9c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04MzktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6ODQwOlxcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04NDEtXFx0YmFkYmxvY2tzX2V4aXQoXFx1MDAyNmRldi1cXHUwMDNlYmFkYmxvY2tzKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE5NTY9c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA2Ny1vdXRfY2xlYW51cF96b25lOlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIwNjg6XFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwNjktb3V0X2NsZWFudXBfdGFnczpcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNDM9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNDQ6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE0NS1pbnQgbnVsbF9yZXBvcnRfem9uZXMoc3RydWN0IGdlbmRpc2sgKmRpc2ssIHNlY3Rvcl90IHNlY3RvcixcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNjE9c3RhdGljIGlubGluZSBpbnQgbnVsbF9yZWdpc3Rlcl96b25lZF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjQtfVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNjU6c3RhdGljIGlubGluZSB2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KSB7fVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjYtc3RhdGljIGlubGluZSBibGtfc3RhdHVzX3QgbnVsbF9wcm9jZXNzX3pvbmVkX2NtZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM9MTc1PWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4Ni1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM6MTg3OnZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4OC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjE1Ljk3MjEzMzQwMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NzI1MDcxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGZ1bmN0aW9uLCBhbmQgaXQncyBpbW1lZGlhdGVseSBjbGVhciB0aGlzIGlzIGEgc3lzZnMvY29uZmlnZnMgc3RvcmUgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZm9yIGBudWxsX2Jsa2AgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgYW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBpdC4gVGhpcyBjb250ZXh0IGlzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgaG93IHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBzeXN0ZW0uIEtub3dpbmcgdGhlIEtjb25maWcgb3B0aW9ucyB3aWxsIHRlbGwgbWUgaWYgdGhpcyBpcyBhIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgZnVuY3Rpb24sIG9yIHdoYXQgc3BlY2lmaWMgZmVhdHVyZXMgdGhpcyBmdW5jdGlvbiBlbmFibGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzU5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MTguNTQ0NjQzNTM0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDU3OTYxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9OVUxMX0JMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6Njpjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cXHRib29sIFxcXCJTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MTguNjQ5MjI4NTkzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2MDA2ODg0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSB3ZSBnby4uLlxuXG4qKkNoZWNraW5nIGZvciBDb25maWcgT3Zlcmxvb2tzKipcblxuUmlnaHQsIHNvIEkndmUgZ290dGVuIHRoaXMgZmFyLCBpbXBsZW1lbnRlZCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBhbmQgZXZlcnl0aGluZyAqc2VlbXMqIHRvIGJlIHdvcmtpbmcgYXMgZXhwZWN0ZWQuIEJ1dCwgSSBrbm93IGJldHRlciB0aGFuIHRvIGp1c3QgYXNzdW1lIGV2ZXJ5dGhpbmcncyBwZXJmZWN0LiBUaGUgZGV2aWwgaXMgYWx3YXlzIGluIHRoZSBkZXRhaWxzLCBlc3BlY2lhbGx5IHdpdGggY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ldGljdWxvdXNseSByZXZpZXcsIG9uZSBsYXN0IHRpbWUsIHRvIHNlZSBpZiBJJ3ZlIG1pc3NlZCBhbnl0aGluZy4gQXJlIHRoZXJlIGFueSBvYnNjdXJlIHNldHRpbmdzIEkgb3Zlcmxvb2tlZD8gQW55IGVkZ2UgY2FzZXMgdGhhdCBtaWdodCByZXF1aXJlIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbj8gV2hhdCBhYm91dCBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyBJIGZvcmdvdCB0byBzZXQ/IFRoaXMgaXMgY3J1Y2lhbC4gSSBjYW4ndCBsYXVuY2ggdGhpcyB3aXRob3V0IGNvbXBsZXRlIGNvbmZpZGVuY2UuIEEgbWlzc2VkIGNvbmZpZyBjYW4gbGVhZCB0byB0aGUgcHJvamVjdCBmYWlsaW5nLiBJIG5lZWQgdG8gaWRlbnRpZnkgYW55IGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0aGF0IGFyZSBjcml0aWNhbCB0byB0aGUgc3lzdGVtJ3Mgc3RhYmlsaXR5LCBzZWN1cml0eSwgb3IgcGVyZm9ybWFuY2UuIE5vIHN0b25lIGxlZnQgdW50dXJuZWQuIFRoaXMgZmluYWwgY29uZmlndXJhdGlvbiBjaGVjayBpcyBwYXJhbW91bnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMDEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwOToyMToyMS44MDkzMDk0OTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE51bGwgYmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclxcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBDT05GSUdGU19GU1xcbiAgIDk6XFx0XFxuICAxMDpcXHRjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG4gIDExOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbiAgMTI6XFx0XFx0ZGVwZW5kcyBvbiBCTEtfREVWX05VTExfQkxLIFxcdTAwMjZcXHUwMDI2IEZBVUxUX0lOSkVDVElPTl9DT05GSUdGU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwOToyMToyMS44MDk1MzY0OTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3ODg3NzY2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE51bGwgQmxvY2sgRGV2aWNlIFBvd2VyIE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgQkxLX0RFVl9OVUxMX0JMS2AuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhlIG51bGwgYmxvY2sgZGV2aWNlLiBNeSBmb2N1cywgdGhlbiwgaXMgb24gdGhlIHBvd2VyIG1hbmFnZW1lbnQgc2lkZSBvZiB0aGlzLCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9uIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLiBCYXNlZCBvbiB0aGUgY29udGV4dCwgdGhpcyBmdW5jdGlvbiBpcyBvYnZpb3VzbHkgcGFydCBvZiB0aGUgYG51bGxfYmxrYCBjb25maWdmcy4gUmlnaHQsIGNvbmZpZ2ZzLi4uIGdvb2QuXG5cblRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyB0aGluZyBiZWhhdmVzLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHNvdXJjZSBjb2RlLiBMZXQgbWUgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLiBNeSBiZXN0IGJldCBpcyB0byBmaW5kIGl0IHdpdGhpbiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBUaGF0IHNob3VsZCBjb250YWluIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgZm9yIHRoaXMgbnVsbCBibG9jayBkZXZpY2UgbW9kdWxlLCBpbmNsdWRpbmcgdGhlIHBvd2VyIG1hbmFnZW1lbnQgaG9va3MuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24gaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0OTIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjI0Ljg4ODQxNzg1M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODkwMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDg0LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDg0OlxcdHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuIDQ4NTpcXHRcXHRcXHRcXHRcXHQgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcXG4gNDg2OlxcdHtcXG4gNDg3OlxcdFxcdHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiA9IHRvX251bGxiX2RldmljZShpdGVtKTtcXG4gNDg4OlxcdFxcdGJvb2wgbmV3cCA9IGZhbHNlO1xcbiA0ODk6XFx0XFx0c3NpemVfdCByZXQ7XFxuIDQ5MDpcXHRcXG4gNDkxOlxcdFxcdHJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoXFx1MDAyNm5ld3AsIHBhZ2UsIGNvdW50KTtcXG4gNDkyOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA0OTM6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDk0OlxcdFxcbiA0OTU6XFx0XFx0cmV0ID0gY291bnQ7XFxuIDQ5NjpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4gNDk3OlxcdFxcdGlmICghZGV2LVxcdTAwM2Vwb3dlciBcXHUwMDI2XFx1MDAyNiBuZXdwKSB7XFxuIDQ5ODpcXHRcXHRcXHRpZiAodGVzdF9hbmRfc2V0X2JpdChOVUxMQl9ERVZfRkxfVVAsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSlcXG4gNDk5OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA1MDA6XFx0XFxuIDUwMTpcXHRcXHRcXHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcXG4gNTAyOlxcdFxcdFxcdGlmIChyZXQpIHtcXG4gNTAzOlxcdFxcdFxcdFxcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKTtcXG4gNTA0OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA1MDU6XFx0XFx0XFx0fVxcbiA1MDY6XFx0XFxuIDUwNzpcXHRcXHRcXHRzZXRfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncyk7XFxuIDUwODpcXHRcXHRcXHRkZXYtXFx1MDAzZXBvd2VyID0gbmV3cDtcXG4gNTA5OlxcdFxcdFxcdHJldCA9IGNvdW50O1xcbiA1MTA6XFx0XFx0fSBlbHNlIGlmIChkZXYtXFx1MDAzZXBvd2VyIFxcdTAwMjZcXHUwMDI2ICFuZXdwKSB7XFxuIDUxMTpcXHRcXHRcXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKSB7XFxuIDUxMjpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXBvd2VyID0gbmV3cDtcXG4gNTEzOlxcdFxcdFxcdFxcdG51bGxfZGVsX2RldihkZXYtXFx1MDAzZW51bGxiKTtcXG4gNTE0OlxcdFxcdFxcdFxcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcXG4gNTE1OlxcdFxcdFxcdH1cXG4gNTE2OlxcdFxcdFxcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpO1xcbiA1MTc6XFx0XFx0fVxcbiA1MTg6XFx0XFxuIDUxOTpcXHRvdXQ6XFxuIDUyMDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcbiA1MjE6XFx0XFx0cmV0dXJuIHJldDtcXG4gNTIyOlxcdH1cXG4gNTIzOlxcdFxcbiA1MjQ6XFx0Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBwb3dlcik7XFxuIDUyNTpcXHRcXG4gNTI2OlxcdHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9iYWRibG9ja3Nfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXFxuIDUyNzpcXHR7XFxuIDUyODpcXHRcXHRzdHJ1Y3QgbnVsbGJfZGV2aWNlICp0X2RldiA9IHRvX251bGxiX2RldmljZShpdGVtKTtcXG4gNTI5OlxcdFxcbiA1MzA6XFx0XFx0cmV0dXJuIGJhZGJsb2Nrc19zaG93KFxcdTAwMjZ0X2Rldi1cXHUwMDNlYmFkYmxvY2tzLCBwYWdlLCAwKTtcXG4gNTMxOlxcdH1cXG4gNTMyOlxcdFxcbiA1MzM6XFx0c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjI0Ljg4ODYwOTQzM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzgwNDMzNTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG93ZXIgTWFuYWdlbWVudCBQYXRjaCBmb3IgTnVsbCBCbG9jayBEZXZpY2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtgIHdpdGhpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYC4gVGhpcyBpcyByZWFjaGFibGUgdGhyb3VnaCBjb25maWdmcywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSByZWxldmFudCBjb25maWcgb3B0aW9uIGhlcmUgaXMgYEJMS19ERVZfTlVMTF9CTEtgLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYC4gQnV0LCBob2xkIG9uLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLi4uIGlzIGl0IHN0YXRpYz8gWXVwLCBpdCBpcy4gUmlnaHQuIEFuZCBpdHMgc3RhdGljIHN0YXR1cyBjb3VsZCBjb21wbGljYXRlIHRoaW5ncywgSSBuZWVkIHRvIGZvY3VzIG9uIHNvbWV0aGluZyBlbHNlLiBIb3dldmVyLCBpdCdzIGEgY2FsbGJhY2sgd2l0aGluIHRoZSBjb25maWdmcyBmcmFtZXdvcmssIHNvIGV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLCBpdHMgYWRkcmVzcyB3aWxsIGJlIHRha2VuLCBhbmQgaXQgbGlrZWx5IHdvbid0IGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBTbywgSSBoYXZlIG9wdGlvbnMgaGVyZS5cblxuR2l2ZW4gdGhlIHByb21wdCdzIHByZWZlcmVuY2UgZm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cywgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVycywgaXQncyB3b3J0aCBjb25zaWRlcmluZyBhbHRlcm5hdGl2ZXMuIFdoaWxlIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIG1pZ2h0IGJlIHZpYWJsZSBiZWNhdXNlIG9mIGl0cyBjYWxsYmFjayBuYXR1cmUsIEkgc2hvdWxkIGNvbnNpZGVyIHRoZSBvdGhlciBmdW5jdGlvbnMgbWVudGlvbmVkLiBTcGVjaWZpY2FsbHksIGBudWxsX2ZyZWVfem9uZWRfZGV2YCwgYG51bGxfYWRkX2RldmAsIG9yIGBudWxsX2RlbF9kZXZgLiBMZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG51bGxfZnJlZV96b25lZF9kZXZgIGZpcnN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTQyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6MjkuNjY5MDQ2NzI2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM1ODM4NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNDM9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNDQ6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE0NS1pbnQgbnVsbF9yZXBvcnRfem9uZXMoc3RydWN0IGdlbmRpc2sgKmRpc2ssIHNlY3Rvcl90IHNlY3RvcixcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNjE9c3RhdGljIGlubGluZSBpbnQgbnVsbF9yZWdpc3Rlcl96b25lZF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjQtfVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNjU6c3RhdGljIGlubGluZSB2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KSB7fVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjYtc3RhdGljIGlubGluZSBibGtfc3RhdHVzX3QgbnVsbF9wcm9jZXNzX3pvbmVkX2NtZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM9MTc1PWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4Ni1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM6MTg3OnZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4OC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjI5LjgyMjYzNjM3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NDU3NzE0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYSBgbnVsbF9mcmVlX3pvbmVkX2RldmAgQ29uY2VybioqXG5cbkhtbSwgc28gYG51bGxfZnJlZV96b25lZF9kZXZgIGlzICpub3QqIGEgc3RhdGljIHZhcmlhYmxlLCB0aGF0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBgQkxLX0RFVl9aT05FRGAuIFRoZSBxdWVzdGlvbiBpcywgaXMgYEJMS19ERVZfWk9ORURgIGEgbWFuZGF0b3J5IGNvbXBpbGUtdGltZSBkZXBlbmRlbmN5IGZvciBgbnVsbF9mcmVlX3pvbmVkX2RldmA/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0IGlzLiBUaGUgcXVpY2tlc3Qgd2F5IHRvIGRldGVybWluZSB0aGF0IGlzIHRvIGRpdmUgaW50byB0aGUgYnVpbGQgc3lzdGVtIGFuZCBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLiBMZXQncyBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBNYWtlZmlsZWAgaW4gYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvYCB0byBzZWUgaG93IHRoZXNlIGVsZW1lbnRzIGludGVyYWN0IGR1cmluZyBjb21waWxhdGlvbi4gVGhpcyBzaG91bGQgcmV2ZWFsIHRoZSBidWlsZC10aW1lIGRlcGVuZGVuY2llcywgaWYgYW55LCB0aGF0IGFmZmVjdCBgbnVsbF9mcmVlX3pvbmVkX2RldmAuIFRoaXMgc2hvdWxkIG1ha2UgdGhlIGNvbm5lY3Rpb24gY2xlYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NjAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwOToyMTozMy4zNjg0MTI1MzFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0XFxuICAgMzpcXHQjIG5lZWRlZCBmb3IgdHJhY2UgZXZlbnRzXFxuICAgNDpcXHRjY2ZsYWdzLXlcXHRcXHRcXHQrPSAtSSQoc3JjKVxcbiAgIDU6XFx0XFxuICAgNjpcXHRvYmotJChDT05GSUdfQkxLX0RFVl9OVUxMX0JMSylcXHQrPSBudWxsX2Jsay5vXFxuICAgNzpcXHRudWxsX2Jsay1vYmpzXFx0XFx0XFx0Oj0gbWFpbi5vXFxuICAgODpcXHRpZmVxICgkKENPTkZJR19CTEtfREVWX1pPTkVEKSwgeSlcXG4gICA5OlxcdG51bGxfYmxrLSQoQ09ORklHX1RSQUNJTkcpIFxcdCs9IHRyYWNlLm9cXG4gIDEwOlxcdGVuZGlmXFxuICAxMTpcXHRudWxsX2Jsay0kKENPTkZJR19CTEtfREVWX1pPTkVEKSArPSB6b25lZC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjMzLjM2ODUyODg4MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTYzNTkyNzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2ggYW5kIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gZm9yIGEgZnV6emluZyBzdHJhdGVneS4gRmlyc3QsIEkgc2VlIHRoYXQgYENPTkZJR19CTEtfREVWX1pPTkVEYCBpcyBkZWZpbml0ZWx5IGNydWNpYWwgYmVjYXVzZSBpdCdzIHJlcXVpcmVkIGZvciBgem9uZWQub2AsIHdoaWNoIGluY2x1ZGVzIGBudWxsX2ZyZWVfem9uZWRfZGV2YC4gVGhpcyBtZWFucyB3ZSBuZWVkIGBCTEtfREVWX1pPTkVEYCBpbiBvdXIgYEVuYWJsZUNvbmZpZ3NgLiBCdXQgd2FpdCwgYG51bGxfZnJlZV96b25lZF9kZXZgIGlzIGFuIGVtcHR5IGlubGluZSBmdW5jdGlvbiB1bmxlc3MgYENPTkZJR19CTEtfREVWX1pPTkVEYCBpcyBlbmFibGVkLiBTbyB0aGUgYnVnICptaWdodCogb25seSBiZSB0cmlnZ2VyZWQgaWYgdGhhdCBjb25maWcgb3B0aW9uIGlzIHNldC5cblxuTmV4dCwgSSBuZWVkIHRvIGNvbmZpcm0gYEJMS19ERVZfTlVMTF9CTEtgLiBZZXMsIGl0J3MgYSBoYXJkIHJlcXVpcmVtZW50LiBUaGVyZWZvcmUsIHRoZSBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGJlIGBbXCJCTEtfREVWX05VTExfQkxLXCIsIFwiQkxLX0RFVl9aT05FRFwiXWAuXG5cbk5vdywgdGhlIGltcG9ydGFudCBmdW5jdGlvbnMgdG8gZm9jdXMgb24uIEkgaW5pdGlhbGx5IHRob3VnaHQgb2YganVzdCBgbnVsbF9mcmVlX3pvbmVkX2RldmAgb3IgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAuIFRoZSBsYXR0ZXIsIGJlaW5nIGBzdGF0aWNgLCBtaWdodCBiZSBpbmxpbmVkIGFuZCBvcHRpbWl6ZWQgYXdheS4gQnV0LCBJIHJlbWVtYmVyIHRoYXQgaXQncyB1c2VkIGFzIGEgY2FsbGJhY2sgaW4gYENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgcG93ZXIpO2AuIFRoaXMgbWVhbnMgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgd2lsbCBiZSBpbmNsdWRlZCwgYW5kIHRoZXJlZm9yZSwgaXQgd2lsbCBub3QgYmUgaW5saW5lZC4gU28sIGl0J3MgcGVyZmVjdGx5IHZhbGlkIHRvIGluY2x1ZGUgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYXMgYSBmb2N1cyBzeW1ib2wuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdC4uLiBZZXAsIGl0J3MgYSBjb25maWdmcyBzdG9yZSBjYWxsYmFjayBpbiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLlxuXG5Pa2F5LCBJJ20gY29uZmlkZW50LiBJJ2xsIGluY2x1ZGUgYm90aCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBhbmQgYG51bGxfZnJlZV96b25lZF9kZXZgLlxuXG5DaGVja2luZyBgQ09ORklHRlNfRlNgIGZvciBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzLi4uaXQncyBzZWxlY3RlZCBieSBgQkxLX0RFVl9OVUxMX0JMS2AuIFNvLCB3ZSdyZSBnb29kIHdpdGgganVzdCBgQkxLX0RFVl9OVUxMX0JMS2AgYW5kIGBCTEtfREVWX1pPTkVEYCBpbiB0aGUgY29uZmlnIGxpc3QuXG5cbk5vdyBsZXQncyByZXZpZXcgdGhlIHBhdGNoIGl0c2VsZjpcblxuYGBgY1xuQEAgLTUxMSw2ICs1MTEsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIFx0XHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuIFx0XHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG4gXHRcdFx0bnVsbF9kZWxfZGV2KGRldi1cdTAwM2VudWxsYik7XG4rXHRcdFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuIFx0XHR9XG4gXHRcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbiBcdH1cbmBgYFxuXG5UaGUgcGF0Y2ggY2xlYXJseSBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayBvciBzb21ldGhpbmcgc2ltaWxhciB3aGVuIGEgbnVsbF9ibGsgZGV2aWNlIGlzIHBvd2VyZWQgZG93biB2aWEgY29uZmlnZnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggbWFrZXMgaXQgd29ydGggZnV6emluZy4gSSB3aWxsIGluY2x1ZGUgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYW5kIGBudWxsX2ZyZWVfem9uZWRfZGV2YCBhcyBmb2N1cyBzeW1ib2xzIGFuZCBgQkxLX0RFVl9OVUxMX0JMS2AgYW5kIGBCTEtfREVWX1pPTkVEYCBhcyB0aGUgY29uZmlndXJhdGlvbnMgdG8gZW5hYmxlLlxuXG5JJ20gZG91YmxlLWNoZWNraW5nIGBudWxsX2ZyZWVfem9uZWRfZGV2YCByZWFsbHkgcXVpY2suIEl0ICppcyogYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uIGlmIGBCTEtfREVWX1pPTkVEYCBpcyAqbm90KiBzZXQuIEJ1dCB3aGVuIGBCTEtfREVWX1pPTkVEYCBpcyBzZXQsIGl0IGJlY29tZXMgYSBcInJlYWxcIiBmdW5jdGlvbi4gSXQncyBzYWZlIHRvIHVzZSBpdCBhcyBhIGZvY3VzIHN5bWJvbC5cblxuT2theSwgbGV0J3MgY2hlY2sgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgb25lIGxhc3QgdGltZS4gSXQncyBzdGF0aWMsIGJ1dCBpdHMgYWRkcmVzcyBpcyB0YWtlbiBiZWNhdXNlIGl0J3MgcGFydCBvZiBgQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBwb3dlcik7YC4gVGhpcyBtYWtlcyBpdCBwYXJ0IG9mIGEgYHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGVgLCB0aHVzIGd1YXJhbnRlZWluZyBpdCB3aWxsIG5vdCBiZSBpbmxpbmVkLlxuXG5JJ20gcmVhZHkuIExldCdzIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MzAsIk91dHB1dFRva2VucyI6MTMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6NDUuMDA0NDU4OTRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI3MzExNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTlVMTF9CTEtcIixcbiAgICBcIkJMS19ERVZfWk9ORURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgICBcIm51bGxfZnJlZV96b25lZF9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBgbnVsbF9mcmVlX3pvbmVkX2RldmAgaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgdG8gcHJvcGVybHkgZnJlZSB6b25lZCBkZXZpY2UgcmVzb3VyY2VzIHdoZW4gcG93ZXJpbmcgZG93biBhIG51bGxfYmxrIGRldmljZSB2aWEgY29uZmlnZnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHZpcnR1YWwgYmxvY2sgZGV2aWNlIGRyaXZlciB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiLFxuICAgIFwiQkxLX0RFVl9aT05FRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zdG9yZVwiLFxuICAgIFwibnVsbF9mcmVlX3pvbmVkX2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIGBudWxsX2ZyZWVfem9uZWRfZGV2YCBpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCB0byBwcm9wZXJseSBmcmVlIHpvbmVkIGRldmljZSByZXNvdXJjZXMgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlIHZpYSBjb25maWdmcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgdmlydHVhbCBibG9jayBkZXZpY2UgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6NDUuMTc3MjAwOTkzWiIsIlNlcSI6MTksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ5NTYxOTE4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjQ1LjE3ODA2ODc2M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMzQ5NDc0NDU0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgd2hlbiBwb3dlcmluZyBkb3duIGEgbnVsbF9ibGsgZGV2aWNlLiBUaGlzIGZpeGVzIGEgbWVtb3J5IGxlYWsgd2hlcmUgem9uZWQgZGV2aWNlIHJlc291cmNlcyB3ZXJlIG5vdCBmcmVlZCB1cG9uIGRldmljZSBwb3dlciBkb3duLiBNZW1vcnkgbGVha3MgYXJlIGRldGVjdGVkIGJ5IGttZW1sZWFrLCBhbmQgYW55IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gdGhpcyB3b3VsZCBiZSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBpbmZvLWxlYWtzLCBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWVlM2YzMDQxODE0ZGQ3MjgzZjkzOWZjNWI5MTQzNjk2Yzg2M2RkYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDA5OjIxOjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuaW5kZXggZjhjMGZkNTdlMDQxYS4uZmIwMDFkMDAyZDE3YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuQEAgLTUxMSw2ICs1MTEsNyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIFx0XHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuIFx0XHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG4gXHRcdFx0bnVsbF9kZWxfZGV2KGRldi1cdTAwM2VudWxsYik7XG4rXHRcdFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuIFx0XHR9XG4gXHRcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjQ1LjE3ODA3MDkxM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTA3OTcwMTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG51bGxfYmxrYCBEcml2ZXIgUG93ZXIgTWFuYWdlbWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGEgY2FsbCB0byBgbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO2Agd2hlbiB0aGUgZGV2aWNlIGlzIGJlaW5nIHBvd2VyZWQgZG93biAoaS5lLiwgYG5ld3BgIGlzIGZhbHNlKS4gTGV0J3Mgc3RlcCB0aHJvdWdoIHRoZSBjb2RlIHRvIGNsYXJpZnkgbXkgdW5kZXJzdGFuZGluZy5cblxuYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgaGFuZGxlcyB0aGUgcG93ZXIgc3RhdGUgdHJhbnNpdGlvbi4gSXQgY2hlY2tzIGlmIHdlIGFyZSBnb2luZyBmcm9tIG9mZiB0byBvbiwgb3IgZnJvbSBvbiB0byBvZmYuIEN1cnJlbnRseSwgaXQgaW5jbHVkZXM6XG4tICAgSWYgd2UgYXJlIGdvaW5nIGZyb20gb2ZmIHRvIG9uLCBpdCBjYWxscyBgbnVsbF9hZGRfZGV2YC5cbi0gICBJZiB3ZSBhcmUgZ29pbmcgZnJvbSBvbiB0byBvZmYsIGl0IGNhbGxzIGBudWxsX2RlbF9kZXZgLlxuXG5BZGRpbmcgYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgb24gdGhlIHBvd2VyLWRvd24gcGF0aCBzdWdnZXN0cyBhIGNsZWFudXAgb3BlcmF0aW9uLiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSB0aGF0IHRoaXMgaXMgbGlrZWx5IGFkZHJlc3NpbmcgYSBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZS4gRWl0aGVyIGEgbWVtb3J5IGxlYWssIGEgdXNlLWFmdGVyLWZyZWUsIG9yIHBlcmhhcHMgYW4gaXNzdWUgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNvbW1lbnQgaW4gdGhlIHBhdGNoIG1lbnRpb25zIGl0IGlzIHRvIGZyZWUgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB6b25lZCBkZXZpY2VzLiBJIHN1c3BlY3QgdGhlIGtlcm5lbCBtYXkgaGF2ZSBhIGttZW1sZWFrIGRldGVjdGlvbiBhbmQvb3IgS0FTQU4gdG8gZGV0ZWN0IHRoZXNlIGlzc3Vlcy4gQnV0IHRoZSBwYXRjaCBzZWVtcyB0byBhZGRyZXNzIHRoZSBmcmVlIGl0c2VsZiwgbm90IHRoZSBpbml0aWFsaXphdGlvbi5cblxuSWYgdGhlIG1lbW9yeSB3YXNuJ3QgZnJlZWQsIGl0J3MgYSBtZW1vcnkgbGVhaywgd2hpY2ggYGttZW1sZWFrYCBzaG91bGQgY2F0Y2guIElmIHRoZSBtZW1vcnkgd2FzIGFjY2Vzc2VkICphZnRlciogYmVpbmcgZnJlZWQsIHRoYXQncyBhIHVzZS1hZnRlci1mcmVlLCBhbmQgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgc2hvdWxkIGZsYWcgdGhhdC4gQnV0IGZyb20gdGhlIGxvb2tzIG9mIGl0LCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgZnJlZWluZyB0aGUgbWVtb3J5LiBJdCB3aWxsIGJlIGhlbHBmdWwgdG8gbG9vayBhdCB0aGUgZnVuY3Rpb24gYG51bGxfZnJlZV96b25lZF9kZXZgIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA5OjIxOjUzLjA4NjA0NDQ1OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzNjcwOTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm51bGxfZnJlZV96b25lZF9kZXZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDg0PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MTMtXFx0XFx0XFx0bnVsbF9kZWxfZGV2KGRldi1cXHUwMDNlbnVsbGIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUxNDpcXHRcXHRcXHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTE1LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTgzNT1zdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTgzOS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4NDA6XFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg0MS1cXHRiYWRibG9ja3NfZXhpdChcXHUwMDI2ZGV2LVxcdTAwM2ViYWRibG9ja3MpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTk1Nj1zdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDY3LW91dF9jbGVhbnVwX3pvbmU6XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjA2ODpcXHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA2OS1vdXRfY2xlYW51cF90YWdzOlxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTE0Mz1pbnQgbnVsbF9yZWdpc3Rlcl96b25lZF9kZXYoc3RydWN0IG51bGxiICpudWxsYik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oOjE0NDp2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTQ1LWludCBudWxsX3JlcG9ydF96b25lcyhzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc2VjdG9yX3Qgc2VjdG9yLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTE2MT1zdGF0aWMgaW5saW5lIGludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE2NC19XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oOjE2NTpzdGF0aWMgaW5saW5lIHZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpIHt9XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE2Ni1zdGF0aWMgaW5saW5lIGJsa19zdGF0dXNfdCBudWxsX3Byb2Nlc3Nfem9uZWRfY21kKHN0cnVjdCBudWxsYl9jbWQgKmNtZCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYz0xNzU9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMtMTg2LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYzoxODc6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMtMTg4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDk6MjE6NTMuMTk5NzkyMDQ3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NzI5NjQ4MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE1lbW9yeSBMZWFrIEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IHNxdWFzaGluZyBhIG5hc3R5IG1lbW9yeSBsZWFrLiBJdCBzZWVtcyB0aGF0IHdoZW4gYSBkZXZpY2UgdXNpbmcgYGNvbmZpZ2ZzYCBwb3dlcnMgZG93biwgdGhlIGZ1bmN0aW9uIGBudWxsX2ZyZWVfem9uZWRfZGV2YCB3YXNuJ3QgYmVpbmcgY2FsbGVkLiBDb25zZXF1ZW50bHksIHpvbmVkIGRldmljZSBtZW1vcnkgd2FzIGp1c3QuLi5sZWZ0IGhhbmdpbmcgb3V0IHRoZXJlLCBub3QgYmVpbmcgZnJlZWQuIFRoYXQncyBhIHRleHRib29rIG1lbW9yeSBsZWFrLlxuXG5Gb3J0dW5hdGVseSwgd2UgY2F1Z2h0IHRoaXMgd2l0aCBga21lbWxlYWtgLCB3aGljaCBpcyB0aGUgY29ycmVjdCB0b29sIGZvciB0aGVzZSBraW5kcyBvZiBwcm9ibGVtcywgbm90IGBLTVNBTmAuIE5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyBoZXJlLlxuXG5TbywgdGhlIHBhdGNoIGlzIHNpbXBsZToganVzdCBhZGQgYSBjYWxsIHRvIGBudWxsX2ZyZWVfem9uZWRfZGV2KGRldilgIHdpdGhpbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCB3aGVuIHBvd2VyaW5nIGRvd24gYSBgbnVsbF9ibGtgIGRldmljZS4gVGhpcyBlbnN1cmVzIHRoZSB6b25lZCBkZXZpY2UgcmVzb3VyY2VzIGFyZSByZWxlYXNlZCBwcm9wZXJseSBkdXJpbmcgcG93ZXIgZG93bi5cblxuV2UncmUgbm90IGludHJvZHVjaW5nIG9yIGV4cG9zaW5nIGFueSBuZXcgcmlza3MgaGVyZSwgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgc2hlbmFuaWdhbnMsIG5vIGluZm8gbGVha3MuIEFuZCB0aGVyZSdzIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZGVwZW5kcyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBgS01TQU5gIGZ1enppbmcgc2Vzc2lvbiBpc24ndCB3YXJyYW50ZWQuIFRoaXMgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZCwgZGlyZWN0bHkgYWRkcmVzc2VzIHRoZSBsZWFrLCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBhdHRhY2sgdmVjdG9ycy4gR29vZCB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzA3LCJPdXRwdXRUb2tlbnMiOjE0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwOToyMTo1OC42NzI3NjA2NTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIGBudWxsX2ZyZWVfem9uZWRfZGV2KGRldilgIGluIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIHdoZW4gcG93ZXJpbmcgZG93biBhIG51bGxfYmxrIGRldmljZS4gVGhpcyBmaXhlcyBhIG1lbW9yeSBsZWFrIHdoZXJlIHpvbmVkIGRldmljZSByZXNvdXJjZXMgd2VyZSBub3QgZnJlZWQgdXBvbiBkZXZpY2UgcG93ZXIgZG93bi4gTWVtb3J5IGxlYWtzIGFyZSBkZXRlY3RlZCBieSBrbWVtbGVhaywgYW5kIGFueSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnVncyByZWxhdGVkIHRvIHRoaXMgd291bGQgYmUgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgaW5mby1sZWFrcywgb3IgY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIGBudWxsX2ZyZWVfem9uZWRfZGV2KGRldilgIGluIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIHdoZW4gcG93ZXJpbmcgZG93biBhIG51bGxfYmxrIGRldmljZS4gVGhpcyBmaXhlcyBhIG1lbW9yeSBsZWFrIHdoZXJlIHpvbmVkIGRldmljZSByZXNvdXJjZXMgd2VyZSBub3QgZnJlZWQgdXBvbiBkZXZpY2UgcG93ZXIgZG93bi4gTWVtb3J5IGxlYWtzIGFyZSBkZXRlY3RlZCBieSBrbWVtbGVhaywgYW5kIGFueSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnVncyByZWxhdGVkIHRvIHRoaXMgd291bGQgYmUgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgaW5mby1sZWFrcywgb3IgY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4r2p6[1] Phase: Succeeded StartedAt: 2026-08-14 09:22:11 +0000 UTC FinishedAt: 2026-08-14 09:22:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-14 09:22:11 +0000 UTC FinishedAt: 2026-08-14 09:22:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2] Phase: Succeeded StartedAt: 2026-08-14 09:22:11 +0000 UTC FinishedAt: 2026-08-14 13:12:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-14 09:22:11 +0000 UTC FinishedAt: 2026-08-14 13:12:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-14 09:22:11 +0000 UTC FinishedAt: 2026-08-14 09:22:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-14 09:22:11 +0000 UTC FinishedAt: 2026-08-14 09:22:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4r2p6/series-workflow4r2p6-convert-artifact-3546429232/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-14 09:22:35 +0000 UTC FinishedAt: 2026-08-14 09:44:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-14 09:22:35 +0000 UTC FinishedAt: 2026-08-14 09:44:56 +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:*a21731c1-5bf9-450c-9a5a-931d3d2b1a07,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-workflow4r2p6/series-workflow4r2p6-convert-artifact-3546429232/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": "17fd1c00-56b2-4d33-8e0a-defae0959845", "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-workflow4r2p6/series-workflow4r2p6-build-action-1675764790/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-14 09:22:35 +0000 UTC FinishedAt: 2026-08-14 09:44:46 +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:*a21731c1-5bf9-450c-9a5a-931d3d2b1a07,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-workflow4r2p6/series-workflow4r2p6-convert-artifact-3546429232/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": "17fd1c00-56b2-4d33-8e0a-defae0959845", "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-workflow4r2p6/series-workflow4r2p6-build-action-1675764790/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-14 09:44:56 +0000 UTC FinishedAt: 2026-08-14 09:44:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-14 09:44:56 +0000 UTC FinishedAt: 2026-08-14 09:44:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-14 09:44:56 +0000 UTC FinishedAt: 2026-08-14 09:45:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-14 09:44:56 +0000 UTC FinishedAt: 2026-08-14 09:45:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4r2p6/series-workflow4r2p6-convert-artifact-3303748631/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-14 09:45:06 +0000 UTC FinishedAt: 2026-08-14 09:47:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-14 09:45:06 +0000 UTC FinishedAt: 2026-08-14 09:46:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*17fd1c00-56b2-4d33-8e0a-defae0959845,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-workflow4r2p6/series-workflow4r2p6-build-action-1675764790/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-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-14 09:47:09 +0000 UTC FinishedAt: 2026-08-14 09:47:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-14 09:47:09 +0000 UTC FinishedAt: 2026-08-14 09:47:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-14 09:47:09 +0000 UTC FinishedAt: 2026-08-14 10:07:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-14 09:47:09 +0000 UTC FinishedAt: 2026-08-14 10:07:26 +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:*a21731c1-5bf9-450c-9a5a-931d3d2b1a07,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-workflow4r2p6/series-workflow4r2p6-convert-artifact-3303748631/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": "cd8f0470-1334-489a-8fe5-0201540cc6f8", "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-workflow4r2p6/series-workflow4r2p6-build-action-349596251/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-14 09:47:09 +0000 UTC FinishedAt: 2026-08-14 10: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:*a21731c1-5bf9-450c-9a5a-931d3d2b1a07,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-workflow4r2p6/series-workflow4r2p6-convert-artifact-3303748631/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": "cd8f0470-1334-489a-8fe5-0201540cc6f8", "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-workflow4r2p6/series-workflow4r2p6-build-action-349596251/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-14 10:07:26 +0000 UTC FinishedAt: 2026-08-14 10:07:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-14 10:07:26 +0000 UTC FinishedAt: 2026-08-14 10:07:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-14 10:07:26 +0000 UTC FinishedAt: 2026-08-14 10:09:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-14 10:07:26 +0000 UTC FinishedAt: 2026-08-14 10:09:08 +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:*cd8f0470-1334-489a-8fe5-0201540cc6f8,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-workflow4r2p6/series-workflow4r2p6-build-action-349596251/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-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-14 10:09:18 +0000 UTC FinishedAt: 2026-08-14 13:12:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-14 10:09:18 +0000 UTC FinishedAt: 2026-08-14 13:12:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*17fd1c00-56b2-4d33-8e0a-defae0959845,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cd8f0470-1334-489a-8fe5-0201540cc6f8,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-workflow4r2p6/series-workflow4r2p6-build-action-1675764790/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-workflow4r2p6/series-workflow4r2p6-build-action-349596251/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-14 10:09:18 +0000 UTC FinishedAt: 2026-08-14 10:09:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-14 10:09:18 +0000 UTC FinishedAt: 2026-08-14 10:09:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4r2p6/series-workflow4r2p6-convert-artifact-3178293968/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-14 10:09:18 +0000 UTC FinishedAt: 2026-08-14 10:09:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-14 10:09:18 +0000 UTC FinishedAt: 2026-08-14 10:09:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-14 10:09:18 +0000 UTC FinishedAt: 2026-08-14 10:09:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-14 10:09:28 +0000 UTC FinishedAt: 2026-08-14 13:12:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r2p6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","null_free_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"a4426117-cbf6-4f5a-a78e-9d90707f8078","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-14 10:09:28 +0000 UTC FinishedAt: 2026-08-14 13:12:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*17fd1c00-56b2-4d33-8e0a-defae0959845,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cd8f0470-1334-489a-8fe5-0201540cc6f8,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-workflow4r2p6/series-workflow4r2p6-build-action-1675764790/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-workflow4r2p6/series-workflow4r2p6-build-action-349596251/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-workflow4r2p6/series-workflow4r2p6-convert-artifact-3178293968/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,}