Name: series-workflow4khs8 Phase: Succeeded StartedAt: 2026-09-07 01:44:23 +0000 UTC FinishedAt: 2026-09-07 03:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[0] Phase: Succeeded StartedAt: 2026-09-07 01:44:23 +0000 UTC FinishedAt: 2026-09-07 01:47:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 01:44:23 +0000 UTC FinishedAt: 2026-09-07 01:47:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "6262acad9db197b5ed12e3b245d2e6d0c80fb960", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "PHYLINK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "6262acad9db197b5ed12e3b245d2e6d0c80fb960", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "PHYLINK" ], "series_id": "71e0ef17-70ec-42b4-9cd3-46a46c6efeda" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phy_attach_direct", "phy_probe", "phy_remove", "phy_device_create", "phylink_bringup_phy", "phylink_disconnect_phy", "phylink_connect_phy" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQSFlMSU5LJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywKICAgICYjMzQ7cGh5X3Byb2JlJiMzNDssCiAgICAmIzM0O3BoeV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0OywKICAgICYjMzQ7cGh5bGlua19icmluZ3VwX3BoeSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfY29ubmVjdF9waHkmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgcmVzb2x2ZXMgc3RhdGUgdHJhY2tpbmcgYW5kIGNsZWFudXAgaXNzdWVzIGZvciBQSFkgaW50ZXJydXB0IHJlc3RvcmF0aW9uICh2aWEgYSBuZXcgYGlycV9zYXZlZGAgZmllbGQpIGFuZCBlcnJvciBoYW5kbGluZyBkdXJpbmcgcGh5bGluayBicmluZ3VwL2Rpc2Nvbm5lY3QuXG5cbjEuIE1lbW9yeSBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbjogYHN0cnVjdCBwaHlfZGV2aWNlYCBpcyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY19vYmpgLCBhbmQgdGhlIG5ldyBgaXJxX3NhdmVkYCBmaWVsZCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGBQSFlfUE9MTGAgdXBvbiBjcmVhdGlvbiBpbiBgcGh5X2RldmljZV9jcmVhdGUoKWAuXG4yLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZTogQWxsIG9wZXJhdGlvbnMgb24gYGlycV9zYXZlZGAgYW5kIGBwaHlkZXZgIG1lbWJlcnMgb3BlcmF0ZSBvbiBmdWxseSBpbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzIGFuZCBkbyBub3QgcmVhZCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5LlxuMy4gTm8gaW5mby1sZWFrczogTm8gc3RydWN0dXJlcywgcGFkZGluZywgb3IgYnVmZmVycyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UgKG5vIGBjb3B5X3RvX3VzZXJgLCBuZXRsaW5rIGF0dHJpYnV0ZXMsIGlvY3RscywgZXRjLikuXG40LiBLQVNBTiAvIExPQ0tERVAgYXBwbGljYWJpbGl0eTogQW55IGlzc3VlcyBpbnRyb2R1Y2VkIGluIHRoZXNlIHBhdGhzIChzdWNoIGFzIGxvY2tpbmcgbWlzdGFrZXMgYXJvdW5kIGBwbC1cdTAwM2VwaHlkZXZfbXV0ZXhgIG9yIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcykgYXJlIGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIHByZXNlcnZhdGlvbiBhbmQgcmVzdG9yYXRpb24gbG9naWMgYWNyb3NzIFBIWSBkZXZpY2UgcHJvYmUsIGF0dGFjaCwgZGV0YWNoLCBhbmQgcmVtb3ZlIGxpZmVjeWNsZSBwYXRocyBpbiBwaHlsaWIgKGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMpLCBhcyB3ZWxsIGFzIHBoeWxpbmsgY29ubmVjdGlvbiBlcnJvciB0ZWFyZG93biAoZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYykuIFRoZXNlIHN1YnN5c3RlbXMgYXJlIHJlYWNoYWJsZSB2aWEgdmlydHVhbGl6ZWQgbmV0d29ya2luZyBkcml2ZXJzIGFuZCBVU0IgRXRoZXJuZXQgZGV2aWNlIGVtdWxhdGlvbiAoZS5nLiBhc2l4LCBsYW43OHh4LCBzbXNjOTV4eCkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGRldGVjdCByZWdyZXNzaW9ucywgc3RhdGUgaW5jb25zaXN0ZW5jaWVzLCBhbmQgdGVhcmRvd24vZXJyb3ItaGFuZGxpbmcgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDk4MmNiOTUwZmIyMzIwZjBmMDYzZWJiMTE3NGYwYWE2NmFmYzA5NGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDAxOjQ2OjA1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li5iYTExNzE0NzcyMWFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTc3MCw2ICYjNDM7NzcwLDcgQEAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCB1MzIgcGh5X2lkLFxuIFx0bWRpb2Rldi1cdTAwM2VkZXZpY2VfcmVtb3ZlID0gcGh5X21kaW9fZGV2aWNlX3JlbW92ZTtcbiBcdG1kaW9kZXYtXHUwMDNlcmVzZXRfc3RhdGUgPSAtMTtcbiBcbiYjNDM7XHRkZXYtXHUwMDNlaXJxX3NhdmVkID0gUEhZX1BPTEw7XG4gXHRkZXYtXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuIFx0ZGV2LVx1MDAzZWR1cGxleCA9IERVUExFWF9VTktOT1dOO1xuIFx0ZGV2LVx1MDAzZXBhdXNlID0gZmFsc2U7XG5AQCAtMTczNCw2ICYjNDM7MTczNSwxOSBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG4gfVxuIFxuJiM0MzsvKiBHaXZlIGJhY2sgd2hhdCBwaHlfcHJvYmUoKSB0b29rLCBidXQgbm90IHdoaWxlIHBoeV9saW5rX2NoYW5nZSBtYXJrcyBhXG4mIzQzOyAqIGNvbnN1bWVyOiBpdCBza2lwcGVkIHBoeV9yZXF1ZXN0X2ludGVycnVwdCgpIG9uIHRoZSB2YWx1ZSBpdCBzYXcsIHNvXG4mIzQzOyAqIHBoeV9kaXNjb25uZWN0KCkgd291bGQgZnJlZSBhbiBpbnRlcnJ1cHQgbm9ib2R5IHJlcXVlc3RlZC5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX3Byb2JlX2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2VwaHlfbGlua19jaGFuZ2UgfHwgcGh5ZGV2LVx1MDAzZWlycV9zYXZlZCA9PSBQSFlfUE9MTClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0cGh5ZGV2LVx1MDAzZWlycSA9IHBoeWRldi1cdTAwM2VpcnFfc2F2ZWQ7XG4mIzQzO1x0cGh5ZGV2LVx1MDAzZWlycV9zYXZlZCA9IFBIWV9QT0xMO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbiAgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbkBAIC0xODk2LDYgJiM0MzsxOTEwLDcgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXG4gZXJyb3JfbW9kdWxlX3B1dDpcbiBcdG1vZHVsZV9wdXQoZC1cdTAwM2Vkcml2ZXItXHUwMDNlb3duZXIpO1xuJiM0MztcdHBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpO1xuIFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuIFx0ZC1cdTAwM2Vkcml2ZXIgPSBOVUxMO1xuIGVycm9yX3B1dF9kZXZpY2U6XG5AQCAtMzY5NCw4ICYjNDM7MzcwOSwxMCBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHQvKiBEaXNhYmxlIHRoZSBpbnRlcnJ1cHQgaWYgdGhlIFBIWSBkb2VzbiYjMzk7dCBzdXBwb3J0IGl0XG4gXHQgKiBidXQgdGhlIGludGVycnVwdCBpcyBzdGlsbCBhIHZhbGlkIG9uZVxuIFx0ICovXG4tXHRpZiAoIXBoeV9kcnZfc3VwcG9ydHNfaXJxKHBoeWRydikgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSlcbiYjNDM7XHRpZiAoIXBoeV9kcnZfc3VwcG9ydHNfaXJxKHBoeWRydikgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkge1xuJiM0MztcdFx0cGh5ZGV2LVx1MDAzZWlycV9zYXZlZCA9IHBoeWRldi1cdTAwM2VpcnE7XG4gXHRcdHBoeWRldi1cdTAwM2VpcnEgPSBQSFlfUE9MTDtcbiYjNDM7XHR9XG4gXG4gXHRpZiAocGh5ZHJ2LVx1MDAzZWZsYWdzIFx1MDAyNiBQSFlfSVNfSU5URVJOQUwpXG4gXHRcdHBoeWRldi1cdTAwM2Vpc19pbnRlcm5hbCA9IHRydWU7XG5AQCAtMzgyMCw2ICYjNDM7MzgzNyw4IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4gXHRcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xuIFxuJiM0MztcdHBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpO1xuJiM0MztcbiBcdC8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4gXG5AQCAtMzg0OCw2ICYjNDM7Mzg2Nyw4IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUpXG4gXHRcdHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKHBoeWRldik7XG4gXG4mIzQzO1x0cGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7XG4mIzQzO1xuIFx0LyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi9cbiBcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggM2VjM2JiNDM5MTA5NS4uNmE5MmZhYzU4ZjI1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0yMDgzLDYgJiM0MzsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0cmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpO1xuIH1cbiBcbiYjNDM7LyogRGlzYXNzb2NpYXRlIEBwaHkgZnJvbSBAcGwuIENhbGxlciBtdXN0IGhvbGQgcGwtXHUwMDNlcGh5ZGV2X211dGV4LiAqL1xuJiM0MztzdGF0aWMgdm9pZCBwaHlsaW5rX2NsZWFyX3BoeWRldihzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4mIzQzO3tcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbiYjNDM7XHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuJiM0MztcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4mIzQzO1x0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuQEAgLTIxOTcsNiAmIzQzOzIyMDksMTIgQEAgc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbiBcdGlmIChyZXQgPT0gMCBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxuIFx0XHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcbiBcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4mIzQzO1x0XHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0yMzQ3LDE1ICYjNDM7MjM2NSw4IEBAIHZvaWQgcGh5bGlua19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXHRwaHkgPSBwbC1cdTAwM2VwaHlkZXY7XG4tXHRpZiAocGh5KSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbi1cdFx0cGwtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbi1cdFx0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbi1cdFx0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4tXHR9XG4mIzQzO1x0aWYgKHBoeSlcbiYjNDM7XHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXG4gXHRpZiAocGh5KSB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmhcbmluZGV4IDVmOGQ2NTg2OGUwZmYuLmQ0OTI0MTc1NzJhMGYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtNTkxLDYgJiM0Mzs1OTEsOCBAQCBzdHJ1Y3QgcGh5X29hdGMxNF9zcWlfY2FwYWJpbGl0eSB7XG4gICogICAgICAtIEJpdHMgWzMxOjI0XSBhcmUgcmVzZXJ2ZWQgZm9yIGRlZmluaW5nIGdlbmVyaWNcbiAgKiAgICAgICAgUEhZIGRyaXZlciBiZWhhdmlvci5cbiAgKiBAaXJxOiBJUlEgbnVtYmVyIG9mIHRoZSBQSFkmIzM5O3MgaW50ZXJydXB0ICgtMSBpZiBub25lKVxuJiM0MzsgKiBAaXJxX3NhdmVkOiBAaXJxIGFzIGl0IHdhcyBiZWZvcmUgcGh5X3Byb2JlKCkgcmVwbGFjZWQgaXQgd2l0aCBQSFlfUE9MTCxcbiYjNDM7ICogICAgICAgICAgICAgb3IgUEhZX1BPTEwgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvIHJlc3RvcmVcbiAgKiBAcGh5bGluazogUG9pbnRlciB0byBwaHlsaW5rIGluc3RhbmNlIGZvciB0aGlzIFBIWVxuICAqIEBzZnBfYnVzX2F0dGFjaGVkOiBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgU0ZQIGJ1cyBoYXMgYmVlbiBhdHRhY2hlZFxuICAqIEBzZnBfYnVzOiBTRlAgYnVzIGF0dGFjaGVkIHRvIHRoaXMgUEhZJiMzOTtzIGZpYmVyIHBvcnRcbkBAIC03NjEsNiAmIzQzOzc2Myw3IEBAIHN0cnVjdCBwaHlfZGV2aWNlIHtcbiBcdCAqIC0xIG1lYW5zIG5vIGludGVycnVwdFxuIFx0ICovXG4gXHRpbnQgaXJxO1xuJiM0MztcdGludCBpcnFfc2F2ZWQ7XG4gXG4gXHQvKiBwcml2YXRlIGRhdGEgcG9pbnRlciAqL1xuIFx0LyogRm9yIHVzZSBieSBQSFlzIHRvIG1haW50YWluIGV4dHJhIHN0YXRlICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BIWUxJTksmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfYXR0YWNoX2RpcmVjdCYjMzQ7LAogICAgJiMzNDtwaHlfcHJvYmUmIzM0OywKICAgICYjMzQ7cGh5X3JlbW92ZSYjMzQ7LAogICAgJiMzNDtwaHlfZGV2aWNlX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2JyaW5ndXBfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZGlzY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19jb25uZWN0X3BoeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJUlEgcHJlc2VydmF0aW9uIGFuZCByZXN0b3JhdGlvbiBsb2dpYyBhY3Jvc3MgUEhZIGRldmljZSBwcm9iZSwgYXR0YWNoLCBkZXRhY2gsIGFuZCByZW1vdmUgbGlmZWN5Y2xlIHBhdGhzIGluIHBoeWxpYiAoZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyksIGFzIHdlbGwgYXMgcGh5bGluayBjb25uZWN0aW9uIGVycm9yIHRlYXJkb3duIChkcml2ZXJzL25ldC9waHkvcGh5bGluay5jKS4gVGhlc2Ugc3Vic3lzdGVtcyBhcmUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsaXplZCBuZXR3b3JraW5nIGRyaXZlcnMgYW5kIFVTQiBFdGhlcm5ldCBkZXZpY2UgZW11bGF0aW9uIChlLmcuIGFzaXgsIGxhbjc4eHgsIHNtc2M5NXh4KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gZGV0ZWN0IHJlZ3Jlc3Npb25zLCBzdGF0ZSBpbmNvbnNpc3RlbmNpZXMsIGFuZCB0ZWFyZG93bi9lcnJvci1oYW5kbGluZyBidWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTgyY2I5NTBmYjIzMjBmMGYwNjNlYmIxMTc0ZjBhYTY2YWZjMDk0ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDcgMDE6NDY6MDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwppbmRleCA5NGIyZTg1ZTAwYTM3Li5iYTExNzE0NzcyMWFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKQEAgLTc3MCw2ICYjNDM7NzcwLDcgQEAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCB1MzIgcGh5X2lkLAogCW1kaW9kZXYtJmd0O2RldmljZV9yZW1vdmUgPSBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlOwogCW1kaW9kZXYtJmd0O3Jlc2V0X3N0YXRlID0gLTE7CiAKJiM0MzsJZGV2LSZndDtpcnFfc2F2ZWQgPSBQSFlfUE9MTDsKIAlkZXYtJmd0O3NwZWVkID0gU1BFRURfVU5LTk9XTjsKIAlkZXYtJmd0O2R1cGxleCA9IERVUExFWF9VTktOT1dOOwogCWRldi0mZ3Q7cGF1c2UgPSBmYWxzZTsKQEAgLTE3MzQsNiAmIzQzOzE3MzUsMTkgQEAgc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydikKIAlyZXR1cm4gcGh5ZHJ2LSZndDtjb25maWdfaW50ciAmYW1wOyZhbXA7IHBoeWRydi0mZ3Q7aGFuZGxlX2ludGVycnVwdDsKIH0KIAomIzQzOy8qIEdpdmUgYmFjayB3aGF0IHBoeV9wcm9iZSgpIHRvb2ssIGJ1dCBub3Qgd2hpbGUgcGh5X2xpbmtfY2hhbmdlIG1hcmtzIGEKJiM0MzsgKiBjb25zdW1lcjogaXQgc2tpcHBlZCBwaHlfcmVxdWVzdF9pbnRlcnJ1cHQoKSBvbiB0aGUgdmFsdWUgaXQgc2F3LCBzbwomIzQzOyAqIHBoeV9kaXNjb25uZWN0KCkgd291bGQgZnJlZSBhbiBpbnRlcnJ1cHQgbm9ib2R5IHJlcXVlc3RlZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9wcm9iZV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CWlmIChwaHlkZXYtJmd0O3BoeV9saW5rX2NoYW5nZSB8fCBwaHlkZXYtJmd0O2lycV9zYXZlZCA9PSBQSFlfUE9MTCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJcGh5ZGV2LSZndDtpcnEgPSBwaHlkZXYtJmd0O2lycV9zYXZlZDsKJiM0MzsJcGh5ZGV2LSZndDtpcnFfc2F2ZWQgPSBQSFlfUE9MTDsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXIKICAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaApAQCAtMTg5Niw2ICYjNDM7MTkxMCw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCiBlcnJvcl9tb2R1bGVfcHV0OgogCW1vZHVsZV9wdXQoZC0mZ3Q7ZHJpdmVyLSZndDtvd25lcik7CiYjNDM7CXBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpOwogCXBoeWRldi0mZ3Q7aXNfZ2VucGh5X2RyaXZlbiA9IDA7CiAJZC0mZ3Q7ZHJpdmVyID0gTlVMTDsKIGVycm9yX3B1dF9kZXZpY2U6CkBAIC0zNjk0LDggJiM0MzszNzA5LDEwIEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAkvKiBEaXNhYmxlIHRoZSBpbnRlcnJ1cHQgaWYgdGhlIFBIWSBkb2VzbiYjMzk7dCBzdXBwb3J0IGl0CiAJICogYnV0IHRoZSBpbnRlcnJ1cHQgaXMgc3RpbGwgYSB2YWxpZCBvbmUKIAkgKi8KLQlpZiAoIXBoeV9kcnZfc3VwcG9ydHNfaXJxKHBoeWRydikgJmFtcDsmYW1wOyBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeWRldikpCiYjNDM7CWlmICghcGh5X2Rydl9zdXBwb3J0c19pcnEocGh5ZHJ2KSAmYW1wOyZhbXA7IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkgewomIzQzOwkJcGh5ZGV2LSZndDtpcnFfc2F2ZWQgPSBwaHlkZXYtJmd0O2lycTsKIAkJcGh5ZGV2LSZndDtpcnEgPSBQSFlfUE9MTDsKJiM0MzsJfQogCiAJaWYgKHBoeWRydi0mZ3Q7ZmxhZ3MgJmFtcDsgUEhZX0lTX0lOVEVSTkFMKQogCQlwaHlkZXYtJmd0O2lzX2ludGVybmFsID0gdHJ1ZTsKQEAgLTM4MjAsNiAmIzQzOzM4MzcsOCBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJaWYgKCFwaHlkZXYtJmd0O2lzX29uX3NmcF9tb2R1bGUpCiAJCXBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpOwogCiYjNDM7CXBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpOwomIzQzOwogCS8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovCiAJcGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpOwogCkBAIC0zODQ4LDYgJiM0MzszODY3LDggQEAgc3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlpZiAocGh5ZGV2LSZndDtkcnYgJmFtcDsmYW1wOyBwaHlkZXYtJmd0O2Rydi0mZ3Q7cmVtb3ZlKQogCQlwaHlkZXYtJmd0O2Rydi0mZ3Q7cmVtb3ZlKHBoeWRldik7CiAKJiM0MzsJcGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7CiYjNDM7CiAJLyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi8KIAlwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCmluZGV4IDNlYzNiYjQzOTEwOTUuLjZhOTJmYWM1OGYyNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtMjA4Myw2ICYjNDM7MjA4MywxOCBAQCBzdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSwKIAlyZXR1cm4gcGh5bGlua192YWxpZGF0ZShwbCwgc3VwcG9ydGVkLCBzdGF0ZSk7CiB9CiAKJiM0MzsvKiBEaXNhc3NvY2lhdGUgQHBoeSBmcm9tIEBwbC4gQ2FsbGVyIG11c3QgaG9sZCBwbC0mZ3Q7cGh5ZGV2X211dGV4LiAqLwomIzQzO3N0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSkKJiM0Mzt7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtwaHktJmd0O2xvY2spOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsJcGwtJmd0O3BoeWRldiA9IE5VTEw7CiYjNDM7CXBsLSZndDtwaHlfZW5hYmxlX3R4X2xwaSA9IGZhbHNlOwomIzQzOwlwbC0mZ3Q7bWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtzdGF0ZV9tdXRleCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSwKIAkJCSAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKQogewpAQCAtMjE5Nyw2ICYjNDM7MjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogCWlmIChyZXQgPT0gMCAmYW1wOyZhbXA7IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSkKIAkJcGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7CiAKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwomIzQzOwkJcGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKJiM0MzsJfQomIzQzOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTIzNDcsMTUgJiM0MzsyMzY1LDggQEAgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCkKIAogCW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKIAlwaHkgPSBwbC0mZ3Q7cGh5ZGV2OwotCWlmIChwaHkpIHsKLQkJbXV0ZXhfbG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7Ci0JCW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwotCQlwbC0mZ3Q7cGh5ZGV2ID0gTlVMTDsKLQkJcGwtJmd0O3BoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7Ci0JCXBsLSZndDttYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKLQl9CiYjNDM7CWlmIChwaHkpCiYjNDM7CQlwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTsKIAltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKIAogCWlmIChwaHkpIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oCmluZGV4IDVmOGQ2NTg2OGUwZmYuLmQ0OTI0MTc1NzJhMGYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9waHkuaApAQCAtNTkxLDYgJiM0Mzs1OTEsOCBAQCBzdHJ1Y3QgcGh5X29hdGMxNF9zcWlfY2FwYWJpbGl0eSB7CiAgKiAgICAgIC0gQml0cyBbMzE6MjRdIGFyZSByZXNlcnZlZCBmb3IgZGVmaW5pbmcgZ2VuZXJpYwogICogICAgICAgIFBIWSBkcml2ZXIgYmVoYXZpb3IuCiAgKiBAaXJxOiBJUlEgbnVtYmVyIG9mIHRoZSBQSFkmIzM5O3MgaW50ZXJydXB0ICgtMSBpZiBub25lKQomIzQzOyAqIEBpcnFfc2F2ZWQ6IEBpcnEgYXMgaXQgd2FzIGJlZm9yZSBwaHlfcHJvYmUoKSByZXBsYWNlZCBpdCB3aXRoIFBIWV9QT0xMLAomIzQzOyAqICAgICAgICAgICAgIG9yIFBIWV9QT0xMIHdoZW4gdGhlcmUgaXMgbm90aGluZyB0byByZXN0b3JlCiAgKiBAcGh5bGluazogUG9pbnRlciB0byBwaHlsaW5rIGluc3RhbmNlIGZvciB0aGlzIFBIWQogICogQHNmcF9idXNfYXR0YWNoZWQ6IEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBTRlAgYnVzIGhhcyBiZWVuIGF0dGFjaGVkCiAgKiBAc2ZwX2J1czogU0ZQIGJ1cyBhdHRhY2hlZCB0byB0aGlzIFBIWSYjMzk7cyBmaWJlciBwb3J0CkBAIC03NjEsNiAmIzQzOzc2Myw3IEBAIHN0cnVjdCBwaHlfZGV2aWNlIHsKIAkgKiAtMSBtZWFucyBubyBpbnRlcnJ1cHQKIAkgKi8KIAlpbnQgaXJxOwomIzQzOwlpbnQgaXJxX3NhdmVkOwogCiAJLyogcHJpdmF0ZSBkYXRhIHBvaW50ZXIgKi8KIAkvKiBGb3IgdXNlIGJ5IFBIWXMgdG8gbWFpbnRhaW4gZXh0cmEgc3RhdGUgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYzNwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDUzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBLZXJuZWwgUGF0Y2ggU2VyaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcyBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGl0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGJlaW5nIGNoYW5nZWQgaGVyZS4gVGhlIGluc3RydWN0aW9ucyBhcmUgdG8gZXZhbHVhdGUgdGhpcyBwYXRjaCwgc28gbGV0JiMzOTtzIGdldCBkb3duIHRvIGl0LgoKVGhlIGZpbGVzIGltcGFjdGVkIGFyZSBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AsIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCwgYW5kIGBpbmNsdWRlL2xpbnV4L3BoeS5oYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGFib3V0IHRoZSBQSFkgbGF5ZXIsIHdoaWNoIG1lYW5zIHBoeXNpY2FsIGxheWVyIHRyYW5zY2VpdmVycyBhbmQgdGhlaXIga2VybmVsIGludGVyYWN0aW9uLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gRmluZSwgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGUgY2hhbmdlcyBsYW5kLgoKTG9va2luZyBhdCBgcGh5X2RldmljZS5jYCwgSSBzZWUgYSBmb2N1cyBvbiBJUlEgaGFuZGxpbmcgYW5kIGVycm9yIHBhdGhzIHdpdGhpbiB0aGUgUEhZIGRldmljZSBjcmVhdGlvbiwgcHJvYmluZywgYW5kIHJlbW92YWwgcHJvY2Vzc2VzLiBJdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGNoYW5nZXMgaW52b2x2ZSBob3cgSVJRIGNvbmZpZ3VyYXRpb25zIGFyZSBzYXZlZCwgcmVzdG9yZWQsIGFuZCBtYW5hZ2VkLCBwYXJ0aWN1bGFybHkgd2hlbiBhIFBIWSBpcyBiZWluZyBpbml0aWFsaXplZCBvciBkZS1pbml0aWFsaXplZCBhbmQgZW5jb3VudGVyaW5nIGlzc3Vlcy4gU3BlY2lmaWNhbGx5OgoKKiAgIEluIGBwaHlfZGV2aWNlX2NyZWF0ZWAsIGBkZXYtJmd0O2lycV9zYXZlZCA9IFBIWV9QT0xMO2AgaXMgc2V0LiBPa2F5LCB0aGF0JiMzOTtzIGEgYmFzZWxpbmUuCiogICBUaGUgYHBoeV9yZXN0b3JlX3Byb2JlX2lycWAgZnVuY3Rpb24gaXMgaW50ZXJlc3RpbmcuIEl0JiMzOTtzIHNlbGVjdGl2ZWx5IHJlc3RvcmluZyBhIHByZXZpb3VzbHkgc2F2ZWQgSVJRIHZhbHVlLCBhbmQgdGhlIGxvZ2ljIGhlcmUgaXMgY3J1Y2lhbDogaXQgb25seSBkb2VzIHRoaXMgaWYgZWl0aGVyIHRoZSBQSFkgbGluayBzdGF0ZSBjaGFuZ2VkLCBvciBpZiBpdCBoYWQgYmVlbiBzZXQgdG8gcG9sbGluZy4KKiAgIEkgc2VlIGBwaHlfcmVzdG9yZV9wcm9iZV9pcnFgIGlzIGNhbGxlZCBvbiB0aGUgZXJyb3IgcGF0aCBvZiBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X3Byb2JlYCwgYW5kIGBwaHlfcmVtb3ZlYC4gVGhpcyBjbGVhcmx5IHN1Z2dlc3RzIHRoYXQgaXQmIzM5O3MgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoaW5ncyBhcmUgY2xlYW5lZCB1cCBwcm9wZXJseSBpbiBjYXNlcyB3aGVyZSBQSFkgYXR0YWNobWVudCBvciBkZXRhY2htZW50IGZhaWxzLiBUaGUgaW1wb3J0YW50IHRoaW5nIGhlcmUgaXMgdG8gbWFrZSBzdXJlIGl0IGRvZXNuJiMzOTt0IGNhdXNlIHByb2JsZW1zIGJ5IHJlc2V0dGluZyBzb21ldGhpbmcsIG9yIGxlYXZpbmcgc29tZXRoaW5nIHVuc2V0IHRoYXQgKnNob3VsZCogYmUgc2V0LgoKTW92aW5nIHRvIGBwaHlsaW5rLmNgLCB0aGUgcGF0Y2ggc2VlbXMgdG8gY2VudGVyIGFyb3VuZCBhIGhlbHBlciBmdW5jdGlvbiwgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YC4gSXQgbG9va3MgbGlrZSBpdCBpcyBzaW1wbGlmeWluZyB0aGUgY2xlYXJpbmcgb2YgdGhlIFBIWSBkZXZpY2Ugd2l0aGluIHRoZSBQaHlsaW5rIGNvZGUuIFNvLCB0aGF0JiMzOTtzIHByb2JhYmx5IGFib3V0IGZyZWVpbmcgcmVzb3VyY2VzIGFuZCBjbGVhbmluZyB1cCByZWZlcmVuY2VzIHdoZW4gYSBQSFkgaXMgZGlzY29ubmVjdGVkIG9yIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgYnJpbmdpbmcgYSBQSFkgdXAuIEkmIzM5O20gc2VlaW5nIGl0IGluIHRoZSBlcnJvciBwYXRocyBvZiBicmluZ3VwIGFuZCBkaXNjb25uZWN0IGZ1bmN0aW9ucy4gVGhpcyBzdWdnZXN0cyBhbiBlZmZvcnQgdG8gc3RyZWFtbGluZSBQSFkgZGV2aWNlIG1hbmFnZW1lbnQgaW4gcGh5bGluayBpbiByZXNwb25zZSB0byBmYWlsdXJlcyBhbmQgZGV2aWNlIHJlbW92YWwuCgpOb3csIGFzIGFuIGV4cGVydCwgSSYjMzk7bSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgaGVyZS4gRG9lcyB0aGlzIElSUSBoYW5kbGluZyBjaGFuZ2UgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucz8gQXJlIHRoZXJlIGFueSByYWNlIGNvbmRpdGlvbnMgdGhhdCBtaWdodCBhcHBlYXIgaGVyZT8gRG9lcyBpdCBoYW5kbGUgY29ybmVyIGNhc2VzIGNvcnJlY3RseT8gTW9yZSBpbXBvcnRhbnRseSwgaG93IGRvZXMgdGhpcyBhZmZlY3Qgb3VyIGFiaWxpdHkgdG8gcmVwcm9kdWNlIGFuZCBkZWJ1ZyBpc3N1ZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzPwoKVGhlcmVmb3JlLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZXNlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHBoeWxpYiwgcGh5bGluaywgTURJTywgYW5kIFBIWSBkZXZpY2VzIHBsYXkgb3V0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIEdDRSwgYW5kIGVzcGVjaWFsbHkgc3l6a2FsbGVyLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHN5emthbGxlciBvciBhIHVzZXIgc3BhY2UgcHJvY2VzcyBjYW4gZGlyZWN0bHkgaW50ZXJhY3Qgd2l0aCB0aGVzZSBQSFkgY29tcG9uZW50cyBvciB0aGUgTURJTyBidXMgdG8gdHJpZ2dlciB0aGlzIGNvZGUgYW5kIHZlcmlmeSBpdHMgY29ycmVjdG5lc3MuIERvZXMgdGhpcyB0b3VjaCBhbnkgb2YgdGhlIHJlbGV2YW50IEtjb25maWdzPyBJIG5lZWQgdG8gbG9vayBhdCBkcml2ZXJzL25ldC9waHkvS2NvbmZpZyB0byBlbnN1cmUgbm90aGluZyByZWxldmFudCBoYXMgYmVlbiBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX1BIWUxJQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT00PWxpYnBoeS15XHRcdFx0Oj0gcGh5Lm8gcGh5LWM0NS5vIHBoeS1jb3JlLm8gcGh5X2RldmljZS5vIFxcXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTgtXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTppZmRlZiBDT05GSUdfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTAtIyBidWlsdC1pbiB3aGVuZXZlciBQSFlMSUIgaXMgYnVpbHQtaW4gb3IgbW9kdWxlXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTE2PWxpYnBoeS0kKENPTkZJR19PUEVOX0FMTElBTkNFX0hFTFBFUlMpICYjNDM7PSBvcGVuX2FsbGlhbmNlX2hlbHBlcnMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE3LVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19QSFlMSUIpXHRcdCYjNDM7PSBtZGlvX2J1cy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTktb2JqLSQoQ09ORklHX1BIWUxJTkspXHRcdCYjNDM7PSBwaHlsaW5rLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbGlicGh5Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbWRpb19kZXZyZXMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTIyLW9iai0kKENPTkZJR19QSFlfUEFDS0FHRSlcdCYjNDM7PSBwaHlfcGFja2FnZS5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zNzAwPXN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4MjItXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzgyMzpcdGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXHUwMDI2XHUwMDI2ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4MjQtXHRcdGVyciA9IG9mX3BoeV9sZWRzKHBoeWRldik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zODQ4PXN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODUzLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozODU0Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcdTAwMjZcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4NTUtXHRcdHBoeV9sZWRzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvc3R1YnMuYy0zLSAqIFN0dWJzIGZvciBQSFkgbGlicmFyeSBmdW5jdGlvbmFsaXR5IGNhbGxlZCBieSB0aGUgY29yZSBuZXR3b3JrIHN0YWNrLlxuZHJpdmVycy9uZXQvcGh5L3N0dWJzLmM6NDogKiBUaGVzZSBhcmUgbmVjZXNzYXJ5IGJlY2F1c2UgQ09ORklHX1BIWUxJQiBjYW4gYmUgYSBtb2R1bGUsIGFuZCBidWlsdC1pblxuZHJpdmVycy9uZXQvcGh5L3N0dWJzLmMtNS0gKiBjb2RlIGNhbm5vdCBkaXJlY3RseSBjYWxsIHN5bWJvbHMgZXhwb3J0ZWQgYnkgbW9kdWxlcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTE5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBQaHlsaWIvUGh5bGluayBJbnRlZ3JhdGlvbiBpbiBTeXprYWxsZXIgYW5kIFZpcnR1YWwgRW52aXJvbm1lbnRzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gZmlndXJlIG91dCBob3cgYHBoeWxpYmAgb3IgYHBoeWxpbmtgIGZ1bmN0aW9uYWxpdGllcyBhcmUgYWNjZXNzZWQgYW5kIHBvdGVudGlhbGx5IHRlc3RlZCB3aXRoaW4gdGhlIFN5emthbGxlciBlbnZpcm9ubWVudCwgb3IgZXZlbiB3aXRoaW4gbW9yZSBzdGFuZGFyZCB2aXJ0dWFsIHNldHVwcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVudHJ5IHBvaW50cy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBleHBsb3JlIHdoZXRoZXIgdGhlcmUgYXJlIGFueSB2aXJ0dWFsIG9yIGVtdWxhdGVkIGRldmljZXMgdGhhdCBtYWtlIHVzZSBvZiB0aGVzZSBsaWJyYXJpZXMuIEFyZSB0aGVyZSB2aXJ0dWFsIGRyaXZlcnMsIHBlcmhhcHMgVVNCIGRyaXZlcnMgdGhhdCBpbnRlcmFjdCB3aXRoIGEgcGh5bGliIGFic3RyYWN0aW9uPyBXaGF0IGFib3V0IG5ldGxpbmsgaW50ZXJmYWNlcyB0aGF0IHdvdWxkIHJlcHJlc2VudCBhIFBIWSBjb25uZWN0aW9uLCBvciBkdW1teSBkZXZpY2VzIGRlc2lnbmVkIHRvIHRlc3QgUEhZIGludGVyYWN0aW9ucz8gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHN1Y2ggdGhpbmdzIGFyZSBvZnRlbiBwcmVzZW50IGluIHRoZXNlIHR5cGVzIG9mIGVudmlyb25tZW50cywgc28gaXQgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMsIEkmIzM5O20gZ29pbmcgdG8gbGV2ZXJhZ2UgbXkga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwgYW5kIHVzZSBzb21lIHRhcmdldGVkIGdyZXBzLiBJIG5lZWQgdG8gc2VhcmNoIHRoZSBjb2RlIGZvciBrZXkgZnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmVzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gUEhZIGluaXRpYWxpemF0aW9uIGFuZCBtYW5hZ2VtZW50LiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGluc3RhbmNlcyBvZiBgcGh5bGlua19jcmVhdGVgLCBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X2Nvbm5lY3RgLCBgbWRpb2J1c19yZWdpc3RlcmAsIGFuZCBgZml4ZWRfcGh5YC4gVGhlc2Ugc2hvdWxkIGFjdCBhcyBicmVhZGNydW1icywgbGVhZGluZyBtZSB0byB0aGUgc3BlY2lmaWMgZHJpdmVycyBvciBtb2R1bGVzIHRoYXQgbWlnaHQgYmUgdXNpbmcgcGh5bGliIG9yIHBoeWxpbmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7KHBoeWxpbmtfY3JlYXRlfHBoeV9jb25uZWN0fHBoeV9hdHRhY2hfZGlyZWN0fGZpeGVkX3BoeSkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTY1NyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjU2LVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2NTc6XHQvKiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IG9mX3BoeV9jb25uZWN0KCkgd2lsbCBub3Qgd29yayBieVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02NTgtXHQgKiByZW1vdmluZyB0aGUgJiMzOTtwaGFuZGxlJiMzOTsgYW5kICYjMzk7bGludXgscGhhbmRsZSYjMzk7IHByb3BlcnRpZXMgYW5kXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NDM4PXN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0MS1cdFx0aWYgKCFJU19FUlIocGh5ZGV2c1tpXSkpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDI6XHRcdFx0Zml4ZWRfcGh5X3VucmVnaXN0ZXIocGh5ZGV2c1tpXSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDMtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NDgyPXN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTEtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBOVU1fRklYRURfUEhZUzsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTI6XHRcdHBoeWRldnNbaV0gPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz05Njg9c3RhdGljIGJvb2wgbmV0Y19wb3J0X2lzX2VtZGlvX2NvbnN1bWVyKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODQtXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5ODU6LyogQ3VycmVudGx5LCBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgaXMgY2FsbGVkIGJ5IGRzYV91c2VyX2NyZWF0ZSgpLFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTg2LSAqIHNvIGlmIHRoZSBzd2l0Y2ggdXNlcyB0aGUgZXh0ZXJuYWwgTURJTyBjb250cm9sbGVyIChsaWtlIHRoZSBFTURJT1xuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTg3LSAqIGZ1bmN0aW9uKSB0byBtYW5hZ2UgdGhlIGV4dGVybmFsIFBIWXMuIFRoZSBNRElPIGJ1cyBtYXkgbm90IGJlXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5ODg6ICogY3JlYXRlZCB3aGVuIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSBpcyBjYWxsZWQsIHNvIGl0IHdpbGwgcmV0dXJuXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODktICogYW4gZXJyb3IgYW5kIGNhdXNlIHRoZSBzd2l0Y2ggZHJpdmVyIHRvIGZhaWwgdG8gcHJvYmUuXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5OTA6ICogVGhpcyB3b3JrYXJvdW5kIGNhbiBiZSByZW1vdmVkIHdoZW4gRFNBIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTkxLSAqIGNhbGxzIGFyZSBtb3ZlZCBmcm9tIHByb2JlKCkgdG8gbmRvX29wZW4oKS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz0zNjQ9c3RhdGljIGludCBheF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy0zNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzozNzc6XHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LCBwaHlfZGV2LCBheF9oYW5kbGVfbGlua19jaGFuZ2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy0zNzgtXHRcdFx0XHQgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM9MTU2OT1zdGF0aWMgaW50IGFkaW4xMTEwX3Byb2JlX25ldGRldnMoc3RydWN0IGFkaW4xMTEwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtMTYxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjE2MTM6XHRcdHBvcnRfcHJpdi1cdTAwM2VwaHlkZXYgPSBwaHlfY29ubmVjdChuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy0xNjE0LVx0XHRcdFx0XHRcdHBoeWRldl9uYW1lKHBvcnRfcHJpdi1cdTAwM2VwaHlkZXYpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jPTY1MD1zdGF0aWMgaW50IGFkaW4xMTQwX3BoeV9pbml0KHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTY2My1cdHByaXYtXHUwMDNlcGh5ZGV2LVx1MDAzZWlzX2ludGVybmFsID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjY2NDpcdHJldCA9IHBoeV9jb25uZWN0X2RpcmVjdChwcml2LVx1MDAzZW5ldGRldiwgcHJpdi1cdTAwM2VwaHlkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02NjUtXHRcdFx0XHQgXHUwMDI2YWRpbjExNDBfaGFuZGxlX2xpbmtfY2hhbmdlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM9MTI1Mz1zdGF0aWMgaW50IGdyZXRoX21kaW9fcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEyNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jOjEyNjg6XHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LCBwaHksIFx1MDAyNmdyZXRoX2xpbmtfY2hhbmdlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMjY5LVx0XHRcdFx0IGdyZXRoLVx1MDAzZWdiaXRfbWFjID8gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkgOiBQSFlfSU5URVJGQUNFX01PREVfTUlJKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYz0zMjczPXN0YXRpYyBpbnQgZXQxMzF4X21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTMyODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzozMjg0Olx0cGh5ZGV2ID0gcGh5X2Nvbm5lY3QobmV0ZGV2LCBwaHlkZXZfbmFtZShwaHlkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtMzI4NS1cdFx0XHQgICAgIFx1MDAyNmV0MTMxeF9hZGp1c3RfbGluaywgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYz0xNjc9c3RhdGljIGludCBlbWFjX21kaW9fcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTE3NC1cdC8qIGF0dGFjaCB0aGUgbWFjIHRvIHRoZSBwaHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmM6MTc1Olx0cGh5ZGV2ID0gb2ZfcGh5X2Nvbm5lY3QoZGItXHUwMDNlbmRldiwgZGItXHUwMDNlcGh5X25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTE3Ni1cdFx0XHRcdFx1MDAyNmVtYWNfaGFuZGxlX2xpbmtfY2hhbmdlLCAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz04NzY9c3RhdGljIGludCB0c2Vfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy05NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6OTUyOlx0cmV0ID0gcGh5bGlua19vZl9waHlfY29ubmVjdChwcml2LVx1MDAzZXBoeWxpbmssIHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGUsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTk1My1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTEyOD1zdGF0aWMgaW50IGFsdGVyYV90c2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxNDE2Olx0cHJpdi1cdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHJpdi1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE3LVx0XHRcdFx0ICAgICAgIG9mX2Z3bm9kZV9oYW5kbGUocHJpdi1cdTAwM2VkZXZpY2UtXHUwMDNlb2Zfbm9kZSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYz00NzI9c3RhdGljIGludCBhdTEwMDBfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy01MzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jOjUzOTpcdHBoeWRldiA9IHBoeV9jb25uZWN0KGRldiwgcGh5ZGV2X25hbWUocGh5ZGV2KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtNTQwLVx0XHRcdCAgICAgXHUwMDI2YXUxMDAwX2FkanVzdF9saW5rLCBQSFlfSU5URVJGQUNFX01PREVfTUlJKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jPTkzMT1zdGF0aWMgaW50IHhnYmVfcGh5X2ZpbmRfcGh5X2RldmljZShzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk4MzpcdHJldCA9IHBoeV9hdHRhY2hfZGlyZWN0KHBkYXRhLVx1MDAzZW5ldGRldiwgcGh5ZGV2LCBwaHlkZXYtXHUwMDNlZGV2X2ZsYWdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODQtXHRcdFx0XHRQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk4NjpcdFx0bmV0ZGV2X2VycihwZGF0YS1cdTAwM2VuZXRkZXYsIFwmIzM0O3BoeV9hdHRhY2hfZGlyZWN0IGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4Ny1cdFx0cGh5X2RldmljZV9yZW1vdmUocGh5ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTk4PWludCB4Z2VfbWRpb19jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMjgtXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjEyOTpcdHBoeWRldiA9IHBoeV9jb25uZWN0KG5kZXYsIHBoeWRldl9uYW1lKHBoeWRldiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEzMC1cdFx0XHQgICAgIFx1MDAyNnhnZV9hZGp1c3RfbGluayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTgxOT1zdGF0aWMgc3RydWN0IGFjcGlfZGV2aWNlICphY3BpX3BoeV9maW5kX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjgzNzppbnQgeGdlbmVfZW5ldF9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODM4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg0Ny1cdFx0XHRucCA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LVx1MDAzZW9mX25vZGUsIFwmIzM0O3BoeS1oYW5kbGVcJiMzNDssIGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo4NDg6XHRcdFx0cGh5X2RldiA9IG9mX3BoeV9jb25uZWN0KG5kZXYsIG5wLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04NDktXHRcdFx0XHRcdFx0IFx1MDAyNnhnZW5lX2VuZXRfYWRqdXN0X2xpbmssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04NjgtXHRcdGlmICghcGh5X2RldiB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo4Njk6XHRcdCAgICBwaHlfY29ubmVjdF9kaXJlY3QobmRldiwgcGh5X2RldiwgXHUwMDI2eGdlbmVfZW5ldF9hZGp1c3RfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODcwLVx0XHRcdFx0ICAgICAgIHBkYXRhLVx1MDAzZXBoeV9tb2RlKSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9OTM5PWludCB4Z2VuZV9lbmV0X21kaW9fY29uZmlnKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTY2Olx0cmV0ID0geGdlbmVfZW5ldF9waHlfY29ubmVjdChuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTY3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5oPTQyNj1ib29sIHhnZW5lX3JpbmdfbWdyX2luaXQoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuaDo0Mjc6aW50IHhnZW5lX2VuZXRfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuaC00Mjgtdm9pZCB4Z2VuZV9lbmV0X3BoeV9kaXNjb25uZWN0KHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5jPTE2NTE9c3RhdGljIHZvaWQgeGdlbmVfZW5ldF9jaGVja19waHlfaGFuZGxlKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmMtMTY2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uYzoxNjYxOlx0cmV0ID0geGdlbmVfZW5ldF9waHlfY29ubmVjdChwZGF0YS1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uYy0xNjYyLVx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jPTg1OD1pbnQgYXJjX2VtYWNfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGludCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTk4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYzo5ODk6XHRwaHlkZXYgPSBvZl9waHlfY29ubmVjdChuZGV2LCBwaHlfbm9kZSwgYXJjX2VtYWNfYWRqdXN0X2xpbmssIDAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmMtOTkwLVx0XHRcdFx0aW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYy05OTEtXHRpZiAoIXBoeWRldikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jOjk5MjpcdFx0ZGV2X2VycihkZXYsIFwmIzM0O29mX3BoeV9jb25uZWN0KCkgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYy05OTMtXHRcdGVyciA9IC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM9OTY2PXN0YXRpYyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDc2LVx0XHQgYXhfbG9jYWwtXHUwMDNlbWRpb2J1cy1cdTAwM2VpZCwgQVg4ODc5NkNfUEhZX0lEKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jOjEwNzc6XHRheF9sb2NhbC1cdTAwM2VwaHlkZXYgPSBwaHlfY29ubmVjdChheF9sb2NhbC1cdTAwM2VuZGV2LCBwaHlfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDc4LVx0XHRcdFx0ICAgICAgIGF4ODg3OTZjX2hhbmRsZV9saW5rX2NoYW5nZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTEwNzQ9c3RhdGljIGludCBhZzcxeHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgYWc3MXh4ICphZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjExMDk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2YWctXHUwMDNlcGh5bGlua19jb25maWcsIGFnLVx1MDAzZXBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTExMC1cdFx0XHRcdCBhZy1cdTAwM2VwaHlfaWZfbW9kZSwgXHUwMDI2YWc3MXh4X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz0xNDA0PXN0YXRpYyBpbnQgYWc3MXh4X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xNDA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxNDEwOlx0cmV0ID0gcGh5bGlua19vZl9waHlfY29ubmVjdChhZy1cdTAwM2VwaHlsaW5rLCBhZy1cdTAwM2VwZGV2LVx1MDAzZWRldi5vZl9ub2RlLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTQxMS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTQxMjpcdFx0bmV0aWZfZXJyKGFnLCBsaW5rLCBuZGV2LCBcJiMzNDtwaHlsaW5rX29mX3BoeV9jb25uZWN0IGZpbGVkIHdpdGggZXJyOiAlaVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTQxMy1cdFx0XHQgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jPTEwNzY9c3RhdGljIGludCBiY21hc3BfcGh5X2F0dGFjaChzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jLTEwODQtXHRwaHlfaWZhY2UgPSBiY21hc3BfcGh5X2lmYWNlX2Zvcl9jb25uZWN0KGludGYtXHUwMDNlcGh5X2ludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmM6MTA4NTpcdHBoeWRldiA9IG9mX3BoeV9jb25uZWN0KGludGYtXHUwMDNlbmRldiwgaW50Zi1cdTAwM2VwaHlfZG4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMtMTA4Ni1cdFx0XHRcdGJjbWFzcF9hZGpfbGluaywgcGh5X2ZsYWdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIyMzQ9c3RhdGljIGludCBiNDRfcmVnaXN0ZXJfcGh5X29uZShzdHJ1Y3QgYjQ0ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MjI3MzpcdFx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjc0LVx0XHRpZiAoIUlTX0VSUihwaHlkZXYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyODAtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjgxOlx0XHRlcnIgPSBwaHlfY29ubmVjdF9kaXJlY3QoYnAtXHUwMDNlZGV2LCBwaHlkZXYsIFx1MDAyNmI0NF9hZGp1c3RfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyODItXHRcdFx0XHRcdCBQSFlfSU5URVJGQUNFX01PREVfTUlJKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMzEzPXN0YXRpYyB2b2lkIGI0NF91bnJlZ2lzdGVyX3BoeV9vbmUoc3RydWN0IGI0NCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjMyMi1cdGlmIChwaHlfaXNfcHNldWRvX2ZpeGVkX2xpbmsocGh5ZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIzMjM6XHRcdGZpeGVkX3BoeV91bnJlZ2lzdGVyKHBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMzI0LVx0bWRpb2J1c191bnJlZ2lzdGVyKG1paV9idXMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTg5MD1zdGF0aWMgaW50IGJjbV9lbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy05MDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzo5MTA6XHRcdHBoeWRldiA9IHBoeV9jb25uZWN0KGRldiwgcGh5X2lkLCBiY21fZW5ldF9hZGp1c3RfcGh5X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy05MTEtXHRcdFx0XHQgICAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYz0xOTI4PXN0YXRpYyBpbnQgYmNtX3N5c3BvcnRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0xOTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jOjE5Njc6XHRwaHlkZXYgPSBvZl9waHlfY29ubmVjdChkZXYsIHByaXYtXHUwMDNlcGh5X2RuLCBiY21fc3lzcG9ydF9hZGpfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0xOTY4LVx0XHRcdFx0MCwgcHJpdi1cdTAwM2VwaHlfaW50ZXJmYWNlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmM9Nzk9c3RhdGljIHZvaWQgYmNtYV9iZ21hY19jbW5fbWFza3NldDMyKHN0cnVjdCBiZ21hYyAqYmdtYWMsIHUxNiBvZmZzZXQsIHUzMiBtYXNrLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy04NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYzo4NTpzdGF0aWMgaW50IGJjbWFfcGh5X2Nvbm5lY3Qoc3RydWN0IGJnbWFjICpiZ21hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy04Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jLTk5LVx0XHRcdCBiZ21hYy1cdTAwM2VwaHlhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYzoxMDA6XHRcdHBoeV9kZXYgPSBwaHlfY29ubmVjdChiZ21hYy1cdTAwM2VuZXRfZGV2LCBidXNfaWQsIGJnbWFjX2FkanVzdF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jLTEwMS1cdFx0XHRcdCAgICAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy0xMTAtXHQvKiBBc3N1bWUgYSBmaXhlZCBsaW5rIHRvIHRoZSBzd2l0Y2ggcG9ydCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jOjExMTpcdHJldHVybiBiZ21hY19waHlfY29ubmVjdF9kaXJlY3QoYmdtYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jLTExMi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jPTEyND1zdGF0aWMgaW50IGJnbWFjX3Byb2JlKHN0cnVjdCBiY21hX2RldmljZSAqY29yZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmMtMzExLVx0YmdtYWMtXHUwMDNlY21uX21hc2tzZXQzMiA9IGJjbWFfYmdtYWNfY21uX21hc2tzZXQzMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYzozMTI6XHRiZ21hYy1cdTAwM2VwaHlfY29ubmVjdCA9IGJjbWFfcGh5X2Nvbm5lY3Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmMtMzEzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmM9MTE4PXN0YXRpYyB2b2lkIGJnbWFjX25pY3BtX3NwZWVkX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2Rldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jLTE1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmM6MTUxOnN0YXRpYyBpbnQgcGxhdGZvcm1fcGh5X2Nvbm5lY3Qoc3RydWN0IGJnbWFjICpiZ21hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmMtMTUyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jPTE3MT1zdGF0aWMgaW50IGJnbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0yNDItXHRcdG9mX25vZGVfcHV0KHBoeV9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmM6MjQzOlx0XHRiZ21hYy1cdTAwM2VwaHlfY29ubmVjdCA9IHBsYXRmb3JtX3BoeV9jb25uZWN0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0yNDQtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYzoyNDU6XHRcdGJnbWFjLVx1MDAzZXBoeV9jb25uZWN0ID0gYmdtYWNfcGh5X2Nvbm5lY3RfZGlyZWN0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0yNDYtXHRcdGJnbWFjLVx1MDAzZWZlYXR1cmVfZmxhZ3MgfD0gQkdNQUNfRkVBVF9GT1JDRV9TUEVFRF8yNTAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM9MTQzNz1FWFBPUlRfU1lNQk9MX0dQTChiZ21hY19hZGp1c3RfbGluayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0MzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE0Mzk6aW50IGJnbWFjX3BoeV9jb25uZWN0X2RpcmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDQwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM6MTQ0MTpcdHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzIGZwaHlfc3RhdHVzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDQyLVx0XHQubGluayA9IDEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNDQ5Olx0cGh5X2RldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZmcGh5X3N0YXR1cywgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NTAtXHRpZiAoSVNfRVJSKHBoeV9kZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNDU1Olx0ZXJyID0gcGh5X2Nvbm5lY3RfZGlyZWN0KGJnbWFjLVx1MDAzZW5ldF9kZXYsIHBoeV9kZXYsIGJnbWFjX2FkanVzdF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDU2LVx0XHRcdFx0IFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ2My19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE0NjQ6RVhQT1JUX1NZTUJPTF9HUEwoYmdtYWNfcGh5X2Nvbm5lY3RfZGlyZWN0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ2NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jPTE0ODc9aW50IGJnbWFjX2VuZXRfcHJvYmUoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE1MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE1MzM6XHRlcnIgPSBiZ21hY19waHlfY29ubmVjdChiZ21hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE1MzQtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaD00Mzk9c3RydWN0IGJnbWFjIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oLTQ5NS1cdFx0XHQgICAgICB1MzIgc2V0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmg6NDk2Olx0aW50ICgqcGh5X2Nvbm5lY3QpKHN0cnVjdCBiZ21hYyAqYmdtYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaC00OTctfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oPTUwMj12b2lkIGJnbWFjX2FkanVzdF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmg6NTAzOmludCBiZ21hY19waHlfY29ubmVjdF9kaXJlY3Qoc3RydWN0IGJnbWFjICpiZ21hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oLTUwNC1pbnQgYmdtYWNfZW5ldF9zdXNwZW5kKHN0cnVjdCBiZ21hYyAqYmdtYWMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmg9NTgzPXN0YXRpYyBpbmxpbmUgdm9pZCBiZ21hY191bWFjX21hc2tzZXQoc3RydWN0IGJnbWFjICpiZ21hYywgdTE2IG9mZnNldCwgdTMyIG1hc2ssIHUzMiBzZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaC01ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oOjU4ODpzdGF0aWMgaW5saW5lIGludCBiZ21hY19waHlfY29ubmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaC01ODkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaDo1OTA6XHRyZXR1cm4gYmdtYWMtXHUwMDNlcGh5X2Nvbm5lY3QoYmdtYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaC01OTEtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTk3PXZvaWQgYmNtZ2VuZXRfbWlpX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6MTE3OnN0YXRpYyBpbnQgYmNtZ2VuZXRfZml4ZWRfcGh5X2xpbmtfdXBkYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzoxMTg6XHRcdFx0XHRcdCAgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTExOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MTg2PXN0YXRpYyB2b2lkIGJjbWdlbmV0X21vY2FfcGh5X3NldHVwKHN0cnVjdCBiY21nZW5ldF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTE4OC1cdGlmIChiY21nZW5ldF9oYXNfbW9jYV9saW5rX2RldChwcml2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjE4OTpcdFx0Zml4ZWRfcGh5X3NldF9saW5rX3VwZGF0ZShwcml2LVx1MDAzZWRldi1cdTAwM2VwaHlkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzoxOTA6XHRcdFx0XHRcdCAgYmNtZ2VuZXRfZml4ZWRfcGh5X2xpbmtfdXBkYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTE5MS19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MzAxPWludCBiY21nZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0zNTAtXHRpZiAoZG4pIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjM1MTpcdFx0cGh5ZGV2ID0gb2ZfcGh5X2Nvbm5lY3QoZGV2LCBwcml2LVx1MDAzZXBoeV9kbiwgYmNtZ2VuZXRfbWlpX3NldHVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMzUyLVx0XHRcdFx0XHRwaHlfZmxhZ3MsIHBoeV9pZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMzgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6MzgxOlx0XHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LCBwaHlkZXYsIGJjbWdlbmV0X21paV9zZXR1cCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTM4Mi1cdFx0XHRcdFx0IHBoeV9pZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jPTIzMjQ9c3RhdGljIGludCBzYm1hY19taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjMzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYzoyMzM1Olx0cGh5X2RldiA9IHBoeV9jb25uZWN0KGRldiwgZGV2X25hbWUoXHUwMDI2cGh5X2Rldi1cdTAwM2VtZGlvLmRldiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjMzNi1cdFx0XHQgICAgICBcdTAwMjZzYm1hY19taWlfcG9sbCwgUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTIwODQ9c3RhdGljIGludCB0ZzNfcGh5X2luaXQoc3RydWN0IHRnMyAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjA5Ni1cdC8qIEF0dGFjaCB0aGUgTUFDIHRvIHRoZSBQSFkuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoyMDk3Olx0cGh5ZGV2ID0gcGh5X2Nvbm5lY3QodHAtXHUwMDNlZGV2LCBwaHlkZXZfbmFtZShwaHlkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjA5OC1cdFx0XHQgICAgIHRnM19hZGp1c3RfbGluaywgcGh5ZGV2LVx1MDAzZWludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz05ODI9c3RhdGljIGludCBtYWNiX3BoeWxpbmtfY29ubmVjdChzdHJ1Y3QgbWFjYiAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05ODktXHRpZiAoZG4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk5MDpcdFx0cmV0ID0gcGh5bGlua19vZl9waHlfY29ubmVjdChicC1cdTAwM2VwaHlsaW5rLCBkbiwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk5MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcdGJwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZicC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVx0XHRcdFx0ICAgICBicC1cdTAwM2VwaHlfaW50ZXJmYWNlLCBcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmM9OTQ1PXN0YXRpYyBpbnQgb2N0ZW9uX21nbXRfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmMtOTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jOjk1NjpcdHBoeWRldiA9IG9mX3BoeV9jb25uZWN0KG5ldGRldiwgcC1cdTAwM2VwaHlfbnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmMtOTU3LVx0XHRcdFx0b2N0ZW9uX21nbXRfYWRqdXN0X2xpbmssIDAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvdGh1bmRlcl9iZ3guYz0xMDU1PXN0YXRpYyBpbnQgYmd4X2xtYWNfZW5hYmxlKHN0cnVjdCBiZ3ggKmJneCwgdTggbG1hY2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL3RodW5kZXJfYmd4LmMtMTExOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL3RodW5kZXJfYmd4LmM6MTEyMDpcdFx0aWYgKHBoeV9jb25uZWN0X2RpcmVjdChsbWFjLVx1MDAzZW5ldGRldiwgbG1hYy1cdTAwM2VwaHlkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci90aHVuZGVyX2JneC5jLTExMjEtXHRcdFx0XHQgICAgICAgYmd4X2xtYWNfaGFuZGxlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jPTExMzI9c3RhdGljIHZvaWQgZG05MDUxX2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExNTEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jOjExNTI6c3RhdGljIGludCBkbTkwNTFfcGh5X2Nvbm5lY3Qoc3RydWN0IGJvYXJkX2luZm8gKmRiKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMTUzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jOjExNTk6XHRkYi1cdTAwM2VwaHlkZXYgPSBwaHlfY29ubmVjdChkYi1cdTAwM2VuZGV2LCBwaHlfaWQsIGRtOTA1MV9oYW5kbGVfbGlua19jaGFuZ2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExNjAtXHRcdFx0XHQgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz0xMTY0PXN0YXRpYyBpbnQgZG05MDUxX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMjA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzoxMjA5Olx0cmV0ID0gZG05MDUxX3BoeV9jb25uZWN0KGRiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTIxMC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTI0MT1zdGF0aWMgaW50IHRzbmVwX3BoeV9vcGVuKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjQ3Olx0cmV0dmFsID0gcGh5X2Nvbm5lY3RfZGlyZWN0KGFkYXB0ZXItXHUwMDNlbmV0ZGV2LCBhZGFwdGVyLVx1MDAzZXBoeWRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDgtXHRcdFx0XHQgICAgdHNuZXBfcGh5X2xpbmtfc3RhdHVzX2NoYW5nZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTY5OT1zdGF0aWMgaW50IGV0aG9jX21kaW9fcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTcxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6NzE2Olx0ZXJyID0gcGh5X2Nvbm5lY3RfZGlyZWN0KGRldiwgcGh5LCBldGhvY19tZGlvX3BvbGwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTcxNy1cdFx0XHRcdCBQSFlfSU5URVJGQUNFX01PREVfR01JSSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz00Mz1zdHJ1Y3QgZnRnbWFjMTAwX21hdGNoX2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtNjYtLyogRm9yIE5DLVNJIHRvIHJlZ2lzdGVyIGEgZml4ZWQtbGluayBwaHkgZGV2aWNlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyBuY3NpX3BoeV9zdGF0dXMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTY4LVx0LmxpbmsgPSAxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTQ5Nz1zdGF0aWMgaW50IGZ0Z21hYzEwMF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE1NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE1NDI6XHRwaHlkZXYgPSBwaHlfY29ubmVjdChuZXRkZXYsIHBoeWRldl9uYW1lKHBoeWRldiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE1NDMtXHRcdFx0ICAgICBcdTAwMjZmdGdtYWMxMDBfYWRqdXN0X2xpbmssIHBoeV9pbnRmKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE3ODA9c3RhdGljIHZvaWQgZnRnbWFjMTAwX3BoeV9kaXNjb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzkyLVx0aWYgKHByaXYtXHUwMDNldXNlX25jc2kpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE3OTM6XHRcdGZpeGVkX3BoeV91bnJlZ2lzdGVyKHBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3OTQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTg0OD1zdGF0aWMgaW50IGZ0Z21hYzEwMF9wcm9iZV9uY3NpKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxODY3Olx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNm5jc2lfcGh5X3N0YXR1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODY4LVx0aWYgKElTX0VSUihwaHlkZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODcyLVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxODczOlx0ZXJyID0gcGh5X2Nvbm5lY3RfZGlyZWN0KG5ldGRldiwgcGh5ZGV2LCBmdGdtYWMxMDBfYWRqdXN0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4NzQtXHRcdFx0XHQgUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg4MS1lcnJfcmVnaXN0ZXJfcGh5OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxODgyOlx0Zml4ZWRfcGh5X3VucmVnaXN0ZXIocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg4My1lcnJfcmVnaXN0ZXJfbmRldjpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXHRtYWNfZGV2LVx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcdG1hY19kZXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hY19kZXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cdFx0XHRcdFx0ICBkZXZfZndub2RlKG1hY19kZXYtXHUwMDNlZGV2KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTI5NDE9c3RhdGljIGludCBkcGFhX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yOTUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYzoyOTUxOlx0ZXJyID0gcGh5bGlua19vZl9waHlfY29ubmVjdChtYWNfZGV2LVx1MDAzZXBoeWxpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI5NTItXHRcdFx0XHQgICAgIG1hY19kZXYtXHUwMDNlZGV2LVx1MDAzZW9mX25vZGUsIDApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYz01NjA9aW50IGRwYWEyX21hY19jb25uZWN0KHN0cnVjdCBkcGFhMl9tYWMgKm1hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjYyNTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZtYWMtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI2LVx0XHRcdFx0IGRwbWFjX25vZGUsIG1hYy1cdTAwM2VpZl9tb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MzQtXHRydG5sX2xvY2soKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MzU6XHRlcnIgPSBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdChtYWMtXHUwMDNlcGh5bGluaywgZHBtYWNfbm9kZSwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjM2LVx0cnRubF91bmxvY2soKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MzctXHRpZiAoZXJyKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NjM4Olx0XHRuZXRkZXZfZXJyKG5ldF9kZXYsIFwmIzM0O3BoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgPSAlZFxcblwmIzM0OywgZXJyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MzktXHRcdGdvdG8gZXJyX3BoeWxpbmtfZGVzdHJveTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYz0yOTM1PXN0YXRpYyBpbnQgZW5ldGNfcGh5bGlua19jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jLTI5NDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYzoyOTQ3Olx0ZXJyID0gcGh5bGlua19vZl9waHlfY29ubmVjdChwcml2LVx1MDAzZXBoeWxpbmssIHByaXYtXHUwMDNlZGV2LVx1MDAzZW9mX25vZGUsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmMtMjk0OC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYz0zMDEwPWludCBlbmV0Y19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jLTMwMjgtXHRpZiAoZXJyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmM6MzAyOTpcdFx0Z290byBlcnJfcGh5X2Nvbm5lY3Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYy0zMDMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jLTMwNTUtXHRcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkocHJpdi1cdTAwM2VwaHlsaW5rKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jOjMwNTY6ZXJyX3BoeV9jb25uZWN0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmMtMzA1Ny1cdGVuZXRjX2ZyZWVfaXJxcyhwcml2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTIzPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTQyOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTQzLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0NC1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTQ1Olx0XHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDYtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5NTA6ZXJyX3BoeWxpbmtfY3JlYXRlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1MS1cdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9Nzg1PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6ODY4Olx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg2OS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo4NzA6XHRcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODcxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg3OS1cdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjg4MDplcnJfcGh5bGlua19jcmVhdGU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04ODEtXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz00MTk9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDIxOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDIyLVx0XHRcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ2MS1cdHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBtYWNfY2FwcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzo0NjI6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cGYtXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDYzLVx0XHRcdFx0IHBmLVx1MDAzZWlmX21vZGUsIG9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ3Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDczOkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmgtMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9Mjk4MT1zdGF0aWMgaW50IGZlY19lbmV0X21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0yOTg3LVx0aWYgKGZlcC1cdTAwM2VwaHlfbm9kZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6Mjk4ODpcdFx0cGh5X2RldiA9IG9mX3BoeV9jb25uZWN0KG5kZXYsIGZlcC1cdTAwM2VwaHlfbm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTI5ODktXHRcdFx0XHRcdCBcdTAwMjZmZWNfZW5ldF9hZGp1c3RfbGluaywgMCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMDAyLVx0XHRcdG5ldGRldl9pbmZvKG5kZXYsIFwmIzM0O25vIFBIWSwgYXNzdW1pbmcgZGlyZWN0IGNvbm5lY3Rpb24gdG8gc3dpdGNoXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMDM6XHRcdFx0cGh5X2RldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwNC1cdFx0XHRpZiAoSVNfRVJSKHBoeV9kZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMTA6XHRcdHJldCA9IHBoeV9jb25uZWN0X2RpcmVjdChuZGV2LCBwaHlfZGV2LCBcdTAwMjZmZWNfZW5ldF9hZGp1c3RfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMTEtXHRcdFx0XHRcdCBmZXAtXHUwMDNlcGh5X2ludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAxMy1cdFx0XHRpZiAocGh5X2lzX3BzZXVkb19maXhlZF9saW5rKHBoeV9kZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6MzAxNDpcdFx0XHRcdGZpeGVkX3BoeV91bnJlZ2lzdGVyKHBoeV9kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAxNS1cdFx0XHRuZXRkZXZfZXJyKG5kZXYsIFwmIzM0O2NvdWxkIG5vdCBhdHRhY2ggdG8gUEhZXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00MjI4PWZlY19lbmV0X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQyNDMtXHRpZiAoIWZlcC1cdTAwM2VwaHlfbm9kZSBcdTAwMjZcdTAwMjYgcGh5X2lzX3BzZXVkb19maXhlZF9saW5rKHBoeV9kZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDI0NDpcdFx0Zml4ZWRfcGh5X3VucmVnaXN0ZXIocGh5X2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy00MjQ1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jPTIxNj1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYy0yMjItXHRpZiAocHJpdi1cdTAwM2VwaHlfbm9kZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM6MjIzOlx0XHRwaHlkZXYgPSBvZl9waHlfY29ubmVjdChwcml2LVx1MDAzZW5kZXYsIHByaXYtXHUwMDNlcGh5X25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYy0yMjQtXHRcdFx0XHRcdG1wYzUyeHhfZmVjX2FkanVzdF9saW5rLCAwLCAwKTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjQxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgVVNCIEV0aGVybmV0IGFuZCBOZXR3b3JraW5nIERldmljZSBEcml2ZXIgQXJjaGl0ZWN0dXJlKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IFVTQiBFdGhlcm5ldCBkZXZpY2VzIGFyZSBhcmNoaXRlY3RlZCBpbiB0aGlzIHN5c3RlbSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgcGh5c2ljYWwgbGF5ZXIuIFRoZSBjb3JlIHF1ZXN0aW9ucyBhcmU6IGRvIHRoZXNlIGRyaXZlcnMsIHRoaW5ncyBsaWtlIGBjZGNfbmNtYCwgYGFzaXhgLCBgdXNibmV0YCwgZXZlbiBzaW11bGF0ZWQgZGV2aWNlcyBsaWtlIGBuZXRkZXZzaW1gLCBgZHVtbXlgLCBvciBgdmlydGlvYCwgbGV2ZXJhZ2UgYHBoeWxpYmAgaW4gdGhlaXIgaW1wbGVtZW50YXRpb24/IFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHBoeXNpY2FsIGxpbmsgbWFuYWdlbWVudCBpbiB0aGVzZSBjb25maWd1cmF0aW9ucy4KCk15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGdyZXAgZm9yIGluc3RhbmNlcyBvZiBgcGh5X2Nvbm5lY3RgIG9yIGBwaHlsaW5rYCB3aXRoaW4gdGhlIHJlbGV2YW50IGRyaXZlciBkaXJlY3Rvcmllcy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgVVNCIEV0aGVybmV0IGRyaXZlcnMgdW5kZXIgYGRyaXZlcnMvbmV0L3VzYi9gLCBhbnkgc2ltdWxhdGlvbiBvciB0ZXN0IGRyaXZlcnMgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9gLCBhbmQgbWF5YmUgdGhlIGBkdW1teS5jYCBhbmQgc2ltaWxhciBmaWxlcyB0byBzZWUgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIFBIWSBpbnRlcmFjdGlvbnMgKG9yIGlmIHRoZXkmIzM5O3JlIGFic3RyYWN0aW5nIGl0IGVudGlyZWx5KS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHBpY3R1cmUgb2Ygd2hldGhlciBhbmQgaG93IHRoZXkmIzM5O3JlIHVzaW5nIHBoeWxpYiBmb3IgcGh5c2ljYWwgbGF5ZXIgbWFuYWdlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsocGh5X2Nvbm5lY3R8cGh5bGlua3xwaHlfYXR0YWNoKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeC5oLTI5LSNpbmNsdWRlIFx1MDAzY25ldC9zZWxmdGVzdHMuaFx1MDAzZVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDozMDojaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMzEtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaD0xNzg9c3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMTg3LVx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldl9pbnQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4ODpcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoxODk6XHRzdHJ1Y3QgcGh5bGlua19jb25maWcgcGh5bGlua19jb25maWc7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE5MC1cdHUxNiBwaHlfYWRkcjtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9Mjk0PXN0YXRpYyB2b2lkIGF4ODg3NzJfZXRodG9vbF9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjk5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjMwMDpcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbShwcml2LVx1MDAzZXBoeWxpbmssIHBhdXNlKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMDEtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zMDM9c3RhdGljIGludCBheDg4NzcyX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTMwOC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMDk6XHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHByaXYtXHUwMDNlcGh5bGluaywgcGF1c2UpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTMxMC19XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTMzMj1zdGF0aWMgaW50IGF4ODg3NzJfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zNTMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzU0Olx0cGh5bGlua19zdGFydChwcml2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTM1NS1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NTk2PXN0YXRpYyB2b2lkIGF4ODg3NzJfc3VzcGVuZChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYwMi1cdFx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjAzOlx0XHRwaHlsaW5rX3N1c3BlbmQocHJpdi1cdTAwM2VwaHlsaW5rLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjA0LVx0XHRydG5sX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02MjItICpcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2MjM6ICogLSBUaGUgTUFDIGRyaXZlciBtdXN0IGhvbGQgUlROTCB3aGVuIGNhbGxpbmcgcGh5bGluayBpbnRlcmZhY2VzIHN1Y2ggYXNcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2MjQ6ICogICBwaHlsaW5rX3N1c3BlbmQoKS9yZXN1bWUoKS4gVGhvc2UgY2FsbHMgd2lsbCBhbHNvIHBlcmZvcm0gTURJTyBJL08uXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjI1LSAqXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTY0Mj1zdGF0aWMgdm9pZCBheDg4NzcyX3Jlc3VtZShzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY1Mi1cdFx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjUzOlx0XHRwaHlsaW5rX3Jlc3VtZShwcml2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY1NC1cdFx0cnRubF91bmxvY2soKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzAzPXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X3BoeShzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxMy1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MTQ6XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXHUwMDNlcGh5bGluaywgcHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxNS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzIyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcyMzpcdHBoeV9hdHRhY2hlZF9pbmZvKHByaXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MjQtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTczNC1cdFx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzM1Olx0XHRwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHByaXYtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzM2LVx0XHRydG5sX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NDYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzQ3OnN0YXRpYyB2b2lkIGF4ODg3NzJfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzQ4Olx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0OS17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc1Mi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NTM6c3RhdGljIHZvaWQgYXg4ODc3Ml9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc1NC1cdFx0XHRcdCB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzYxLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc2MjpzdGF0aWMgdm9pZCBheDg4NzcyX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc2My1cdFx0XHQgICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzkyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc5MzpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBheDg4NzcyX3BoeWxpbmtfbWFjX29wcyA9IHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03OTQtXHQubWFjX2NvbmZpZyA9IGF4ODg3NzJfbWFjX2NvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzk4LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc5OTpzdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAwLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAyLVx0cGh5X2ludGVyZmFjZV90IHBoeV9pZl9tb2RlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwMzpcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MDU6XHRwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFx1MDAyNmRldi1cdTAwM2VuZXQtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNjpcdHByaXYtXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNzpcdHByaXYtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IE1BQ19TWU1fUEFVU0UgfCBNQUNfQVNZTV9QQVVTRSB8XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODA4LVx0XHRNQUNfMTAgfCBNQUNfMTAwO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTAtXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxMTpcdFx0ICBwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTItXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODEzOlx0XHQgIHByaXYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxNC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIxOlx0XHRcdFx0IHBoeV9pZl9tb2RlLCBcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIyOlx0aWYgKElTX0VSUihwaHlsaW5rKSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjM6XHRcdHJldHVybiBQVFJfRVJSKHBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjU6XHRwcml2LVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyNi1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz04Mjk9c3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTIwLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkyMTpcdHJldCA9IGF4ODg3NzJfcGh5bGlua19zZXR1cChkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyMi1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTIzOlx0XHRnb3RvIHBoeWxpbmtfZXJyO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyNC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTMxLVx0ICogdGhhdCBjb3VsZCBkZWFkbG9jayAoYXV0b3Jlc3VtZSB1bmRlciBSVE5MIHdoaWxlIFVTQiBQTSBsb2NrXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTMyOlx0ICogaXMgaGVsZCwgcGh5bGluay9NRElPIHdhbnRzIFJUTkwpLlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzMy1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MzgtaW5pdHBoeV9lcnI6XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTM5Olx0cGh5bGlua19kZXN0cm95KHByaXYtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTQwOnBoeWxpbmtfZXJyOlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk0MS1cdGF4ODg3NzJfbWRpb191bnJlZ2lzdGVyKHByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05NDY9c3RhdGljIGludCBheDg4NzcyX3N0b3Aoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NDktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTUwOlx0cGh5bGlua19zdG9wKHByaXYtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTUxLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05NTU9c3RhdGljIHZvaWQgYXg4ODc3Ml91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTU5LVx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTYwOlx0cGh5bGlua19kaXNjb25uZWN0X3BoeShwcml2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk2MS1cdHJ0bmxfdW5sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTYyOlx0cGh5bGlua19kZXN0cm95KHByaXYtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTYzLVx0YXg4ODc3Ml9tZGlvX3VucmVnaXN0ZXIocHJpdik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MjYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTMxMy1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjMxNDpcdHByaXYtXHUwMDNlcGh5ZGV2ID0gcGh5X2Nvbm5lY3QoZGV2LVx1MDAzZW5ldCwgcHJpdi1cdTAwM2VwaHlfbmFtZSxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTMxNS1cdFx0XHRcdCAgIFx1MDAyNmF4ODgxNzJhX2FkanVzdF9saW5rLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6OTojaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTAtI2luY2x1ZGUgXHUwMDNjbGludXgvdXNiLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTQxMz1zdHJ1Y3QgbGFuNzh4eF9uZXQge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDY2LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo0Njc6XHRzdHJ1Y3QgcGh5bGlua1x0XHQqcGh5bGluaztcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6NDY4Olx0c3RydWN0IHBoeWxpbmtfY29uZmlnXHRwaHlsaW5rX2NvbmZpZztcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDY5LX07XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0xODE2PXN0YXRpYyBpbnQgbGFuNzh4eF9nZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsIHN0cnVjdCBldGh0b29sX2tlZWUgKmVkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTgxOS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MTgyMDpcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZShkZXYtXHUwMDNlcGh5bGluaywgZWRhdGEpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xODIxLX1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE4MjM9c3RhdGljIGludCBsYW43OHh4X3NldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZWRhdGEpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xODI2LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxODI3Olx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKGRldi1cdTAwM2VwaHlsaW5rLCBlZGF0YSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4MjgtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTg1Mz1zdGF0aWMgaW50IGxhbjc4eHhfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xODU3LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxODU4Olx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KGRldi1cdTAwM2VwaHlsaW5rLCBjbWQpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xODU5LX1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE4NjE9c3RhdGljIGludCBsYW43OHh4X3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTg2NS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MTg2NjpcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldChkZXYtXHUwMDNlcGh5bGluaywgY21kKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTg2Ny19XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0xODY5PXN0YXRpYyB2b2lkIGxhbjc4eHhfZ2V0X3BhdXNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xODczLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxODc0Olx0cGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKGRldi1cdTAwM2VwaHlsaW5rLCBwYXVzZSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4NzUtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTg3Nz1zdGF0aWMgaW50IGxhbjc4eHhfc2V0X3BhdXNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xODgxLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxODgyOlx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbShkZXYtXHUwMDNlcGh5bGluaywgcGF1c2UpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xODgzLX1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTIyNTk9c3RhdGljIHZvaWQgbGFuNzh4eF9yZW1vdmVfaXJxX2RvbWFpbihzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIyNzAtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIyNzE6c3RhdGljIHZvaWQgbGFuNzh4eF9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjI3MjpcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIyNzMte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjMwNS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjMwNjpzdGF0aWMgdm9pZCBsYW43OHh4X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIzMDctXHRcdFx0XHQgIHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjQzMj1zdGF0aWMgaW50IGxhbjc4eHhfY29uZmlndXJlX2Zsb3djb250cm9sKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjQ3Ni1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjQ3NzpzdGF0aWMgdm9pZCBsYW43OHh4X21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNDc4LVx0XHRcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI1NzE9c3RhdGljIGludCBsYW43OHh4X21hY19lZWVfZW5hYmxlKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2LCBib29sIGVuYWJsZSlcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI1ODAtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI1ODE6c3RhdGljIHZvaWQgbGFuNzh4eF9tYWNfZGlzYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI1ODIte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjU4OC1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjU4OTpzdGF0aWMgaW50IGxhbjc4eHhfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHUzMiB0aW1lcixcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjU5MC1cdFx0XHRcdCAgICAgYm9vbCB0eF9jbGtfc3RvcClcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI1OTctXHQgKiBFdGhlcm5ldCBFbmFibGUgKEVFRUVOKSBpcyBjbGVhcmVkLiBXZSBlbnN1cmUgdGhhdCBieSBjbGVhcmluZ1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyNTk4Olx0ICogRUVFRU4gZHVyaW5nIHByb2JlLCBhbmQgcGh5bGluayBpdHNlbGYgZ3VhcmFudGVlcyB0aGF0XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI1OTktXHQgKiBtYWNfZGlzYWJsZV90eF9scGkoKSB3aWxsIGhhdmUgYmVlbiBwcmV2aW91c2x5IGNhbGxlZC5cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2MDctXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI2MDg6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzh4eF9waHlsaW5rX21hY19vcHMgPSB7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2MDktXHQubWFjX2NvbmZpZyA9IGxhbjc4eHhfbWFjX2NvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI2MjY9c3RhdGljIGludCBsYW43OHh4X3NldF9maXhlZF9saW5rKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNjI3LXtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjYyODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlIHN0YXRlID0ge1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNjI5LVx0XHQuc3BlZWQgPSBTUEVFRF8xMDAwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjYzNS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjYzNjpcdHJldHVybiBwaHlsaW5rX3NldF9maXhlZF9saW5rKGRldi1cdTAwM2VwaHlsaW5rLCBcdTAwMjZzdGF0ZSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2MzctfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjc2OT1zdGF0aWMgaW50IGxhbjc4eHhfY29uZmlndXJlX2xlZHNfZnJvbV9kdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldixcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI3OTgtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI3OTk6c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4MDAte1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODAxOlx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpwYyA9IFx1MDAyNmRldi1cdTAwM2VwaHlsaW5rX2NvbmZpZztcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjgwMjpcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODAzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgzNC1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjgzNTpcdG1lbWNweShkZXYtXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMsXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4MzY6XHQgICAgICAgZGV2LVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzLFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM3Olx0ICAgICAgIHNpemVvZihkZXYtXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgzOC1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjgzOTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShwYywgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODQwOlx0XHRcdFx0IGRldi1cdTAwM2VpbnRlcmZhY2UsIFx1MDAyNmxhbjc4eHhfcGh5bGlua19tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6Mjg0MTpcdGlmIChJU19FUlIocGh5bGluaykpXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4NDI6XHRcdHJldHVybiBQVFJfRVJSKHBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODQzLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODQ0Olx0ZGV2LVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODQ1LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjg0OT1zdGF0aWMgdm9pZCBsYW43OHh4X3BoeV91bmluaXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NTAte1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODUxOlx0aWYgKGRldi1cdTAwM2VwaHlsaW5rKSB7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4NTI6XHRcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkoZGV2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODUzOlx0XHRwaHlsaW5rX2Rlc3Ryb3koZGV2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODU0Olx0XHRkZXYtXHUwMDNlcGh5bGluayA9IE5VTEw7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NTUtXHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yODU4PXN0YXRpYyBpbnQgbGFuNzh4eF9waHlfaW5pdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NzAtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4NzE6XHRyZXQgPSBsYW43OHh4X3BoeWxpbmtfc2V0dXAoZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg3Mi1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODc2LVx0aWYgKHJldCBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6Mjg3NzpcdFx0Z290byBwaHlsaW5rX3VuaW5pdDtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg3OC1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4ODYtXHRcdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4ODc6XHRcdFx0Z290byBwaHlsaW5rX3VuaW5pdDtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg4OC1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg4OS1cdFx0LyogTm8gUEhZIGZvdW5kLCBzbyBzZXQgdXAgYSBmaXhlZCBsaW5rIGFuZCByZXR1cm4gZWFybHkuXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4OTA6XHRcdCAqIE5vIG5lZWQgdG8gY29uZmlndXJlIFBIWSBJUlEgb3IgYXR0YWNoIHRvIHBoeWxpbmsuXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4OTEtXHRcdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjkwMS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjkwMjpcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkoZGV2LVx1MDAzZXBoeWxpbmssIHBoeWRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTA1LVx0XHRcdCAgIGRldi1cdTAwM2VtZGlvYnVzLVx1MDAzZWlkLCBFUlJfUFRSKHJldCkpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyOTA2Olx0XHRnb3RvIHBoeWxpbmtfdW5pbml0O1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTA3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjkxMC1cdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI5MTE6XHRcdGdvdG8gcGh5bGlua191bmluaXQ7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MTItXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTE0LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyOTE1OnBoeWxpbmtfdW5pbml0OlxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTE2LVx0bGFuNzh4eF9waHlfdW5pbml0KGRldik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zNDYyPXN0YXRpYyBpbnQgbGFuNzh4eF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zNDkwLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozNDkxOlx0cGh5bGlua19zdGFydChkZXYtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTM0OTItXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zNTM4PXN0YXRpYyBpbnQgbGFuNzh4eF9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zNTU4LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozNTU5Olx0cGh5bGlua19zdG9wKGRldi1cdTAwM2VwaHlsaW5rKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzU2MC1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTQ1NzE9c3RhdGljIHZvaWQgbGFuNzh4eF9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDU4My1cdHJ0bmxfbG9jaygpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo0NTg0Olx0cGh5bGlua19zdG9wKGRldi1cdTAwM2VwaHlsaW5rKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6NDU4NTpcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkoZGV2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy00NTg2LVx0cnRubF91bmxvY2soKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTQ1OTMtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjQ1OTQ6XHRwaHlsaW5rX2Rlc3Ryb3koZGV2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy00NTk1LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9NTExNT1zdGF0aWMgaW50IGxhbjc4eHhfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy01MTQyLVx0XHRydG5sX2xvY2soKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6NTE0MzpcdFx0cGh5bGlua19zdXNwZW5kKGRldi1cdTAwM2VwaHlsaW5rLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTUxNDQtXHRcdHJ0bmxfdW5sb2NrKCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz01MzYyPXN0YXRpYyBpbnQgbGFuNzh4eF9yZXNldF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy01Mzc3LVx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjUzNzg6XHRwaHlsaW5rX3Jlc3VtZShkZXYtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTUzNzktXHRydG5sX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jPTExNDc9c3RhdGljIGludCBzbXNjOTV4eF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI4NC1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjEyODU6XHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LVx1MDAzZW5ldCwgcGRhdGEtXHUwMDNlcGh5ZGV2LFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI4Ni1cdFx0XHRcdCBcdTAwMjZzbXNjOTV4eF9oYW5kbGVfbGlua19jaGFuZ2UsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI5Mi1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjEyOTM6XHRwaHlfYXR0YWNoZWRfaW5mbyhkZXYtXHUwMDNlbmV0LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMjk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTQ5CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFVTQiBFdGhlcm5ldCBEcml2ZXIgVGVzdGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0aGVzZSBVU0IgRXRoZXJuZXQgZHJpdmVycyBhcmUgdGVzdGVkIGFuZCB3aGF0IHRlY2huaXF1ZXMgYXJlIGJlaW5nIHVzZWQuIFNwZWNpZmljYWxseSwgZHJpdmVycyBsaWtlIGBhc2l4YCwgYGF4ODgxNzJhYCwgYGxhbjc4eHhgLCBhbmQgYHNtc2M5NXh4YCBhcmUgaW4gdGhlIHNwb3RsaWdodC4gSSBzZWUgdGhhdCB0aGVyZSBhcmUgbXVsdGlwbGUgYW5nbGVzIGZvciBwcm9iaW5nIHRoZXNlIGRyaXZlcnM6IHVzaW5nIFVTQiBlbXVsYXRpb24g4oCTIHdoaWNoIGluY2x1ZGVzIHJhdy1nYWRnZXQsIHVzYi1mdXp6ZXIsIGFuZCBldmVuIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMg4oCTIG9yIGJ5IHVzaW5nIHZpcnR1YWwgZGV2aWNlcy4gRnVydGhlcm1vcmUsIGBkc2FfbG9vcGAsIGBmaXhlZF9waHlgLCBhbmQgb3RoZXIgbmV0IGRldmljZXMgY2FuIGFsc28gYmUgYnJvdWdodCBpbnRvIHBsYXkhCgpJIHJlY29nbml6ZSB0aGF0IHRoZSBzdGFuZGFyZCB2aXJ0dWFsIG5ldHdvcmtpbmcgc2V0dXAgYW5kIHRoZSBVU0IgZ2FkZ2V0IG5ldHdvcmtpbmcgd2l0aGluIHN5emthbGxlciBhcmUgYWxyZWFkeSBxdWl0ZSBlZmZlY3RpdmUgYXQgcmVndWxhcmx5IGV4ZXJjaXNpbmcgdGhlc2UgVVNCIG5ldCBkcml2ZXJzLiBUaGV5JiMzOTtyZSB0cmlnZ2VyaW5nIGNhbGxzIHRvIGltcG9ydGFudCBQSFkgZnVuY3Rpb25zIGxpa2UgYHBoeWxpbmtfY29ubmVjdF9waHlgLCBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAsIGBwaHlfY29ubmVjdGAsIGBwaHlfYXR0YWNoX2RpcmVjdGAsIGFuZCBgcGh5X3Byb2JlYC4KCkdpdmVuIHRoaXMgY29udGV4dCwgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRvIGdhaW4gYSBkZWVwZXIgdW5kZXJzdGFuZGluZy4gVG8gZG8gdGhhdCwgSSYjMzk7bSBnb2luZyB0byBjb25zdWx0IGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIGFueSByZWNlbnQgY2hhbmdlcyBpbiB0aGVzZSBmaWxlcy4gUmVhZGluZyB0aHJvdWdoIHRoZW0gd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiB0aGUgYnVnIG9yIHRoZSBmaXgsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTczMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNzMwOlx0XHRyZXR1cm4gcmV0O1xuMTczMTpcdH1cbjE3MzI6XHRcbjE3MzM6XHRzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuMTczNDpcdHtcbjE3MzU6XHRcdHJldHVybiBwaHlkcnYtXHUwMDNlY29uZmlnX2ludHIgXHUwMDI2XHUwMDI2IHBoeWRydi1cdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xuMTczNjpcdH1cbjE3Mzc6XHRcbjE3Mzg6XHQvKiBHaXZlIGJhY2sgd2hhdCBwaHlfcHJvYmUoKSB0b29rLCBidXQgbm90IHdoaWxlIHBoeV9saW5rX2NoYW5nZSBtYXJrcyBhXG4xNzM5Olx0ICogY29uc3VtZXI6IGl0IHNraXBwZWQgcGh5X3JlcXVlc3RfaW50ZXJydXB0KCkgb24gdGhlIHZhbHVlIGl0IHNhdywgc29cbjE3NDA6XHQgKiBwaHlfZGlzY29ubmVjdCgpIHdvdWxkIGZyZWUgYW4gaW50ZXJydXB0IG5vYm9keSByZXF1ZXN0ZWQuXG4xNzQxOlx0ICovXG4xNzQyOlx0c3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4xNzQzOlx0e1xuMTc0NDpcdFx0aWYgKHBoeWRldi1cdTAwM2VwaHlfbGlua19jaGFuZ2UgfHwgcGh5ZGV2LVx1MDAzZWlycV9zYXZlZCA9PSBQSFlfUE9MTClcbjE3NDU6XHRcdFx0cmV0dXJuO1xuMTc0NjpcdFxuMTc0NzpcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IHBoeWRldi1cdTAwM2VpcnFfc2F2ZWQ7XG4xNzQ4Olx0XHRwaHlkZXYtXHUwMDNlaXJxX3NhdmVkID0gUEhZX1BPTEw7XG4xNzQ5Olx0fVxuMTc1MDpcdFxuMTc1MTpcdC8qKlxuMTc1MjpcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbjE3NTM6XHQgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbjE3NTQ6XHQgKiBAcGh5ZGV2OiBQb2ludGVyIHRvIHBoeV9kZXZpY2UgdG8gYXR0YWNoXG4xNzU1Olx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJiMzOTtzIGRldl9mbGFnc1xuMTc1NjpcdCAqIEBpbnRlcmZhY2U6IFBIWSBkZXZpY2UmIzM5O3MgaW50ZXJmYWNlXG4xNzU3Olx0ICpcbjE3NTg6XHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGRyaXZlcnMgdG8gYXR0YWNoIHRvIGEgcGFydGljdWxhciBQSFlcbjE3NTk6XHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxuMTc2MDpcdCAqICAgICB0byB0aGUgcGh5X2RyaXZlci4gIElmIG5vIGRyaXZlciBpcyBhdHRhY2hlZCwgdGhlbiBhXG4xNzYxOlx0ICogICAgIGdlbmVyaWMgZHJpdmVyIGlzIHVzZWQuICBUaGUgcGh5X2RldmljZSBpcyBnaXZlbiBhIHB0ciB0b1xuMTc2MjpcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXG4xNzYzOlx0ICogICAgIGNoYW5nZS4gIFRoZSBwaHlfZGV2aWNlIGlzIHJldHVybmVkIHRvIHRoZSBhdHRhY2hpbmcgZHJpdmVyLlxuMTc2NDpcdCAqICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgcmVmZXJlbmNlIG9uIHRoZSBwaHkgZGV2aWNlLlxuMTc2NTpcdCAqL1xuMTc2NjpcdGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuMTc2NzpcdFx0XHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4xNzY4Olx0e1xuMTc2OTpcdFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbjE3NzA6XHRcdHN0cnVjdCBkZXZpY2UgKmQgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG4xNzcxOlx0XHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcbjE3NzI6XHRcdGludCBlcnI7XG4xNzczOlx0XG4xNzc0Olx0XHQvKiBGb3IgRXRoZXJuZXQgZGV2aWNlIGRyaXZlcnMgdGhhdCByZWdpc3RlciB0aGVpciBvd24gTURJTyBidXMsIHdlXG4xNzc1Olx0XHQgKiB3aWxsIGhhdmUgYnVzLVx1MDAzZW93bmVyIG1hdGNoIG5kZXZfbW9kLCBzbyB3ZSBkbyBub3Qgd2FudCB0byBpbmNyZW1lbnRcbjE3NzY6XHRcdCAqIG91ciBvd24gbW9kdWxlLVx1MDAzZXJlZmNudCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgbm90IGJlIGFibGUgdG9cbjE3Nzc6XHRcdCAqIHVubG9hZCBsYXRlciBvbi5cbjE3Nzg6XHRcdCAqL1xuMTc3OTpcdFx0aWYgKGRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkzMjQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0cywgZ2VhcmVkIHRvd2FyZHMgYW4gZXhwZXJ0OgoKKipEaXZpbmcgaW50byBgcGh5X2F0dGFjaF9kaXJlY3RgKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBwaHlfYXR0YWNoX2RpcmVjdGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBsaW5lcyAxODkwIHRocm91Z2ggMTkyNS4gR2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoZSBzeXN0ZW0sIHRoaXMgc2VjdGlvbiBpcyBsaWtlbHkgaGFuZGxpbmcgdGhlIGRpcmVjdCBQSFkgYXR0YWNobWVudCBwcm9jZWR1cmUuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpbml0aWFsaXplcyBhbmQgY29uZmlndXJlcyB0aGUgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlIGluIHRoaXMgc3BlY2lmaWMgc2NlbmFyaW8uIEkgZXhwZWN0IHRvIHNlZSB0aGUgdHlwaWNhbCBzZXF1ZW5jZSBvZiBhY3Rpb25zIGhlcmU6IGRldmljZSBwcm9iaW5nLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBwb3NzaWJseSByZWdpc3RlciBhY2Nlc3MgZm9yIGluaXRpYWwgUEhZIGNvbmZpZ3VyYXRpb24sIGFuZCB1bHRpbWF0ZWx5LCByZWdpc3RyYXRpb24gd2l0aCB0aGUgcmVsZXZhbnQgdXBwZXIgbGF5ZXIgZnJhbWV3b3JrLiBVbmRlcnN0YW5kaW5nIHRoZSBmbG93LCBpbmNsdWRpbmcgYW55IGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGlzIGJsb2NrLCBpcyBjcml0aWNhbCBmb3IgZGlhZ25vc2luZyBwb3RlbnRpYWwgYXR0YWNobWVudCBpc3N1ZXMuIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyB0ZWNobmlxdWVzIHRoZSBkZXZlbG9wZXJzIGhhdmUgZW1wbG95ZWQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTg5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxODkwOlx0XHRpZiAoZXJyKVxuMTg5MTpcdFx0XHRnb3RvIGVycm9yO1xuMTg5MjpcdFxuMTg5MzpcdFx0cGh5X3Jlc3VtZShwaHlkZXYpO1xuMTg5NDpcdFxuMTg5NTpcdFx0LyoqXG4xODk2Olx0XHQgKiBJZiB0aGUgZXh0ZXJuYWwgcGh5IHVzZWQgYnkgY3VycmVudCBtYWMgaW50ZXJmYWNlIGlzIG1hbmFnZWQgYnlcbjE4OTc6XHRcdCAqIGFub3RoZXIgbWFjIGludGVyZmFjZSwgc28gd2Ugc2hvdWxkIGNyZWF0ZSBhIGRldmljZSBsaW5rIGJldHdlZW5cbjE4OTg6XHRcdCAqIHBoeSBkZXYgYW5kIG1hYyBkZXYuXG4xODk5Olx0XHQgKi9cbjE5MDA6XHRcdGlmIChkZXYgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VwYXJlbnQgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2VkZXYucGFyZW50ICE9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VwYXJlbnQpXG4xOTAxOlx0XHRcdHBoeWRldi1cdTAwM2VkZXZsaW5rID0gZGV2aWNlX2xpbmtfYWRkKGRldi1cdTAwM2VkZXYucGFyZW50LCBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsXG4xOTAyOlx0XHRcdFx0XHRcdFx0ICBETF9GTEFHX1BNX1JVTlRJTUUgfCBETF9GTEFHX1NUQVRFTEVTUyk7XG4xOTAzOlx0XG4xOTA0Olx0XHRyZXR1cm4gZXJyO1xuMTkwNTpcdFxuMTkwNjpcdGVycm9yOlxuMTkwNzpcdFx0LyogcGh5X2RldGFjaCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXG4xOTA4Olx0XHRwaHlfZGV0YWNoKHBoeWRldik7XG4xOTA5Olx0XHRyZXR1cm4gZXJyO1xuMTkxMDpcdFxuMTkxMTpcdGVycm9yX21vZHVsZV9wdXQ6XG4xOTEyOlx0XHRtb2R1bGVfcHV0KGQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyKTtcbjE5MTM6XHRcdHBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpO1xuMTkxNDpcdFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuMTkxNTpcdFx0ZC1cdTAwM2Vkcml2ZXIgPSBOVUxMO1xuMTkxNjpcdGVycm9yX3B1dF9kZXZpY2U6XG4xOTE3Olx0XHRwdXRfZGV2aWNlKGQpO1xuMTkxODpcdFx0aWYgKG5kZXZfb3duZXIgIT0gYnVzLVx1MDAzZW93bmVyKVxuMTkxOTpcdFx0XHRtb2R1bGVfcHV0KGJ1cy1cdTAwM2Vvd25lcik7XG4xOTIwOlx0XHRyZXR1cm4gZXJyO1xuMTkyMTpcdH1cbjE5MjI6XHRFWFBPUlRfU1lNQk9MKHBoeV9hdHRhY2hfZGlyZWN0KTtcbjE5MjM6XHRcbjE5MjQ6XHQvKipcbjE5MjU6XHQgKiBwaHlfZGV0YWNoIC0gZGV0YWNoIGEgUEhZIGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZVxuMTkyNjpcdCAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuMTkyNzpcdCAqXG4xOTI4Olx0ICogVGhpcyBkZXRhY2hlcyB0aGUgcGh5IGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgdGhlIHBoeVxuMTkyOTpcdCAqIGRyaXZlciwgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgY291bnQgdGFrZW4gaW4gcGh5X2F0dGFjaF9kaXJlY3QoKS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAxNTQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0IEkgbmVlZCB0byBkbywgZXhwcmVzc2VkIGFzIGlmIHRoZXNlIHdlcmUgbXkgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgLSBMaW5lIFJhbmdlIDM2OTAtMzg3MCoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGF0IHNwZWNpZmljIHNlY3Rpb24gb2YgdGhlIFBIWSBkcml2ZXIgY29kZS4gQmFzZWQgb24gdGhlIHJlcXVlc3QsIEkgbmVlZCB0byBmb2N1cyBvbiBsaW5lcyAzNjkwIHRocm91Z2ggMzg3MCBvZiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuIFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIHJhbmdlLCB0aG91Z2ggd2l0aG91dCBjb250ZXh0LCBpdCBjb3VsZCBjb3ZlciBhIGxvdCBvZiBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhhdCBQSFkgZHJpdmVyLiBJJiMzOTtsbCBuZWVkIHRvIHJhcGlkbHkgcGFyc2UgdGhhdCBzZWN0aW9uLCBsaWtlbHkgbG9va2luZyBmb3Iga2V5IGZ1bmN0aW9ucywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBwb3RlbnRpYWxseSBpbnRlcnJ1cHQgaGFuZGxpbmcgb3IgcmVnaXN0ZXIgYWNjZXNzIHJvdXRpbmVzLiBJJiMzOTtsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBhbnl0aGluZyB0aGF0IG1pZ2h0IHJlbGF0ZSB0byB0aGUgcHJvYmxlbSBvciBhcmVhIG9mIGNvbmNlcm4gSSYjMzk7bSB3b3JraW5nIHdpdGggLSBpZiB0aGlzIHNlY3Rpb24gd2FzIHJlcXVlc3RlZCwgdGhlcmUmIzM5O3Mgb2J2aW91c2x5IHNvbWUgcmVhc29uIHRvIGJlbGlldmUgdGhlIGlzc3VlIGlzIHJlbGF0ZWQgdG8gZnVuY3Rpb25hbGl0eSBjb3ZlcmVkIGJ5IHRob3NlIGxpbmVzLiBJIHNob3VsZCB3YXRjaCBvdXQgZm9yIGRldmljZSBpbml0aWFsaXNhdGlvbiwgbGluayBzdGF0ZSBtb25pdG9yaW5nLCBhdXRvbmVnb3RpYXRpb24gc2V0dXAsIGFuZCBhbnkgcmVnaXN0ZXIgcmVhZHMgb3Igd3JpdGVzLiBJJiMzOTtsbCBub3RlIGFueXRoaW5nIHRoYXQganVtcHMgb3V0IGFzIGJlaW5nIHJlbGF0ZWQgdG8gaGFyZHdhcmUgaW50ZXJhY3Rpb25zIG9yIHBvc3NpYmx5IGVycm9yIGhhbmRsaW5nLiBMZXQmIzM5O3MgZ2V0IHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM2OTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzY5MDpcdFx0cmV0dXJuIGZ3bm9kZV9maW5kX3JlZmVyZW5jZShmd25vZGUsIFwmIzM0O3BoeS1kZXZpY2VcJiMzNDssIDApO1xuMzY5MTpcdH1cbjM2OTI6XHRFWFBPUlRfU1lNQk9MX0dQTChmd25vZGVfZ2V0X3BoeV9ub2RlKTtcbjM2OTM6XHRcbjM2OTQ6XHQvKipcbjM2OTU6XHQgKiBwaHlfcHJvYmUgLSBwcm9iZSBhbmQgaW5pdCBhIFBIWSBkZXZpY2VcbjM2OTY6XHQgKiBAZGV2OiBkZXZpY2UgdG8gcHJvYmUgYW5kIGluaXRcbjM2OTc6XHQgKlxuMzY5ODpcdCAqIFRha2UgY2FyZSBvZiBzZXR0aW5nIHVwIHRoZSBwaHlfZGV2aWNlIHN0cnVjdHVyZSwgc2V0IHRoZSBzdGF0ZSB0byBSRUFEWS5cbjM2OTk6XHQgKi9cbjM3MDA6XHRzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4zNzAxOlx0e1xuMzcwMjpcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTtcbjM3MDM6XHRcdHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYgPSBwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyO1xuMzcwNDpcdFx0c3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydiA9IHRvX3BoeV9kcml2ZXIoZHJ2KTtcbjM3MDU6XHRcdGludCBlcnIgPSAwO1xuMzcwNjpcdFxuMzcwNzpcdFx0cGh5ZGV2LVx1MDAzZWRydiA9IHBoeWRydjtcbjM3MDg6XHRcbjM3MDk6XHRcdC8qIERpc2FibGUgdGhlIGludGVycnVwdCBpZiB0aGUgUEhZIGRvZXNuJiMzOTt0IHN1cHBvcnQgaXRcbjM3MTA6XHRcdCAqIGJ1dCB0aGUgaW50ZXJydXB0IGlzIHN0aWxsIGEgdmFsaWQgb25lXG4zNzExOlx0XHQgKi9cbjM3MTI6XHRcdGlmICghcGh5X2Rydl9zdXBwb3J0c19pcnEocGh5ZHJ2KSBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHlkZXYpKSB7XG4zNzEzOlx0XHRcdHBoeWRldi1cdTAwM2VpcnFfc2F2ZWQgPSBwaHlkZXYtXHUwMDNlaXJxO1xuMzcxNDpcdFx0XHRwaHlkZXYtXHUwMDNlaXJxID0gUEhZX1BPTEw7XG4zNzE1Olx0XHR9XG4zNzE2Olx0XG4zNzE3Olx0XHRpZiAocGh5ZHJ2LVx1MDAzZWZsYWdzIFx1MDAyNiBQSFlfSVNfSU5URVJOQUwpXG4zNzE4Olx0XHRcdHBoeWRldi1cdTAwM2Vpc19pbnRlcm5hbCA9IHRydWU7XG4zNzE5Olx0XG4zNzIwOlx0XHQvKiBEZWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG4zNzIxOlx0XHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMCk7XG4zNzIyOlx0XG4zNzIzOlx0XHRpZiAocGh5ZGV2LVx1MDAzZWRydi1cdTAwM2Vwcm9iZSkge1xuMzcyNDpcdFx0XHRlcnIgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXByb2JlKHBoeWRldik7XG4zNzI1Olx0XHRcdGlmIChlcnIpXG4zNzI2Olx0XHRcdFx0Z290byBvdXQ7XG4zNzI3Olx0XHR9XG4zNzI4Olx0XG4zNzI5Olx0XHRwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7XG4zNzMwOlx0XG4zNzMxOlx0XHQvKiBTdGFydCBvdXQgc3VwcG9ydGluZyBldmVyeXRoaW5nLiBFdmVudHVhbGx5LFxuMzczMjpcdFx0ICogYSBjb250cm9sbGVyIHdpbGwgYXR0YWNoLCBhbmQgbWF5IG1vZGlmeSBvbmVcbjM3MzM6XHRcdCAqIG9yIGJvdGggb2YgdGhlc2UgdmFsdWVzXG4zNzM0Olx0XHQgKi9cbjM3MzU6XHRcdGlmIChwaHlkcnYtXHUwMDNlZmVhdHVyZXMpIHtcbjM3MzY6XHRcdFx0bGlua21vZGVfY29weShwaHlkZXYtXHUwMDNlc3VwcG9ydGVkLCBwaHlkcnYtXHUwMDNlZmVhdHVyZXMpO1xuMzczNzpcdFx0XHRnZW5waHlfYzQ1X3JlYWRfZWVlX2FiaWxpdGllcyhwaHlkZXYpO1xuMzczODpcdFx0fVxuMzczOTpcdFx0ZWxzZSBpZiAocGh5ZHJ2LVx1MDAzZWdldF9mZWF0dXJlcylcbjM3NDA6XHRcdFx0ZXJyID0gcGh5ZHJ2LVx1MDAzZWdldF9mZWF0dXJlcyhwaHlkZXYpO1xuMzc0MTpcdFx0ZWxzZSBpZiAocGh5ZGV2LVx1MDAzZWlzX2M0NSlcbjM3NDI6XHRcdFx0ZXJyID0gZ2VucGh5X2M0NV9wbWFfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcbjM3NDM6XHRcdGVsc2VcbjM3NDQ6XHRcdFx0ZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XG4zNzQ1Olx0XG4zNzQ2Olx0XHRpZiAoZXJyKVxuMzc0NzpcdFx0XHRnb3RvIG91dDtcbjM3NDg6XHRcbjM3NDk6XHRcdGlmICghbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsXG4zNzUwOlx0XHRcdFx0ICAgICAgIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuMzc1MTpcdFx0XHRwaHlkZXYtXHUwMDNlYXV0b25lZyA9IDA7XG4zNzUyOlx0XG4zNzUzOlx0XHRpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0hhbGZfQklULFxuMzc1NDpcdFx0XHRcdCAgICAgIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuMzc1NTpcdFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2lnYWJpdF9jYXBhYmxlID0gMTtcbjM3NTY6XHRcdGlmIChsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfRnVsbF9CSVQsXG4zNzU3Olx0XHRcdFx0ICAgICAgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCkpXG4zNzU4Olx0XHRcdHBoeWRldi1cdTAwM2Vpc19naWdhYml0X2NhcGFibGUgPSAxO1xuMzc1OTpcdFxuMzc2MDpcdFx0b2Zfc2V0X3BoeV9zdXBwb3J0ZWQocGh5ZGV2KTtcbjM3NjE6XHRcbjM3NjI6XHRcdGVyciA9IHBoeV9zZXR1cF9wb3J0cyhwaHlkZXYpO1xuMzc2MzpcdFx0aWYgKGVycilcbjM3NjQ6XHRcdFx0Z290byBvdXQ7XG4zNzY1Olx0XG4zNzY2Olx0XHRwaHlfYWR2ZXJ0aXNlX3N1cHBvcnRlZChwaHlkZXYpO1xuMzc2NzpcdFxuMzc2ODpcdFx0LyogR2V0IFBIWSBkZWZhdWx0IEVFRSBhZHZlcnRpc2luZyBtb2RlcyBhbmQgaGFuZGxlIHRoZW0gYXMgcG90ZW50aWFsbHlcbjM3Njk6XHRcdCAqIHNhZmUgaW5pdGlhbCBjb25maWd1cmF0aW9uLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTY5OQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgaWYgdGhleSB3ZXJlIG15IG93biBpbW1lZGlhdGUgY29uc2lkZXJhdGlvbnM6CgoqKlByb2JpbmcgYW5kIFJlbW92YWw6IEEgUXVpY2sgRGlhZ25vc3RpYyBDaGVjayoqCgpBbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwIGludG8gdGhlIHdlZWRzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEkmIzM5O3ZlIGdvdCBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGluIG1pbmQgZm9yIHRoZSBjdXJyZW50IGlzc3VlLCBidXQgSSBhbHdheXMgd2FudCB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBnbG9zc2VkIG92ZXIgYW55IHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZS4gTXkgaW5pdGlhbCBoeXBvdGhlc2lzIGZlZWxzIHNvdW5kLCBidXQgaXQmIzM5O3MgY3J1Y2lhbCB0byBjb25maXJtIHRoYXQgYHBoeV9wcm9iZWAgYW5kIGBwaHlfcmVtb3ZlYCBhcmVuJiMzOTt0IHNpbGVudGx5IGNvbnRyaWJ1dGluZyB0byB0aGUgcHJvYmxlbS4gSSYjMzk7bSBnb2luZyB0byBydW4gYSBtZW50YWwgc2NhbiBvZiB0aGUgcmVsZXZhbnQgY29kZSBzZWN0aW9ucyBmb3IgdGhvc2UgZnVuY3Rpb25zLiBJcyB0aGVyZSBhbnkgcG90ZW50aWFsIGludGVyYWN0aW9uIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgSSBtaWdodCBoYXZlIG92ZXJsb29rZWQ/IEFyZSB0aGVyZSByYWNlIGNvbmRpdGlvbnMsIHJlc291cmNlIGxlYWtzLCBvciBzdWJ0bGUgc2lkZSBlZmZlY3RzIHRoYXQgY291bGQgYmUgcmVsZXZhbnQ/IFRoaXMgaXMgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gZWxpbWluYXRlIHRoZSBwb3NzaWJpbGl0eSBvZiBhIHNpbXBsZSBtaXNjb25maWd1cmF0aW9uIG9yIG92ZXJsb29rZWQgZGVwZW5kZW5jeSBiZWZvcmUgSSBzdGFydCBsb29raW5nIGF0IG1vcmUgY29tcGxleCBpbnRlcmFjdGlvbnMuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGxvZ2ljIHdpdGhpbiB0aG9zZSB0d28gZnVuY3Rpb25zLCBhbmQgdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgbGFyZ2VyIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzgyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszODIwOlx0XHQvKiBHZXQgdGhlIExFRHMgZnJvbSB0aGUgZGV2aWNlIHRyZWUsIGFuZCBpbnN0YW50aWF0ZSBzdGFuZGFyZFxuMzgyMTpcdFx0ICogTEVEcyBmb3IgdGhlbS5cbjM4MjI6XHRcdCAqL1xuMzgyMzpcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcdTAwMjZcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHtcbjM4MjQ6XHRcdFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcbjM4MjU6XHRcdFx0aWYgKGVycilcbjM4MjY6XHRcdFx0XHRnb3RvIG91dDtcbjM4Mjc6XHRcdH1cbjM4Mjg6XHRcbjM4Mjk6XHRcdHJldHVybiAwO1xuMzgzMDpcdFxuMzgzMTpcdG91dDpcbjM4MzI6XHRcdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cdTAwM2VzZnBfYnVzKTtcbjM4MzM6XHRcdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbjM4MzQ6XHRcbjM4MzU6XHRcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4zODM2Olx0XG4zODM3Olx0XHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuMzgzODpcdFx0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbjM4Mzk6XHRcbjM4NDA6XHRcdHBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpO1xuMzg0MTpcdFxuMzg0MjpcdFx0LyogUmUtYXNzZXJ0IHRoZSByZXNldCBzaWduYWwgb24gZXJyb3IgKi9cbjM4NDM6XHRcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcbjM4NDQ6XHRcbjM4NDU6XHRcdHJldHVybiBlcnI7XG4zODQ2Olx0fVxuMzg0NzpcdFxuMzg0ODpcdHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4zODQ5Olx0e1xuMzg1MDpcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTtcbjM4NTE6XHRcbjM4NTI6XHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZwaHlkZXYtXHUwMDNlc3RhdGVfcXVldWUpO1xuMzg1MzpcdFxuMzg1NDpcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcdTAwMjZcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpXG4zODU1Olx0XHRcdHBoeV9sZWRzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbjM4NTY6XHRcbjM4NTc6XHRcdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4zODU4Olx0XHRcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xuMzg1OTpcdFxuMzg2MDpcdFx0cGh5ZGV2LVx1MDAzZXN0YXRlID0gUEhZX0RPV047XG4zODYxOlx0XG4zODYyOlx0XHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4zODYzOlx0XHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4zODY0Olx0XG4zODY1Olx0XHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xuMzg2NjpcdFxuMzg2NzpcdFx0aWYgKHBoeWRldi1cdTAwM2VkcnYgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKVxuMzg2ODpcdFx0XHRwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZShwaHlkZXYpO1xuMzg2OTpcdFxuMzg3MDpcdFx0cGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7XG4zODcxOlx0XG4zODcyOlx0XHQvKiBBc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqL1xuMzg3MzpcdFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xuMzg3NDpcdFxuMzg3NTpcdFx0cGh5ZGV2LVx1MDAzZWRydiA9IE5VTEw7XG4zODc2Olx0XG4zODc3Olx0XHRyZXR1cm4gMDtcbjM4Nzg6XHR9XG4zODc5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyODA2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgUEhZTElOSyBJbXBsZW1lbnRhdGlvbiBEZXRhaWxzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGJhY2sgaW50byB0aGlzIG5ldHdvcmsgZHJpdmVyIHNpdHVhdGlvbi4gSSYjMzk7dmUgYWxyZWFkeSBkb25lIHNvbWUgaW5pdGlhbCBhc3Nlc3NtZW50cywgYnV0IGl0JiMzOTtzIHRpbWUgdG8gZ2V0IGEgYml0IG1vcmUgZ3JhbnVsYXIuIExldCYjMzk7cyBzZWUuLi4gSSB3YW50IHRvIHNwZWNpZmljYWxseSBmb2N1cyBvbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgIGZpbGUuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgdGhlIGlubmVyIHdvcmtpbmdzIG9mIHBoeWxpbmssIGFuZCBJIHRoaW5rIHRoYXQgdGhlIGNvZGUgZnJvbSBhcm91bmQgbGluZXMgMjA4MCB0byAyMzcwIHNlZW1zIGxpa2UgYSBjcml0aWNhbCBzZWN0aW9uIHRoYXQgSSBuZWVkIHRvIGxvb2sgYXQuIEhvcGVmdWxseSwgdGhlIGNvZGUgY29tbWVudHMgdGhlcmUgYXJlIGhlbHBmdWwuIEl0JiMzOTtzIHRpbWUgdG8gem9vbSBpbiBvbiBob3cgdGhpcyBQSFkgYWJzdHJhY3Rpb24gaXMgaGFuZGxlZCBpbiBkZXRhaWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciB0aG9yb3VnaGx5IHRvIGJlIGFibGUgdG8gbWFrZSBhbnkgbWVhbmluZ2Z1bCBjaGFuZ2VzIG9yIHRyb3VibGVzaG9vdCBpc3N1ZXMuIEkmIzM5O2xsIHN0YXJ0IHdpdGggdGhpcyBjaHVuayBhbmQgc2VlIHdoZXJlIHRoYXQgdGFrZXMgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjE5MDpcdFx0XHQgICAgX19FVEhUT09MX0xJTktfTU9ERV9NQVNLX05CSVRTLCBwbC1cdTAwM2VzdXBwb3J0ZWQsXG4yMTkxOlx0XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBoeS1cdTAwM2VhZHZlcnRpc2luZyk7XG4yMTkyOlx0XG4yMTkzOlx0XHRpZiAocGwtXHUwMDNlY29uZmlnLVx1MDAzZW1hY19tYW5hZ2VkX3BtKVxuMjE5NDpcdFx0XHRwaHktXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuMjE5NTpcdFxuMjE5NjpcdFx0LyogQWxsb3cgdGhlIE1BQyB0byBzdG9wIGl0cyBjbG9jayBpZiB0aGUgUEhZIGhhcyB0aGUgY2FwYWJpbGl0eSAqL1xuMjE5NzpcdFx0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gcGh5X2VlZV90eF9jbG9ja19zdG9wX2NhcGFibGUocGh5KSBcdTAwM2UgMDtcbjIxOTg6XHRcbjIxOTk6XHRcdGlmIChwbC1cdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcykge1xuMjIwMDpcdFx0XHQvKiBFeHBsaWNpdGx5IGNvbmZpZ3VyZSB3aGV0aGVyIHRoZSBQSFkgaXMgYWxsb3dlZCB0byBzdG9wIGl0JiMzOTtzXG4yMjAxOlx0XHRcdCAqIHJlY2VpdmUgY2xvY2suXG4yMjAyOlx0XHRcdCAqL1xuMjIwMzpcdFx0XHRyZXQgPSBwaHlfZWVlX3J4X2Nsb2NrX3N0b3AocGh5LFxuMjIwNDpcdFx0XHRcdFx0XHQgICAgcGwtXHUwMDNlY29uZmlnLVx1MDAzZWVlZV9yeF9jbGtfc3RvcF9lbmFibGUpO1xuMjIwNTpcdFx0XHRpZiAocmV0ID09IC1FT1BOT1RTVVBQKVxuMjIwNjpcdFx0XHRcdHJldCA9IDA7XG4yMjA3Olx0XHR9XG4yMjA4Olx0XG4yMjA5Olx0XHRpZiAocmV0ID09IDAgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSlcbjIyMTA6XHRcdFx0cGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7XG4yMjExOlx0XG4yMjEyOlx0XHRpZiAocmV0KSB7XG4yMjEzOlx0XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbjIyMTQ6XHRcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4yMjE1Olx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuMjIxNjpcdFx0fVxuMjIxNzpcdFxuMjIxODpcdFx0cmV0dXJuIHJldDtcbjIyMTk6XHR9XG4yMjIwOlx0XG4yMjIxOlx0c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuMjIyMjpcdFx0XHRcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4yMjIzOlx0e1xuMjIyNDpcdFx0dTMyIGZsYWdzID0gMDtcbjIyMjU6XHRcbjIyMjY6XHRcdGlmIChXQVJOX09OKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSlcbjIyMjc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yMjI4Olx0XG4yMjI5Olx0XHRpZiAocGwtXHUwMDNlcGh5ZGV2KVxuMjIzMDpcdFx0XHRyZXR1cm4gLUVCVVNZO1xuMjIzMTpcdFxuMjIzMjpcdFx0aWYgKHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VtYWNfcmVxdWlyZXNfcnhjKVxuMjIzMzpcdFx0XHRmbGFncyB8PSBQSFlfRl9SWENfQUxXQVlTX09OO1xuMjIzNDpcdFxuMjIzNTpcdFx0cmV0dXJuIHBoeV9hdHRhY2hfZGlyZWN0KHBsLVx1MDAzZW5ldGRldiwgcGh5LCBmbGFncywgaW50ZXJmYWNlKTtcbjIyMzY6XHR9XG4yMjM3Olx0XG4yMjM4Olx0LyoqXG4yMjM5Olx0ICogcGh5bGlua19jb25uZWN0X3BoeSgpIC0gY29ubmVjdCBhIFBIWSB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzgyNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUEhZIERldmljZSBNYW5hZ2VtZW50IGluIFBoeWxpbmsqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBjb3JlIHJvdXRpbmVzIGZvciBQSFkgZGV2aWNlIG1hbmFnZW1lbnQgd2l0aGluIGBwaHlsaW5rYC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGV4YW1pbmluZyBgcGh5bGlua19icmluZ3VwX3BoeWAgYW5kIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYmVjYXVzZSB0aGVzZSBhcmUgdGhlIGNyaXRpY2FsIHBpZWNlcyB0aGF0IGhhbmRsZSBicmluZ2luZyBhIFBIWSBvbmxpbmUgYW5kIHRha2luZyBpdCBvZmZsaW5lLCByZXNwZWN0aXZlbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZXF1ZW5jaW5nIGFuZCB0aGUgcG90ZW50aWFsIGZhaWx1cmUgbW9kZXMuCgpgcGh5bGlua19icmluZ3VwX3BoeWAgaXMgaW50ZXJlc3RpbmcuIEkgc2VlIGEgYHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2VgIGFyZ3VtZW50LCB3aGljaCB0ZWxscyBtZSBpdCYjMzk7cyBkZWFsaW5nIHdpdGggdGhlIHNwZWNpZmljcyBvZiB0aGUgUEhZIGNvbm5lY3Rpb24gLSBNRElPLCBTR01JSSwgZXRjLiBUaGUgYHJldGAgdmFyaWFibGUgaXMgb2J2aW91c2x5IGNoZWNraW5nIGZvciBzb21lIHJldHVybiBjb2RlLCB3aGljaCBJJiMzOTtsbCBoYXZlIHRvIGludmVzdGlnYXRlIGxhdGVyIHRvIHNlZSB0aGUgc3BlY2lmaWMgZXJyb3Igc2NlbmFyaW9zIHRoYXQgY2FuIG9jY3VyLiBUaGUgY3JpdGljYWwgYml0IGhlcmUgaXMgdGhlIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgY2FsbC4gSXQmIzM5O3MgaW5zaWRlIGFuIGBpZiAocmV0KWAgYmxvY2ssIGFuZCB0aGVuIHdyYXBwZWQgYnkgYSBtdXRleCBsb2NrL3VubG9jay4gVGhpcyB0ZWxscyBtZSB0aGF0IGlmIHRoZSBicmluZ3VwICpmYWlscyosIGl0ICpjbGVhcnMqIHRoZSBQSFkgZGV2aWNlIGVudHJ5LiBUaGUgbXV0ZXgsIGBwbC0mZ3Q7cGh5ZGV2X211dGV4YCwgaXMgdXNlZCB0byBwcm90ZWN0IGNvbmN1cnJlbnQgYWNjZXNzIHRvIHRoZSBQSFkgZGV2aWNlIHN0cnVjdHVyZS4gU28sIGlmIHRoZSBQSFkgYnJpbmd1cCBmYWlscywgaXQgcmVsZWFzZXMgdGhlIFBIWS4KCk5vdywgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgIGlzIHNpbXBsZXIuIEl0IHJldHJpZXZlcyB0aGUgYHBoeWRldmAgdW5kZXIgdGhlIG11dGV4IGxvY2sgYW5kLCBpZiBvbmUgZXhpc3RzLCBpdCBjbGVhcnMgaXQgdmlhIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAuIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgKnRlYXJkb3duKiBvZiB0aGUgUEhZLCBhbmQsIHNpbWlsYXJseSwgcHJvdGVjdHMgYWNjZXNzIHRvIHRoZSBgcGh5ZGV2YCB3aXRoIGEgbXV0ZXguCgpJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YCB0byBzZWUgZXhhY3RseSB3aGF0JiMzOTtzIGJlaW5nIGRvbmUgd2hlbiB0aGUgUEhZIGlzIHJlbW92ZWQgb3IgYSBmYWlsdXJlIGlzIGVuY291bnRlcmVkLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIG1hZ2ljIChvciBwb3RlbnRpYWwgcHJvYmxlbXMpIGxpZS4gVGhlIG11dGV4IHByb3RlY3Rpb24gaXMgZ29vZCwgc3RhbmRhcmQgcHJhY3RpY2UsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHN0YXRlIHRoZSBgcGh5bGlua2Agc3RydWN0dXJlIGlzIGxlZnQgaW4gYWZ0ZXIgdGhlc2UgY2FsbHMsIGVzcGVjaWFsbHkgYWZ0ZXIgYSBicmluZ3VwIGZhaWx1cmUuIEFsc28sIEkgbmVlZCB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlcyBhbmQgZXJyb3IgaGFuZGxpbmcsIGVzcGVjaWFsbHkgdGhlIG1lYW5pbmcgb2YgdGhlIGByZXRgIHZhbHVlIGluIHRoZSBgcGh5bGlua19icmluZ3VwX3BoeWAgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfYnJpbmd1cF9waHkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjA4Nz1zdGF0aWMgdm9pZCBwaHlsaW5rX2NsZWFyX3BoeWRldihzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMDk3LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMDk4OnN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIwOTktXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjUzPWludCBwaHlsaW5rX2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjYtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjc6XHRyZXQgPSBwaHlsaW5rX2JyaW5ndXBfcGh5KHBsLCBwaHksIHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjMwNT1pbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0NC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM0NTpcdHJldCA9IHBoeWxpbmtfYnJpbmd1cF9waHkocGwsIHBoeV9kZXYsIHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzcxMT1zdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2NvbmZpZ19waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzc0OC1cdC8qIFRoaXMgd2lsbCB2YWxpZGF0ZSB0aGUgY29uZmlndXJhdGlvbiBmb3IgdXMuICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM3NDk6XHRyZXQgPSBwaHlsaW5rX2JyaW5ndXBfcGh5KHBsLCBwaHksIGNvbmZpZy5pbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzUwLVx0aWYgKHJldCBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTA0OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2NvbmZpZyBEaXZlIGZvciBQSFlMSUIgYW5kIFBIWUxJTksqKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBzdGF0dXMgb2YgUEhZTElCIGFuZCBQSFlMSU5LIGNvbmZpZ3VyYXRpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIGRlY2lzaW9ucyBhcmUgbWFkZSwgYW5kIGl0JiMzOTtsbCBnaXZlIG1lIGEgZ3JhbnVsYXIgdmlldyBvZiB0aGVpciBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgYW55IHJlbGV2YW50IG9wdGlvbnMuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIFBIWSBmcmFtZXdvcmtzIGFyZSBoYW5kbGVkIGluIHRoZSBzcGVjaWZpYyBwcm9qZWN0IG9yIGtlcm5lbCBJJiMzOTttIGxvb2tpbmcgYXQuIEFyZSB0aGV5IG1vZHVsYXI/IEJ1aWx0LWluPyBXaGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQ/IEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBwZXJoYXBzIHJlbGF0aW5nIHRvIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtcyBvciBuZXR3b3JraW5nIHN0YWNrcz8gSSBuZWVkIGEgY2xlYXIgbWVudGFsIHBpY3R1cmUgb2YgaG93IHRoZXNlIGFyZSBpbnRlZ3JhdGVkIGFuZCBjb25maWd1cmVkLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBlc3NlbnRpYWwga25vYnMgdG8gdHVybiwgdG8gdW5kZXJzdGFuZCBob3cgSSBjYW4gaW5mbHVlbmNlIG9yIG1vZGlmeSB0aGVpciBiZWhhdmlvdXIgYmFzZWQgb24gdGhlIGNvbnRleHQgb2Ygd2hhdCBJIGFtIHdvcmtpbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyAoUEhZTElCfFBIWUxJTkspJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY6Y29uZmlnIFBIWUxJTktcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTU6bWVudWNvbmZpZyBQSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2LVx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ2PWNvbmZpZyBPUEVOX0FMTElBTkNFX0hFTFBFUlNcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ5OmNvbmZpZyBQSFlMSUJfTEVEU1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTAtXHRkZWZfYm9vbCBPRlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTQ4MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpZ2dpbmcgRGVlcGVyIGludG8gdGhlIFBIWUxJQiBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSB3b3JraW5nIHdpdGggUEhZTElCL1BIWUxJTkssIGFuZCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZW5zdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBsdXJraW5nIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIGZsYWdzLiBZb3Uga25vdyBob3cgaXQgaXMg4oCTIGEgc2VlbWluZ2x5IHN0cmFpZ2h0Zm9yd2FyZCBjb21wb25lbnQgY2FuIGhhdmUgaGlkZGVuIG51YW5jZXMuIFRpbWUgdG8gZG91YmxlLWNoZWNrIGV2ZXJ5dGhpbmcsIGVzcGVjaWFsbHkgdG8gc2VlIHdoYXQgZWxzZSBjb3VsZCBiZSBsdXJraW5nIGluIHRoZSBzaGFkb3dzLiBJJiMzOTtsbCBzdGFydCBieSBleGFtaW5pbmcgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgYmVzdCBwbGFjZSB0byBmaW5kIHRoZSB0cnV0aCBhYm91dCB0aGUgb3B0aW9ucy4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gc2VlaW5nIHRoZSBmdWxsIHBpY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBQSFlMSU5LXG4gICA3Olx0XHR0cmlzdGF0ZVxuICAgODpcdFx0c2VsZWN0IFBIWUxJQlxuICAgOTpcdFx0c2VsZWN0IFNXUEhZXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxuICAxMjpcdFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXG4gIDEzOlx0XHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cbiAgMTQ6XHRcbiAgMTU6XHRtZW51Y29uZmlnIFBIWUxJQlxuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcbiAgMTk6XHRcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxuICAyMDpcdFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cbiAgMjE6XHRcbiAgMjI6XHRpZiBQSFlMSUJcbiAgMjM6XHRcbiAgMjQ6XHRjb25maWcgU1dQSFlcbiAgMjU6XHRcdGJvb2xcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgUEhZX1BBQ0tBR0VcbiAgMjg6XHRcdCB0cmlzdGF0ZVxuICAyOTpcdFxuICAzMDpcdGNvbmZpZyBMRURfVFJJR0dFUl9QSFlcbiAgMzE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBMRUQgdHJpZ2dlcnMgZm9yIHRyYWNraW5nIGxpbmsgc3RhdGVcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBBZGRzIHN1cHBvcnQgZm9yIGEgc2V0IG9mIExFRCB0cmlnZ2VyIGV2ZW50cyBwZXItUEhZLiAgTGlua1xuICAzNTpcdFx0ICBzdGF0ZSBjaGFuZ2Ugd2lsbCB0cmlnZ2VyIHRoZSBldmVudHMsIGZvciBjb25zdW1wdGlvbiBieSBhblxuICAzNjpcdFx0ICBMRUQgY2xhc3MgZHJpdmVyLiAgVGhlcmUgYXJlIHRyaWdnZXJzIGZvciBlYWNoIGxpbmsgc3BlZWQgY3VycmVudGx5XG4gIDM3Olx0XHQgIHN1cHBvcnRlZCBieSB0aGUgUEhZIGFuZCBhbHNvIGEgb25lIGNvbW1vbiBcJiMzNDtsaW5rXCYjMzQ7IHRyaWdnZXIgYXMgYVxuICAzODpcdFx0ICBsb2dpY2FsLW9yIG9mIGFsbCB0aGUgbGluayBzcGVlZCBvbmVzLlxuICAzOTpcdFx0ICBBbGwgdGhlc2UgdHJpZ2dlcnMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHBhdHRlcm46XG4gIDQwOlx0XHQgICAgICBcdTAwM2NtaWkgYnVzIGlkXHUwMDNlOlx1MDAzY3BoeVx1MDAzZTpcdTAwM2NzcGVlZFx1MDAzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjE2MgoJCQkJCQkJb3V0cHV0OiAyMDkKCQkJCQkJCXRob3VnaHRzOiA3NDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgUmVhY2hhYmlsaXR5IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgd2hpY2ggaXMgYSBjb21tb24gYmFzZS4gUGh5bGliIGFuZCBwaHlsaW5rIGFyZSBjb3JlIG5ldHdvcmtpbmcgUEhZIGxheWVyIGFic3RyYWN0aW9ucywgc28gdGhhdCYjMzk7cyBhIGtleSBzdGFydGluZyBwb2ludC4gR29vZC4KCkkgcmVjYWxsIHRoYXQgVVNCIEV0aGVybmV0IGRldmljZXMsIHRoaW5ncyBsaWtlIHRoZSBBU0lYIGNoaXBzLCBhcmUgZGVmaW5pdGVseSBlbXVsYXRlZCBhbmQgYWNjZXNzaWJsZSB0aHJvdWdoIHN5emthbGxlciYjMzk7cyBVU0IgZ2FkZ2V0LCByYXdfZ2FkZ2V0LCBvciB2aXJ0dWFsIFVTQiBlbXVsYXRpb24uIFRoYXQmIzM5O3MgYSBnb29kIHNpZ24uIEFsc28sIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIHdpdGhpbiB0aGUgc3RhY2sgbGlrZSBgZHNhX2xvb3BgIG9yIGBkdW1teWAgY2FuIGFsc28gZXhlcmNpc2UgcGh5bGliLiBQZXJmZWN0LgoKTm93LCBsb29raW5nIGF0IHRoZSBjb2RlIGNoYW5nZXMsIHdlIGhhdmUgbW9kaWZpY2F0aW9ucyB0byBzdGF0ZSBtYW5hZ2VtZW50LCB3aGljaCBpbmNsdWRlcyBpbnRlcnJ1cHQgaGFuZGxpbmcg4oCTIGBpcnFfc2F2ZWRgLCBgaXJxYCwgYHBoeV9yZXN0b3JlX3Byb2JlX2lycWAuIFRoZXJlJiMzOTtzIGFsc28gc29tZSBlcnJvciBoYW5kbGluZyBjbGVhbnVwLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGBlcnJvcl9tb2R1bGVfcHV0YCwgYG91dGAgbGFiZWxzLCBhbmQgYHJldGAgcGF0aHMuIFBsdXMsIGEgZmV3IG5ldyBoZWxwZXIgZnVuY3Rpb25zIGFyZSBpbnRyb2R1Y2VkOiBgcGh5X3Jlc3RvcmVfcHJvYmVfaXJxYCBhbmQgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YC4gSSBrbm93IHRoYXQgdGhlc2UgY2FuIGJlIHNpZ25pZmljYW50LgoKU2luY2UgdGhlIGNoYW5nZXMgaW1wYWN0IGVycm9yIGhhbmRsaW5nIGFuZCBjb3JlIGZ1bmN0aW9uYWxpdHksIGFuZCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggYSBjb3JlIHN1YnN5c3RlbSwgSSYjMzk7bSB0aGlua2luZyBgV29ydGhGdXp6aW5nPXRydWVgLgoKTmV4dCwgdGhlIGZvY3VzIHN5bWJvbHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoZSBtb3N0IHJlbGV2YW50IGVudHJ5IHBvaW50cy4gSSYjMzk7bSBmb2N1c2luZyBvbiBgcGh5X3Jlc3RvcmVfcHJvYmVfaXJxYCAoc3BlY2lmaWNhbGx5IGl0cyBjYWxsZXJzIC0gYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9wcm9iZWAsIGFuZCBgcGh5X3JlbW92ZWApIGFuZCBgcGh5bGlua19jbGVhcl9waHlkZXZgIChjYWxsZWQgYnkgYHBoeWxpbmtfYnJpbmd1cF9waHlgIGFuZCBgcGh5bGlua19kaXNjb25uZWN0X3BoeWApLiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCBgcGh5X2RldmljZV9jcmVhdGVgLCBgcGh5bGlua19icmluZ3VwX3BoeWAsIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYW5kIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCBhcmUgYWxzbyBmb2N1cyBzeW1ib2xzLiBPa2F5LCBpdCBzZWVtcyB0aGF0IHRoZXNlIGFyZW4mIzM5O3QgdWJpcXVpdG91c2x5IGhvdC1wYXRocywgYW5kIHRoZSBjb2RlIGNoYW5nZXMgYXJlIHNwZWNpZmljIHRvIHRoZSBwaHlsaWIvcGh5bGluayBsaWZlY3ljbGUuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zOiBgUEhZTElCYCBhbmQgYFBIWUxJTktgLiBHb29kLgoKTm93LCBsZXQmIzM5O3MgcmV2aWV3IHRoZSB0cmlhZ2UgcHJvY2Vzcy4gUmVhY2hhYmlsaXR5IGlzIHRoZSBwcmlvcml0eSwgc28gSSYjMzk7bGwgYmUgY29uZmlkZW50IGluIHRoZSB0cmlhZ2UgYXMgdGhlIHByaW1hcnkgY3JpdGVyaWEuIFRoZSBtb2RpZmllZCBjb2RlIHNlZW1zIHJlYWNoYWJsZSwgdGhlcmVmb3JlIGl0IHdhcnJhbnRzIGZ1enppbmcuIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgdHJ1ZWAuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSBub24tdWJpcXVpdG91cywgYW5kIHRoZSBlbmFibGUgY29uZmlndXJhdGlvbnMgYXJlLCBhcyBub3RlZCwgYFBIWUxJQmAgYW5kIGBQSFlMSU5LYC4gSSB3YW50IHRvIGVuc3VyZSBteSB0aGlua2luZyBpcyBjbGVhciBhbmQgY29tcGxldGUgYmVmb3JlIEkgc2V0IHRoZSByZXN1bHRzLgoKT2theSwgbGV0JiMzOTtzIHJldmlldyB0aGUgZm9jdXMgc3ltYm9scyBsaXN0OgotIGBwaHlfZGV2aWNlX2NyZWF0ZWAKLSBgcGh5X3Jlc3RvcmVfcHJvYmVfaXJxYCBhbmQgaXRzIGNhbGxlcnMgKGBwaHlfYXR0YWNoX2RpcmVjdGAsIGBwaHlfcHJvYmVgLCBgcGh5X3JlbW92ZWApCi0gYHBoeWxpbmtfYnJpbmd1cF9waHlgCi0gYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgCi0gYHBoeWxpbmtfY29ubmVjdF9waHlgCgpJIGJlbGlldmUgdGhpcyBpcyBhIGNvbmNpc2UgYW5kIGNvbXBsZXRlIGFuYWx5c2lzLiBJJiMzOTttIHJlYWR5IHRvIHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQSFlMSU5LJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywKICAgICYjMzQ7cGh5X3Byb2JlJiMzNDssCiAgICAmIzM0O3BoeV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0OywKICAgICYjMzQ7cGh5bGlua19icmluZ3VwX3BoeSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfY29ubmVjdF9waHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIHByZXNlcnZhdGlvbiBhbmQgcmVzdG9yYXRpb24gbG9naWMgYWNyb3NzIFBIWSBkZXZpY2UgcHJvYmUsIGF0dGFjaCwgZGV0YWNoLCBhbmQgcmVtb3ZlIGxpZmVjeWNsZSBwYXRocyBpbiBwaHlsaWIgKGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMpLCBhcyB3ZWxsIGFzIHBoeWxpbmsgY29ubmVjdGlvbiBlcnJvciB0ZWFyZG93biAoZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYykuIFRoZXNlIHN1YnN5c3RlbXMgYXJlIHJlYWNoYWJsZSB2aWEgdmlydHVhbGl6ZWQgbmV0d29ya2luZyBkcml2ZXJzIGFuZCBVU0IgRXRoZXJuZXQgZGV2aWNlIGVtdWxhdGlvbiAoZS5nLiBhc2l4LCBsYW43OHh4LCBzbXNjOTV4eCkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGRldGVjdCByZWdyZXNzaW9ucywgc3RhdGUgaW5jb25zaXN0ZW5jaWVzLCBhbmQgdGVhcmRvd24vZXJyb3ItaGFuZGxpbmcgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BIWUxJTksmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfYXR0YWNoX2RpcmVjdCYjMzQ7LAogICAgJiMzNDtwaHlfcHJvYmUmIzM0OywKICAgICYjMzQ7cGh5X3JlbW92ZSYjMzQ7LAogICAgJiMzNDtwaHlfZGV2aWNlX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2JyaW5ndXBfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZGlzY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19jb25uZWN0X3BoeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJUlEgcHJlc2VydmF0aW9uIGFuZCByZXN0b3JhdGlvbiBsb2dpYyBhY3Jvc3MgUEhZIGRldmljZSBwcm9iZSwgYXR0YWNoLCBkZXRhY2gsIGFuZCByZW1vdmUgbGlmZWN5Y2xlIHBhdGhzIGluIHBoeWxpYiAoZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyksIGFzIHdlbGwgYXMgcGh5bGluayBjb25uZWN0aW9uIGVycm9yIHRlYXJkb3duIChkcml2ZXJzL25ldC9waHkvcGh5bGluay5jKS4gVGhlc2Ugc3Vic3lzdGVtcyBhcmUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsaXplZCBuZXR3b3JraW5nIGRyaXZlcnMgYW5kIFVTQiBFdGhlcm5ldCBkZXZpY2UgZW11bGF0aW9uIChlLmcuIGFzaXgsIGxhbjc4eHgsIHNtc2M5NXh4KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gZGV0ZWN0IHJlZ3Jlc3Npb25zLCBzdGF0ZSBpbmNvbnNpc3RlbmNpZXMsIGFuZCB0ZWFyZG93bi9lcnJvci1oYW5kbGluZyBidWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIHJlc29sdmVzIHN0YXRlIHRyYWNraW5nIGFuZCBjbGVhbnVwIGlzc3VlcyBmb3IgUEhZIGludGVycnVwdCByZXN0b3JhdGlvbiAodmlhIGEgbmV3IGBpcnFfc2F2ZWRgIGZpZWxkKSBhbmQgZXJyb3IgaGFuZGxpbmcgZHVyaW5nIHBoeWxpbmsgYnJpbmd1cC9kaXNjb25uZWN0LlxuXG4xLiBNZW1vcnkgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb246IGBzdHJ1Y3QgcGh5X2RldmljZWAgaXMgYWxsb2NhdGVkIHdpdGggYGt6YWxsb2Nfb2JqYCwgYW5kIHRoZSBuZXcgYGlycV9zYXZlZGAgZmllbGQgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgUEhZX1BPTExgIHVwb24gY3JlYXRpb24gaW4gYHBoeV9kZXZpY2VfY3JlYXRlKClgLlxuMi4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2U6IEFsbCBvcGVyYXRpb25zIG9uIGBpcnFfc2F2ZWRgIGFuZCBgcGh5ZGV2YCBtZW1iZXJzIG9wZXJhdGUgb24gZnVsbHkgaW5pdGlhbGl6ZWQgc3RydWN0IGZpZWxkcyBhbmQgZG8gbm90IHJlYWQgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeS5cbjMuIE5vIGluZm8tbGVha3M6IE5vIHN0cnVjdHVyZXMsIHBhZGRpbmcsIG9yIGJ1ZmZlcnMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlIChubyBgY29weV90b191c2VyYCwgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bHMsIGV0Yy4pLlxuNC4gS0FTQU4gLyBMT0NLREVQIGFwcGxpY2FiaWxpdHk6IEFueSBpc3N1ZXMgaW50cm9kdWNlZCBpbiB0aGVzZSBwYXRocyAoc3VjaCBhcyBsb2NraW5nIG1pc3Rha2VzIGFyb3VuZCBgcGwtXHUwMDNlcGh5ZGV2X211dGV4YCBvciBsaWZldGltZS91c2UtYWZ0ZXItZnJlZSBpc3N1ZXMpIGFyZSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ODJjYjk1MGZiMjMyMGYwZjA2M2ViYjExNzRmMGFhNjZhZmMwOTRmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAwMTo0NjowNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IDk0YjJlODVlMDBhMzcuLmJhMTE3MTQ3NzIxYWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwpAQCAtNzcwLDYgJiM0Mzs3NzAsNyBAQCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsCiAJbWRpb2Rldi0mZ3Q7ZGV2aWNlX3JlbW92ZSA9IHBoeV9tZGlvX2RldmljZV9yZW1vdmU7CiAJbWRpb2Rldi0mZ3Q7cmVzZXRfc3RhdGUgPSAtMTsKIAomIzQzOwlkZXYtJmd0O2lycV9zYXZlZCA9IFBIWV9QT0xMOwogCWRldi0mZ3Q7c3BlZWQgPSBTUEVFRF9VTktOT1dOOwogCWRldi0mZ3Q7ZHVwbGV4ID0gRFVQTEVYX1VOS05PV047CiAJZGV2LSZndDtwYXVzZSA9IGZhbHNlOwpAQCAtMTczNCw2ICYjNDM7MTczNSwxOSBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KQogCXJldHVybiBwaHlkcnYtJmd0O2NvbmZpZ19pbnRyICZhbXA7JmFtcDsgcGh5ZHJ2LSZndDtoYW5kbGVfaW50ZXJydXB0OwogfQogCiYjNDM7LyogR2l2ZSBiYWNrIHdoYXQgcGh5X3Byb2JlKCkgdG9vaywgYnV0IG5vdCB3aGlsZSBwaHlfbGlua19jaGFuZ2UgbWFya3MgYQomIzQzOyAqIGNvbnN1bWVyOiBpdCBza2lwcGVkIHBoeV9yZXF1ZXN0X2ludGVycnVwdCgpIG9uIHRoZSB2YWx1ZSBpdCBzYXcsIHNvCiYjNDM7ICogcGh5X2Rpc2Nvbm5lY3QoKSB3b3VsZCBmcmVlIGFuIGludGVycnVwdCBub2JvZHkgcmVxdWVzdGVkLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX3Byb2JlX2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJaWYgKHBoeWRldi0mZ3Q7cGh5X2xpbmtfY2hhbmdlIHx8IHBoeWRldi0mZ3Q7aXJxX3NhdmVkID09IFBIWV9QT0xMKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlwaHlkZXYtJmd0O2lycSA9IHBoeWRldi0mZ3Q7aXJxX3NhdmVkOwomIzQzOwlwaHlkZXYtJmd0O2lycV9zYXZlZCA9IFBIWV9QT0xMOwomIzQzO30KJiM0MzsKIC8qKgogICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlcgogICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoCkBAIC0xODk2LDYgJiM0MzsxOTEwLDcgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiAKIGVycm9yX21vZHVsZV9wdXQ6CiAJbW9kdWxlX3B1dChkLSZndDtkcml2ZXItJmd0O293bmVyKTsKJiM0MzsJcGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7CiAJcGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuID0gMDsKIAlkLSZndDtkcml2ZXIgPSBOVUxMOwogZXJyb3JfcHV0X2RldmljZToKQEAgLTM2OTQsOCAmIzQzOzM3MDksMTAgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQogCS8qIERpc2FibGUgdGhlIGludGVycnVwdCBpZiB0aGUgUEhZIGRvZXNuJiMzOTt0IHN1cHBvcnQgaXQKIAkgKiBidXQgdGhlIGludGVycnVwdCBpcyBzdGlsbCBhIHZhbGlkIG9uZQogCSAqLwotCWlmICghcGh5X2Rydl9zdXBwb3J0c19pcnEocGh5ZHJ2KSAmYW1wOyZhbXA7IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkKJiM0MzsJaWYgKCFwaHlfZHJ2X3N1cHBvcnRzX2lycShwaHlkcnYpICZhbXA7JmFtcDsgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHlkZXYpKSB7CiYjNDM7CQlwaHlkZXYtJmd0O2lycV9zYXZlZCA9IHBoeWRldi0mZ3Q7aXJxOwogCQlwaHlkZXYtJmd0O2lycSA9IFBIWV9QT0xMOwomIzQzOwl9CiAKIAlpZiAocGh5ZHJ2LSZndDtmbGFncyAmYW1wOyBQSFlfSVNfSU5URVJOQUwpCiAJCXBoeWRldi0mZ3Q7aXNfaW50ZXJuYWwgPSB0cnVlOwpAQCAtMzgyMCw2ICYjNDM7MzgzNyw4IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlpZiAoIXBoeWRldi0mZ3Q7aXNfb25fc2ZwX21vZHVsZSkKIAkJcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyKHBoeWRldik7CiAKJiM0MzsJcGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7CiYjNDM7CiAJLyogUmUtYXNzZXJ0IHRoZSByZXNldCBzaWduYWwgb24gZXJyb3IgKi8KIAlwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7CiAKQEAgLTM4NDgsNiAmIzQzOzM4NjcsOCBAQCBzdGF0aWMgaW50IHBoeV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQogCWlmIChwaHlkZXYtJmd0O2RydiAmYW1wOyZhbXA7IHBoeWRldi0mZ3Q7ZHJ2LSZndDtyZW1vdmUpCiAJCXBoeWRldi0mZ3Q7ZHJ2LSZndDtyZW1vdmUocGh5ZGV2KTsKIAomIzQzOwlwaHlfcmVzdG9yZV9wcm9iZV9pcnEocGh5ZGV2KTsKJiM0MzsKIAkvKiBBc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqLwogCXBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKaW5kZXggM2VjM2JiNDM5MTA5NS4uNmE5MmZhYzU4ZjI1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCkBAIC0yMDgzLDYgJiM0MzsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogCXJldHVybiBwaHlsaW5rX3ZhbGlkYXRlKHBsLCBzdXBwb3J0ZWQsIHN0YXRlKTsKIH0KIAomIzQzOy8qIERpc2Fzc29jaWF0ZSBAcGh5IGZyb20gQHBsLiBDYWxsZXIgbXVzdCBob2xkIHBsLSZndDtwaHlkZXZfbXV0ZXguICovCiYjNDM7c3RhdGljIHZvaWQgcGh5bGlua19jbGVhcl9waHlkZXYoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KQomIzQzO3sKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwomIzQzOwlwbC0mZ3Q7cGh5ZGV2ID0gTlVMTDsKJiM0MzsJcGwtJmd0O3BoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7CiYjNDM7CXBsLSZndDttYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogCQkJICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiB7CkBAIC0yMTk3LDYgJiM0MzsyMjA5LDEyIEBAIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksCiAJaWYgKHJldCA9PSAwICZhbXA7JmFtcDsgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKQogCQlwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTsKIAomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3BoeWRldl9tdXRleCk7CiYjNDM7CQlwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMjM0NywxNSAmIzQzOzIzNjUsOCBAQCB2b2lkIHBoeWxpbmtfZGlzY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsKQogCiAJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwogCXBoeSA9IHBsLSZndDtwaHlkZXY7Ci0JaWYgKHBoeSkgewotCQltdXRleF9sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKLQkJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtzdGF0ZV9tdXRleCk7Ci0JCXBsLSZndDtwaHlkZXYgPSBOVUxMOwotCQlwbC0mZ3Q7cGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTsKLQkJcGwtJmd0O21hY190eF9jbGtfc3RvcCA9IGZhbHNlOwotCQltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwotCQltdXRleF91bmxvY2soJmFtcDtwaHktJmd0O2xvY2spOwotCX0KJiM0MzsJaWYgKHBoeSkKJiM0MzsJCXBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpOwogCW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwogCiAJaWYgKHBoeSkgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmgKaW5kZXggNWY4ZDY1ODY4ZTBmZi4uZDQ5MjQxNzU3MmEwZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9waHkuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeS5oCkBAIC01OTEsNiAmIzQzOzU5MSw4IEBAIHN0cnVjdCBwaHlfb2F0YzE0X3NxaV9jYXBhYmlsaXR5IHsKICAqICAgICAgLSBCaXRzIFszMToyNF0gYXJlIHJlc2VydmVkIGZvciBkZWZpbmluZyBnZW5lcmljCiAgKiAgICAgICAgUEhZIGRyaXZlciBiZWhhdmlvci4KICAqIEBpcnE6IElSUSBudW1iZXIgb2YgdGhlIFBIWSYjMzk7cyBpbnRlcnJ1cHQgKC0xIGlmIG5vbmUpCiYjNDM7ICogQGlycV9zYXZlZDogQGlycSBhcyBpdCB3YXMgYmVmb3JlIHBoeV9wcm9iZSgpIHJlcGxhY2VkIGl0IHdpdGggUEhZX1BPTEwsCiYjNDM7ICogICAgICAgICAgICAgb3IgUEhZX1BPTEwgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvIHJlc3RvcmUKICAqIEBwaHlsaW5rOiBQb2ludGVyIHRvIHBoeWxpbmsgaW5zdGFuY2UgZm9yIHRoaXMgUEhZCiAgKiBAc2ZwX2J1c19hdHRhY2hlZDogRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIFNGUCBidXMgaGFzIGJlZW4gYXR0YWNoZWQKICAqIEBzZnBfYnVzOiBTRlAgYnVzIGF0dGFjaGVkIHRvIHRoaXMgUEhZJiMzOTtzIGZpYmVyIHBvcnQKQEAgLTc2MSw2ICYjNDM7NzYzLDcgQEAgc3RydWN0IHBoeV9kZXZpY2UgewogCSAqIC0xIG1lYW5zIG5vIGludGVycnVwdAogCSAqLwogCWludCBpcnE7CiYjNDM7CWludCBpcnFfc2F2ZWQ7CiAKIAkvKiBwcml2YXRlIGRhdGEgcG9pbnRlciAqLwogCS8qIEZvciB1c2UgYnkgUEhZcyB0byBtYWludGFpbiBleHRyYSBzdGF0ZSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg0OQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDU5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBEcml2ZXIgUGF0Y2ggZm9yIFBvdGVudGlhbCBLTVNBTiBDb25jZXJucyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHNlZSBpZiB3ZSBuZWVkIHRvIGZpcmUgdXAgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbi4gRmlyc3QsIEkgbmVlZCB0byBicmVhayBkb3duIHRoZSBjaGFuZ2VzLiBUaGUgZGlmZiBzaG93cyBtb2RpZmljYXRpb25zIGluIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCwgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLCBhbmQgYGluY2x1ZGUvbGludXgvcGh5LmhgLiBJIHNlZSBjaGFuZ2VzIHRvIHRoZSBQSFkgaW50ZXJydXB0IGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHNhdmluZyBhbmQgcmVzdG9yaW5nIHRoZSBpbnRlcnJ1cHQgbnVtYmVyIChgaXJxX3NhdmVkYCkuCgpJbiBgcGh5X2RldmljZS5jYCwgdGhleSYjMzk7dmUgYWRkZWQgYGlycV9zYXZlZGAgdG8gdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3QuICBJdCBsb29rcyBsaWtlIHRoaXMgdmFyaWFibGUgaXMgYmVpbmcgdXNlZCB0byB0ZW1wb3JhcmlseSBzdG9yZSB0aGUgb3JpZ2luYWwgaW50ZXJydXB0IG51bWJlciAoYHBoeWRldi0mZ3Q7aXJxYCkgd2hlbiBpdCYjMzk7cyBiZWluZyBwb2xsZWQgaW5zdGVhZC4gIFRoZSBjb2RlIGluIGBwaHlfcHJvYmVgLCBgcGh5X3JlbW92ZWAsIGFuZCBgcGh5X2F0dGFjaF9kaXJlY3RgIHNlZW0gdG8gYmUgdGhlIGtleSBhcmVhcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgd2h5IHRoZSBpbnRlcnJ1cHQgaXMgYmVpbmcgJiMzNDtzYXZlZCYjMzQ7IGFuZCAmIzM0O3Jlc3RvcmVkLiYjMzQ7ICBUaGUgcmVmYWN0b3JpbmcgaW4gYHBoeWxpbmsuY2Agd2l0aCB0aGUgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YCBmdW5jdGlvbiBsb29rcyBsaWtlIGEgY2xlYW51cCBvcGVyYXRpb24sIHBvc3NpYmx5IHJlbGF0ZWQgdG8gZXJyb3IgaGFuZGxpbmcuCgpOb3csIHRoZSBjcml0aWNhbCBwYXJ0OiB1bmluaXRpYWxpemVkIG1lbW9yeSBhbmQgcG90ZW50aWFsIGluZm9ybWF0aW9uIGxlYWtzLiAgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGBpcnFfc2F2ZWRgIGlzbiYjMzk7dCBhIHZlY3RvciBmb3IgdnVsbmVyYWJpbGl0aWVzLiBJIHNlZSBgZGV2LSZndDtpcnFfc2F2ZWRgIGlzIGluaXRpYWxpemVkIHRvIGBQSFlfUE9MTGAgZHVyaW5nIGBwaHlfZGV2aWNlX2NyZWF0ZWAsIHdoaWNoIGlzIGdvb2QuICBJIG5lZWQgdG8gdmVyaWZ5IHRoZSBhbGxvY2F0aW9uIG9mIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IGl0c2VsZiwgYnV0IGl0IGFwcGVhcnMgdG8gYmUgaW5pdGlhbGl6ZWQgdmlhIGBremFsbG9jYC4gSSBhbHNvIGNoZWNrZWQgdGhlIGNvZGUgYW5kIHRoZXJlIGFwcGVhciB0byBiZSBubyBuZXcgaW5zdGFuY2VzIG9mIGBjb3B5X3RvX3VzZXJgLCBgcHV0X3VzZXJgLCBuZXRsaW5rIHNrYiBhdHRycywgaW9jdGxzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgbGVha3MuIEkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyB1bmluaXRpYWxpemVkIHN0cnVjdCBmaWVsZHMsIHVuaW5pdGlhbGl6ZWQgYnVmZmVycyBiZWluZyBwYXNzZWQgYXJvdW5kIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGJyYW5jaGluZy4gTm8gY2hhbmdlcyBzZWVtIHRvIGhhdmUgaW1wYWN0ZWQgdGhlIHVzZXItc3BhY2UgQUJJIHdoaWNoIHdvdWxkIGJlIGFub3RoZXIgcG9pbnQgb2YgY29uY2Vybi4KClRvIGJlIGV4dHJhIHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGBwaHlfZGV2aWNlX2NyZWF0ZWAgZnVuY3Rpb24gaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgIHRvIGNvbmZpcm0gdGhlIGluaXRpYWxpemF0aW9uIGFuZCBhbGxvY2F0aW9uIGRldGFpbHMsIGp1c3QgdG8gYmUgdGhvcm91Z2guIElmIHRoaXMgaXMgYSBzaW1wbGUgaW50ZXJydXB0IGhhbmRsaW5nIGNoYW5nZSB3aXRoIGEgcHJvcGVyIGluaXRpYWxpemF0aW9uIHBhdGgsIEkgZG9uJiMzOTt0IGV4cGVjdCBhbnkgS01TQU4gYWxhcm1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfZGV2aWNlX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM9NTUxPXN0YXRpYyB2b2lkIHRqYTExMDJfcDFfcmVnaXN0ZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU4NS1cdFx0LyogUmVhbCBQSFkgSUQgb2YgUG9ydCAxIGlzIDAgKi9cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU4NjpcdFx0cGh5ID0gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBQSFlfSURfVEpBMTEwMiwgZmFsc2UsIE5VTEwpO1xuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTg3LVx0XHRpZiAoSVNfRVJSKHBoeSkpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTItXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzo1OTM6XHRcdC8qIE92ZXJ3cml0ZSBwYXJlbnQgZGV2aWNlLiBwaHlfZGV2aWNlX2NyZWF0ZSgpIHNldCBwYXJlbnQgdG9cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU5NC1cdFx0ICogdGhlIG1paV9idXMtXHUwMDNlZGV2LCB3aGljaCBpcyBub3QgY29ycmVjdCBpbiBjYXNlLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NzI4PXN0YXRpYyBpbnQgcGh5X3JlcXVlc3RfZHJpdmVyX21vZHVsZShzdHJ1Y3QgcGh5X2RldmljZSAqZGV2LCB1MzIgcGh5X2lkKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNzQ3LVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo3NDg6c3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCB1MzIgcGh5X2lkLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy03NDktXHRcdFx0XHQgICAgIGJvb2wgaXNfYzQ1LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtODQwLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6ODQxOkVYUE9SVF9TWU1CT0wocGh5X2RldmljZV9jcmVhdGUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy04NDItXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMDcyPXN0cnVjdCBwaHlfZGV2aWNlICpnZXRfcGh5X2RldmljZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDk3LVx0XHRpZiAoIXIpXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEwOTg6XHRcdFx0cmV0dXJuIHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgcGh5X2lkLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDk5LVx0XHRcdFx0XHRcdCB0cnVlLCBcdTAwMjZjNDVfaWRzKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDEtXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjExMDI6XHRyZXR1cm4gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsIGlzX2M0NSwgXHUwMDI2YzQ1X2lkcyk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDMtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjgyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIFBIWSBEZXZpY2UgQ3JlYXRpb24qKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYHBoeV9kZXZpY2VfY3JlYXRlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkLiBUaGlzIGlzIGZ1bmRhbWVudGFsOyBhIG1pc3N0ZXAgaGVyZSBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiBtZW1vcnkgY29ycnVwdGlvbiBvciBhbGxvY2F0aW9uIGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJJiMzOTttIGdvaW5nIHRvIGZvbGxvdyB0aGUgZmxvdyBvZiBleGVjdXRpb24gYW5kIG1lbnRhbGx5IHBhcnNlIGVhY2ggYWxsb2NhdGlvbiBjYWxsLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBzb3VyY2Ugb2YgdGhlIG1lbW9yeSBhbmQgdGhlIGRhdGEgYmVpbmcgaW5pdGlhbGl6ZWQuIElzIGl0IG9uIHRoZSBzdGFjaywgZHluYW1pY2FsbHkgZnJvbSB0aGUgaGVhcCB2aWEgYGttYWxsb2NgLCBvciBwb3RlbnRpYWxseSB1c2luZyBzb21lIGtpbmQgb2YgY3VzdG9tIGFsbG9jYXRvcj8gQWxzbywgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgUEhZIGRhdGEgaXMgaGFuZGxlZC4gSXMgdGhlcmUgcHJvcGVyIGVycm9yIGNoZWNraW5nIGF0IGVhY2ggYWxsb2NhdGlvbiBzdGVwPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBtZW1vcnkgbGVha3MgaWYgYW4gYWxsb2NhdGlvbiBmYWlscyBwYXJ0IHdheSB0aHJvdWdoIHRoZSBwcm9jZXNzPyBJJiMzOTtsbCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgaG93IG90aGVyIHJlbGV2YW50IHN0cnVjdHVyZXMgYW5kIHBvaW50ZXJzIGFyZSBzZXQgaW4gcmVsYXRpb24gdG8gaXQgLSBzdWNoIGFzIHRoZSBwYXJlbnQgc3RydWN0dXJlIHBvaW50ZXJzLiBVbmRlcnN0YW5kaW5nIHRoZSBhbGxvY2F0aW9uIHN0cmF0ZWd5IHdpbGwgZGlyZWN0bHkgaW5mb3JtIGhvdyBJIGRlYWwgd2l0aCB0aGlzIGNvZGUgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3NDU6XHRcdHJldHVybiAwO1xuIDc0NjpcdH1cbiA3NDc6XHRcbiA3NDg6XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXG4gNzQ5Olx0XHRcdFx0XHQgICAgIGJvb2wgaXNfYzQ1LFxuIDc1MDpcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgcGh5X2M0NV9kZXZpY2VfaWRzICpjNDVfaWRzKVxuIDc1MTpcdHtcbiA3NTI6XHRcdHN0cnVjdCBwaHlfZGV2aWNlICpkZXY7XG4gNzUzOlx0XHRzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXY7XG4gNzU0Olx0XHRpbnQgcmV0ID0gMDtcbiA3NTU6XHRcbiA3NTY6XHRcdC8qIFdlIGFsbG9jYXRlIHRoZSBkZXZpY2UsIGFuZCBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHZhbHVlcyAqL1xuIDc1NzpcdFx0ZGV2ID0ga3phbGxvY19vYmooKmRldik7XG4gNzU4Olx0XHRpZiAoIWRldilcbiA3NTk6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4gNzYwOlx0XG4gNzYxOlx0XHRtZGlvZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZW1kaW87XG4gNzYyOlx0XHRtZGlvZGV2LVx1MDAzZWRldi5wYXJlbnQgPSBcdTAwMjZidXMtXHUwMDNlZGV2O1xuIDc2MzpcdFx0bWRpb2Rldi1cdTAwM2VkZXYuYnVzID0gXHUwMDI2bWRpb19idXNfdHlwZTtcbiA3NjQ6XHRcdG1kaW9kZXYtXHUwMDNlZGV2LnR5cGUgPSBcdTAwMjZtZGlvX2J1c19waHlfdHlwZTtcbiA3NjU6XHRcdG1kaW9kZXYtXHUwMDNlYnVzID0gYnVzO1xuIDc2NjpcdFx0bWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBwaHlfYnVzX21hdGNoO1xuIDc2NzpcdFx0bWRpb2Rldi1cdTAwM2VhZGRyID0gYWRkcjtcbiA3Njg6XHRcdG1kaW9kZXYtXHUwMDNlZmxhZ3MgPSBNRElPX0RFVklDRV9GTEFHX1BIWTtcbiA3Njk6XHRcdG1kaW9kZXYtXHUwMDNlZGV2aWNlX2ZyZWUgPSBwaHlfbWRpb19kZXZpY2VfZnJlZTtcbiA3NzA6XHRcdG1kaW9kZXYtXHUwMDNlZGV2aWNlX3JlbW92ZSA9IHBoeV9tZGlvX2RldmljZV9yZW1vdmU7XG4gNzcxOlx0XHRtZGlvZGV2LVx1MDAzZXJlc2V0X3N0YXRlID0gLTE7XG4gNzcyOlx0XG4gNzczOlx0XHRkZXYtXHUwMDNlaXJxX3NhdmVkID0gUEhZX1BPTEw7XG4gNzc0Olx0XHRkZXYtXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuIDc3NTpcdFx0ZGV2LVx1MDAzZWR1cGxleCA9IERVUExFWF9VTktOT1dOO1xuIDc3NjpcdFx0ZGV2LVx1MDAzZXBhdXNlID0gZmFsc2U7XG4gNzc3Olx0XHRkZXYtXHUwMDNlYXN5bV9wYXVzZSA9IGZhbHNlO1xuIDc3ODpcdFx0ZGV2LVx1MDAzZWxpbmsgPSAwO1xuIDc3OTpcdFx0ZGV2LVx1MDAzZXBvcnQgPSBQT1JUX1RQO1xuIDc4MDpcdFx0ZGV2LVx1MDAzZWludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJO1xuIDc4MTpcdFxuIDc4MjpcdFx0ZGV2LVx1MDAzZWF1dG9uZWcgPSBBVVRPTkVHX0VOQUJMRTtcbiA3ODM6XHRcbiA3ODQ6XHRcdGRldi1cdTAwM2VwbWFfZXh0YWJsZSA9IC1FTk9EQVRBO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjA4CgkJCQkJCQlvdXRwdXQ6IDI1NAoJCQkJCQkJdGhvdWdodHM6IDIxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBEZXZpY2UgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIHNlZSB0aGUgY29yZSBhbGxvY2F0aW9uIGlzIHVzaW5nIGBremFsbG9jX29iaigqZGV2KWAuIFRoYXQmIzM5O3MgZ29vZCwga2VlcHMgdGhpbmdzIGNsZWFuIHdpdGggdGhlIHplcm9lZCBtZW1vcnkuIFRoZSBjcnVjaWFsIHRoaW5nIGlzIHRoZSBleHBsaWNpdCBzZXR0aW5nIG9mIGBkZXYtJmd0O2lycV9zYXZlZCA9IFBIWV9QT0xMO2AuIFRoaXMgdGVsbHMgbWUgdGhlIGZvY3VzIGhlcmUgaXMgb24gcm9idXN0IElSUSBoYW5kbGluZywgYW5kIGdpdmVuIHRoZSBjb250ZXh0LCBJIHN1c3BlY3QgaXQmIzM5O3MgYWJvdXQgbWFuYWdpbmcgaW50ZXJydXB0IHN0YXRlIGR1cmluZyBlcnJvciBzY2VuYXJpb3MuCgpMb29raW5nIGNsb3NlciwgdGhlIGVudGlyZSBwYXRjaCBzZXJpZXMgYm9pbHMgZG93biB0byB0d28ga2V5IGFyZWFzOgoKMS4gICoqSVJRIHJlc3RvcmF0aW9uIG1hbmFnZW1lbnQ6KiogVGhlIHByaW1hcnkgZ29hbCBpcyB0byBwcmV2ZW50IHN0YXRlIGluY29uc2lzdGVuY2llcy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgc2l0dWF0aW9ucyB3aGVyZSBpbnRlcnJ1cHRzIG1pZ2h0IGJlIGluY29ycmVjdGx5IHJlLWVuYWJsZWQgb3IgZnJlZWQgd2hlbiB0aGUgdW5kZXJseWluZyBkcml2ZXIgZG9lc24mIzM5O3QgYWN0dWFsbHkgc3VwcG9ydCB0aGVtLiBTbywgaXQmIzM5O3MgYWJvdXQgYmVpbmcgdmVyeSBjYXJlZnVsIGFib3V0IHdoZXJlIGFuZCB3aGVuIHdlIG1hbmFnZSB0aGUgSVJRIHN0YXRlIG9mIHRoZSBQSFkgZGV2aWNlLCBlc3BlY2lhbGx5IGR1cmluZyBwcm9iZSwgcmVtb3ZlLCBhbmQgYXR0YWNoIG9wZXJhdGlvbnMgd2hlcmUgZmFpbHVyZXMgYXJlIHBvc3NpYmxlLiBUaGlzIGlzIHNtYXJ0LCBhdm9pZHMgc3VidGxlIHJhY2UgY29uZGl0aW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLgoyLiAgKipQaHlsaW5rIGVycm9yIGhhbmRsaW5nOioqIFRoZSBzZWNvbmQgYXJlYSBpcyBhIHJlZmFjdG9yaW5nIG9mIGhvdyB3ZSBoYW5kbGUgZXJyb3JzIHdoZW4gYnJpbmdpbmcgdXAgb3IgZGlzY29ubmVjdGluZyBhIHBoeWxpbmsuIFNwZWNpZmljYWxseSwgaWYgdGhlIGxpbmsgZXN0YWJsaXNobWVudCBmYWlscywgdGhpcyBwYXRjaCBjbGVhbmx5IGRpc2Fzc29jaWF0ZXMgdGhlIHBoeWxpbmsgZnJvbSB0aGUgUEhZIGRldmljZS4gTWFrZXMgc2Vuc2UsIGtlZXBzIHRoaW5ncyBjb25zaXN0ZW50IGFuZCBwcmV2ZW50cyBkYW5nbGluZyBwb2ludGVycyBvciBzdGFsZSBzdGF0ZXMuCgpUaGlzIHNlZW1zIHRvIGJlIGVudGlyZWx5IGludGVybmFsIGtlcm5lbCBsb2dpYywgc3BlY2lmaWNhbGx5IGFyb3VuZCBzdGF0ZSB0cmFja2luZyBhbmQgZXJyb3IgaGFuZGxpbmcgZm9yIGhvdyBwaHlsaW5rIGFuZCBwaHlfZGV2aWNlIGludGVyYWN0LiBUaGVyZSYjMzk7cyBubyB1c2VyLXNwYWNlIGludGVyYWN0aW9uLCBubyBtZW1vcnkgY29weWluZywgYW5kLCBpbXBvcnRhbnRseSwgbm8gaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBkYXRhIGxlYWtzLiBUaGF0IGlzIHJlYXNzdXJpbmcuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCwgaXQgc2VlbXMgYW55IHBvdGVudGlhbCBpc3N1ZXMg4oCTIHRoaW5ncyBsaWtlIGxvY2tpbmcgcHJvYmxlbXMsIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMsIG9yIGRvdWJsZS1mcmVlcyDigJMgYXJlIGlzc3VlcyB0aGF0IHdvdWxkIGJlIHJlYWRpbHkgZGV0ZWN0YWJsZSBieSBLQVNBTiBhbmQgTE9DS0RFUC4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGlzIHBhdGNoLCBJIHRoaW5rIHRoZSBhZGRpdGlvbiBvZiBLTVNBTiBvZmZlcnMgbm8gcmVhbCBiZW5lZml0IGFzIGl0IGRlYWxzIHdpdGggbWVtb3J5IHNhZmV0eSBpc3N1ZXMuCgpBbHJpZ2h0LCBJIHRoaW5rIEkgaGF2ZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGltcGxpY2F0aW9ucyBoZXJlLiBMZXQmIzM5O3MgYnVpbGQgdXAgdGhlIG5lY2Vzc2FyeSByZWFzb25pbmcgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIHJlc29sdmVzIHN0YXRlIHRyYWNraW5nIGFuZCBjbGVhbnVwIGlzc3VlcyBmb3IgUEhZIGludGVycnVwdCByZXN0b3JhdGlvbiAodmlhIGEgbmV3IGBpcnFfc2F2ZWRgIGZpZWxkKSBhbmQgZXJyb3IgaGFuZGxpbmcgZHVyaW5nIHBoeWxpbmsgYnJpbmd1cC9kaXNjb25uZWN0LlxuXG4xLiBNZW1vcnkgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb246IGBzdHJ1Y3QgcGh5X2RldmljZWAgaXMgYWxsb2NhdGVkIHdpdGggYGt6YWxsb2Nfb2JqYCwgYW5kIHRoZSBuZXcgYGlycV9zYXZlZGAgZmllbGQgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgUEhZX1BPTExgIHVwb24gY3JlYXRpb24gaW4gYHBoeV9kZXZpY2VfY3JlYXRlKClgLlxuMi4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2U6IEFsbCBvcGVyYXRpb25zIG9uIGBpcnFfc2F2ZWRgIGFuZCBgcGh5ZGV2YCBtZW1iZXJzIG9wZXJhdGUgb24gZnVsbHkgaW5pdGlhbGl6ZWQgc3RydWN0IGZpZWxkcyBhbmQgZG8gbm90IHJlYWQgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeS5cbjMuIE5vIGluZm8tbGVha3M6IE5vIHN0cnVjdHVyZXMsIHBhZGRpbmcsIG9yIGJ1ZmZlcnMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlIChubyBgY29weV90b191c2VyYCwgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bHMsIGV0Yy4pLlxuNC4gS0FTQU4gLyBMT0NLREVQIGFwcGxpY2FiaWxpdHk6IEFueSBpc3N1ZXMgaW50cm9kdWNlZCBpbiB0aGVzZSBwYXRocyAoc3VjaCBhcyBsb2NraW5nIG1pc3Rha2VzIGFyb3VuZCBgcGwtXHUwMDNlcGh5ZGV2X211dGV4YCBvciBsaWZldGltZS91c2UtYWZ0ZXItZnJlZSBpc3N1ZXMpIGFyZSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgcmVzb2x2ZXMgc3RhdGUgdHJhY2tpbmcgYW5kIGNsZWFudXAgaXNzdWVzIGZvciBQSFkgaW50ZXJydXB0IHJlc3RvcmF0aW9uICh2aWEgYSBuZXcgYGlycV9zYXZlZGAgZmllbGQpIGFuZCBlcnJvciBoYW5kbGluZyBkdXJpbmcgcGh5bGluayBicmluZ3VwL2Rpc2Nvbm5lY3QuXG5cbjEuIE1lbW9yeSBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbjogYHN0cnVjdCBwaHlfZGV2aWNlYCBpcyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY19vYmpgLCBhbmQgdGhlIG5ldyBgaXJxX3NhdmVkYCBmaWVsZCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGBQSFlfUE9MTGAgdXBvbiBjcmVhdGlvbiBpbiBgcGh5X2RldmljZV9jcmVhdGUoKWAuXG4yLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZTogQWxsIG9wZXJhdGlvbnMgb24gYGlycV9zYXZlZGAgYW5kIGBwaHlkZXZgIG1lbWJlcnMgb3BlcmF0ZSBvbiBmdWxseSBpbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzIGFuZCBkbyBub3QgcmVhZCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5LlxuMy4gTm8gaW5mby1sZWFrczogTm8gc3RydWN0dXJlcywgcGFkZGluZywgb3IgYnVmZmVycyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UgKG5vIGBjb3B5X3RvX3VzZXJgLCBuZXRsaW5rIGF0dHJpYnV0ZXMsIGlvY3RscywgZXRjLikuXG40LiBLQVNBTiAvIExPQ0tERVAgYXBwbGljYWJpbGl0eTogQW55IGlzc3VlcyBpbnRyb2R1Y2VkIGluIHRoZXNlIHBhdGhzIChzdWNoIGFzIGxvY2tpbmcgbWlzdGFrZXMgYXJvdW5kIGBwbC1cdTAwM2VwaHlkZXZfbXV0ZXhgIG9yIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcykgYXJlIGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MDYuMjM3MDQzNzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTQ3ODQ0NzM0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBIWUxJTktcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlfYXR0YWNoX2RpcmVjdFwiLFxuICAgIFwicGh5X3Byb2JlXCIsXG4gICAgXCJwaHlfcmVtb3ZlXCIsXG4gICAgXCJwaHlfZGV2aWNlX2NyZWF0ZVwiLFxuICAgIFwicGh5bGlua19icmluZ3VwX3BoeVwiLFxuICAgIFwicGh5bGlua19kaXNjb25uZWN0X3BoeVwiLFxuICAgIFwicGh5bGlua19jb25uZWN0X3BoeVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIHJlc29sdmVzIHN0YXRlIHRyYWNraW5nIGFuZCBjbGVhbnVwIGlzc3VlcyBmb3IgUEhZIGludGVycnVwdCByZXN0b3JhdGlvbiAodmlhIGEgbmV3IGBpcnFfc2F2ZWRgIGZpZWxkKSBhbmQgZXJyb3IgaGFuZGxpbmcgZHVyaW5nIHBoeWxpbmsgYnJpbmd1cC9kaXNjb25uZWN0LlxcblxcbjEuIE1lbW9yeSBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbjogYHN0cnVjdCBwaHlfZGV2aWNlYCBpcyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY19vYmpgLCBhbmQgdGhlIG5ldyBgaXJxX3NhdmVkYCBmaWVsZCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGBQSFlfUE9MTGAgdXBvbiBjcmVhdGlvbiBpbiBgcGh5X2RldmljZV9jcmVhdGUoKWAuXFxuMi4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2U6IEFsbCBvcGVyYXRpb25zIG9uIGBpcnFfc2F2ZWRgIGFuZCBgcGh5ZGV2YCBtZW1iZXJzIG9wZXJhdGUgb24gZnVsbHkgaW5pdGlhbGl6ZWQgc3RydWN0IGZpZWxkcyBhbmQgZG8gbm90IHJlYWQgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeS5cXG4zLiBObyBpbmZvLWxlYWtzOiBObyBzdHJ1Y3R1cmVzLCBwYWRkaW5nLCBvciBidWZmZXJzIGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSAobm8gYGNvcHlfdG9fdXNlcmAsIG5ldGxpbmsgYXR0cmlidXRlcywgaW9jdGxzLCBldGMuKS5cXG40LiBLQVNBTiAvIExPQ0tERVAgYXBwbGljYWJpbGl0eTogQW55IGlzc3VlcyBpbnRyb2R1Y2VkIGluIHRoZXNlIHBhdGhzIChzdWNoIGFzIGxvY2tpbmcgbWlzdGFrZXMgYXJvdW5kIGBwbC1cXHUwMDNlcGh5ZGV2X211dGV4YCBvciBsaWZldGltZS91c2UtYWZ0ZXItZnJlZSBpc3N1ZXMpIGFyZSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIHByZXNlcnZhdGlvbiBhbmQgcmVzdG9yYXRpb24gbG9naWMgYWNyb3NzIFBIWSBkZXZpY2UgcHJvYmUsIGF0dGFjaCwgZGV0YWNoLCBhbmQgcmVtb3ZlIGxpZmVjeWNsZSBwYXRocyBpbiBwaHlsaWIgKGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMpLCBhcyB3ZWxsIGFzIHBoeWxpbmsgY29ubmVjdGlvbiBlcnJvciB0ZWFyZG93biAoZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYykuIFRoZXNlIHN1YnN5c3RlbXMgYXJlIHJlYWNoYWJsZSB2aWEgdmlydHVhbGl6ZWQgbmV0d29ya2luZyBkcml2ZXJzIGFuZCBVU0IgRXRoZXJuZXQgZGV2aWNlIGVtdWxhdGlvbiAoZS5nLiBhc2l4LCBsYW43OHh4LCBzbXNjOTV4eCkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGRldGVjdCByZWdyZXNzaW9ucywgc3RhdGUgaW5jb25zaXN0ZW5jaWVzLCBhbmQgdGVhcmRvd24vZXJyb3ItaGFuZGxpbmcgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MDYuMjM3MDQ4MzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMTg3NjMwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDk4MmNiOTUwZmIyMzIwZjBmMDYzZWJiMTE3NGYwYWE2NmFmYzA5NGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBTZXAgNyAwMTo0NjowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbmluZGV4IDk0YjJlODVlMDBhMzcuLmJhMTE3MTQ3NzIxYWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcXG5AQCAtNzcwLDYgKzc3MCw3IEBAIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgdTMyIHBoeV9pZCxcXG4gXFx0bWRpb2Rldi1cXHUwMDNlZGV2aWNlX3JlbW92ZSA9IHBoeV9tZGlvX2RldmljZV9yZW1vdmU7XFxuIFxcdG1kaW9kZXYtXFx1MDAzZXJlc2V0X3N0YXRlID0gLTE7XFxuIFxcbitcXHRkZXYtXFx1MDAzZWlycV9zYXZlZCA9IFBIWV9QT0xMO1xcbiBcXHRkZXYtXFx1MDAzZXNwZWVkID0gU1BFRURfVU5LTk9XTjtcXG4gXFx0ZGV2LVxcdTAwM2VkdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcXG4gXFx0ZGV2LVxcdTAwM2VwYXVzZSA9IGZhbHNlO1xcbkBAIC0xNzM0LDYgKzE3MzUsMTkgQEAgc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcXG4gXFx0cmV0dXJuIHBoeWRydi1cXHUwMDNlY29uZmlnX2ludHIgXFx1MDAyNlxcdTAwMjYgcGh5ZHJ2LVxcdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xcbiB9XFxuIFxcbisvKiBHaXZlIGJhY2sgd2hhdCBwaHlfcHJvYmUoKSB0b29rLCBidXQgbm90IHdoaWxlIHBoeV9saW5rX2NoYW5nZSBtYXJrcyBhXFxuKyAqIGNvbnN1bWVyOiBpdCBza2lwcGVkIHBoeV9yZXF1ZXN0X2ludGVycnVwdCgpIG9uIHRoZSB2YWx1ZSBpdCBzYXcsIHNvXFxuKyAqIHBoeV9kaXNjb25uZWN0KCkgd291bGQgZnJlZSBhbiBpbnRlcnJ1cHQgbm9ib2R5IHJlcXVlc3RlZC5cXG4rICovXFxuK3N0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX3Byb2JlX2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbit7XFxuK1xcdGlmIChwaHlkZXYtXFx1MDAzZXBoeV9saW5rX2NoYW5nZSB8fCBwaHlkZXYtXFx1MDAzZWlycV9zYXZlZCA9PSBQSFlfUE9MTClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0cGh5ZGV2LVxcdTAwM2VpcnEgPSBwaHlkZXYtXFx1MDAzZWlycV9zYXZlZDtcXG4rXFx0cGh5ZGV2LVxcdTAwM2VpcnFfc2F2ZWQgPSBQSFlfUE9MTDtcXG4rfVxcbitcXG4gLyoqXFxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcXG4gICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXFxuQEAgLTE4OTYsNiArMTkxMCw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbiBcXG4gZXJyb3JfbW9kdWxlX3B1dDpcXG4gXFx0bW9kdWxlX3B1dChkLVxcdTAwM2Vkcml2ZXItXFx1MDAzZW93bmVyKTtcXG4rXFx0cGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7XFxuIFxcdHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XFxuIFxcdGQtXFx1MDAzZWRyaXZlciA9IE5VTEw7XFxuIGVycm9yX3B1dF9kZXZpY2U6XFxuQEAgLTM2OTQsOCArMzcwOSwxMCBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdC8qIERpc2FibGUgdGhlIGludGVycnVwdCBpZiB0aGUgUEhZIGRvZXNuJ3Qgc3VwcG9ydCBpdFxcbiBcXHQgKiBidXQgdGhlIGludGVycnVwdCBpcyBzdGlsbCBhIHZhbGlkIG9uZVxcbiBcXHQgKi9cXG4tXFx0aWYgKCFwaHlfZHJ2X3N1cHBvcnRzX2lycShwaHlkcnYpIFxcdTAwMjZcXHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSlcXG4rXFx0aWYgKCFwaHlfZHJ2X3N1cHBvcnRzX2lycShwaHlkcnYpIFxcdTAwMjZcXHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkge1xcbitcXHRcXHRwaHlkZXYtXFx1MDAzZWlycV9zYXZlZCA9IHBoeWRldi1cXHUwMDNlaXJxO1xcbiBcXHRcXHRwaHlkZXYtXFx1MDAzZWlycSA9IFBIWV9QT0xMO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAocGh5ZHJ2LVxcdTAwM2VmbGFncyBcXHUwMDI2IFBIWV9JU19JTlRFUk5BTClcXG4gXFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19pbnRlcm5hbCA9IHRydWU7XFxuQEAgLTM4MjAsNiArMzgzNyw4IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXFxuIFxcdFxcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xcbiBcXG4rXFx0cGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7XFxuK1xcbiBcXHQvKiBSZS1hc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCBvbiBlcnJvciAqL1xcbiBcXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XFxuIFxcbkBAIC0zODQ4LDYgKzM4NjcsOCBAQCBzdGF0aWMgaW50IHBoeV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHRpZiAocGh5ZGV2LVxcdTAwM2VkcnYgXFx1MDAyNlxcdTAwMjYgcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZXJlbW92ZSlcXG4gXFx0XFx0cGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZXJlbW92ZShwaHlkZXYpO1xcbiBcXG4rXFx0cGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7XFxuK1xcbiBcXHQvKiBBc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqL1xcbiBcXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDNlYzNiYjQzOTEwOTUuLjZhOTJmYWM1OGYyNTkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcXG5AQCAtMjA4Myw2ICsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbiBcXHRyZXR1cm4gcGh5bGlua192YWxpZGF0ZShwbCwgc3VwcG9ydGVkLCBzdGF0ZSk7XFxuIH1cXG4gXFxuKy8qIERpc2Fzc29jaWF0ZSBAcGh5IGZyb20gQHBsLiBDYWxsZXIgbXVzdCBob2xkIHBsLVxcdTAwM2VwaHlkZXZfbXV0ZXguICovXFxuK3N0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4re1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwaHktXFx1MDAzZWxvY2spO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbitcXHRwbC1cXHUwMDNlcGh5ZGV2ID0gTlVMTDtcXG4rXFx0cGwtXFx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XFxuK1xcdHBsLVxcdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuIFxcdFxcdFxcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbiB7XFxuQEAgLTIxOTcsNiArMjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbiBcXHRpZiAocmV0ID09IDAgXFx1MDAyNlxcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxcbiBcXHRcXHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcXG4gXFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuK1xcdFxcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC0yMzQ3LDE1ICsyMzY1LDggQEAgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbClcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbiBcXHRwaHkgPSBwbC1cXHUwMDNlcGh5ZGV2O1xcbi1cXHRpZiAocGh5KSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuLVxcdFxcdHBsLVxcdTAwM2VwaHlkZXYgPSBOVUxMO1xcbi1cXHRcXHRwbC1cXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcXG4tXFx0XFx0cGwtXFx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5LVxcdTAwM2Vsb2NrKTtcXG4tXFx0fVxcbitcXHRpZiAocGh5KVxcbitcXHRcXHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4gXFxuIFxcdGlmIChwaHkpIHtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmhcXG5pbmRleCA1ZjhkNjU4NjhlMGZmLi5kNDkyNDE3NTcyYTBmIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXFxuQEAgLTU5MSw2ICs1OTEsOCBAQCBzdHJ1Y3QgcGh5X29hdGMxNF9zcWlfY2FwYWJpbGl0eSB7XFxuICAqICAgICAgLSBCaXRzIFszMToyNF0gYXJlIHJlc2VydmVkIGZvciBkZWZpbmluZyBnZW5lcmljXFxuICAqICAgICAgICBQSFkgZHJpdmVyIGJlaGF2aW9yLlxcbiAgKiBAaXJxOiBJUlEgbnVtYmVyIG9mIHRoZSBQSFkncyBpbnRlcnJ1cHQgKC0xIGlmIG5vbmUpXFxuKyAqIEBpcnFfc2F2ZWQ6IEBpcnEgYXMgaXQgd2FzIGJlZm9yZSBwaHlfcHJvYmUoKSByZXBsYWNlZCBpdCB3aXRoIFBIWV9QT0xMLFxcbisgKiAgICAgICAgICAgICBvciBQSFlfUE9MTCB3aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmVzdG9yZVxcbiAgKiBAcGh5bGluazogUG9pbnRlciB0byBwaHlsaW5rIGluc3RhbmNlIGZvciB0aGlzIFBIWVxcbiAgKiBAc2ZwX2J1c19hdHRhY2hlZDogRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIFNGUCBidXMgaGFzIGJlZW4gYXR0YWNoZWRcXG4gICogQHNmcF9idXM6IFNGUCBidXMgYXR0YWNoZWQgdG8gdGhpcyBQSFkncyBmaWJlciBwb3J0XFxuQEAgLTc2MSw2ICs3NjMsNyBAQCBzdHJ1Y3QgcGh5X2RldmljZSB7XFxuIFxcdCAqIC0xIG1lYW5zIG5vIGludGVycnVwdFxcbiBcXHQgKi9cXG4gXFx0aW50IGlycTtcXG4rXFx0aW50IGlycV9zYXZlZDtcXG4gXFxuIFxcdC8qIHByaXZhdGUgZGF0YSBwb2ludGVyICovXFxuIFxcdC8qIEZvciB1c2UgYnkgUEhZcyB0byBtYWludGFpbiBleHRyYSBzdGF0ZSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjowNi42NTk2Mzk5MjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ2NTY2OTY0NDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUEhZTElOS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV9hdHRhY2hfZGlyZWN0XCIsXG4gICAgXCJwaHlfcHJvYmVcIixcbiAgICBcInBoeV9yZW1vdmVcIixcbiAgICBcInBoeV9kZXZpY2VfY3JlYXRlXCIsXG4gICAgXCJwaHlsaW5rX2JyaW5ndXBfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIHByZXNlcnZhdGlvbiBhbmQgcmVzdG9yYXRpb24gbG9naWMgYWNyb3NzIFBIWSBkZXZpY2UgcHJvYmUsIGF0dGFjaCwgZGV0YWNoLCBhbmQgcmVtb3ZlIGxpZmVjeWNsZSBwYXRocyBpbiBwaHlsaWIgKGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMpLCBhcyB3ZWxsIGFzIHBoeWxpbmsgY29ubmVjdGlvbiBlcnJvciB0ZWFyZG93biAoZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYykuIFRoZXNlIHN1YnN5c3RlbXMgYXJlIHJlYWNoYWJsZSB2aWEgdmlydHVhbGl6ZWQgbmV0d29ya2luZyBkcml2ZXJzIGFuZCBVU0IgRXRoZXJuZXQgZGV2aWNlIGVtdWxhdGlvbiAoZS5nLiBhc2l4LCBsYW43OHh4LCBzbXNjOTV4eCkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGRldGVjdCByZWdyZXNzaW9ucywgc3RhdGUgaW5jb25zaXN0ZW5jaWVzLCBhbmQgdGVhcmRvd24vZXJyb3ItaGFuZGxpbmcgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ODJjYjk1MGZiMjMyMGYwZjA2M2ViYjExNzRmMGFhNjZhZmMwOTRmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAwMTo0NjowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li5iYTExNzE0NzcyMWFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTc3MCw2ICs3NzAsNyBAQCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXG4gXHRtZGlvZGV2LVx1MDAzZWRldmljZV9yZW1vdmUgPSBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlO1xuIFx0bWRpb2Rldi1cdTAwM2VyZXNldF9zdGF0ZSA9IC0xO1xuIFxuK1x0ZGV2LVx1MDAzZWlycV9zYXZlZCA9IFBIWV9QT0xMO1xuIFx0ZGV2LVx1MDAzZXNwZWVkID0gU1BFRURfVU5LTk9XTjtcbiBcdGRldi1cdTAwM2VkdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcbiBcdGRldi1cdTAwM2VwYXVzZSA9IGZhbHNlO1xuQEAgLTE3MzQsNiArMTczNSwxOSBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG4gfVxuIFxuKy8qIEdpdmUgYmFjayB3aGF0IHBoeV9wcm9iZSgpIHRvb2ssIGJ1dCBub3Qgd2hpbGUgcGh5X2xpbmtfY2hhbmdlIG1hcmtzIGFcbisgKiBjb25zdW1lcjogaXQgc2tpcHBlZCBwaHlfcmVxdWVzdF9pbnRlcnJ1cHQoKSBvbiB0aGUgdmFsdWUgaXQgc2F3LCBzb1xuKyAqIHBoeV9kaXNjb25uZWN0KCkgd291bGQgZnJlZSBhbiBpbnRlcnJ1cHQgbm9ib2R5IHJlcXVlc3RlZC5cbisgKi9cbitzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9wcm9iZV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRpZiAocGh5ZGV2LVx1MDAzZXBoeV9saW5rX2NoYW5nZSB8fCBwaHlkZXYtXHUwMDNlaXJxX3NhdmVkID09IFBIWV9QT0xMKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRwaHlkZXYtXHUwMDNlaXJxID0gcGh5ZGV2LVx1MDAzZWlycV9zYXZlZDtcbitcdHBoeWRldi1cdTAwM2VpcnFfc2F2ZWQgPSBQSFlfUE9MTDtcbit9XG4rXG4gLyoqXG4gICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxuICAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxuQEAgLTE4OTYsNiArMTkxMCw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFxuIGVycm9yX21vZHVsZV9wdXQ6XG4gXHRtb2R1bGVfcHV0KGQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyKTtcbitcdHBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpO1xuIFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuIFx0ZC1cdTAwM2Vkcml2ZXIgPSBOVUxMO1xuIGVycm9yX3B1dF9kZXZpY2U6XG5AQCAtMzY5NCw4ICszNzA5LDEwIEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdC8qIERpc2FibGUgdGhlIGludGVycnVwdCBpZiB0aGUgUEhZIGRvZXNuJ3Qgc3VwcG9ydCBpdFxuIFx0ICogYnV0IHRoZSBpbnRlcnJ1cHQgaXMgc3RpbGwgYSB2YWxpZCBvbmVcbiBcdCAqL1xuLVx0aWYgKCFwaHlfZHJ2X3N1cHBvcnRzX2lycShwaHlkcnYpIFx1MDAyNlx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeWRldikpXG4rXHRpZiAoIXBoeV9kcnZfc3VwcG9ydHNfaXJxKHBoeWRydikgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkge1xuK1x0XHRwaHlkZXYtXHUwMDNlaXJxX3NhdmVkID0gcGh5ZGV2LVx1MDAzZWlycTtcbiBcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IFBIWV9QT0xMO1xuK1x0fVxuIFxuIFx0aWYgKHBoeWRydi1cdTAwM2VmbGFncyBcdTAwMjYgUEhZX0lTX0lOVEVSTkFMKVxuIFx0XHRwaHlkZXYtXHUwMDNlaXNfaW50ZXJuYWwgPSB0cnVlO1xuQEAgLTM4MjAsNiArMzgzNyw4IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4gXHRcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xuIFxuK1x0cGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7XG4rXG4gXHQvKiBSZS1hc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCBvbiBlcnJvciAqL1xuIFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xuIFxuQEAgLTM4NDgsNiArMzg2Nyw4IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUpXG4gXHRcdHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKHBoeWRldik7XG4gXG4rXHRwaHlfcmVzdG9yZV9wcm9iZV9pcnEocGh5ZGV2KTtcbitcbiBcdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDNlYzNiYjQzOTEwOTUuLjZhOTJmYWM1OGYyNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMjA4Myw2ICsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0cmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpO1xuIH1cbiBcbisvKiBEaXNhc3NvY2lhdGUgQHBoeSBmcm9tIEBwbC4gQ2FsbGVyIG11c3QgaG9sZCBwbC1cdTAwM2VwaHlkZXZfbXV0ZXguICovXG4rc3RhdGljIHZvaWQgcGh5bGlua19jbGVhcl9waHlkZXYoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuK3tcbitcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4rXHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuK1x0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbitcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuQEAgLTIxOTcsNiArMjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0aWYgKHJldCA9PSAwIFx1MDAyNlx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeSkpXG4gXHRcdHBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpO1xuIFxuK1x0aWYgKHJldCkge1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4rXHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbitcdH1cbitcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTIzNDcsMTUgKzIzNjUsOCBAQCB2b2lkIHBoeWxpbmtfZGlzY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsKVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuIFx0cGh5ID0gcGwtXHUwMDNlcGh5ZGV2O1xuLVx0aWYgKHBoeSkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdHBsLVx1MDAzZXBoeWRldiA9IE5VTEw7XG4tXHRcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4tXHRcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0fVxuK1x0aWYgKHBoeSlcbitcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbiBcbiBcdGlmIChwaHkpIHtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaFxuaW5kZXggNWY4ZDY1ODY4ZTBmZi4uZDQ5MjQxNzU3MmEwZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmhcbisrKyBiL2luY2x1ZGUvbGludXgvcGh5LmhcbkBAIC01OTEsNiArNTkxLDggQEAgc3RydWN0IHBoeV9vYXRjMTRfc3FpX2NhcGFiaWxpdHkge1xuICAqICAgICAgLSBCaXRzIFszMToyNF0gYXJlIHJlc2VydmVkIGZvciBkZWZpbmluZyBnZW5lcmljXG4gICogICAgICAgIFBIWSBkcml2ZXIgYmVoYXZpb3IuXG4gICogQGlycTogSVJRIG51bWJlciBvZiB0aGUgUEhZJ3MgaW50ZXJydXB0ICgtMSBpZiBub25lKVxuKyAqIEBpcnFfc2F2ZWQ6IEBpcnEgYXMgaXQgd2FzIGJlZm9yZSBwaHlfcHJvYmUoKSByZXBsYWNlZCBpdCB3aXRoIFBIWV9QT0xMLFxuKyAqICAgICAgICAgICAgIG9yIFBIWV9QT0xMIHdoZW4gdGhlcmUgaXMgbm90aGluZyB0byByZXN0b3JlXG4gICogQHBoeWxpbms6IFBvaW50ZXIgdG8gcGh5bGluayBpbnN0YW5jZSBmb3IgdGhpcyBQSFlcbiAgKiBAc2ZwX2J1c19hdHRhY2hlZDogRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIFNGUCBidXMgaGFzIGJlZW4gYXR0YWNoZWRcbiAgKiBAc2ZwX2J1czogU0ZQIGJ1cyBhdHRhY2hlZCB0byB0aGlzIFBIWSdzIGZpYmVyIHBvcnRcbkBAIC03NjEsNiArNzYzLDcgQEAgc3RydWN0IHBoeV9kZXZpY2Uge1xuIFx0ICogLTEgbWVhbnMgbm8gaW50ZXJydXB0XG4gXHQgKi9cbiBcdGludCBpcnE7XG4rXHRpbnQgaXJxX3NhdmVkO1xuIFxuIFx0LyogcHJpdmF0ZSBkYXRhIHBvaW50ZXIgKi9cbiBcdC8qIEZvciB1c2UgYnkgUEhZcyB0byBtYWludGFpbiBleHRyYSBzdGF0ZSAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MDYuNjU5NjQxNDcyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTI1OTIyNzE2MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRoaXMgS2VybmVsIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggc2VyaWVzIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGxldCdzIGRpdmUgaW50byBpdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGJlaW5nIGNoYW5nZWQgaGVyZS4gVGhlIGluc3RydWN0aW9ucyBhcmUgdG8gZXZhbHVhdGUgdGhpcyBwYXRjaCwgc28gbGV0J3MgZ2V0IGRvd24gdG8gaXQuXG5cblRoZSBmaWxlcyBpbXBhY3RlZCBhcmUgYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AsIGFuZCBgaW5jbHVkZS9saW51eC9waHkuaGAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBhYm91dCB0aGUgUEhZIGxheWVyLCB3aGljaCBtZWFucyBwaHlzaWNhbCBsYXllciB0cmFuc2NlaXZlcnMgYW5kIHRoZWlyIGtlcm5lbCBpbnRlcmFjdGlvbiwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgbmV0d29yayBpbnRlcmZhY2UuIEZpbmUsIGxldCdzIHNlZSB3aGVyZSB0aGUgY2hhbmdlcyBsYW5kLlxuXG5Mb29raW5nIGF0IGBwaHlfZGV2aWNlLmNgLCBJIHNlZSBhIGZvY3VzIG9uIElSUSBoYW5kbGluZyBhbmQgZXJyb3IgcGF0aHMgd2l0aGluIHRoZSBQSFkgZGV2aWNlIGNyZWF0aW9uLCBwcm9iaW5nLCBhbmQgcmVtb3ZhbCBwcm9jZXNzZXMuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgY2hhbmdlcyBpbnZvbHZlIGhvdyBJUlEgY29uZmlndXJhdGlvbnMgYXJlIHNhdmVkLCByZXN0b3JlZCwgYW5kIG1hbmFnZWQsIHBhcnRpY3VsYXJseSB3aGVuIGEgUEhZIGlzIGJlaW5nIGluaXRpYWxpemVkIG9yIGRlLWluaXRpYWxpemVkIGFuZCBlbmNvdW50ZXJpbmcgaXNzdWVzLiBTcGVjaWZpY2FsbHk6XG5cbiogICBJbiBgcGh5X2RldmljZV9jcmVhdGVgLCBgZGV2LVx1MDAzZWlycV9zYXZlZCA9IFBIWV9QT0xMO2AgaXMgc2V0LiBPa2F5LCB0aGF0J3MgYSBiYXNlbGluZS5cbiogICBUaGUgYHBoeV9yZXN0b3JlX3Byb2JlX2lycWAgZnVuY3Rpb24gaXMgaW50ZXJlc3RpbmcuIEl0J3Mgc2VsZWN0aXZlbHkgcmVzdG9yaW5nIGEgcHJldmlvdXNseSBzYXZlZCBJUlEgdmFsdWUsIGFuZCB0aGUgbG9naWMgaGVyZSBpcyBjcnVjaWFsOiBpdCBvbmx5IGRvZXMgdGhpcyBpZiBlaXRoZXIgdGhlIFBIWSBsaW5rIHN0YXRlIGNoYW5nZWQsIG9yIGlmIGl0IGhhZCBiZWVuIHNldCB0byBwb2xsaW5nLlxuKiAgIEkgc2VlIGBwaHlfcmVzdG9yZV9wcm9iZV9pcnFgIGlzIGNhbGxlZCBvbiB0aGUgZXJyb3IgcGF0aCBvZiBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X3Byb2JlYCwgYW5kIGBwaHlfcmVtb3ZlYC4gVGhpcyBjbGVhcmx5IHN1Z2dlc3RzIHRoYXQgaXQncyBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhpbmdzIGFyZSBjbGVhbmVkIHVwIHByb3Blcmx5IGluIGNhc2VzIHdoZXJlIFBIWSBhdHRhY2htZW50IG9yIGRldGFjaG1lbnQgZmFpbHMuIFRoZSBpbXBvcnRhbnQgdGhpbmcgaGVyZSBpcyB0byBtYWtlIHN1cmUgaXQgZG9lc24ndCBjYXVzZSBwcm9ibGVtcyBieSByZXNldHRpbmcgc29tZXRoaW5nLCBvciBsZWF2aW5nIHNvbWV0aGluZyB1bnNldCB0aGF0ICpzaG91bGQqIGJlIHNldC5cblxuTW92aW5nIHRvIGBwaHlsaW5rLmNgLCB0aGUgcGF0Y2ggc2VlbXMgdG8gY2VudGVyIGFyb3VuZCBhIGhlbHBlciBmdW5jdGlvbiwgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YC4gSXQgbG9va3MgbGlrZSBpdCBpcyBzaW1wbGlmeWluZyB0aGUgY2xlYXJpbmcgb2YgdGhlIFBIWSBkZXZpY2Ugd2l0aGluIHRoZSBQaHlsaW5rIGNvZGUuIFNvLCB0aGF0J3MgcHJvYmFibHkgYWJvdXQgZnJlZWluZyByZXNvdXJjZXMgYW5kIGNsZWFuaW5nIHVwIHJlZmVyZW5jZXMgd2hlbiBhIFBIWSBpcyBkaXNjb25uZWN0ZWQgb3IgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBicmluZ2luZyBhIFBIWSB1cC4gSSdtIHNlZWluZyBpdCBpbiB0aGUgZXJyb3IgcGF0aHMgb2YgYnJpbmd1cCBhbmQgZGlzY29ubmVjdCBmdW5jdGlvbnMuIFRoaXMgc3VnZ2VzdHMgYW4gZWZmb3J0IHRvIHN0cmVhbWxpbmUgUEhZIGRldmljZSBtYW5hZ2VtZW50IGluIHBoeWxpbmsgaW4gcmVzcG9uc2UgdG8gZmFpbHVyZXMgYW5kIGRldmljZSByZW1vdmFsLlxuXG5Ob3csIGFzIGFuIGV4cGVydCwgSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBoZXJlLiBEb2VzIHRoaXMgSVJRIGhhbmRsaW5nIGNoYW5nZSBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zPyBBcmUgdGhlcmUgYW55IHJhY2UgY29uZGl0aW9ucyB0aGF0IG1pZ2h0IGFwcGVhciBoZXJlPyBEb2VzIGl0IGhhbmRsZSBjb3JuZXIgY2FzZXMgY29ycmVjdGx5PyBNb3JlIGltcG9ydGFudGx5LCBob3cgZG9lcyB0aGlzIGFmZmVjdCBvdXIgYWJpbGl0eSB0byByZXByb2R1Y2UgYW5kIGRlYnVnIGlzc3VlcyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/XG5cblRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGVzZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiBwaHlsaWIsIHBoeWxpbmssIE1ESU8sIGFuZCBQSFkgZGV2aWNlcyBwbGF5IG91dCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBHQ0UsIGFuZCBlc3BlY2lhbGx5IHN5emthbGxlci4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBzeXprYWxsZXIgb3IgYSB1c2VyIHNwYWNlIHByb2Nlc3MgY2FuIGRpcmVjdGx5IGludGVyYWN0IHdpdGggdGhlc2UgUEhZIGNvbXBvbmVudHMgb3IgdGhlIE1ESU8gYnVzIHRvIHRyaWdnZXIgdGhpcyBjb2RlIGFuZCB2ZXJpZnkgaXRzIGNvcnJlY3RuZXNzLiBEb2VzIHRoaXMgdG91Y2ggYW55IG9mIHRoZSByZWxldmFudCBLY29uZmlncz8gSSBuZWVkIHRvIGxvb2sgYXQgZHJpdmVycy9uZXQvcGh5L0tjb25maWcgdG8gZW5zdXJlIG5vdGhpbmcgcmVsZXZhbnQgaGFzIGJlZW4gZW5hYmxlZCBvciBkaXNhYmxlZCBieSB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjM3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTM1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MTkuMjUxOTE1NDg5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NjU5NjM4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfUEhZTElCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT00PWxpYnBoeS15XFx0XFx0XFx0Oj0gcGh5Lm8gcGh5LWM0NS5vIHBoeS1jb3JlLm8gcGh5X2RldmljZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo5OmlmZGVmIENPTkZJR19QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTAtIyBidWlsdC1pbiB3aGVuZXZlciBQSFlMSUIgaXMgYnVpbHQtaW4gb3IgbW9kdWxlXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9MTY9bGlicGh5LSQoQ09ORklHX09QRU5fQUxMSUFOQ0VfSEVMUEVSUykgKz0gb3Blbl9hbGxpYW5jZV9oZWxwZXJzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTctXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19QSFlMSUIpXFx0XFx0Kz0gbWRpb19idXMub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0xOS1vYmotJChDT05GSUdfUEhZTElOSylcXHRcXHQrPSBwaHlsaW5rLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX1BIWUxJQilcXHRcXHQrPSBsaWJwaHkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfUEhZTElCKVxcdFxcdCs9IG1kaW9fZGV2cmVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMjItb2JqLSQoQ09ORklHX1BIWV9QQUNLQUdFKVxcdCs9IHBoeV9wYWNrYWdlLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzcwMD1zdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4MjItXFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozODIzOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXFx1MDAyNlxcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4MjQtXFx0XFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9Mzg0OD1zdGF0aWMgaW50IHBoeV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODUzLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mzg1NDpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZTElCX0xFRFMpIFxcdTAwMjZcXHUwMDI2ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzg1NS1cXHRcXHRwaHlfbGVkc191bnJlZ2lzdGVyKHBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc3R1YnMuYy0zLSAqIFN0dWJzIGZvciBQSFkgbGlicmFyeSBmdW5jdGlvbmFsaXR5IGNhbGxlZCBieSB0aGUgY29yZSBuZXR3b3JrIHN0YWNrLlxcbmRyaXZlcnMvbmV0L3BoeS9zdHVicy5jOjQ6ICogVGhlc2UgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIENPTkZJR19QSFlMSUIgY2FuIGJlIGEgbW9kdWxlLCBhbmQgYnVpbHQtaW5cXG5kcml2ZXJzL25ldC9waHkvc3R1YnMuYy01LSAqIGNvZGUgY2Fubm90IGRpcmVjdGx5IGNhbGwgc3ltYm9scyBleHBvcnRlZCBieSBtb2R1bGVzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjoxOS43Mzg1MTg5MDhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTAxODQyNDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUGh5bGliL1BoeWxpbmsgSW50ZWdyYXRpb24gaW4gU3l6a2FsbGVyIGFuZCBWaXJ0dWFsIEVudmlyb25tZW50cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBmaWd1cmUgb3V0IGhvdyBgcGh5bGliYCBvciBgcGh5bGlua2AgZnVuY3Rpb25hbGl0aWVzIGFyZSBhY2Nlc3NlZCBhbmQgcG90ZW50aWFsbHkgdGVzdGVkIHdpdGhpbiB0aGUgU3l6a2FsbGVyIGVudmlyb25tZW50LCBvciBldmVuIHdpdGhpbiBtb3JlIHN0YW5kYXJkIHZpcnR1YWwgc2V0dXBzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnRzLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhwbG9yZSB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgdmlydHVhbCBvciBlbXVsYXRlZCBkZXZpY2VzIHRoYXQgbWFrZSB1c2Ugb2YgdGhlc2UgbGlicmFyaWVzLiBBcmUgdGhlcmUgdmlydHVhbCBkcml2ZXJzLCBwZXJoYXBzIFVTQiBkcml2ZXJzIHRoYXQgaW50ZXJhY3Qgd2l0aCBhIHBoeWxpYiBhYnN0cmFjdGlvbj8gV2hhdCBhYm91dCBuZXRsaW5rIGludGVyZmFjZXMgdGhhdCB3b3VsZCByZXByZXNlbnQgYSBQSFkgY29ubmVjdGlvbiwgb3IgZHVtbXkgZGV2aWNlcyBkZXNpZ25lZCB0byB0ZXN0IFBIWSBpbnRlcmFjdGlvbnM/IEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBzdWNoIHRoaW5ncyBhcmUgb2Z0ZW4gcHJlc2VudCBpbiB0aGVzZSB0eXBlcyBvZiBlbnZpcm9ubWVudHMsIHNvIGl0IGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMsIEknbSBnb2luZyB0byBsZXZlcmFnZSBteSBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbCBhbmQgdXNlIHNvbWUgdGFyZ2V0ZWQgZ3JlcHMuIEkgbmVlZCB0byBzZWFyY2ggdGhlIGNvZGUgZm9yIGtleSBmdW5jdGlvbnMgYW5kIHN0cnVjdHVyZXMgZGlyZWN0bHkgcmVsYXRlZCB0byBQSFkgaW5pdGlhbGl6YXRpb24gYW5kIG1hbmFnZW1lbnQuIFNwZWNpZmljYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBpbnN0YW5jZXMgb2YgYHBoeWxpbmtfY3JlYXRlYCwgYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9jb25uZWN0YCwgYG1kaW9idXNfcmVnaXN0ZXJgLCBhbmQgYGZpeGVkX3BoeWAuIFRoZXNlIHNob3VsZCBhY3QgYXMgYnJlYWRjcnVtYnMsIGxlYWRpbmcgbWUgdG8gdGhlIHNwZWNpZmljIGRyaXZlcnMgb3IgbW9kdWxlcyB0aGF0IG1pZ2h0IGJlIHVzaW5nIHBoeWxpYiBvciBwaHlsaW5rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTE5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MjIuMjQwMzY0MTc2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTczMjAxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIocGh5bGlua19jcmVhdGV8cGh5X2Nvbm5lY3R8cGh5X2F0dGFjaF9kaXJlY3R8Zml4ZWRfcGh5KVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE2NTcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NjA3PXN0YXRpYyBpbnQgYmNtX3NmMl9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjU2LVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NjU3OlxcdC8qIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgb2ZfcGh5X2Nvbm5lY3QoKSB3aWxsIG5vdCB3b3JrIGJ5XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02NTgtXFx0ICogcmVtb3ZpbmcgdGhlICdwaGFuZGxlJyBhbmQgJ2xpbnV4LHBoYW5kbGUnIHByb3BlcnRpZXMgYW5kXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00Mzg9c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDEtXFx0XFx0aWYgKCFJU19FUlIocGh5ZGV2c1tpXSkpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQyOlxcdFxcdFxcdGZpeGVkX3BoeV91bnJlZ2lzdGVyKHBoeWRldnNbaV0pO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0My1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00ODI9c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOVU1fRklYRURfUEhZUzsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5MjpcXHRcXHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9OTY4PXN0YXRpYyBib29sIG5ldGNfcG9ydF9pc19lbWRpb19jb25zdW1lcihzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODQtXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6OTg1Oi8qIEN1cnJlbnRseSwgcGh5bGlua19vZl9waHlfY29ubmVjdCgpIGlzIGNhbGxlZCBieSBkc2FfdXNlcl9jcmVhdGUoKSxcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODYtICogc28gaWYgdGhlIHN3aXRjaCB1c2VzIHRoZSBleHRlcm5hbCBNRElPIGNvbnRyb2xsZXIgKGxpa2UgdGhlIEVNRElPXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTg3LSAqIGZ1bmN0aW9uKSB0byBtYW5hZ2UgdGhlIGV4dGVybmFsIFBIWXMuIFRoZSBNRElPIGJ1cyBtYXkgbm90IGJlXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6OTg4OiAqIGNyZWF0ZWQgd2hlbiBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgaXMgY2FsbGVkLCBzbyBpdCB3aWxsIHJldHVyblxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTk4OS0gKiBhbiBlcnJvciBhbmQgY2F1c2UgdGhlIHN3aXRjaCBkcml2ZXIgdG8gZmFpbCB0byBwcm9iZS5cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5OTA6ICogVGhpcyB3b3JrYXJvdW5kIGNhbiBiZSByZW1vdmVkIHdoZW4gRFNBIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTk5MS0gKiBjYWxscyBhcmUgbW92ZWQgZnJvbSBwcm9iZSgpIHRvIG5kb19vcGVuKCkuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz0zNjQ9c3RhdGljIGludCBheF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTM3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzozNzc6XFx0cmV0ID0gcGh5X2Nvbm5lY3RfZGlyZWN0KGRldiwgcGh5X2RldiwgYXhfaGFuZGxlX2xpbmtfY2hhbmdlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTM3OC1cXHRcXHRcXHRcXHQgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYz0xNTY5PXN0YXRpYyBpbnQgYWRpbjExMTBfcHJvYmVfbmV0ZGV2cyhzdHJ1Y3QgYWRpbjExMTBfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTE2MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM6MTYxMzpcXHRcXHRwb3J0X3ByaXYtXFx1MDAzZXBoeWRldiA9IHBoeV9jb25uZWN0KG5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy0xNjE0LVxcdFxcdFxcdFxcdFxcdFxcdHBoeWRldl9uYW1lKHBvcnRfcHJpdi1cXHUwMDNlcGh5ZGV2KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jPTY1MD1zdGF0aWMgaW50IGFkaW4xMTQwX3BoeV9pbml0KHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNjYzLVxcdHByaXYtXFx1MDAzZXBoeWRldi1cXHUwMDNlaXNfaW50ZXJuYWwgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjY2NDpcXHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QocHJpdi1cXHUwMDNlbmV0ZGV2LCBwcml2LVxcdTAwM2VwaHlkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNjY1LVxcdFxcdFxcdFxcdCBcXHUwMDI2YWRpbjExNDBfaGFuZGxlX2xpbmtfY2hhbmdlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYz0xMjUzPXN0YXRpYyBpbnQgZ3JldGhfbWRpb19wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMjY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM6MTI2ODpcXHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LCBwaHksIFxcdTAwMjZncmV0aF9saW5rX2NoYW5nZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEyNjktXFx0XFx0XFx0XFx0IGdyZXRoLVxcdTAwM2VnYml0X21hYyA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDogUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYz0zMjczPXN0YXRpYyBpbnQgZXQxMzF4X21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtMzI4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzozMjg0OlxcdHBoeWRldiA9IHBoeV9jb25uZWN0KG5ldGRldiwgcGh5ZGV2X25hbWUocGh5ZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy0zMjg1LVxcdFxcdFxcdCAgICAgXFx1MDAyNmV0MTMxeF9hZGp1c3RfbGluaywgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jPTE2Nz1zdGF0aWMgaW50IGVtYWNfbWRpb19wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYy0xNzQtXFx0LyogYXR0YWNoIHRoZSBtYWMgdG8gdGhlIHBoeSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmM6MTc1OlxcdHBoeWRldiA9IG9mX3BoeV9jb25uZWN0KGRiLVxcdTAwM2VuZGV2LCBkYi1cXHUwMDNlcGh5X25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYy0xNzYtXFx0XFx0XFx0XFx0XFx1MDAyNmVtYWNfaGFuZGxlX2xpbmtfY2hhbmdlLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTg3Nj1zdGF0aWMgaW50IHRzZV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtOTUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzo5NTI6XFx0cmV0ID0gcGh5bGlua19vZl9waHlfY29ubmVjdChwcml2LVxcdTAwM2VwaHlsaW5rLCBwcml2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZW9mX25vZGUsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy05NTMtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcXHRwcml2LVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE3LVxcdFxcdFxcdFxcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXFx1MDAzZWRldmljZS1cXHUwMDNlb2Zfbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jPTQ3Mj1zdGF0aWMgaW50IGF1MTAwMF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtNTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM6NTM5OlxcdHBoeWRldiA9IHBoeV9jb25uZWN0KGRldiwgcGh5ZGV2X25hbWUocGh5ZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jLTU0MC1cXHRcXHRcXHQgICAgIFxcdTAwMjZhdTEwMDBfYWRqdXN0X2xpbmssIFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYz05MzE9c3RhdGljIGludCB4Z2JlX3BoeV9maW5kX3BoeV9kZXZpY2Uoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzo5ODM6XFx0cmV0ID0gcGh5X2F0dGFjaF9kaXJlY3QocGRhdGEtXFx1MDAzZW5ldGRldiwgcGh5ZGV2LCBwaHlkZXYtXFx1MDAzZWRldl9mbGFncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4NC1cXHRcXHRcXHRcXHRQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTg1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk4NjpcXHRcXHRuZXRkZXZfZXJyKHBkYXRhLVxcdTAwM2VuZXRkZXYsIFxcXCJwaHlfYXR0YWNoX2RpcmVjdCBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTg3LVxcdFxcdHBoeV9kZXZpY2VfcmVtb3ZlKHBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTk4PWludCB4Z2VfbWRpb19jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEyOC1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMjk6XFx0cGh5ZGV2ID0gcGh5X2Nvbm5lY3QobmRldiwgcGh5ZGV2X25hbWUocGh5ZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEzMC1cXHRcXHRcXHQgICAgIFxcdTAwMjZ4Z2VfYWRqdXN0X2xpbmssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTgxOT1zdGF0aWMgc3RydWN0IGFjcGlfZGV2aWNlICphY3BpX3BoeV9maW5kX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTgzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjgzNzppbnQgeGdlbmVfZW5ldF9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTgzOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg0Ny1cXHRcXHRcXHRucCA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwicGh5LWhhbmRsZVxcXCIsIGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6ODQ4OlxcdFxcdFxcdHBoeV9kZXYgPSBvZl9waHlfY29ubmVjdChuZGV2LCBucCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg0OS1cXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNnhnZW5lX2VuZXRfYWRqdXN0X2xpbmssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg2OC1cXHRcXHRpZiAoIXBoeV9kZXYgfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjg2OTpcXHRcXHQgICAgcGh5X2Nvbm5lY3RfZGlyZWN0KG5kZXYsIHBoeV9kZXYsIFxcdTAwMjZ4Z2VuZV9lbmV0X2FkanVzdF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODcwLVxcdFxcdFxcdFxcdCAgICAgICBwZGF0YS1cXHUwMDNlcGh5X21vZGUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTkzOT1pbnQgeGdlbmVfZW5ldF9tZGlvX2NvbmZpZyhzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk2NjpcXHRyZXQgPSB4Z2VuZV9lbmV0X3BoeV9jb25uZWN0KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTY3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5oPTQyNj1ib29sIHhnZW5lX3JpbmdfbWdyX2luaXQoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3Lmg6NDI3OmludCB4Z2VuZV9lbmV0X3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5oLTQyOC12b2lkIHhnZW5lX2VuZXRfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uYz0xNjUxPXN0YXRpYyB2b2lkIHhnZW5lX2VuZXRfY2hlY2tfcGh5X2hhbmRsZShzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmMtMTY2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmM6MTY2MTpcXHRyZXQgPSB4Z2VuZV9lbmV0X3BoeV9jb25uZWN0KHBkYXRhLVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmMtMTY2Mi1cXHRpZiAoIXJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYz04NTg9aW50IGFyY19lbWFjX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTk4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmM6OTg5OlxcdHBoeWRldiA9IG9mX3BoeV9jb25uZWN0KG5kZXYsIHBoeV9ub2RlLCBhcmNfZW1hY19hZGp1c3RfbGluaywgMCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmMtOTkwLVxcdFxcdFxcdFxcdGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTk5MS1cXHRpZiAoIXBoeWRldikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYzo5OTI6XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJvZl9waHlfY29ubmVjdCgpIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTk5My1cXHRcXHRlcnIgPSAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM9OTY2PXN0YXRpYyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwNzYtXFx0XFx0IGF4X2xvY2FsLVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VpZCwgQVg4ODc5NkNfUEhZX0lEKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYzoxMDc3OlxcdGF4X2xvY2FsLVxcdTAwM2VwaHlkZXYgPSBwaHlfY29ubmVjdChheF9sb2NhbC1cXHUwMDNlbmRldiwgcGh5X2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwNzgtXFx0XFx0XFx0XFx0ICAgICAgIGF4ODg3OTZjX2hhbmRsZV9saW5rX2NoYW5nZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmFnLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVxcdFxcdFxcdFxcdCBhZy1cXHUwMDNlcGh5X2lmX21vZGUsIFxcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTQwND1zdGF0aWMgaW50IGFnNzF4eF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xNDA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTQxMDpcXHRyZXQgPSBwaHlsaW5rX29mX3BoeV9jb25uZWN0KGFnLVxcdTAwM2VwaHlsaW5rLCBhZy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2Lm9mX25vZGUsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTQxMS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxNDEyOlxcdFxcdG5ldGlmX2VycihhZywgbGluaywgbmRldiwgXFxcInBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QgZmlsZWQgd2l0aCBlcnI6ICVpXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTQxMy1cXHRcXHRcXHQgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmM9MTA3Nj1zdGF0aWMgaW50IGJjbWFzcF9waHlfYXR0YWNoKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYy0xMDg0LVxcdHBoeV9pZmFjZSA9IGJjbWFzcF9waHlfaWZhY2VfZm9yX2Nvbm5lY3QoaW50Zi1cXHUwMDNlcGh5X2ludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jOjEwODU6XFx0cGh5ZGV2ID0gb2ZfcGh5X2Nvbm5lY3QoaW50Zi1cXHUwMDNlbmRldiwgaW50Zi1cXHUwMDNlcGh5X2RuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYy0xMDg2LVxcdFxcdFxcdFxcdGJjbWFzcF9hZGpfbGluaywgcGh5X2ZsYWdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjczOlxcdFxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzQtXFx0XFx0aWYgKCFJU19FUlIocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyODAtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIyODE6XFx0XFx0ZXJyID0gcGh5X2Nvbm5lY3RfZGlyZWN0KGJwLVxcdTAwM2VkZXYsIHBoeWRldiwgXFx1MDAyNmI0NF9hZGp1c3RfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjgyLVxcdFxcdFxcdFxcdFxcdCBQSFlfSU5URVJGQUNFX01PREVfTUlJKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIzMTM9c3RhdGljIHZvaWQgYjQ0X3VucmVnaXN0ZXJfcGh5X29uZShzdHJ1Y3QgYjQ0ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIzMjItXFx0aWYgKHBoeV9pc19wc2V1ZG9fZml4ZWRfbGluayhwaHlkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIzMjM6XFx0XFx0Zml4ZWRfcGh5X3VucmVnaXN0ZXIocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMzI0LVxcdG1kaW9idXNfdW5yZWdpc3RlcihtaWlfYnVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTg5MD1zdGF0aWMgaW50IGJjbV9lbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTkwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzo5MTA6XFx0XFx0cGh5ZGV2ID0gcGh5X2Nvbm5lY3QoZGV2LCBwaHlfaWQsIGJjbV9lbmV0X2FkanVzdF9waHlfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy05MTEtXFx0XFx0XFx0XFx0ICAgICBQSFlfSU5URVJGQUNFX01PREVfTUlJKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYz0xOTI4PXN0YXRpYyBpbnQgYmNtX3N5c3BvcnRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jLTE5NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jOjE5Njc6XFx0cGh5ZGV2ID0gb2ZfcGh5X2Nvbm5lY3QoZGV2LCBwcml2LVxcdTAwM2VwaHlfZG4sIGJjbV9zeXNwb3J0X2Fkal9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0xOTY4LVxcdFxcdFxcdFxcdDAsIHByaXYtXFx1MDAzZXBoeV9pbnRlcmZhY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jPTc5PXN0YXRpYyB2b2lkIGJjbWFfYmdtYWNfY21uX21hc2tzZXQzMihzdHJ1Y3QgYmdtYWMgKmJnbWFjLCB1MTYgb2Zmc2V0LCB1MzIgbWFzayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy04NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmM6ODU6c3RhdGljIGludCBiY21hX3BoeV9jb25uZWN0KHN0cnVjdCBiZ21hYyAqYmdtYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jLTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy05OS1cXHRcXHRcXHQgYmdtYWMtXFx1MDAzZXBoeWFkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYzoxMDA6XFx0XFx0cGh5X2RldiA9IHBoeV9jb25uZWN0KGJnbWFjLVxcdTAwM2VuZXRfZGV2LCBidXNfaWQsIGJnbWFjX2FkanVzdF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy0xMDEtXFx0XFx0XFx0XFx0ICAgICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmMtMTEwLVxcdC8qIEFzc3VtZSBhIGZpeGVkIGxpbmsgdG8gdGhlIHN3aXRjaCBwb3J0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jOjExMTpcXHRyZXR1cm4gYmdtYWNfcGh5X2Nvbm5lY3RfZGlyZWN0KGJnbWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmMtMTEyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYz0xMjQ9c3RhdGljIGludCBiZ21hY19wcm9iZShzdHJ1Y3QgYmNtYV9kZXZpY2UgKmNvcmUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmMtMzExLVxcdGJnbWFjLVxcdTAwM2VjbW5fbWFza3NldDMyID0gYmNtYV9iZ21hY19jbW5fbWFza3NldDMyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYzozMTI6XFx0YmdtYWMtXFx1MDAzZXBoeV9jb25uZWN0ID0gYmNtYV9waHlfY29ubmVjdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmMtMzEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYz0xMTg9c3RhdGljIHZvaWQgYmdtYWNfbmljcG1fc3BlZWRfc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0xNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYzoxNTE6c3RhdGljIGludCBwbGF0Zm9ybV9waHlfY29ubmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmMtMTUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmM9MTcxPXN0YXRpYyBpbnQgYmdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmMtMjQyLVxcdFxcdG9mX25vZGVfcHV0KHBoeV9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jOjI0MzpcXHRcXHRiZ21hYy1cXHUwMDNlcGh5X2Nvbm5lY3QgPSBwbGF0Zm9ybV9waHlfY29ubmVjdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jLTI0NC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmM6MjQ1OlxcdFxcdGJnbWFjLVxcdTAwM2VwaHlfY29ubmVjdCA9IGJnbWFjX3BoeV9jb25uZWN0X2RpcmVjdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jLTI0Ni1cXHRcXHRiZ21hYy1cXHUwMDNlZmVhdHVyZV9mbGFncyB8PSBCR01BQ19GRUFUX0ZPUkNFX1NQRUVEXzI1MDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jPTE0Mzc9RVhQT1JUX1NZTUJPTF9HUEwoYmdtYWNfYWRqdXN0X2xpbmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQzOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE0Mzk6aW50IGJnbWFjX3BoeV9jb25uZWN0X2RpcmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ0MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNDQxOlxcdHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzIGZwaHlfc3RhdHVzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ0Mi1cXHRcXHQubGluayA9IDEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNDQ5OlxcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXFx1MDAyNmZwaHlfc3RhdHVzLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NTAtXFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM6MTQ1NTpcXHRlcnIgPSBwaHlfY29ubmVjdF9kaXJlY3QoYmdtYWMtXFx1MDAzZW5ldF9kZXYsIHBoeV9kZXYsIGJnbWFjX2FkanVzdF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ1Ni1cXHRcXHRcXHRcXHQgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NjMtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM6MTQ2NDpFWFBPUlRfU1lNQk9MX0dQTChiZ21hY19waHlfY29ubmVjdF9kaXJlY3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM9MTQ4Nz1pbnQgYmdtYWNfZW5ldF9wcm9iZShzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM6MTUzMzpcXHRlcnIgPSBiZ21hY19waHlfY29ubmVjdChiZ21hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNTM0LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmg9NDM5PXN0cnVjdCBiZ21hYyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oLTQ5NS1cXHRcXHRcXHQgICAgICB1MzIgc2V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oOjQ5NjpcXHRpbnQgKCpwaHlfY29ubmVjdCkoc3RydWN0IGJnbWFjICpiZ21hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaC00OTctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmg9NTAyPXZvaWQgYmdtYWNfYWRqdXN0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmg6NTAzOmludCBiZ21hY19waHlfY29ubmVjdF9kaXJlY3Qoc3RydWN0IGJnbWFjICpiZ21hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaC01MDQtaW50IGJnbWFjX2VuZXRfc3VzcGVuZChzdHJ1Y3QgYmdtYWMgKmJnbWFjKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmg9NTgzPXN0YXRpYyBpbmxpbmUgdm9pZCBiZ21hY191bWFjX21hc2tzZXQoc3RydWN0IGJnbWFjICpiZ21hYywgdTE2IG9mZnNldCwgdTMyIG1hc2ssIHUzMiBzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oLTU4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oOjU4ODpzdGF0aWMgaW5saW5lIGludCBiZ21hY19waHlfY29ubmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmgtNTg5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oOjU5MDpcXHRyZXR1cm4gYmdtYWMtXFx1MDAzZXBoeV9jb25uZWN0KGJnbWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oLTU5MS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYz05Nz12b2lkIGJjbWdlbmV0X21paV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjExNzpzdGF0aWMgaW50IGJjbWdlbmV0X2ZpeGVkX3BoeV9saW5rX3VwZGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjExODpcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMTE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTE4Nj1zdGF0aWMgdm9pZCBiY21nZW5ldF9tb2NhX3BoeV9zZXR1cChzdHJ1Y3QgYmNtZ2VuZXRfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTE4OC1cXHRpZiAoYmNtZ2VuZXRfaGFzX21vY2FfbGlua19kZXQocHJpdikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6MTg5OlxcdFxcdGZpeGVkX3BoeV9zZXRfbGlua191cGRhdGUocHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VwaHlkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6MTkwOlxcdFxcdFxcdFxcdFxcdCAgYmNtZ2VuZXRfZml4ZWRfcGh5X2xpbmtfdXBkYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0xOTEtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MzAxPWludCBiY21nZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTM1MC1cXHRpZiAoZG4pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzozNTE6XFx0XFx0cGh5ZGV2ID0gb2ZfcGh5X2Nvbm5lY3QoZGV2LCBwcml2LVxcdTAwM2VwaHlfZG4sIGJjbWdlbmV0X21paV9zZXR1cCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0zNTItXFx0XFx0XFx0XFx0XFx0cGh5X2ZsYWdzLCBwaHlfaWZhY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMzgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjM4MTpcXHRcXHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LCBwaHlkZXYsIGJjbWdlbmV0X21paV9zZXR1cCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0zODItXFx0XFx0XFx0XFx0XFx0IHBoeV9pZmFjZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM9MjMyND1zdGF0aWMgaW50IHNibWFjX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jLTIzMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jOjIzMzU6XFx0cGh5X2RldiA9IHBoeV9jb25uZWN0KGRldiwgZGV2X25hbWUoXFx1MDAyNnBoeV9kZXYtXFx1MDAzZW1kaW8uZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjMzNi1cXHRcXHRcXHQgICAgICBcXHUwMDI2c2JtYWNfbWlpX3BvbGwsIFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTIwODQ9c3RhdGljIGludCB0ZzNfcGh5X2luaXQoc3RydWN0IHRnMyAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0yMDk2LVxcdC8qIEF0dGFjaCB0aGUgTUFDIHRvIHRoZSBQSFkuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MjA5NzpcXHRwaHlkZXYgPSBwaHlfY29ubmVjdCh0cC1cXHUwMDNlZGV2LCBwaHlkZXZfbmFtZShwaHlkZXYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTIwOTgtXFx0XFx0XFx0ICAgICB0ZzNfYWRqdXN0X2xpbmssIHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9OTgyPXN0YXRpYyBpbnQgbWFjYl9waHlsaW5rX2Nvbm5lY3Qoc3RydWN0IG1hY2IgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05ODktXFx0aWYgKGRuKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTkwOlxcdFxcdHJldCA9IHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoYnAtXFx1MDAzZXBoeWxpbmssIGRuLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDg2OlxcdGJwLVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmJwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVxcdFxcdFxcdFxcdCAgICAgYnAtXFx1MDAzZXBoeV9pbnRlcmZhY2UsIFxcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYz05NDU9c3RhdGljIGludCBvY3Rlb25fbWdtdF9pbml0X3BoeShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jLTk1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmM6OTU2OlxcdHBoeWRldiA9IG9mX3BoeV9jb25uZWN0KG5ldGRldiwgcC1cXHUwMDNlcGh5X25wLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYy05NTctXFx0XFx0XFx0XFx0b2N0ZW9uX21nbXRfYWRqdXN0X2xpbmssIDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci90aHVuZGVyX2JneC5jPTEwNTU9c3RhdGljIGludCBiZ3hfbG1hY19lbmFibGUoc3RydWN0IGJneCAqYmd4LCB1OCBsbWFjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci90aHVuZGVyX2JneC5jLTExMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvdGh1bmRlcl9iZ3guYzoxMTIwOlxcdFxcdGlmIChwaHlfY29ubmVjdF9kaXJlY3QobG1hYy1cXHUwMDNlbmV0ZGV2LCBsbWFjLVxcdTAwM2VwaHlkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvdGh1bmRlcl9iZ3guYy0xMTIxLVxcdFxcdFxcdFxcdCAgICAgICBiZ3hfbG1hY19oYW5kbGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz0xMTMyPXN0YXRpYyB2b2lkIGRtOTA1MV9oYW5kbGVfbGlua19jaGFuZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExNTEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzoxMTUyOnN0YXRpYyBpbnQgZG05MDUxX3BoeV9jb25uZWN0KHN0cnVjdCBib2FyZF9pbmZvICpkYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMTU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM6MTE1OTpcXHRkYi1cXHUwMDNlcGh5ZGV2ID0gcGh5X2Nvbm5lY3QoZGItXFx1MDAzZW5kZXYsIHBoeV9pZCwgZG05MDUxX2hhbmRsZV9saW5rX2NoYW5nZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExNjAtXFx0XFx0XFx0XFx0IFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz0xMTY0PXN0YXRpYyBpbnQgZG05MDUxX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTEyMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzoxMjA5OlxcdHJldCA9IGRtOTA1MV9waHlfY29ubmVjdChkYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMjEwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjQxPXN0YXRpYyBpbnQgdHNuZXBfcGh5X29wZW4oc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyNDc6XFx0cmV0dmFsID0gcGh5X2Nvbm5lY3RfZGlyZWN0KGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgYWRhcHRlci1cXHUwMDNlcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDgtXFx0XFx0XFx0XFx0ICAgIHRzbmVwX3BoeV9saW5rX3N0YXR1c19jaGFuZ2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTY5OT1zdGF0aWMgaW50IGV0aG9jX21kaW9fcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtNzE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6NzE2OlxcdGVyciA9IHBoeV9jb25uZWN0X2RpcmVjdChkZXYsIHBoeSwgZXRob2NfbWRpb19wb2xsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtNzE3LVxcdFxcdFxcdFxcdCBQSFlfSU5URVJGQUNFX01PREVfR01JSSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTQzPXN0cnVjdCBmdGdtYWMxMDBfbWF0Y2hfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTY2LS8qIEZvciBOQy1TSSB0byByZWdpc3RlciBhIGZpeGVkLWxpbmsgcGh5IGRldmljZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6Njc6c3RhdGljIHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzIG5jc2lfcGh5X3N0YXR1cyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTY4LVxcdC5saW5rID0gMSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTQ5Nz1zdGF0aWMgaW50IGZ0Z21hYzEwMF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTU0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE1NDI6XFx0cGh5ZGV2ID0gcGh5X2Nvbm5lY3QobmV0ZGV2LCBwaHlkZXZfbmFtZShwaHlkZXYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTU0My1cXHRcXHRcXHQgICAgIFxcdTAwMjZmdGdtYWMxMDBfYWRqdXN0X2xpbmssIHBoeV9pbnRmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTc4MD1zdGF0aWMgdm9pZCBmdGdtYWMxMDBfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc5Mi1cXHRpZiAocHJpdi1cXHUwMDNldXNlX25jc2kpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxNzkzOlxcdFxcdGZpeGVkX3BoeV91bnJlZ2lzdGVyKHBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzk0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTg0OD1zdGF0aWMgaW50IGZ0Z21hYzEwMF9wcm9iZV9uY3NpKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxODY3OlxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2bmNzaV9waHlfc3RhdHVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODY4LVxcdGlmIChJU19FUlIocGh5ZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODcyLVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE4NzM6XFx0ZXJyID0gcGh5X2Nvbm5lY3RfZGlyZWN0KG5ldGRldiwgcGh5ZGV2LCBmdGdtYWMxMDBfYWRqdXN0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODc0LVxcdFxcdFxcdFxcdCBQSFlfSU5URVJGQUNFX01PREVfUk1JSSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4ODEtZXJyX3JlZ2lzdGVyX3BoeTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE4ODI6XFx0Zml4ZWRfcGh5X3VucmVnaXN0ZXIocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4ODMtZXJyX3JlZ2lzdGVyX25kZXY6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3NC1cXHRtYWNfZGV2LVxcdTAwM2V1cGRhdGVfc3BlZWQgPSBkcGFhX2V0aF9jZ3Jfc2V0X3NwZWVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM6Mjc1OlxcdG1hY19kZXYtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjX2Rldi1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzYtXFx0XFx0XFx0XFx0XFx0ICBkZXZfZndub2RlKG1hY19kZXYtXFx1MDAzZWRldiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTI5NDE9c3RhdGljIGludCBkcGFhX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI5NTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYzoyOTUxOlxcdGVyciA9IHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QobWFjX2Rldi1cXHUwMDNlcGh5bGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI5NTItXFx0XFx0XFx0XFx0ICAgICBtYWNfZGV2LVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGUsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTU2MD1pbnQgZHBhYTJfbWFjX2Nvbm5lY3Qoc3RydWN0IGRwYWEyX21hYyAqbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NjI1OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI2LVxcdFxcdFxcdFxcdCBkcG1hY19ub2RlLCBtYWMtXFx1MDAzZWlmX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjM0LVxcdHJ0bmxfbG9jaygpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MzU6XFx0ZXJyID0gcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QobWFjLVxcdTAwM2VwaHlsaW5rLCBkcG1hY19ub2RlLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjM2LVxcdHJ0bmxfdW5sb2NrKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYzNy1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjYzODpcXHRcXHRuZXRkZXZfZXJyKG5ldF9kZXYsIFxcXCJwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCgpID0gJWRcXFxcblxcXCIsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYzOS1cXHRcXHRnb3RvIGVycl9waHlsaW5rX2Rlc3Ryb3k7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYz0yOTM1PXN0YXRpYyBpbnQgZW5ldGNfcGh5bGlua19jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmMtMjk0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYzoyOTQ3OlxcdGVyciA9IHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QocHJpdi1cXHUwMDNlcGh5bGluaywgcHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYy0yOTQ4LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jPTMwMTA9aW50IGVuZXRjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYy0zMDI4LVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmM6MzAyOTpcXHRcXHRnb3RvIGVycl9waHlfY29ubmVjdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYy0zMDMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmMtMzA1NS1cXHRcXHRwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jOjMwNTY6ZXJyX3BoeV9jb25uZWN0OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jLTMwNTctXFx0ZW5ldGNfZnJlZV9pcnFzKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTkyMz1zdGF0aWMgaW50IGVuZXRjNF9saW5rX2luaXQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk0MjpcXHRlcnIgPSBlbmV0Y19waHlsaW5rX2NyZWF0ZShwcml2LCBub2RlLCBcXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0My1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0NC1cXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk0NTpcXHRcXHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTQ2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk1MDplcnJfcGh5bGlua19jcmVhdGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1MS1cXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9Nzg1PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04NjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6ODY4OlxcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFxcdTAwMjZlbmV0Y19tYWNfcGh5bGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg2OS1cXHRpZiAoZXJyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjg3MDpcXHRcXHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04NzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04NzktXFx0ZW5ldGNfcGh5bGlua19kZXN0cm95KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjg4MDplcnJfcGh5bGlua19jcmVhdGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODgxLVxcdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9NDE5PUVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX21kaW9idXNfZGVzdHJveSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDIxOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQyMi1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ2MS1cXHRwZi1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IG1hY19jYXBzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzo0NjI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwZi1cXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ2My1cXHRcXHRcXHRcXHQgcGYtXFx1MDAzZWlmX21vZGUsIG9wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDcyLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDczOkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaDoxMzppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaC0xNC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTI5ODE9c3RhdGljIGludCBmZWNfZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0yOTg3LVxcdGlmIChmZXAtXFx1MDAzZXBoeV9ub2RlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6Mjk4ODpcXHRcXHRwaHlfZGV2ID0gb2ZfcGh5X2Nvbm5lY3QobmRldiwgZmVwLVxcdTAwM2VwaHlfbm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0yOTg5LVxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2ZmVjX2VuZXRfYWRqdXN0X2xpbmssIDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMDAyLVxcdFxcdFxcdG5ldGRldl9pbmZvKG5kZXYsIFxcXCJubyBQSFksIGFzc3VtaW5nIGRpcmVjdCBjb25uZWN0aW9uIHRvIHN3aXRjaFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6MzAwMzpcXHRcXHRcXHRwaHlfZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwNC1cXHRcXHRcXHRpZiAoSVNfRVJSKHBoeV9kZXYpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMDA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMTA6XFx0XFx0cmV0ID0gcGh5X2Nvbm5lY3RfZGlyZWN0KG5kZXYsIHBoeV9kZXYsIFxcdTAwMjZmZWNfZW5ldF9hZGp1c3RfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMDExLVxcdFxcdFxcdFxcdFxcdCBmZXAtXFx1MDAzZXBoeV9pbnRlcmZhY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAxMy1cXHRcXHRcXHRpZiAocGh5X2lzX3BzZXVkb19maXhlZF9saW5rKHBoeV9kZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMTQ6XFx0XFx0XFx0XFx0Zml4ZWRfcGh5X3VucmVnaXN0ZXIocGh5X2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAxNS1cXHRcXHRcXHRuZXRkZXZfZXJyKG5kZXYsIFxcXCJjb3VsZCBub3QgYXR0YWNoIHRvIFBIWVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00MjI4PWZlY19lbmV0X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDI0My1cXHRpZiAoIWZlcC1cXHUwMDNlcGh5X25vZGUgXFx1MDAyNlxcdTAwMjYgcGh5X2lzX3BzZXVkb19maXhlZF9saW5rKHBoeV9kZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjQyNDQ6XFx0XFx0Zml4ZWRfcGh5X3VucmVnaXN0ZXIocGh5X2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDI0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jPTIxNj1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jLTIyMi1cXHRpZiAocHJpdi1cXHUwMDNlcGh5X25vZGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYzoyMjM6XFx0XFx0cGh5ZGV2ID0gb2ZfcGh5X2Nvbm5lY3QocHJpdi1cXHUwMDNlbmRldiwgcHJpdi1cXHUwMDNlcGh5X25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmMtMjI0LVxcdFxcdFxcdFxcdFxcdG1wYzUyeHhfZmVjX2FkanVzdF9saW5rLCAwLCAwKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MjIuNDQ2MTAwMTgzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYyOTAzMDMzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFVTQiBFdGhlcm5ldCBhbmQgTmV0d29ya2luZyBEZXZpY2UgRHJpdmVyIEFyY2hpdGVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgVVNCIEV0aGVybmV0IGRldmljZXMgYXJlIGFyY2hpdGVjdGVkIGluIHRoaXMgc3lzdGVtLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBwaHlzaWNhbCBsYXllci4gVGhlIGNvcmUgcXVlc3Rpb25zIGFyZTogZG8gdGhlc2UgZHJpdmVycywgdGhpbmdzIGxpa2UgYGNkY19uY21gLCBgYXNpeGAsIGB1c2JuZXRgLCBldmVuIHNpbXVsYXRlZCBkZXZpY2VzIGxpa2UgYG5ldGRldnNpbWAsIGBkdW1teWAsIG9yIGB2aXJ0aW9gLCBsZXZlcmFnZSBgcGh5bGliYCBpbiB0aGVpciBpbXBsZW1lbnRhdGlvbj8gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgcGh5c2ljYWwgbGluayBtYW5hZ2VtZW50IGluIHRoZXNlIGNvbmZpZ3VyYXRpb25zLlxuXG5NeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBncmVwIGZvciBpbnN0YW5jZXMgb2YgYHBoeV9jb25uZWN0YCBvciBgcGh5bGlua2Agd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIgZGlyZWN0b3JpZXMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgVVNCIEV0aGVybmV0IGRyaXZlcnMgdW5kZXIgYGRyaXZlcnMvbmV0L3VzYi9gLCBhbnkgc2ltdWxhdGlvbiBvciB0ZXN0IGRyaXZlcnMgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9gLCBhbmQgbWF5YmUgdGhlIGBkdW1teS5jYCBhbmQgc2ltaWxhciBmaWxlcyB0byBzZWUgaG93IHRoZXkncmUgaGFuZGxpbmcgUEhZIGludGVyYWN0aW9ucyAob3IgaWYgdGhleSdyZSBhYnN0cmFjdGluZyBpdCBlbnRpcmVseSkuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBwaWN0dXJlIG9mIHdoZXRoZXIgYW5kIGhvdyB0aGV5J3JlIHVzaW5nIHBoeWxpYiBmb3IgcGh5c2ljYWwgbGF5ZXIgbWFuYWdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyNDEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MjUuMDc1MTMyNDgzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzA1MjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIihwaHlfY29ubmVjdHxwaHlsaW5rfHBoeV9hdHRhY2gpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeC5oLTI5LSNpbmNsdWRlIFxcdTAwM2NuZXQvc2VsZnRlc3RzLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDozMDojaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5bGluay5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMzEtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oPTE3OD1zdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4Ny1cXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2X2ludDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4ODpcXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4OTpcXHRzdHJ1Y3QgcGh5bGlua19jb25maWcgcGh5bGlua19jb25maWc7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xOTAtXFx0dTE2IHBoeV9hZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTI5ND1zdGF0aWMgdm9pZCBheDg4NzcyX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjk5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMDA6XFx0cGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKHByaXYtXFx1MDAzZXBoeWxpbmssIHBhdXNlKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzAxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zMDM9c3RhdGljIGludCBheDg4NzcyX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzA4LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMDk6XFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbShwcml2LVxcdTAwM2VwaHlsaW5rLCBwYXVzZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTMxMC19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzMyPXN0YXRpYyBpbnQgYXg4ODc3Ml9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzUzLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozNTQ6XFx0cGh5bGlua19zdGFydChwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzU1LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTU5Nj1zdGF0aWMgdm9pZCBheDg4NzcyX3N1c3BlbmQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYwMi1cXHRcXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjAzOlxcdFxcdHBoeWxpbmtfc3VzcGVuZChwcml2LVxcdTAwM2VwaHlsaW5rLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYwNC1cXHRcXHRydG5sX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYyMi0gKlxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2MjM6ICogLSBUaGUgTUFDIGRyaXZlciBtdXN0IGhvbGQgUlROTCB3aGVuIGNhbGxpbmcgcGh5bGluayBpbnRlcmZhY2VzIHN1Y2ggYXNcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjI0OiAqICAgcGh5bGlua19zdXNwZW5kKCkvcmVzdW1lKCkuIFRob3NlIGNhbGxzIHdpbGwgYWxzbyBwZXJmb3JtIE1ESU8gSS9PLlxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02MjUtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02NDI9c3RhdGljIHZvaWQgYXg4ODc3Ml9yZXN1bWUoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY1Mi1cXHRcXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjUzOlxcdFxcdHBoeWxpbmtfcmVzdW1lKHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02NTQtXFx0XFx0cnRubF91bmxvY2soKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03MDM9c3RhdGljIGludCBheDg4NzcyX2luaXRfcGh5KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTMtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcxNDpcXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXFx1MDAzZXBoeWxpbmssIHByaXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzIyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MjM6XFx0cGh5X2F0dGFjaGVkX2luZm8ocHJpdi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzI0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTczNC1cXHRcXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzM1OlxcdFxcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkocHJpdi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTczNi1cXHRcXHRydG5sX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzQ3OnN0YXRpYyB2b2lkIGF4ODg3NzJfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc0ODpcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NTItXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc1MzpzdGF0aWMgdm9pZCBheDg4NzcyX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc1NC1cXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzYxLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NjI6c3RhdGljIHZvaWQgYXg4ODc3Ml9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzYzLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc5Mi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzkzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGF4ODg3NzJfcGh5bGlua19tYWNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03OTQtXFx0Lm1hY19jb25maWcgPSBheDg4NzcyX21hY19jb25maWcsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzk4LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3OTk6c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MDAte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwMi1cXHRwaHlfaW50ZXJmYWNlX3QgcGh5X2lmX21vZGU7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwMzpcXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODA0LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MDU6XFx0cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcuZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNjpcXHRwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNzpcXHRwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gTUFDX1NZTV9QQVVTRSB8IE1BQ19BU1lNX1BBVVNFIHxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODA4LVxcdFxcdE1BQ18xMCB8IE1BQ18xMDA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODEwLVxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxMTpcXHRcXHQgIHByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODEyLVxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfUk1JSSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODEzOlxcdFxcdCAgcHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTQtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjA6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMTpcXHRcXHRcXHRcXHQgcGh5X2lmX21vZGUsIFxcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMjpcXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjM6XFx0XFx0cmV0dXJuIFBUUl9FUlIocGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyNC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODI1OlxcdHByaXYtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjYtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9ODI5PXN0YXRpYyBpbnQgYXg4ODc3Ml9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTIwLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MjE6XFx0cmV0ID0gYXg4ODc3Ml9waHlsaW5rX3NldHVwKGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyMi1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MjM6XFx0XFx0Z290byBwaHlsaW5rX2VycjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTI0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzMS1cXHQgKiB0aGF0IGNvdWxkIGRlYWRsb2NrIChhdXRvcmVzdW1lIHVuZGVyIFJUTkwgd2hpbGUgVVNCIFBNIGxvY2tcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTMyOlxcdCAqIGlzIGhlbGQsIHBoeWxpbmsvTURJTyB3YW50cyBSVE5MKS5cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTMzLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzOC1pbml0cGh5X2VycjpcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTM5OlxcdHBoeWxpbmtfZGVzdHJveShwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTQwOnBoeWxpbmtfZXJyOlxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NDEtXFx0YXg4ODc3Ml9tZGlvX3VucmVnaXN0ZXIocHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTQ2PXN0YXRpYyBpbnQgYXg4ODc3Ml9zdG9wKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NDktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk1MDpcXHRwaHlsaW5rX3N0b3AocHJpdi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk1MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05NTU9c3RhdGljIHZvaWQgYXg4ODc3Ml91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NTktXFx0cnRubF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk2MDpcXHRwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NjEtXFx0cnRubF91bmxvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTYyOlxcdHBoeWxpbmtfZGVzdHJveShwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTYzLVxcdGF4ODg3NzJfbWRpb191bnJlZ2lzdGVyKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MjYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzEzLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjMxNDpcXHRwcml2LVxcdTAwM2VwaHlkZXYgPSBwaHlfY29ubmVjdChkZXYtXFx1MDAzZW5ldCwgcHJpdi1cXHUwMDNlcGh5X25hbWUsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzE1LVxcdFxcdFxcdFxcdCAgIFxcdTAwMjZheDg4MTcyYV9hZGp1c3RfbGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtOC0jaW5jbHVkZSBcXHUwMDNjbGludXgvZXRodG9vbC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6OTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5bGluay5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzYi5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz00MTM9c3RydWN0IGxhbjc4eHhfbmV0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDY2LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6NDY3OlxcdHN0cnVjdCBwaHlsaW5rXFx0XFx0KnBoeWxpbms7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo0Njg6XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnXFx0cGh5bGlua19jb25maWc7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy00NjktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTgxNj1zdGF0aWMgaW50IGxhbjc4eHhfZ2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICplZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTgxOS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE4MjA6XFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKGRldi1cXHUwMDNlcGh5bGluaywgZWRhdGEpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTgyMS19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE4MjM9c3RhdGljIGludCBsYW43OHh4X3NldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZWRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4MjYtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxODI3OlxcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZShkZXYtXFx1MDAzZXBoeWxpbmssIGVkYXRhKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4MjgtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0xODUzPXN0YXRpYyBpbnQgbGFuNzh4eF9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTg1Ny1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE4NTg6XFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KGRldi1cXHUwMDNlcGh5bGluaywgY21kKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4NTktfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0xODYxPXN0YXRpYyBpbnQgbGFuNzh4eF9zZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTg2NS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE4NjY6XFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KGRldi1cXHUwMDNlcGh5bGluaywgY21kKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4NjctfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0xODY5PXN0YXRpYyB2b2lkIGxhbjc4eHhfZ2V0X3BhdXNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4NzMtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxODc0OlxcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbShkZXYtXFx1MDAzZXBoeWxpbmssIHBhdXNlKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4NzUtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0xODc3PXN0YXRpYyBpbnQgbGFuNzh4eF9zZXRfcGF1c2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTg4MS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE4ODI6XFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbShkZXYtXFx1MDAzZXBoeWxpbmssIHBhdXNlKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4ODMtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yMjU5PXN0YXRpYyB2b2lkIGxhbjc4eHhfcmVtb3ZlX2lycV9kb21haW4oc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIyNzAtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMjcxOnN0YXRpYyB2b2lkIGxhbjc4eHhfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMjcyOlxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIyNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMzA1LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjMwNjpzdGF0aWMgdm9pZCBsYW43OHh4X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMzA3LVxcdFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI0MzI9c3RhdGljIGludCBsYW43OHh4X2NvbmZpZ3VyZV9mbG93Y29udHJvbChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjQ3Ni1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI0Nzc6c3RhdGljIHZvaWQgbGFuNzh4eF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI0NzgtXFx0XFx0XFx0XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjU3MT1zdGF0aWMgaW50IGxhbjc4eHhfbWFjX2VlZV9lbmFibGUoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYsIGJvb2wgZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNTgwLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjU4MTpzdGF0aWMgdm9pZCBsYW43OHh4X21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI1ODIte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNTg4LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjU4OTpzdGF0aWMgaW50IGxhbjc4eHhfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHUzMiB0aW1lcixcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI1OTAtXFx0XFx0XFx0XFx0ICAgICBib29sIHR4X2Nsa19zdG9wKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNTk3LVxcdCAqIEV0aGVybmV0IEVuYWJsZSAoRUVFRU4pIGlzIGNsZWFyZWQuIFdlIGVuc3VyZSB0aGF0IGJ5IGNsZWFyaW5nXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyNTk4OlxcdCAqIEVFRUVOIGR1cmluZyBwcm9iZSwgYW5kIHBoeWxpbmsgaXRzZWxmIGd1YXJhbnRlZXMgdGhhdFxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjU5OS1cXHQgKiBtYWNfZGlzYWJsZV90eF9scGkoKSB3aWxsIGhhdmUgYmVlbiBwcmV2aW91c2x5IGNhbGxlZC5cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjYwNy1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI2MDg6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzh4eF9waHlsaW5rX21hY19vcHMgPSB7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNjA5LVxcdC5tYWNfY29uZmlnID0gbGFuNzh4eF9tYWNfY29uZmlnLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yNjI2PXN0YXRpYyBpbnQgbGFuNzh4eF9zZXRfZml4ZWRfbGluayhzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2Mjcte1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjYyODpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSBzdGF0ZSA9IHtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2MjktXFx0XFx0LnNwZWVkID0gU1BFRURfMTAwMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjYzNS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI2MzY6XFx0cmV0dXJuIHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoZGV2LVxcdTAwM2VwaHlsaW5rLCBcXHUwMDI2c3RhdGUpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjYzNy19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3Njk9c3RhdGljIGludCBsYW43OHh4X2NvbmZpZ3VyZV9sZWRzX2Zyb21fZHQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI3OTgtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyNzk5OnN0YXRpYyBpbnQgbGFuNzh4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgwMC17XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODAxOlxcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqcGMgPSBcXHUwMDI2ZGV2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZztcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4MDI6XFx0c3RydWN0IHBoeWxpbmsgKnBoeWxpbms7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODAzLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODM0LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjgzNTpcXHRtZW1jcHkoZGV2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyxcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4MzY6XFx0ICAgICAgIGRldi1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMsXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM3OlxcdCAgICAgICBzaXplb2YoZGV2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcykpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgzOC1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4Mzk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4NDA6XFx0XFx0XFx0XFx0IGRldi1cXHUwMDNlaW50ZXJmYWNlLCBcXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6Mjg0MTpcXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6Mjg0MjpcXHRcXHRyZXR1cm4gUFRSX0VSUihwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDMtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODQ0OlxcdGRldi1cXHUwMDNlcGh5bGluayA9IHBoeWxpbms7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yODQ5PXN0YXRpYyB2b2lkIGxhbjc4eHhfcGh5X3VuaW5pdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NTAte1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6Mjg1MTpcXHRpZiAoZGV2LVxcdTAwM2VwaHlsaW5rKSB7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODUyOlxcdFxcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkoZGV2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4NTM6XFx0XFx0cGh5bGlua19kZXN0cm95KGRldi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODU0OlxcdFxcdGRldi1cXHUwMDNlcGh5bGluayA9IE5VTEw7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODU1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjg1OD1zdGF0aWMgaW50IGxhbjc4eHhfcGh5X2luaXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NzAtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODcxOlxcdHJldCA9IGxhbjc4eHhfcGh5bGlua19zZXR1cChkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg3Mi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg3Ni1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4Nzc6XFx0XFx0Z290byBwaHlsaW5rX3VuaW5pdDtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NzgtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4ODYtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODg3OlxcdFxcdFxcdGdvdG8gcGh5bGlua191bmluaXQ7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODg4LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg4OS1cXHRcXHQvKiBObyBQSFkgZm91bmQsIHNvIHNldCB1cCBhIGZpeGVkIGxpbmsgYW5kIHJldHVybiBlYXJseS5cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4OTA6XFx0XFx0ICogTm8gbmVlZCB0byBjb25maWd1cmUgUEhZIElSUSBvciBhdHRhY2ggdG8gcGh5bGluay5cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4OTEtXFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDEtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyOTAyOlxcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkoZGV2LVxcdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjkwMy1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDUtXFx0XFx0XFx0ICAgZGV2LVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VpZCwgRVJSX1BUUihyZXQpKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI5MDY6XFx0XFx0Z290byBwaHlsaW5rX3VuaW5pdDtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTEwLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjkxMTpcXHRcXHRnb3RvIHBoeWxpbmtfdW5pbml0O1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjkxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjkxNC1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI5MTU6cGh5bGlua191bmluaXQ6XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTE2LVxcdGxhbjc4eHhfcGh5X3VuaW5pdChkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zNDYyPXN0YXRpYyBpbnQgbGFuNzh4eF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTM0OTAtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozNDkxOlxcdHBoeWxpbmtfc3RhcnQoZGV2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTM0OTItXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTM1Mzg9c3RhdGljIGludCBsYW43OHh4X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5ldClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzU1OC1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjM1NTk6XFx0cGh5bGlua19zdG9wKGRldi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zNTYwLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz00NTcxPXN0YXRpYyB2b2lkIGxhbjc4eHhfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDU4My1cXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjQ1ODQ6XFx0cGh5bGlua19zdG9wKGRldi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo0NTg1OlxcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkoZGV2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTQ1ODYtXFx0cnRubF91bmxvY2soKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDU5My1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjQ1OTQ6XFx0cGh5bGlua19kZXN0cm95KGRldi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy00NTk1LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz01MTE1PXN0YXRpYyBpbnQgbGFuNzh4eF9zdXNwZW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBwbV9tZXNzYWdlX3QgbWVzc2FnZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNTE0Mi1cXHRcXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjUxNDM6XFx0XFx0cGh5bGlua19zdXNwZW5kKGRldi1cXHUwMDNlcGh5bGluaywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNTE0NC1cXHRcXHRydG5sX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz01MzYyPXN0YXRpYyBpbnQgbGFuNzh4eF9yZXNldF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTUzNzctXFx0cnRubF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo1Mzc4OlxcdHBoeWxpbmtfcmVzdW1lKGRldi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy01Mzc5LVxcdHJ0bmxfdW5sb2NrKCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYz0xMTQ3PXN0YXRpYyBpbnQgc21zYzk1eHhfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI4NC1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoxMjg1OlxcdHJldCA9IHBoeV9jb25uZWN0X2RpcmVjdChkZXYtXFx1MDAzZW5ldCwgcGRhdGEtXFx1MDAzZXBoeWRldixcXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMjg2LVxcdFxcdFxcdFxcdCBcXHUwMDI2c21zYzk1eHhfaGFuZGxlX2xpbmtfY2hhbmdlLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI5Mi1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoxMjkzOlxcdHBoeV9hdHRhY2hlZF9pbmZvKGRldi1cXHUwMDNlbmV0LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyOTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjQ2OjI1LjEyNDQ0MjkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgwNTQzNTI2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBVU0IgRXRoZXJuZXQgRHJpdmVyIFRlc3RpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZXNlIFVTQiBFdGhlcm5ldCBkcml2ZXJzIGFyZSB0ZXN0ZWQgYW5kIHdoYXQgdGVjaG5pcXVlcyBhcmUgYmVpbmcgdXNlZC4gU3BlY2lmaWNhbGx5LCBkcml2ZXJzIGxpa2UgYGFzaXhgLCBgYXg4ODE3MmFgLCBgbGFuNzh4eGAsIGFuZCBgc21zYzk1eHhgIGFyZSBpbiB0aGUgc3BvdGxpZ2h0LiBJIHNlZSB0aGF0IHRoZXJlIGFyZSBtdWx0aXBsZSBhbmdsZXMgZm9yIHByb2JpbmcgdGhlc2UgZHJpdmVyczogdXNpbmcgVVNCIGVtdWxhdGlvbiDigJMgd2hpY2ggaW5jbHVkZXMgcmF3LWdhZGdldCwgdXNiLWZ1enplciwgYW5kIGV2ZW4gc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIOKAkyBvciBieSB1c2luZyB2aXJ0dWFsIGRldmljZXMuIEZ1cnRoZXJtb3JlLCBgZHNhX2xvb3BgLCBgZml4ZWRfcGh5YCwgYW5kIG90aGVyIG5ldCBkZXZpY2VzIGNhbiBhbHNvIGJlIGJyb3VnaHQgaW50byBwbGF5IVxuXG5JIHJlY29nbml6ZSB0aGF0IHRoZSBzdGFuZGFyZCB2aXJ0dWFsIG5ldHdvcmtpbmcgc2V0dXAgYW5kIHRoZSBVU0IgZ2FkZ2V0IG5ldHdvcmtpbmcgd2l0aGluIHN5emthbGxlciBhcmUgYWxyZWFkeSBxdWl0ZSBlZmZlY3RpdmUgYXQgcmVndWxhcmx5IGV4ZXJjaXNpbmcgdGhlc2UgVVNCIG5ldCBkcml2ZXJzLiBUaGV5J3JlIHRyaWdnZXJpbmcgY2FsbHMgdG8gaW1wb3J0YW50IFBIWSBmdW5jdGlvbnMgbGlrZSBgcGh5bGlua19jb25uZWN0X3BoeWAsIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYHBoeV9jb25uZWN0YCwgYHBoeV9hdHRhY2hfZGlyZWN0YCwgYW5kIGBwaHlfcHJvYmVgLlxuXG5HaXZlbiB0aGlzIGNvbnRleHQsIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyB0byBnYWluIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcuIFRvIGRvIHRoYXQsIEknbSBnb2luZyB0byBjb25zdWx0IGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBJJ20gZ29pbmcgdG8gZm9jdXMgb24gYW55IHJlY2VudCBjaGFuZ2VzIGluIHRoZXNlIGZpbGVzLiBSZWFkaW5nIHRocm91Z2ggdGhlbSB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoZSBidWcgb3IgdGhlIGZpeCwgYW5kIGFueSBvdGhlciByZWxldmFudCBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzk0OSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjoyNy45Mjk4ODAzNzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ4NTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTczMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTczMDpcXHRcXHRyZXR1cm4gcmV0O1xcbjE3MzE6XFx0fVxcbjE3MzI6XFx0XFxuMTczMzpcXHRzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxcbjE3MzQ6XFx0e1xcbjE3MzU6XFx0XFx0cmV0dXJuIHBoeWRydi1cXHUwMDNlY29uZmlnX2ludHIgXFx1MDAyNlxcdTAwMjYgcGh5ZHJ2LVxcdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xcbjE3MzY6XFx0fVxcbjE3Mzc6XFx0XFxuMTczODpcXHQvKiBHaXZlIGJhY2sgd2hhdCBwaHlfcHJvYmUoKSB0b29rLCBidXQgbm90IHdoaWxlIHBoeV9saW5rX2NoYW5nZSBtYXJrcyBhXFxuMTczOTpcXHQgKiBjb25zdW1lcjogaXQgc2tpcHBlZCBwaHlfcmVxdWVzdF9pbnRlcnJ1cHQoKSBvbiB0aGUgdmFsdWUgaXQgc2F3LCBzb1xcbjE3NDA6XFx0ICogcGh5X2Rpc2Nvbm5lY3QoKSB3b3VsZCBmcmVlIGFuIGludGVycnVwdCBub2JvZHkgcmVxdWVzdGVkLlxcbjE3NDE6XFx0ICovXFxuMTc0MjpcXHRzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9wcm9iZV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4xNzQzOlxcdHtcXG4xNzQ0OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZXBoeV9saW5rX2NoYW5nZSB8fCBwaHlkZXYtXFx1MDAzZWlycV9zYXZlZCA9PSBQSFlfUE9MTClcXG4xNzQ1OlxcdFxcdFxcdHJldHVybjtcXG4xNzQ2OlxcdFxcbjE3NDc6XFx0XFx0cGh5ZGV2LVxcdTAwM2VpcnEgPSBwaHlkZXYtXFx1MDAzZWlycV9zYXZlZDtcXG4xNzQ4OlxcdFxcdHBoeWRldi1cXHUwMDNlaXJxX3NhdmVkID0gUEhZX1BPTEw7XFxuMTc0OTpcXHR9XFxuMTc1MDpcXHRcXG4xNzUxOlxcdC8qKlxcbjE3NTI6XFx0ICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxcbjE3NTM6XFx0ICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXFxuMTc1NDpcXHQgKiBAcGh5ZGV2OiBQb2ludGVyIHRvIHBoeV9kZXZpY2UgdG8gYXR0YWNoXFxuMTc1NTpcXHQgKiBAZmxhZ3M6IFBIWSBkZXZpY2UncyBkZXZfZmxhZ3NcXG4xNzU2OlxcdCAqIEBpbnRlcmZhY2U6IFBIWSBkZXZpY2UncyBpbnRlcmZhY2VcXG4xNzU3OlxcdCAqXFxuMTc1ODpcXHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGRyaXZlcnMgdG8gYXR0YWNoIHRvIGEgcGFydGljdWxhciBQSFlcXG4xNzU5OlxcdCAqICAgICBkZXZpY2UuIFRoZSBwaHlfZGV2aWNlIGlzIGZvdW5kLCBhbmQgcHJvcGVybHkgaG9va2VkIHVwXFxuMTc2MDpcXHQgKiAgICAgdG8gdGhlIHBoeV9kcml2ZXIuICBJZiBubyBkcml2ZXIgaXMgYXR0YWNoZWQsIHRoZW4gYVxcbjE3NjE6XFx0ICogICAgIGdlbmVyaWMgZHJpdmVyIGlzIHVzZWQuICBUaGUgcGh5X2RldmljZSBpcyBnaXZlbiBhIHB0ciB0b1xcbjE3NjI6XFx0ICogICAgIHRoZSBhdHRhY2hpbmcgZGV2aWNlLCBhbmQgZ2l2ZW4gYSBjYWxsYmFjayBmb3IgbGluayBzdGF0dXNcXG4xNzYzOlxcdCAqICAgICBjaGFuZ2UuICBUaGUgcGh5X2RldmljZSBpcyByZXR1cm5lZCB0byB0aGUgYXR0YWNoaW5nIGRyaXZlci5cXG4xNzY0OlxcdCAqICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgcmVmZXJlbmNlIG9uIHRoZSBwaHkgZGV2aWNlLlxcbjE3NjU6XFx0ICovXFxuMTc2NjpcXHRpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4xNzY3OlxcdFxcdFxcdCAgICAgIHUzMiBmbGFncywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4xNzY4OlxcdHtcXG4xNzY5OlxcdFxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzO1xcbjE3NzA6XFx0XFx0c3RydWN0IGRldmljZSAqZCA9IFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2O1xcbjE3NzE6XFx0XFx0c3RydWN0IG1vZHVsZSAqbmRldl9vd25lciA9IE5VTEw7XFxuMTc3MjpcXHRcXHRpbnQgZXJyO1xcbjE3NzM6XFx0XFxuMTc3NDpcXHRcXHQvKiBGb3IgRXRoZXJuZXQgZGV2aWNlIGRyaXZlcnMgdGhhdCByZWdpc3RlciB0aGVpciBvd24gTURJTyBidXMsIHdlXFxuMTc3NTpcXHRcXHQgKiB3aWxsIGhhdmUgYnVzLVxcdTAwM2Vvd25lciBtYXRjaCBuZGV2X21vZCwgc28gd2UgZG8gbm90IHdhbnQgdG8gaW5jcmVtZW50XFxuMTc3NjpcXHRcXHQgKiBvdXIgb3duIG1vZHVsZS1cXHUwMDNlcmVmY250IGhlcmUsIG90aGVyd2lzZSB3ZSB3b3VsZCBub3QgYmUgYWJsZSB0b1xcbjE3Nzc6XFx0XFx0ICogdW5sb2FkIGxhdGVyIG9uLlxcbjE3Nzg6XFx0XFx0ICovXFxuMTc3OTpcXHRcXHRpZiAoZGV2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjoyNy45MzAxMzE2MjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjEzNDgxMTA0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzLCBnZWFyZWQgdG93YXJkcyBhbiBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gYHBoeV9hdHRhY2hfZGlyZWN0YCoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBwaHlfYXR0YWNoX2RpcmVjdGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBsaW5lcyAxODkwIHRocm91Z2ggMTkyNS4gR2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoZSBzeXN0ZW0sIHRoaXMgc2VjdGlvbiBpcyBsaWtlbHkgaGFuZGxpbmcgdGhlIGRpcmVjdCBQSFkgYXR0YWNobWVudCBwcm9jZWR1cmUuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGluaXRpYWxpemVzIGFuZCBjb25maWd1cmVzIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2UgaW4gdGhpcyBzcGVjaWZpYyBzY2VuYXJpby4gSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIHNlcXVlbmNlIG9mIGFjdGlvbnMgaGVyZTogZGV2aWNlIHByb2JpbmcsIHJlc291cmNlIGFsbG9jYXRpb24sIHBvc3NpYmx5IHJlZ2lzdGVyIGFjY2VzcyBmb3IgaW5pdGlhbCBQSFkgY29uZmlndXJhdGlvbiwgYW5kIHVsdGltYXRlbHksIHJlZ2lzdHJhdGlvbiB3aXRoIHRoZSByZWxldmFudCB1cHBlciBsYXllciBmcmFtZXdvcmsuIFVuZGVyc3RhbmRpbmcgdGhlIGZsb3csIGluY2x1ZGluZyBhbnkgZXJyb3IgaGFuZGxpbmcgd2l0aGluIHRoaXMgYmxvY2ssIGlzIGNyaXRpY2FsIGZvciBkaWFnbm9zaW5nIHBvdGVudGlhbCBhdHRhY2htZW50IGlzc3Vlcy4gTGV0J3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgdGVjaG5pcXVlcyB0aGUgZGV2ZWxvcGVycyBoYXZlIGVtcGxveWVkIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzI0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjozMC4wNjQ5NDQ3OTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTg5MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTg5MDpcXHRcXHRpZiAoZXJyKVxcbjE4OTE6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4xODkyOlxcdFxcbjE4OTM6XFx0XFx0cGh5X3Jlc3VtZShwaHlkZXYpO1xcbjE4OTQ6XFx0XFxuMTg5NTpcXHRcXHQvKipcXG4xODk2OlxcdFxcdCAqIElmIHRoZSBleHRlcm5hbCBwaHkgdXNlZCBieSBjdXJyZW50IG1hYyBpbnRlcmZhY2UgaXMgbWFuYWdlZCBieVxcbjE4OTc6XFx0XFx0ICogYW5vdGhlciBtYWMgaW50ZXJmYWNlLCBzbyB3ZSBzaG91bGQgY3JlYXRlIGEgZGV2aWNlIGxpbmsgYmV0d2VlblxcbjE4OTg6XFx0XFx0ICogcGh5IGRldiBhbmQgbWFjIGRldi5cXG4xODk5OlxcdFxcdCAqL1xcbjE5MDA6XFx0XFx0aWYgKGRldiBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2VwYXJlbnQgXFx1MDAyNlxcdTAwMjYgZGV2LVxcdTAwM2VkZXYucGFyZW50ICE9IHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZXBhcmVudClcXG4xOTAxOlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlZGV2bGluayA9IGRldmljZV9saW5rX2FkZChkZXYtXFx1MDAzZWRldi5wYXJlbnQsIFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LFxcbjE5MDI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBETF9GTEFHX1BNX1JVTlRJTUUgfCBETF9GTEFHX1NUQVRFTEVTUyk7XFxuMTkwMzpcXHRcXG4xOTA0OlxcdFxcdHJldHVybiBlcnI7XFxuMTkwNTpcXHRcXG4xOTA2OlxcdGVycm9yOlxcbjE5MDc6XFx0XFx0LyogcGh5X2RldGFjaCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXFxuMTkwODpcXHRcXHRwaHlfZGV0YWNoKHBoeWRldik7XFxuMTkwOTpcXHRcXHRyZXR1cm4gZXJyO1xcbjE5MTA6XFx0XFxuMTkxMTpcXHRlcnJvcl9tb2R1bGVfcHV0OlxcbjE5MTI6XFx0XFx0bW9kdWxlX3B1dChkLVxcdTAwM2Vkcml2ZXItXFx1MDAzZW93bmVyKTtcXG4xOTEzOlxcdFxcdHBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpO1xcbjE5MTQ6XFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcXG4xOTE1OlxcdFxcdGQtXFx1MDAzZWRyaXZlciA9IE5VTEw7XFxuMTkxNjpcXHRlcnJvcl9wdXRfZGV2aWNlOlxcbjE5MTc6XFx0XFx0cHV0X2RldmljZShkKTtcXG4xOTE4OlxcdFxcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cXHUwMDNlb3duZXIpXFxuMTkxOTpcXHRcXHRcXHRtb2R1bGVfcHV0KGJ1cy1cXHUwMDNlb3duZXIpO1xcbjE5MjA6XFx0XFx0cmV0dXJuIGVycjtcXG4xOTIxOlxcdH1cXG4xOTIyOlxcdEVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xcbjE5MjM6XFx0XFxuMTkyNDpcXHQvKipcXG4xOTI1OlxcdCAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXFxuMTkyNjpcXHQgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4xOTI3OlxcdCAqXFxuMTkyODpcXHQgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XFxuMTkyOTpcXHQgKiBkcml2ZXIsIGFuZCBkcm9wcyB0aGUgcmVmZXJlbmNlIGNvdW50IHRha2VuIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjQ2OjMwLjA2NTIzMjc3MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjAwNDIyNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCBJIG5lZWQgdG8gZG8sIGV4cHJlc3NlZCBhcyBpZiB0aGVzZSB3ZXJlIG15IHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgLSBMaW5lIFJhbmdlIDM2OTAtMzg3MCoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhhdCBzcGVjaWZpYyBzZWN0aW9uIG9mIHRoZSBQSFkgZHJpdmVyIGNvZGUuIEJhc2VkIG9uIHRoZSByZXF1ZXN0LCBJIG5lZWQgdG8gZm9jdXMgb24gbGluZXMgMzY5MCB0aHJvdWdoIDM4NzAgb2YgYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBUaGF0J3MgYSByZWFzb25hYmxlIHJhbmdlLCB0aG91Z2ggd2l0aG91dCBjb250ZXh0LCBpdCBjb3VsZCBjb3ZlciBhIGxvdCBvZiBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhhdCBQSFkgZHJpdmVyLiBJJ2xsIG5lZWQgdG8gcmFwaWRseSBwYXJzZSB0aGF0IHNlY3Rpb24sIGxpa2VseSBsb29raW5nIGZvciBrZXkgZnVuY3Rpb25zLCBkYXRhIHN0cnVjdHVyZXMsIG9yIHBvdGVudGlhbGx5IGludGVycnVwdCBoYW5kbGluZyBvciByZWdpc3RlciBhY2Nlc3Mgcm91dGluZXMuIEknbGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55dGhpbmcgdGhhdCBtaWdodCByZWxhdGUgdG8gdGhlIHByb2JsZW0gb3IgYXJlYSBvZiBjb25jZXJuIEknbSB3b3JraW5nIHdpdGggLSBpZiB0aGlzIHNlY3Rpb24gd2FzIHJlcXVlc3RlZCwgdGhlcmUncyBvYnZpb3VzbHkgc29tZSByZWFzb24gdG8gYmVsaWV2ZSB0aGUgaXNzdWUgaXMgcmVsYXRlZCB0byBmdW5jdGlvbmFsaXR5IGNvdmVyZWQgYnkgdGhvc2UgbGluZXMuIEkgc2hvdWxkIHdhdGNoIG91dCBmb3IgZGV2aWNlIGluaXRpYWxpc2F0aW9uLCBsaW5rIHN0YXRlIG1vbml0b3JpbmcsIGF1dG9uZWdvdGlhdGlvbiBzZXR1cCwgYW5kIGFueSByZWdpc3RlciByZWFkcyBvciB3cml0ZXMuIEknbGwgbm90ZSBhbnl0aGluZyB0aGF0IGp1bXBzIG91dCBhcyBiZWluZyByZWxhdGVkIHRvIGhhcmR3YXJlIGludGVyYWN0aW9ucyBvciBwb3NzaWJseSBlcnJvciBoYW5kbGluZy4gTGV0J3MgZ2V0IHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMTU0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjozMi42NjU2NTc4MTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzY5MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzY5MDpcXHRcXHRyZXR1cm4gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGZ3bm9kZSwgXFxcInBoeS1kZXZpY2VcXFwiLCAwKTtcXG4zNjkxOlxcdH1cXG4zNjkyOlxcdEVYUE9SVF9TWU1CT0xfR1BMKGZ3bm9kZV9nZXRfcGh5X25vZGUpO1xcbjM2OTM6XFx0XFxuMzY5NDpcXHQvKipcXG4zNjk1OlxcdCAqIHBoeV9wcm9iZSAtIHByb2JlIGFuZCBpbml0IGEgUEhZIGRldmljZVxcbjM2OTY6XFx0ICogQGRldjogZGV2aWNlIHRvIHByb2JlIGFuZCBpbml0XFxuMzY5NzpcXHQgKlxcbjM2OTg6XFx0ICogVGFrZSBjYXJlIG9mIHNldHRpbmcgdXAgdGhlIHBoeV9kZXZpY2Ugc3RydWN0dXJlLCBzZXQgdGhlIHN0YXRlIHRvIFJFQURZLlxcbjM2OTk6XFx0ICovXFxuMzcwMDpcXHRzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuMzcwMTpcXHR7XFxuMzcwMjpcXHRcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdG9fcGh5X2RldmljZShkZXYpO1xcbjM3MDM6XFx0XFx0c3RydWN0IGRldmljZV9kcml2ZXIgKmRydiA9IHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyO1xcbjM3MDQ6XFx0XFx0c3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydiA9IHRvX3BoeV9kcml2ZXIoZHJ2KTtcXG4zNzA1OlxcdFxcdGludCBlcnIgPSAwO1xcbjM3MDY6XFx0XFxuMzcwNzpcXHRcXHRwaHlkZXYtXFx1MDAzZWRydiA9IHBoeWRydjtcXG4zNzA4OlxcdFxcbjM3MDk6XFx0XFx0LyogRGlzYWJsZSB0aGUgaW50ZXJydXB0IGlmIHRoZSBQSFkgZG9lc24ndCBzdXBwb3J0IGl0XFxuMzcxMDpcXHRcXHQgKiBidXQgdGhlIGludGVycnVwdCBpcyBzdGlsbCBhIHZhbGlkIG9uZVxcbjM3MTE6XFx0XFx0ICovXFxuMzcxMjpcXHRcXHRpZiAoIXBoeV9kcnZfc3VwcG9ydHNfaXJxKHBoeWRydikgXFx1MDAyNlxcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHlkZXYpKSB7XFxuMzcxMzpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWlycV9zYXZlZCA9IHBoeWRldi1cXHUwMDNlaXJxO1xcbjM3MTQ6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VpcnEgPSBQSFlfUE9MTDtcXG4zNzE1OlxcdFxcdH1cXG4zNzE2OlxcdFxcbjM3MTc6XFx0XFx0aWYgKHBoeWRydi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBQSFlfSVNfSU5URVJOQUwpXFxuMzcxODpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2ludGVybmFsID0gdHJ1ZTtcXG4zNzE5OlxcdFxcbjM3MjA6XFx0XFx0LyogRGVhc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqL1xcbjM3MjE6XFx0XFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDApO1xcbjM3MjI6XFx0XFxuMzcyMzpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZXByb2JlKSB7XFxuMzcyNDpcXHRcXHRcXHRlcnIgPSBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcHJvYmUocGh5ZGV2KTtcXG4zNzI1OlxcdFxcdFxcdGlmIChlcnIpXFxuMzcyNjpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4zNzI3OlxcdFxcdH1cXG4zNzI4OlxcdFxcbjM3Mjk6XFx0XFx0cGh5X2Rpc2FibGVfaW50ZXJydXB0cyhwaHlkZXYpO1xcbjM3MzA6XFx0XFxuMzczMTpcXHRcXHQvKiBTdGFydCBvdXQgc3VwcG9ydGluZyBldmVyeXRoaW5nLiBFdmVudHVhbGx5LFxcbjM3MzI6XFx0XFx0ICogYSBjb250cm9sbGVyIHdpbGwgYXR0YWNoLCBhbmQgbWF5IG1vZGlmeSBvbmVcXG4zNzMzOlxcdFxcdCAqIG9yIGJvdGggb2YgdGhlc2UgdmFsdWVzXFxuMzczNDpcXHRcXHQgKi9cXG4zNzM1OlxcdFxcdGlmIChwaHlkcnYtXFx1MDAzZWZlYXR1cmVzKSB7XFxuMzczNjpcXHRcXHRcXHRsaW5rbW9kZV9jb3B5KHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkLCBwaHlkcnYtXFx1MDAzZWZlYXR1cmVzKTtcXG4zNzM3OlxcdFxcdFxcdGdlbnBoeV9jNDVfcmVhZF9lZWVfYWJpbGl0aWVzKHBoeWRldik7XFxuMzczODpcXHRcXHR9XFxuMzczOTpcXHRcXHRlbHNlIGlmIChwaHlkcnYtXFx1MDAzZWdldF9mZWF0dXJlcylcXG4zNzQwOlxcdFxcdFxcdGVyciA9IHBoeWRydi1cXHUwMDNlZ2V0X2ZlYXR1cmVzKHBoeWRldik7XFxuMzc0MTpcXHRcXHRlbHNlIGlmIChwaHlkZXYtXFx1MDAzZWlzX2M0NSlcXG4zNzQyOlxcdFxcdFxcdGVyciA9IGdlbnBoeV9jNDVfcG1hX3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XFxuMzc0MzpcXHRcXHRlbHNlXFxuMzc0NDpcXHRcXHRcXHRlcnIgPSBnZW5waHlfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcXG4zNzQ1OlxcdFxcbjM3NDY6XFx0XFx0aWYgKGVycilcXG4zNzQ3OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjM3NDg6XFx0XFxuMzc0OTpcXHRcXHRpZiAoIWxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULFxcbjM3NTA6XFx0XFx0XFx0XFx0ICAgICAgIHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkKSlcXG4zNzUxOlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlYXV0b25lZyA9IDA7XFxuMzc1MjpcXHRcXG4zNzUzOlxcdFxcdGlmIChsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfSGFsZl9CSVQsXFxuMzc1NDpcXHRcXHRcXHRcXHQgICAgICBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCkpXFxuMzc1NTpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2dpZ2FiaXRfY2FwYWJsZSA9IDE7XFxuMzc1NjpcXHRcXHRpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0Z1bGxfQklULFxcbjM3NTc6XFx0XFx0XFx0XFx0ICAgICAgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQpKVxcbjM3NTg6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19naWdhYml0X2NhcGFibGUgPSAxO1xcbjM3NTk6XFx0XFxuMzc2MDpcXHRcXHRvZl9zZXRfcGh5X3N1cHBvcnRlZChwaHlkZXYpO1xcbjM3NjE6XFx0XFxuMzc2MjpcXHRcXHRlcnIgPSBwaHlfc2V0dXBfcG9ydHMocGh5ZGV2KTtcXG4zNzYzOlxcdFxcdGlmIChlcnIpXFxuMzc2NDpcXHRcXHRcXHRnb3RvIG91dDtcXG4zNzY1OlxcdFxcbjM3NjY6XFx0XFx0cGh5X2FkdmVydGlzZV9zdXBwb3J0ZWQocGh5ZGV2KTtcXG4zNzY3OlxcdFxcbjM3Njg6XFx0XFx0LyogR2V0IFBIWSBkZWZhdWx0IEVFRSBhZHZlcnRpc2luZyBtb2RlcyBhbmQgaGFuZGxlIHRoZW0gYXMgcG90ZW50aWFsbHlcXG4zNzY5OlxcdFxcdCAqIHNhZmUgaW5pdGlhbCBjb25maWd1cmF0aW9uLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjozMi42NjU4NzA0MjNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjUzMzk3ODA1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgaWYgdGhleSB3ZXJlIG15IG93biBpbW1lZGlhdGUgY29uc2lkZXJhdGlvbnM6XG5cbioqUHJvYmluZyBhbmQgUmVtb3ZhbDogQSBRdWljayBEaWFnbm9zdGljIENoZWNrKipcblxuQWxyaWdodCwgYmVmb3JlIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoZSB3ZWVkcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEkndmUgZ290IGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gaW4gbWluZCBmb3IgdGhlIGN1cnJlbnQgaXNzdWUsIGJ1dCBJIGFsd2F5cyB3YW50IHRvIGVuc3VyZSBJIGhhdmVuJ3QgZ2xvc3NlZCBvdmVyIGFueSBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUuIE15IGluaXRpYWwgaHlwb3RoZXNpcyBmZWVscyBzb3VuZCwgYnV0IGl0J3MgY3J1Y2lhbCB0byBjb25maXJtIHRoYXQgYHBoeV9wcm9iZWAgYW5kIGBwaHlfcmVtb3ZlYCBhcmVuJ3Qgc2lsZW50bHkgY29udHJpYnV0aW5nIHRvIHRoZSBwcm9ibGVtLiBJJ20gZ29pbmcgdG8gcnVuIGEgbWVudGFsIHNjYW4gb2YgdGhlIHJlbGV2YW50IGNvZGUgc2VjdGlvbnMgZm9yIHRob3NlIGZ1bmN0aW9ucy4gSXMgdGhlcmUgYW55IHBvdGVudGlhbCBpbnRlcmFjdGlvbiBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIEkgbWlnaHQgaGF2ZSBvdmVybG9va2VkPyBBcmUgdGhlcmUgcmFjZSBjb25kaXRpb25zLCByZXNvdXJjZSBsZWFrcywgb3Igc3VidGxlIHNpZGUgZWZmZWN0cyB0aGF0IGNvdWxkIGJlIHJlbGV2YW50PyBUaGlzIGlzIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGVsaW1pbmF0ZSB0aGUgcG9zc2liaWxpdHkgb2YgYSBzaW1wbGUgbWlzY29uZmlndXJhdGlvbiBvciBvdmVybG9va2VkIGRlcGVuZGVuY3kgYmVmb3JlIEkgc3RhcnQgbG9va2luZyBhdCBtb3JlIGNvbXBsZXggaW50ZXJhY3Rpb25zLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBsb2dpYyB3aXRoaW4gdGhvc2UgdHdvIGZ1bmN0aW9ucywgYW5kIHRoZWlyIGludGVyYWN0aW9uIHdpdGggdGhlIGxhcmdlciBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjk5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjozNS4xOTk4NTY0NDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzgyMCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzgyMDpcXHRcXHQvKiBHZXQgdGhlIExFRHMgZnJvbSB0aGUgZGV2aWNlIHRyZWUsIGFuZCBpbnN0YW50aWF0ZSBzdGFuZGFyZFxcbjM4MjE6XFx0XFx0ICogTEVEcyBmb3IgdGhlbS5cXG4zODIyOlxcdFxcdCAqL1xcbjM4MjM6XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcXHUwMDI2XFx1MDAyNiAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkge1xcbjM4MjQ6XFx0XFx0XFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcXG4zODI1OlxcdFxcdFxcdGlmIChlcnIpXFxuMzgyNjpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4zODI3OlxcdFxcdH1cXG4zODI4OlxcdFxcbjM4Mjk6XFx0XFx0cmV0dXJuIDA7XFxuMzgzMDpcXHRcXG4zODMxOlxcdG91dDpcXG4zODMyOlxcdFxcdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cXHUwMDNlc2ZwX2J1cyk7XFxuMzgzMzpcXHRcXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbjM4MzQ6XFx0XFxuMzgzNTpcXHRcXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xcbjM4MzY6XFx0XFxuMzgzNzpcXHRcXHRpZiAoIXBoeWRldi1cXHUwMDNlaXNfb25fc2ZwX21vZHVsZSlcXG4zODM4OlxcdFxcdFxcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xcbjM4Mzk6XFx0XFxuMzg0MDpcXHRcXHRwaHlfcmVzdG9yZV9wcm9iZV9pcnEocGh5ZGV2KTtcXG4zODQxOlxcdFxcbjM4NDI6XFx0XFx0LyogUmUtYXNzZXJ0IHRoZSByZXNldCBzaWduYWwgb24gZXJyb3IgKi9cXG4zODQzOlxcdFxcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcXG4zODQ0OlxcdFxcbjM4NDU6XFx0XFx0cmV0dXJuIGVycjtcXG4zODQ2OlxcdH1cXG4zODQ3OlxcdFxcbjM4NDg6XFx0c3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4zODQ5OlxcdHtcXG4zODUwOlxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0b19waHlfZGV2aWNlKGRldik7XFxuMzg1MTpcXHRcXG4zODUyOlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cGh5ZGV2LVxcdTAwM2VzdGF0ZV9xdWV1ZSk7XFxuMzg1MzpcXHRcXG4zODU0OlxcdFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXFx1MDAyNlxcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpXFxuMzg1NTpcXHRcXHRcXHRwaHlfbGVkc191bnJlZ2lzdGVyKHBoeWRldik7XFxuMzg1NjpcXHRcXG4zODU3OlxcdFxcdGlmICghcGh5ZGV2LVxcdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxcbjM4NTg6XFx0XFx0XFx0cGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyKHBoeWRldik7XFxuMzg1OTpcXHRcXG4zODYwOlxcdFxcdHBoeWRldi1cXHUwMDNlc3RhdGUgPSBQSFlfRE9XTjtcXG4zODYxOlxcdFxcbjM4NjI6XFx0XFx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVxcdTAwM2VzZnBfYnVzKTtcXG4zODYzOlxcdFxcdHBoeWRldi1cXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XFxuMzg2NDpcXHRcXG4zODY1OlxcdFxcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XFxuMzg2NjpcXHRcXG4zODY3OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWRydiBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcmVtb3ZlKVxcbjM4Njg6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZXJlbW92ZShwaHlkZXYpO1xcbjM4Njk6XFx0XFxuMzg3MDpcXHRcXHRwaHlfcmVzdG9yZV9wcm9iZV9pcnEocGh5ZGV2KTtcXG4zODcxOlxcdFxcbjM4NzI6XFx0XFx0LyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi9cXG4zODczOlxcdFxcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcXG4zODc0OlxcdFxcbjM4NzU6XFx0XFx0cGh5ZGV2LVxcdTAwM2VkcnYgPSBOVUxMO1xcbjM4NzY6XFx0XFxuMzg3NzpcXHRcXHRyZXR1cm4gMDtcXG4zODc4OlxcdH1cXG4zODc5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjozNS4yMDAwNTc2MDlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTk3MjE0NzY3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgUEhZTElOSyBJbXBsZW1lbnRhdGlvbiBEZXRhaWxzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBiYWNrIGludG8gdGhpcyBuZXR3b3JrIGRyaXZlciBzaXR1YXRpb24uIEkndmUgYWxyZWFkeSBkb25lIHNvbWUgaW5pdGlhbCBhc3Nlc3NtZW50cywgYnV0IGl0J3MgdGltZSB0byBnZXQgYSBiaXQgbW9yZSBncmFudWxhci4gTGV0J3Mgc2VlLi4uIEkgd2FudCB0byBzcGVjaWZpY2FsbHkgZm9jdXMgb24gdGhlIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCBmaWxlLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgdGhlIGlubmVyIHdvcmtpbmdzIG9mIHBoeWxpbmssIGFuZCBJIHRoaW5rIHRoYXQgdGhlIGNvZGUgZnJvbSBhcm91bmQgbGluZXMgMjA4MCB0byAyMzcwIHNlZW1zIGxpa2UgYSBjcml0aWNhbCBzZWN0aW9uIHRoYXQgSSBuZWVkIHRvIGxvb2sgYXQuIEhvcGVmdWxseSwgdGhlIGNvZGUgY29tbWVudHMgdGhlcmUgYXJlIGhlbHBmdWwuIEl0J3MgdGltZSB0byB6b29tIGluIG9uIGhvdyB0aGlzIFBIWSBhYnN0cmFjdGlvbiBpcyBoYW5kbGVkIGluIGRldGFpbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIHRob3JvdWdobHkgdG8gYmUgYWJsZSB0byBtYWtlIGFueSBtZWFuaW5nZnVsIGNoYW5nZXMgb3IgdHJvdWJsZXNob290IGlzc3Vlcy4gSSdsbCBzdGFydCB3aXRoIHRoaXMgY2h1bmsgYW5kIHNlZSB3aGVyZSB0aGF0IHRha2VzIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjgwNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MzcuMTcyMjA4MDkyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxOTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIxOTA6XFx0XFx0XFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGwtXFx1MDAzZXN1cHBvcnRlZCxcXG4yMTkxOlxcdFxcdFxcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbjIxOTI6XFx0XFxuMjE5MzpcXHRcXHRpZiAocGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX21hbmFnZWRfcG0pXFxuMjE5NDpcXHRcXHRcXHRwaHktXFx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcXG4yMTk1OlxcdFxcbjIxOTY6XFx0XFx0LyogQWxsb3cgdGhlIE1BQyB0byBzdG9wIGl0cyBjbG9jayBpZiB0aGUgUEhZIGhhcyB0aGUgY2FwYWJpbGl0eSAqL1xcbjIxOTc6XFx0XFx0cGwtXFx1MDAzZW1hY190eF9jbGtfc3RvcCA9IHBoeV9lZWVfdHhfY2xvY2tfc3RvcF9jYXBhYmxlKHBoeSkgXFx1MDAzZSAwO1xcbjIxOTg6XFx0XFxuMjE5OTpcXHRcXHRpZiAocGwtXFx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzKSB7XFxuMjIwMDpcXHRcXHRcXHQvKiBFeHBsaWNpdGx5IGNvbmZpZ3VyZSB3aGV0aGVyIHRoZSBQSFkgaXMgYWxsb3dlZCB0byBzdG9wIGl0J3NcXG4yMjAxOlxcdFxcdFxcdCAqIHJlY2VpdmUgY2xvY2suXFxuMjIwMjpcXHRcXHRcXHQgKi9cXG4yMjAzOlxcdFxcdFxcdHJldCA9IHBoeV9lZWVfcnhfY2xvY2tfc3RvcChwaHksXFxuMjIwNDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgcGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlZWVlX3J4X2Nsa19zdG9wX2VuYWJsZSk7XFxuMjIwNTpcXHRcXHRcXHRpZiAocmV0ID09IC1FT1BOT1RTVVBQKVxcbjIyMDY6XFx0XFx0XFx0XFx0cmV0ID0gMDtcXG4yMjA3OlxcdFxcdH1cXG4yMjA4OlxcdFxcbjIyMDk6XFx0XFx0aWYgKHJldCA9PSAwIFxcdTAwMjZcXHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSlcXG4yMjEwOlxcdFxcdFxcdHBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpO1xcbjIyMTE6XFx0XFxuMjIxMjpcXHRcXHRpZiAocmV0KSB7XFxuMjIxMzpcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMjE0OlxcdFxcdFxcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xcbjIyMTU6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMjE2OlxcdFxcdH1cXG4yMjE3OlxcdFxcbjIyMTg6XFx0XFx0cmV0dXJuIHJldDtcXG4yMjE5OlxcdH1cXG4yMjIwOlxcdFxcbjIyMjE6XFx0c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbjIyMjI6XFx0XFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4yMjIzOlxcdHtcXG4yMjI0OlxcdFxcdHUzMiBmbGFncyA9IDA7XFxuMjIyNTpcXHRcXG4yMjI2OlxcdFxcdGlmIChXQVJOX09OKHBsLVxcdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCkpXFxuMjIyNzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yMjI4OlxcdFxcbjIyMjk6XFx0XFx0aWYgKHBsLVxcdTAwM2VwaHlkZXYpXFxuMjIzMDpcXHRcXHRcXHRyZXR1cm4gLUVCVVNZO1xcbjIyMzE6XFx0XFxuMjIzMjpcXHRcXHRpZiAocGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX3JlcXVpcmVzX3J4YylcXG4yMjMzOlxcdFxcdFxcdGZsYWdzIHw9IFBIWV9GX1JYQ19BTFdBWVNfT047XFxuMjIzNDpcXHRcXG4yMjM1OlxcdFxcdHJldHVybiBwaHlfYXR0YWNoX2RpcmVjdChwbC1cXHUwMDNlbmV0ZGV2LCBwaHksIGZsYWdzLCBpbnRlcmZhY2UpO1xcbjIyMzY6XFx0fVxcbjIyMzc6XFx0XFxuMjIzODpcXHQvKipcXG4yMjM5OlxcdCAqIHBoeWxpbmtfY29ubmVjdF9waHkoKSAtIGNvbm5lY3QgYSBQSFkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MzcuMTcyNDE1ODIyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ3NTQxMDc2ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBIWSBEZXZpY2UgTWFuYWdlbWVudCBpbiBQaHlsaW5rKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJJ20gbG9va2luZyBhdCB0aGUgY29yZSByb3V0aW5lcyBmb3IgUEhZIGRldmljZSBtYW5hZ2VtZW50IHdpdGhpbiBgcGh5bGlua2AuIFNwZWNpZmljYWxseSwgSSdtIGV4YW1pbmluZyBgcGh5bGlua19icmluZ3VwX3BoeWAgYW5kIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYmVjYXVzZSB0aGVzZSBhcmUgdGhlIGNyaXRpY2FsIHBpZWNlcyB0aGF0IGhhbmRsZSBicmluZ2luZyBhIFBIWSBvbmxpbmUgYW5kIHRha2luZyBpdCBvZmZsaW5lLCByZXNwZWN0aXZlbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZXF1ZW5jaW5nIGFuZCB0aGUgcG90ZW50aWFsIGZhaWx1cmUgbW9kZXMuXG5cbmBwaHlsaW5rX2JyaW5ndXBfcGh5YCBpcyBpbnRlcmVzdGluZy4gSSBzZWUgYSBgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZWAgYXJndW1lbnQsIHdoaWNoIHRlbGxzIG1lIGl0J3MgZGVhbGluZyB3aXRoIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIFBIWSBjb25uZWN0aW9uIC0gTURJTywgU0dNSUksIGV0Yy4gVGhlIGByZXRgIHZhcmlhYmxlIGlzIG9idmlvdXNseSBjaGVja2luZyBmb3Igc29tZSByZXR1cm4gY29kZSwgd2hpY2ggSSdsbCBoYXZlIHRvIGludmVzdGlnYXRlIGxhdGVyIHRvIHNlZSB0aGUgc3BlY2lmaWMgZXJyb3Igc2NlbmFyaW9zIHRoYXQgY2FuIG9jY3VyLiBUaGUgY3JpdGljYWwgYml0IGhlcmUgaXMgdGhlIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgY2FsbC4gSXQncyBpbnNpZGUgYW4gYGlmIChyZXQpYCBibG9jaywgYW5kIHRoZW4gd3JhcHBlZCBieSBhIG11dGV4IGxvY2svdW5sb2NrLiBUaGlzIHRlbGxzIG1lIHRoYXQgaWYgdGhlIGJyaW5ndXAgKmZhaWxzKiwgaXQgKmNsZWFycyogdGhlIFBIWSBkZXZpY2UgZW50cnkuIFRoZSBtdXRleCwgYHBsLVx1MDAzZXBoeWRldl9tdXRleGAsIGlzIHVzZWQgdG8gcHJvdGVjdCBjb25jdXJyZW50IGFjY2VzcyB0byB0aGUgUEhZIGRldmljZSBzdHJ1Y3R1cmUuIFNvLCBpZiB0aGUgUEhZIGJyaW5ndXAgZmFpbHMsIGl0IHJlbGVhc2VzIHRoZSBQSFkuXG5cbk5vdywgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgIGlzIHNpbXBsZXIuIEl0IHJldHJpZXZlcyB0aGUgYHBoeWRldmAgdW5kZXIgdGhlIG11dGV4IGxvY2sgYW5kLCBpZiBvbmUgZXhpc3RzLCBpdCBjbGVhcnMgaXQgdmlhIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAuIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgKnRlYXJkb3duKiBvZiB0aGUgUEhZLCBhbmQsIHNpbWlsYXJseSwgcHJvdGVjdHMgYWNjZXNzIHRvIHRoZSBgcGh5ZGV2YCB3aXRoIGEgbXV0ZXguXG5cbkkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBvZiBgcGh5bGlua19jbGVhcl9waHlkZXZgIHRvIHNlZSBleGFjdGx5IHdoYXQncyBiZWluZyBkb25lIHdoZW4gdGhlIFBIWSBpcyByZW1vdmVkIG9yIGEgZmFpbHVyZSBpcyBlbmNvdW50ZXJlZC4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIG1hZ2ljIChvciBwb3RlbnRpYWwgcHJvYmxlbXMpIGxpZS4gVGhlIG11dGV4IHByb3RlY3Rpb24gaXMgZ29vZCwgc3RhbmRhcmQgcHJhY3RpY2UsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHN0YXRlIHRoZSBgcGh5bGlua2Agc3RydWN0dXJlIGlzIGxlZnQgaW4gYWZ0ZXIgdGhlc2UgY2FsbHMsIGVzcGVjaWFsbHkgYWZ0ZXIgYSBicmluZ3VwIGZhaWx1cmUuIEFsc28sIEkgbmVlZCB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlcyBhbmQgZXJyb3IgaGFuZGxpbmcsIGVzcGVjaWFsbHkgdGhlIG1lYW5pbmcgb2YgdGhlIGByZXRgIHZhbHVlIGluIHRoZSBgcGh5bGlua19icmluZ3VwX3BoeWAgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzODI1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NDEuOTI2NTI3MzE1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTc1NDU1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2JyaW5ndXBfcGh5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMDg3PXN0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjA5Ny1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIwOTg6c3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIwOTktXFx0XFx0XFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNTM9aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjY2LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI2NzpcXHRyZXQgPSBwaHlsaW5rX2JyaW5ndXBfcGh5KHBsLCBwaHksIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzA1PWludCBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdChzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDQtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzQ1OlxcdHJldCA9IHBoeWxpbmtfYnJpbmd1cF9waHkocGwsIHBoeV9kZXYsIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNzExPXN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29uZmlnX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM3NDgtXFx0LyogVGhpcyB3aWxsIHZhbGlkYXRlIHRoZSBjb25maWd1cmF0aW9uIGZvciB1cy4gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM3NDk6XFx0cmV0ID0gcGh5bGlua19icmluZ3VwX3BoeShwbCwgcGh5LCBjb25maWcuaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM3NTAtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NDEuOTc2Mjg2MzQyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI5ODk2NzkyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBQSFlMSUIgYW5kIFBIWUxJTksqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHN0YXR1cyBvZiBQSFlMSUIgYW5kIFBIWUxJTksgY29uZmlndXJhdGlvbi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gZGVjaXNpb25zIGFyZSBtYWRlLCBhbmQgaXQnbGwgZ2l2ZSBtZSBhIGdyYW51bGFyIHZpZXcgb2YgdGhlaXIgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIGFueSByZWxldmFudCBvcHRpb25zLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBQSFkgZnJhbWV3b3JrcyBhcmUgaGFuZGxlZCBpbiB0aGUgc3BlY2lmaWMgcHJvamVjdCBvciBrZXJuZWwgSSdtIGxvb2tpbmcgYXQuIEFyZSB0aGV5IG1vZHVsYXI/IEJ1aWx0LWluPyBXaGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQ/IEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBwZXJoYXBzIHJlbGF0aW5nIHRvIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtcyBvciBuZXR3b3JraW5nIHN0YWNrcz8gSSBuZWVkIGEgY2xlYXIgbWVudGFsIHBpY3R1cmUgb2YgaG93IHRoZXNlIGFyZSBpbnRlZ3JhdGVkIGFuZCBjb25maWd1cmVkLiBJJ20gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBrbm9icyB0byB0dXJuLCB0byB1bmRlcnN0YW5kIGhvdyBJIGNhbiBpbmZsdWVuY2Ugb3IgbW9kaWZ5IHRoZWlyIGJlaGF2aW91ciBiYXNlZCBvbiB0aGUgY29udGV4dCBvZiB3aGF0IEkgYW0gd29ya2luZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUwNDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0Njo0NC45NjU5NjgxMjlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjY0MTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyAoUEhZTElCfFBIWUxJTkspXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Njpjb25maWcgUEhZTElOS1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTctXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1Om1lbnVjb25maWcgUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYtXFx0dHJpc3RhdGUgXFxcIlBIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01MC1cXHRkZWZfYm9vbCBPRlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0Njo0NS4wMTM2Mzk5MTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTgyNTAwODk0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaWdnaW5nIERlZXBlciBpbnRvIHRoZSBQSFlMSUIgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIHdvcmtpbmcgd2l0aCBQSFlMSUIvUEhZTElOSywgYW5kIG15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBlbnN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgbHVya2luZyBkZXBlbmRlbmNpZXMgb3IgY29uZmlndXJhdGlvbiBmbGFncy4gWW91IGtub3cgaG93IGl0IGlzIOKAkyBhIHNlZW1pbmdseSBzdHJhaWdodGZvcndhcmQgY29tcG9uZW50IGNhbiBoYXZlIGhpZGRlbiBudWFuY2VzLiBUaW1lIHRvIGRvdWJsZS1jaGVjayBldmVyeXRoaW5nLCBlc3BlY2lhbGx5IHRvIHNlZSB3aGF0IGVsc2UgY291bGQgYmUgbHVya2luZyBpbiB0aGUgc2hhZG93cy4gSSdsbCBzdGFydCBieSBleGFtaW5pbmcgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkuIFRoYXQncyB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhlIHRydXRoIGFib3V0IHRoZSBvcHRpb25zLiBHb3R0YSBtYWtlIHN1cmUgSSdtIHNlZWluZyB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NDgzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NDYuODM4NjUxODg4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBQSFlMSU5LXFxuICAgNzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAgIDk6XFx0XFx0c2VsZWN0IFNXUEhZXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxcbiAgMTI6XFx0XFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXFxuICAxMzpcXHRcXHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0bWVudWNvbmZpZyBQSFlMSUJcXG4gIDE2OlxcdFxcdHRyaXN0YXRlIFxcXCJQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXFxcIlxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcXG4gIDE5OlxcdFxcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxcbiAgMjA6XFx0XFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0aWYgUEhZTElCXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBTV1BIWVxcbiAgMjU6XFx0XFx0Ym9vbFxcbiAgMjY6XFx0XFxuICAyNzpcXHRjb25maWcgUEhZX1BBQ0tBR0VcXG4gIDI4OlxcdFxcdCB0cmlzdGF0ZVxcbiAgMjk6XFx0XFxuICAzMDpcXHRjb25maWcgTEVEX1RSSUdHRVJfUEhZXFxuICAzMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IExFRCB0cmlnZ2VycyBmb3IgdHJhY2tpbmcgbGluayBzdGF0ZVxcXCJcXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBBZGRzIHN1cHBvcnQgZm9yIGEgc2V0IG9mIExFRCB0cmlnZ2VyIGV2ZW50cyBwZXItUEhZLiAgTGlua1xcbiAgMzU6XFx0XFx0ICBzdGF0ZSBjaGFuZ2Ugd2lsbCB0cmlnZ2VyIHRoZSBldmVudHMsIGZvciBjb25zdW1wdGlvbiBieSBhblxcbiAgMzY6XFx0XFx0ICBMRUQgY2xhc3MgZHJpdmVyLiAgVGhlcmUgYXJlIHRyaWdnZXJzIGZvciBlYWNoIGxpbmsgc3BlZWQgY3VycmVudGx5XFxuICAzNzpcXHRcXHQgIHN1cHBvcnRlZCBieSB0aGUgUEhZIGFuZCBhbHNvIGEgb25lIGNvbW1vbiBcXFwibGlua1xcXCIgdHJpZ2dlciBhcyBhXFxuICAzODpcXHRcXHQgIGxvZ2ljYWwtb3Igb2YgYWxsIHRoZSBsaW5rIHNwZWVkIG9uZXMuXFxuICAzOTpcXHRcXHQgIEFsbCB0aGVzZSB0cmlnZ2VycyBhcmUgbmFtZWQgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgcGF0dGVybjpcXG4gIDQwOlxcdFxcdCAgICAgIFxcdTAwM2NtaWkgYnVzIGlkXFx1MDAzZTpcXHUwMDNjcGh5XFx1MDAzZTpcXHUwMDNjc3BlZWRcXHUwMDNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjQ2OjQ2LjgzODc0NzA5N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MzA2MzIxMjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFJlYWNoYWJpbGl0eSBhbmQgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGlzIGNvZGUgaXMgcmVhY2hhYmxlIHdpdGhpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB3aGljaCBpcyBhIGNvbW1vbiBiYXNlLiBQaHlsaWIgYW5kIHBoeWxpbmsgYXJlIGNvcmUgbmV0d29ya2luZyBQSFkgbGF5ZXIgYWJzdHJhY3Rpb25zLCBzbyB0aGF0J3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQuIEdvb2QuXG5cbkkgcmVjYWxsIHRoYXQgVVNCIEV0aGVybmV0IGRldmljZXMsIHRoaW5ncyBsaWtlIHRoZSBBU0lYIGNoaXBzLCBhcmUgZGVmaW5pdGVseSBlbXVsYXRlZCBhbmQgYWNjZXNzaWJsZSB0aHJvdWdoIHN5emthbGxlcidzIFVTQiBnYWRnZXQsIHJhd19nYWRnZXQsIG9yIHZpcnR1YWwgVVNCIGVtdWxhdGlvbi4gVGhhdCdzIGEgZ29vZCBzaWduLiBBbHNvLCB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlcyB3aXRoaW4gdGhlIHN0YWNrIGxpa2UgYGRzYV9sb29wYCBvciBgZHVtbXlgIGNhbiBhbHNvIGV4ZXJjaXNlIHBoeWxpYi4gUGVyZmVjdC5cblxuTm93LCBsb29raW5nIGF0IHRoZSBjb2RlIGNoYW5nZXMsIHdlIGhhdmUgbW9kaWZpY2F0aW9ucyB0byBzdGF0ZSBtYW5hZ2VtZW50LCB3aGljaCBpbmNsdWRlcyBpbnRlcnJ1cHQgaGFuZGxpbmcg4oCTIGBpcnFfc2F2ZWRgLCBgaXJxYCwgYHBoeV9yZXN0b3JlX3Byb2JlX2lycWAuIFRoZXJlJ3MgYWxzbyBzb21lIGVycm9yIGhhbmRsaW5nIGNsZWFudXAsIHNwZWNpZmljYWxseSBhcm91bmQgYGVycm9yX21vZHVsZV9wdXRgLCBgb3V0YCBsYWJlbHMsIGFuZCBgcmV0YCBwYXRocy4gUGx1cywgYSBmZXcgbmV3IGhlbHBlciBmdW5jdGlvbnMgYXJlIGludHJvZHVjZWQ6IGBwaHlfcmVzdG9yZV9wcm9iZV9pcnFgIGFuZCBgcGh5bGlua19jbGVhcl9waHlkZXZgLiBJIGtub3cgdGhhdCB0aGVzZSBjYW4gYmUgc2lnbmlmaWNhbnQuXG5cblNpbmNlIHRoZSBjaGFuZ2VzIGltcGFjdCBlcnJvciBoYW5kbGluZyBhbmQgY29yZSBmdW5jdGlvbmFsaXR5LCBhbmQgaXQncyBkZWFsaW5nIHdpdGggYSBjb3JlIHN1YnN5c3RlbSwgSSdtIHRoaW5raW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbk5leHQsIHRoZSBmb2N1cyBzeW1ib2xzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkndmUgZ290IHRoZSBtb3N0IHJlbGV2YW50IGVudHJ5IHBvaW50cy4gSSdtIGZvY3VzaW5nIG9uIGBwaHlfcmVzdG9yZV9wcm9iZV9pcnFgIChzcGVjaWZpY2FsbHkgaXRzIGNhbGxlcnMgLSBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X3Byb2JlYCwgYW5kIGBwaHlfcmVtb3ZlYCkgYW5kIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgKGNhbGxlZCBieSBgcGh5bGlua19icmluZ3VwX3BoeWAgYW5kIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCkuIEkgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGF0IGBwaHlfZGV2aWNlX2NyZWF0ZWAsIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCwgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgLCBhbmQgYHBoeWxpbmtfY29ubmVjdF9waHlgIGFyZSBhbHNvIGZvY3VzIHN5bWJvbHMuIE9rYXksIGl0IHNlZW1zIHRoYXQgdGhlc2UgYXJlbid0IHViaXF1aXRvdXNseSBob3QtcGF0aHMsIGFuZCB0aGUgY29kZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byB0aGUgcGh5bGliL3BoeWxpbmsgbGlmZWN5Y2xlLiBUaGF0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnM6IGBQSFlMSUJgIGFuZCBgUEhZTElOS2AuIEdvb2QuXG5cbk5vdywgbGV0J3MgcmV2aWV3IHRoZSB0cmlhZ2UgcHJvY2Vzcy4gUmVhY2hhYmlsaXR5IGlzIHRoZSBwcmlvcml0eSwgc28gSSdsbCBiZSBjb25maWRlbnQgaW4gdGhlIHRyaWFnZSBhcyB0aGUgcHJpbWFyeSBjcml0ZXJpYS4gVGhlIG1vZGlmaWVkIGNvZGUgc2VlbXMgcmVhY2hhYmxlLCB0aGVyZWZvcmUgaXQgd2FycmFudHMgZnV6emluZy4gYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGB0cnVlYC4gVGhlIGZvY3VzIHN5bWJvbHMgYXJlIG5vbi11YmlxdWl0b3VzLCBhbmQgdGhlIGVuYWJsZSBjb25maWd1cmF0aW9ucyBhcmUsIGFzIG5vdGVkLCBgUEhZTElCYCBhbmQgYFBIWUxJTktgLiBJIHdhbnQgdG8gZW5zdXJlIG15IHRoaW5raW5nIGlzIGNsZWFyIGFuZCBjb21wbGV0ZSBiZWZvcmUgSSBzZXQgdGhlIHJlc3VsdHMuXG5cbk9rYXksIGxldCdzIHJldmlldyB0aGUgZm9jdXMgc3ltYm9scyBsaXN0OlxuLSBgcGh5X2RldmljZV9jcmVhdGVgXG4tIGBwaHlfcmVzdG9yZV9wcm9iZV9pcnFgIGFuZCBpdHMgY2FsbGVycyAoYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYClcbi0gYHBoeWxpbmtfYnJpbmd1cF9waHlgXG4tIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YFxuLSBgcGh5bGlua19jb25uZWN0X3BoeWBcblxuSSBiZWxpZXZlIHRoaXMgaXMgYSBjb25jaXNlIGFuZCBjb21wbGV0ZSBhbmFseXNpcy4gSSdtIHJlYWR5IHRvIHNldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYxNjIsIk91dHB1dFRva2VucyI6MjA5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NTMuMTQ1MDcxMjlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTUzMDAwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQSFlMSU5LXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2F0dGFjaF9kaXJlY3RcIixcbiAgICBcInBoeV9wcm9iZVwiLFxuICAgIFwicGh5X3JlbW92ZVwiLFxuICAgIFwicGh5X2RldmljZV9jcmVhdGVcIixcbiAgICBcInBoeWxpbmtfYnJpbmd1cF9waHlcIixcbiAgICBcInBoeWxpbmtfZGlzY29ubmVjdF9waHlcIixcbiAgICBcInBoeWxpbmtfY29ubmVjdF9waHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUlEgcHJlc2VydmF0aW9uIGFuZCByZXN0b3JhdGlvbiBsb2dpYyBhY3Jvc3MgUEhZIGRldmljZSBwcm9iZSwgYXR0YWNoLCBkZXRhY2gsIGFuZCByZW1vdmUgbGlmZWN5Y2xlIHBhdGhzIGluIHBoeWxpYiAoZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyksIGFzIHdlbGwgYXMgcGh5bGluayBjb25uZWN0aW9uIGVycm9yIHRlYXJkb3duIChkcml2ZXJzL25ldC9waHkvcGh5bGluay5jKS4gVGhlc2Ugc3Vic3lzdGVtcyBhcmUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsaXplZCBuZXR3b3JraW5nIGRyaXZlcnMgYW5kIFVTQiBFdGhlcm5ldCBkZXZpY2UgZW11bGF0aW9uIChlLmcuIGFzaXgsIGxhbjc4eHgsIHNtc2M5NXh4KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gZGV0ZWN0IHJlZ3Jlc3Npb25zLCBzdGF0ZSBpbmNvbnNpc3RlbmNpZXMsIGFuZCB0ZWFyZG93bi9lcnJvci1oYW5kbGluZyBidWdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUEhZTElOS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV9hdHRhY2hfZGlyZWN0XCIsXG4gICAgXCJwaHlfcHJvYmVcIixcbiAgICBcInBoeV9yZW1vdmVcIixcbiAgICBcInBoeV9kZXZpY2VfY3JlYXRlXCIsXG4gICAgXCJwaHlsaW5rX2JyaW5ndXBfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIHByZXNlcnZhdGlvbiBhbmQgcmVzdG9yYXRpb24gbG9naWMgYWNyb3NzIFBIWSBkZXZpY2UgcHJvYmUsIGF0dGFjaCwgZGV0YWNoLCBhbmQgcmVtb3ZlIGxpZmVjeWNsZSBwYXRocyBpbiBwaHlsaWIgKGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMpLCBhcyB3ZWxsIGFzIHBoeWxpbmsgY29ubmVjdGlvbiBlcnJvciB0ZWFyZG93biAoZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYykuIFRoZXNlIHN1YnN5c3RlbXMgYXJlIHJlYWNoYWJsZSB2aWEgdmlydHVhbGl6ZWQgbmV0d29ya2luZyBkcml2ZXJzIGFuZCBVU0IgRXRoZXJuZXQgZGV2aWNlIGVtdWxhdGlvbiAoZS5nLiBhc2l4LCBsYW43OHh4LCBzbXNjOTV4eCkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGRldGVjdCByZWdyZXNzaW9ucywgc3RhdGUgaW5jb25zaXN0ZW5jaWVzLCBhbmQgdGVhcmRvd24vZXJyb3ItaGFuZGxpbmcgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NTMuMjI2NjA4NjQ1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ4ODg2ODM1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjQ2OjUzLjIyNzIwMTA1NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEyNDg4MjcxODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgcmVzb2x2ZXMgc3RhdGUgdHJhY2tpbmcgYW5kIGNsZWFudXAgaXNzdWVzIGZvciBQSFkgaW50ZXJydXB0IHJlc3RvcmF0aW9uICh2aWEgYSBuZXcgYGlycV9zYXZlZGAgZmllbGQpIGFuZCBlcnJvciBoYW5kbGluZyBkdXJpbmcgcGh5bGluayBicmluZ3VwL2Rpc2Nvbm5lY3QuXFxuXFxuMS4gTWVtb3J5IGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uOiBgc3RydWN0IHBoeV9kZXZpY2VgIGlzIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jX29iamAsIGFuZCB0aGUgbmV3IGBpcnFfc2F2ZWRgIGZpZWxkIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYFBIWV9QT0xMYCB1cG9uIGNyZWF0aW9uIGluIGBwaHlfZGV2aWNlX2NyZWF0ZSgpYC5cXG4yLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZTogQWxsIG9wZXJhdGlvbnMgb24gYGlycV9zYXZlZGAgYW5kIGBwaHlkZXZgIG1lbWJlcnMgb3BlcmF0ZSBvbiBmdWxseSBpbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzIGFuZCBkbyBub3QgcmVhZCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5LlxcbjMuIE5vIGluZm8tbGVha3M6IE5vIHN0cnVjdHVyZXMsIHBhZGRpbmcsIG9yIGJ1ZmZlcnMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlIChubyBgY29weV90b191c2VyYCwgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bHMsIGV0Yy4pLlxcbjQuIEtBU0FOIC8gTE9DS0RFUCBhcHBsaWNhYmlsaXR5OiBBbnkgaXNzdWVzIGludHJvZHVjZWQgaW4gdGhlc2UgcGF0aHMgKHN1Y2ggYXMgbG9ja2luZyBtaXN0YWtlcyBhcm91bmQgYHBsLVxcdTAwM2VwaHlkZXZfbXV0ZXhgIG9yIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcykgYXJlIGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ODJjYjk1MGZiMjMyMGYwZjA2M2ViYjExNzRmMGFhNjZhZmMwOTRmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAwMTo0NjowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li5iYTExNzE0NzcyMWFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTc3MCw2ICs3NzAsNyBAQCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXG4gXHRtZGlvZGV2LVx1MDAzZWRldmljZV9yZW1vdmUgPSBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlO1xuIFx0bWRpb2Rldi1cdTAwM2VyZXNldF9zdGF0ZSA9IC0xO1xuIFxuK1x0ZGV2LVx1MDAzZWlycV9zYXZlZCA9IFBIWV9QT0xMO1xuIFx0ZGV2LVx1MDAzZXNwZWVkID0gU1BFRURfVU5LTk9XTjtcbiBcdGRldi1cdTAwM2VkdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcbiBcdGRldi1cdTAwM2VwYXVzZSA9IGZhbHNlO1xuQEAgLTE3MzQsNiArMTczNSwxOSBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG4gfVxuIFxuKy8qIEdpdmUgYmFjayB3aGF0IHBoeV9wcm9iZSgpIHRvb2ssIGJ1dCBub3Qgd2hpbGUgcGh5X2xpbmtfY2hhbmdlIG1hcmtzIGFcbisgKiBjb25zdW1lcjogaXQgc2tpcHBlZCBwaHlfcmVxdWVzdF9pbnRlcnJ1cHQoKSBvbiB0aGUgdmFsdWUgaXQgc2F3LCBzb1xuKyAqIHBoeV9kaXNjb25uZWN0KCkgd291bGQgZnJlZSBhbiBpbnRlcnJ1cHQgbm9ib2R5IHJlcXVlc3RlZC5cbisgKi9cbitzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9wcm9iZV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRpZiAocGh5ZGV2LVx1MDAzZXBoeV9saW5rX2NoYW5nZSB8fCBwaHlkZXYtXHUwMDNlaXJxX3NhdmVkID09IFBIWV9QT0xMKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRwaHlkZXYtXHUwMDNlaXJxID0gcGh5ZGV2LVx1MDAzZWlycV9zYXZlZDtcbitcdHBoeWRldi1cdTAwM2VpcnFfc2F2ZWQgPSBQSFlfUE9MTDtcbit9XG4rXG4gLyoqXG4gICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxuICAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxuQEAgLTE4OTYsNiArMTkxMCw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFxuIGVycm9yX21vZHVsZV9wdXQ6XG4gXHRtb2R1bGVfcHV0KGQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyKTtcbitcdHBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpO1xuIFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuIFx0ZC1cdTAwM2Vkcml2ZXIgPSBOVUxMO1xuIGVycm9yX3B1dF9kZXZpY2U6XG5AQCAtMzY5NCw4ICszNzA5LDEwIEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdC8qIERpc2FibGUgdGhlIGludGVycnVwdCBpZiB0aGUgUEhZIGRvZXNuJ3Qgc3VwcG9ydCBpdFxuIFx0ICogYnV0IHRoZSBpbnRlcnJ1cHQgaXMgc3RpbGwgYSB2YWxpZCBvbmVcbiBcdCAqL1xuLVx0aWYgKCFwaHlfZHJ2X3N1cHBvcnRzX2lycShwaHlkcnYpIFx1MDAyNlx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeWRldikpXG4rXHRpZiAoIXBoeV9kcnZfc3VwcG9ydHNfaXJxKHBoeWRydikgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkge1xuK1x0XHRwaHlkZXYtXHUwMDNlaXJxX3NhdmVkID0gcGh5ZGV2LVx1MDAzZWlycTtcbiBcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IFBIWV9QT0xMO1xuK1x0fVxuIFxuIFx0aWYgKHBoeWRydi1cdTAwM2VmbGFncyBcdTAwMjYgUEhZX0lTX0lOVEVSTkFMKVxuIFx0XHRwaHlkZXYtXHUwMDNlaXNfaW50ZXJuYWwgPSB0cnVlO1xuQEAgLTM4MjAsNiArMzgzNyw4IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4gXHRcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xuIFxuK1x0cGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7XG4rXG4gXHQvKiBSZS1hc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCBvbiBlcnJvciAqL1xuIFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xuIFxuQEAgLTM4NDgsNiArMzg2Nyw4IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUpXG4gXHRcdHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKHBoeWRldik7XG4gXG4rXHRwaHlfcmVzdG9yZV9wcm9iZV9pcnEocGh5ZGV2KTtcbitcbiBcdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDNlYzNiYjQzOTEwOTUuLjZhOTJmYWM1OGYyNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMjA4Myw2ICsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0cmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpO1xuIH1cbiBcbisvKiBEaXNhc3NvY2lhdGUgQHBoeSBmcm9tIEBwbC4gQ2FsbGVyIG11c3QgaG9sZCBwbC1cdTAwM2VwaHlkZXZfbXV0ZXguICovXG4rc3RhdGljIHZvaWQgcGh5bGlua19jbGVhcl9waHlkZXYoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuK3tcbitcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4rXHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuK1x0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbitcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuQEAgLTIxOTcsNiArMjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0aWYgKHJldCA9PSAwIFx1MDAyNlx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeSkpXG4gXHRcdHBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpO1xuIFxuK1x0aWYgKHJldCkge1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4rXHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbitcdH1cbitcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTIzNDcsMTUgKzIzNjUsOCBAQCB2b2lkIHBoeWxpbmtfZGlzY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsKVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuIFx0cGh5ID0gcGwtXHUwMDNlcGh5ZGV2O1xuLVx0aWYgKHBoeSkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdHBsLVx1MDAzZXBoeWRldiA9IE5VTEw7XG4tXHRcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4tXHRcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0fVxuK1x0aWYgKHBoeSlcbitcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbiBcbiBcdGlmIChwaHkpIHtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaFxuaW5kZXggNWY4ZDY1ODY4ZTBmZi4uZDQ5MjQxNzU3MmEwZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmhcbisrKyBiL2luY2x1ZGUvbGludXgvcGh5LmhcbkBAIC01OTEsNiArNTkxLDggQEAgc3RydWN0IHBoeV9vYXRjMTRfc3FpX2NhcGFiaWxpdHkge1xuICAqICAgICAgLSBCaXRzIFszMToyNF0gYXJlIHJlc2VydmVkIGZvciBkZWZpbmluZyBnZW5lcmljXG4gICogICAgICAgIFBIWSBkcml2ZXIgYmVoYXZpb3IuXG4gICogQGlycTogSVJRIG51bWJlciBvZiB0aGUgUEhZJ3MgaW50ZXJydXB0ICgtMSBpZiBub25lKVxuKyAqIEBpcnFfc2F2ZWQ6IEBpcnEgYXMgaXQgd2FzIGJlZm9yZSBwaHlfcHJvYmUoKSByZXBsYWNlZCBpdCB3aXRoIFBIWV9QT0xMLFxuKyAqICAgICAgICAgICAgIG9yIFBIWV9QT0xMIHdoZW4gdGhlcmUgaXMgbm90aGluZyB0byByZXN0b3JlXG4gICogQHBoeWxpbms6IFBvaW50ZXIgdG8gcGh5bGluayBpbnN0YW5jZSBmb3IgdGhpcyBQSFlcbiAgKiBAc2ZwX2J1c19hdHRhY2hlZDogRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIFNGUCBidXMgaGFzIGJlZW4gYXR0YWNoZWRcbiAgKiBAc2ZwX2J1czogU0ZQIGJ1cyBhdHRhY2hlZCB0byB0aGlzIFBIWSdzIGZpYmVyIHBvcnRcbkBAIC03NjEsNiArNzYzLDcgQEAgc3RydWN0IHBoeV9kZXZpY2Uge1xuIFx0ICogLTEgbWVhbnMgbm8gaW50ZXJydXB0XG4gXHQgKi9cbiBcdGludCBpcnE7XG4rXHRpbnQgaXJxX3NhdmVkO1xuIFxuIFx0LyogcHJpdmF0ZSBkYXRhIHBvaW50ZXIgKi9cbiBcdC8qIEZvciB1c2UgYnkgUEhZcyB0byBtYWludGFpbiBleHRyYSBzdGF0ZSAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NTMuMjI3MjAzODc1WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUyNTgwOTEwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIFBhdGNoIGZvciBQb3RlbnRpYWwgS01TQU4gQ29uY2VybnMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgc2VlIGlmIHdlIG5lZWQgdG8gZmlyZSB1cCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uLiBGaXJzdCwgSSBuZWVkIHRvIGJyZWFrIGRvd24gdGhlIGNoYW5nZXMuIFRoZSBkaWZmIHNob3dzIG1vZGlmaWNhdGlvbnMgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AsIGFuZCBgaW5jbHVkZS9saW51eC9waHkuaGAuIEkgc2VlIGNoYW5nZXMgdG8gdGhlIFBIWSBpbnRlcnJ1cHQgaGFuZGxpbmcsIHNwZWNpZmljYWxseSBhcm91bmQgc2F2aW5nIGFuZCByZXN0b3JpbmcgdGhlIGludGVycnVwdCBudW1iZXIgKGBpcnFfc2F2ZWRgKS5cblxuSW4gYHBoeV9kZXZpY2UuY2AsIHRoZXkndmUgYWRkZWQgYGlycV9zYXZlZGAgdG8gdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3QuICBJdCBsb29rcyBsaWtlIHRoaXMgdmFyaWFibGUgaXMgYmVpbmcgdXNlZCB0byB0ZW1wb3JhcmlseSBzdG9yZSB0aGUgb3JpZ2luYWwgaW50ZXJydXB0IG51bWJlciAoYHBoeWRldi1cdTAwM2VpcnFgKSB3aGVuIGl0J3MgYmVpbmcgcG9sbGVkIGluc3RlYWQuICBUaGUgY29kZSBpbiBgcGh5X3Byb2JlYCwgYHBoeV9yZW1vdmVgLCBhbmQgYHBoeV9hdHRhY2hfZGlyZWN0YCBzZWVtIHRvIGJlIHRoZSBrZXkgYXJlYXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZW4gYW5kIHdoeSB0aGUgaW50ZXJydXB0IGlzIGJlaW5nIFwic2F2ZWRcIiBhbmQgXCJyZXN0b3JlZC5cIiAgVGhlIHJlZmFjdG9yaW5nIGluIGBwaHlsaW5rLmNgIHdpdGggdGhlIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgZnVuY3Rpb24gbG9va3MgbGlrZSBhIGNsZWFudXAgb3BlcmF0aW9uLCBwb3NzaWJseSByZWxhdGVkIHRvIGVycm9yIGhhbmRsaW5nLlxuXG5Ob3csIHRoZSBjcml0aWNhbCBwYXJ0OiB1bmluaXRpYWxpemVkIG1lbW9yeSBhbmQgcG90ZW50aWFsIGluZm9ybWF0aW9uIGxlYWtzLiAgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGBpcnFfc2F2ZWRgIGlzbid0IGEgdmVjdG9yIGZvciB2dWxuZXJhYmlsaXRpZXMuIEkgc2VlIGBkZXYtXHUwMDNlaXJxX3NhdmVkYCBpcyBpbml0aWFsaXplZCB0byBgUEhZX1BPTExgIGR1cmluZyBgcGh5X2RldmljZV9jcmVhdGVgLCB3aGljaCBpcyBnb29kLiAgSSBuZWVkIHRvIHZlcmlmeSB0aGUgYWxsb2NhdGlvbiBvZiB0aGUgYHBoeV9kZXZpY2VgIHN0cnVjdCBpdHNlbGYsIGJ1dCBpdCBhcHBlYXJzIHRvIGJlIGluaXRpYWxpemVkIHZpYSBga3phbGxvY2AuIEkgYWxzbyBjaGVja2VkIHRoZSBjb2RlIGFuZCB0aGVyZSBhcHBlYXIgdG8gYmUgbm8gbmV3IGluc3RhbmNlcyBvZiBgY29weV90b191c2VyYCwgYHB1dF91c2VyYCwgbmV0bGluayBza2IgYXR0cnMsIGlvY3Rscywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzIHRoYXQgY291bGQgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGxlYWtzLiBJIGRvbid0IHNlZSBhbnkgb2J2aW91cyB1bmluaXRpYWxpemVkIHN0cnVjdCBmaWVsZHMsIHVuaW5pdGlhbGl6ZWQgYnVmZmVycyBiZWluZyBwYXNzZWQgYXJvdW5kIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGJyYW5jaGluZy4gTm8gY2hhbmdlcyBzZWVtIHRvIGhhdmUgaW1wYWN0ZWQgdGhlIHVzZXItc3BhY2UgQUJJIHdoaWNoIHdvdWxkIGJlIGFub3RoZXIgcG9pbnQgb2YgY29uY2Vybi5cblxuVG8gYmUgZXh0cmEgc3VyZSwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBgcGh5X2RldmljZV9jcmVhdGVgIGZ1bmN0aW9uIGluIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCB0byBjb25maXJtIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgYWxsb2NhdGlvbiBkZXRhaWxzLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJZiB0aGlzIGlzIGEgc2ltcGxlIGludGVycnVwdCBoYW5kbGluZyBjaGFuZ2Ugd2l0aCBhIHByb3BlciBpbml0aWFsaXphdGlvbiBwYXRoLCBJIGRvbid0IGV4cGVjdCBhbnkgS01TQU4gYWxhcm1zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODQ5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTkzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NTguNDg1Mjk4NTk2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzgzMjk5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfZGV2aWNlX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jPTU1MT1zdGF0aWMgdm9pZCB0amExMTAyX3AxX3JlZ2lzdGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU4NS1cXHRcXHQvKiBSZWFsIFBIWSBJRCBvZiBQb3J0IDEgaXMgMCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU4NjpcXHRcXHRwaHkgPSBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIFBIWV9JRF9USkExMTAyLCBmYWxzZSwgTlVMTCk7XFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTg3LVxcdFxcdGlmIChJU19FUlIocGh5KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTkyLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU5MzpcXHRcXHQvKiBPdmVyd3JpdGUgcGFyZW50IGRldmljZS4gcGh5X2RldmljZV9jcmVhdGUoKSBzZXQgcGFyZW50IHRvXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTk0LVxcdFxcdCAqIHRoZSBtaWlfYnVzLVxcdTAwM2VkZXYsIHdoaWNoIGlzIG5vdCBjb3JyZWN0IGluIGNhc2UuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTcyOD1zdGF0aWMgaW50IHBoeV9yZXF1ZXN0X2RyaXZlcl9tb2R1bGUoc3RydWN0IHBoeV9kZXZpY2UgKmRldiwgdTMyIHBoeV9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNzQ3LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NzQ4OnN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgdTMyIHBoeV9pZCxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc0OS1cXHRcXHRcXHRcXHQgICAgIGJvb2wgaXNfYzQ1LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy04NDAtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6ODQxOkVYUE9SVF9TWU1CT0wocGh5X2RldmljZV9jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtODQyLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMDcyPXN0cnVjdCBwaHlfZGV2aWNlICpnZXRfcGh5X2RldmljZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwOTctXFx0XFx0aWYgKCFyKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTA5ODpcXHRcXHRcXHRyZXR1cm4gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDk5LVxcdFxcdFxcdFxcdFxcdFxcdCB0cnVlLCBcXHUwMDI2YzQ1X2lkcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDEtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTAyOlxcdHJldHVybiBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIHBoeV9pZCwgaXNfYzQ1LCBcXHUwMDI2YzQ1X2lkcyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTAzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NTguNTM5MTM4MzAyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0MTMyMjIwNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBQSFkgRGV2aWNlIENyZWF0aW9uKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYHBoeV9kZXZpY2VfY3JlYXRlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkLiBUaGlzIGlzIGZ1bmRhbWVudGFsOyBhIG1pc3N0ZXAgaGVyZSBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiBtZW1vcnkgY29ycnVwdGlvbiBvciBhbGxvY2F0aW9uIGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJJ20gZ29pbmcgdG8gZm9sbG93IHRoZSBmbG93IG9mIGV4ZWN1dGlvbiBhbmQgbWVudGFsbHkgcGFyc2UgZWFjaCBhbGxvY2F0aW9uIGNhbGwsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHNvdXJjZSBvZiB0aGUgbWVtb3J5IGFuZCB0aGUgZGF0YSBiZWluZyBpbml0aWFsaXplZC4gSXMgaXQgb24gdGhlIHN0YWNrLCBkeW5hbWljYWxseSBmcm9tIHRoZSBoZWFwIHZpYSBga21hbGxvY2AsIG9yIHBvdGVudGlhbGx5IHVzaW5nIHNvbWUga2luZCBvZiBjdXN0b20gYWxsb2NhdG9yPyBBbHNvLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBQSFkgZGF0YSBpcyBoYW5kbGVkLiBJcyB0aGVyZSBwcm9wZXIgZXJyb3IgY2hlY2tpbmcgYXQgZWFjaCBhbGxvY2F0aW9uIHN0ZXA/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBpZiBhbiBhbGxvY2F0aW9uIGZhaWxzIHBhcnQgd2F5IHRocm91Z2ggdGhlIHByb2Nlc3M/IEknbGwgc3BlY2lmaWNhbGx5IGxvb2sgZm9yIGhvdyBvdGhlciByZWxldmFudCBzdHJ1Y3R1cmVzIGFuZCBwb2ludGVycyBhcmUgc2V0IGluIHJlbGF0aW9uIHRvIGl0IC0gc3VjaCBhcyB0aGUgcGFyZW50IHN0cnVjdHVyZSBwb2ludGVycy4gVW5kZXJzdGFuZGluZyB0aGUgYWxsb2NhdGlvbiBzdHJhdGVneSB3aWxsIGRpcmVjdGx5IGluZm9ybSBob3cgSSBkZWFsIHdpdGggdGhpcyBjb2RlIGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2ODIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NzowMC45NTIzNjI2NzZaIiwiU2VxIjozMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUzNzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzQ1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzQ1OlxcdFxcdHJldHVybiAwO1xcbiA3NDY6XFx0fVxcbiA3NDc6XFx0XFxuIDc0ODpcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXFxuIDc0OTpcXHRcXHRcXHRcXHRcXHQgICAgIGJvb2wgaXNfYzQ1LFxcbiA3NTA6XFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGh5X2M0NV9kZXZpY2VfaWRzICpjNDVfaWRzKVxcbiA3NTE6XFx0e1xcbiA3NTI6XFx0XFx0c3RydWN0IHBoeV9kZXZpY2UgKmRldjtcXG4gNzUzOlxcdFxcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldjtcXG4gNzU0OlxcdFxcdGludCByZXQgPSAwO1xcbiA3NTU6XFx0XFxuIDc1NjpcXHRcXHQvKiBXZSBhbGxvY2F0ZSB0aGUgZGV2aWNlLCBhbmQgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB2YWx1ZXMgKi9cXG4gNzU3OlxcdFxcdGRldiA9IGt6YWxsb2Nfb2JqKCpkZXYpO1xcbiA3NTg6XFx0XFx0aWYgKCFkZXYpXFxuIDc1OTpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4gNzYwOlxcdFxcbiA3NjE6XFx0XFx0bWRpb2RldiA9IFxcdTAwMjZkZXYtXFx1MDAzZW1kaW87XFxuIDc2MjpcXHRcXHRtZGlvZGV2LVxcdTAwM2VkZXYucGFyZW50ID0gXFx1MDAyNmJ1cy1cXHUwMDNlZGV2O1xcbiA3NjM6XFx0XFx0bWRpb2Rldi1cXHUwMDNlZGV2LmJ1cyA9IFxcdTAwMjZtZGlvX2J1c190eXBlO1xcbiA3NjQ6XFx0XFx0bWRpb2Rldi1cXHUwMDNlZGV2LnR5cGUgPSBcXHUwMDI2bWRpb19idXNfcGh5X3R5cGU7XFxuIDc2NTpcXHRcXHRtZGlvZGV2LVxcdTAwM2VidXMgPSBidXM7XFxuIDc2NjpcXHRcXHRtZGlvZGV2LVxcdTAwM2VidXNfbWF0Y2ggPSBwaHlfYnVzX21hdGNoO1xcbiA3Njc6XFx0XFx0bWRpb2Rldi1cXHUwMDNlYWRkciA9IGFkZHI7XFxuIDc2ODpcXHRcXHRtZGlvZGV2LVxcdTAwM2VmbGFncyA9IE1ESU9fREVWSUNFX0ZMQUdfUEhZO1xcbiA3Njk6XFx0XFx0bWRpb2Rldi1cXHUwMDNlZGV2aWNlX2ZyZWUgPSBwaHlfbWRpb19kZXZpY2VfZnJlZTtcXG4gNzcwOlxcdFxcdG1kaW9kZXYtXFx1MDAzZWRldmljZV9yZW1vdmUgPSBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlO1xcbiA3NzE6XFx0XFx0bWRpb2Rldi1cXHUwMDNlcmVzZXRfc3RhdGUgPSAtMTtcXG4gNzcyOlxcdFxcbiA3NzM6XFx0XFx0ZGV2LVxcdTAwM2VpcnFfc2F2ZWQgPSBQSFlfUE9MTDtcXG4gNzc0OlxcdFxcdGRldi1cXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xcbiA3NzU6XFx0XFx0ZGV2LVxcdTAwM2VkdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcXG4gNzc2OlxcdFxcdGRldi1cXHUwMDNlcGF1c2UgPSBmYWxzZTtcXG4gNzc3OlxcdFxcdGRldi1cXHUwMDNlYXN5bV9wYXVzZSA9IGZhbHNlO1xcbiA3Nzg6XFx0XFx0ZGV2LVxcdTAwM2VsaW5rID0gMDtcXG4gNzc5OlxcdFxcdGRldi1cXHUwMDNlcG9ydCA9IFBPUlRfVFA7XFxuIDc4MDpcXHRcXHRkZXYtXFx1MDAzZWludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJO1xcbiA3ODE6XFx0XFxuIDc4MjpcXHRcXHRkZXYtXFx1MDAzZWF1dG9uZWcgPSBBVVRPTkVHX0VOQUJMRTtcXG4gNzgzOlxcdFxcbiA3ODQ6XFx0XFx0ZGV2LVxcdTAwM2VwbWFfZXh0YWJsZSA9IC1FTk9EQVRBO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NzowMC45NTI2MTg1NjZaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDc2MjgzNjI5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBIWSBEZXZpY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgdGhlIGNvcmUgYWxsb2NhdGlvbiBpcyB1c2luZyBga3phbGxvY19vYmooKmRldilgLiBUaGF0J3MgZ29vZCwga2VlcHMgdGhpbmdzIGNsZWFuIHdpdGggdGhlIHplcm9lZCBtZW1vcnkuIFRoZSBjcnVjaWFsIHRoaW5nIGlzIHRoZSBleHBsaWNpdCBzZXR0aW5nIG9mIGBkZXYtXHUwMDNlaXJxX3NhdmVkID0gUEhZX1BPTEw7YC4gVGhpcyB0ZWxscyBtZSB0aGUgZm9jdXMgaGVyZSBpcyBvbiByb2J1c3QgSVJRIGhhbmRsaW5nLCBhbmQgZ2l2ZW4gdGhlIGNvbnRleHQsIEkgc3VzcGVjdCBpdCdzIGFib3V0IG1hbmFnaW5nIGludGVycnVwdCBzdGF0ZSBkdXJpbmcgZXJyb3Igc2NlbmFyaW9zLlxuXG5Mb29raW5nIGNsb3NlciwgdGhlIGVudGlyZSBwYXRjaCBzZXJpZXMgYm9pbHMgZG93biB0byB0d28ga2V5IGFyZWFzOlxuXG4xLiAgKipJUlEgcmVzdG9yYXRpb24gbWFuYWdlbWVudDoqKiBUaGUgcHJpbWFyeSBnb2FsIGlzIHRvIHByZXZlbnQgc3RhdGUgaW5jb25zaXN0ZW5jaWVzLiBXZSdyZSB0YWxraW5nIGFib3V0IHNpdHVhdGlvbnMgd2hlcmUgaW50ZXJydXB0cyBtaWdodCBiZSBpbmNvcnJlY3RseSByZS1lbmFibGVkIG9yIGZyZWVkIHdoZW4gdGhlIHVuZGVybHlpbmcgZHJpdmVyIGRvZXNuJ3QgYWN0dWFsbHkgc3VwcG9ydCB0aGVtLiBTbywgaXQncyBhYm91dCBiZWluZyB2ZXJ5IGNhcmVmdWwgYWJvdXQgd2hlcmUgYW5kIHdoZW4gd2UgbWFuYWdlIHRoZSBJUlEgc3RhdGUgb2YgdGhlIFBIWSBkZXZpY2UsIGVzcGVjaWFsbHkgZHVyaW5nIHByb2JlLCByZW1vdmUsIGFuZCBhdHRhY2ggb3BlcmF0aW9ucyB3aGVyZSBmYWlsdXJlcyBhcmUgcG9zc2libGUuIFRoaXMgaXMgc21hcnQsIGF2b2lkcyBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG4yLiAgKipQaHlsaW5rIGVycm9yIGhhbmRsaW5nOioqIFRoZSBzZWNvbmQgYXJlYSBpcyBhIHJlZmFjdG9yaW5nIG9mIGhvdyB3ZSBoYW5kbGUgZXJyb3JzIHdoZW4gYnJpbmdpbmcgdXAgb3IgZGlzY29ubmVjdGluZyBhIHBoeWxpbmsuIFNwZWNpZmljYWxseSwgaWYgdGhlIGxpbmsgZXN0YWJsaXNobWVudCBmYWlscywgdGhpcyBwYXRjaCBjbGVhbmx5IGRpc2Fzc29jaWF0ZXMgdGhlIHBoeWxpbmsgZnJvbSB0aGUgUEhZIGRldmljZS4gTWFrZXMgc2Vuc2UsIGtlZXBzIHRoaW5ncyBjb25zaXN0ZW50IGFuZCBwcmV2ZW50cyBkYW5nbGluZyBwb2ludGVycyBvciBzdGFsZSBzdGF0ZXMuXG5cblRoaXMgc2VlbXMgdG8gYmUgZW50aXJlbHkgaW50ZXJuYWwga2VybmVsIGxvZ2ljLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHN0YXRlIHRyYWNraW5nIGFuZCBlcnJvciBoYW5kbGluZyBmb3IgaG93IHBoeWxpbmsgYW5kIHBoeV9kZXZpY2UgaW50ZXJhY3QuIFRoZXJlJ3Mgbm8gdXNlci1zcGFjZSBpbnRlcmFjdGlvbiwgbm8gbWVtb3J5IGNvcHlpbmcsIGFuZCwgaW1wb3J0YW50bHksIG5vIGluZGljYXRpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgZGF0YSBsZWFrcy4gVGhhdCBpcyByZWFzc3VyaW5nLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCwgaXQgc2VlbXMgYW55IHBvdGVudGlhbCBpc3N1ZXMg4oCTIHRoaW5ncyBsaWtlIGxvY2tpbmcgcHJvYmxlbXMsIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMsIG9yIGRvdWJsZS1mcmVlcyDigJMgYXJlIGlzc3VlcyB0aGF0IHdvdWxkIGJlIHJlYWRpbHkgZGV0ZWN0YWJsZSBieSBLQVNBTiBhbmQgTE9DS0RFUC4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGlzIHBhdGNoLCBJIHRoaW5rIHRoZSBhZGRpdGlvbiBvZiBLTVNBTiBvZmZlcnMgbm8gcmVhbCBiZW5lZml0IGFzIGl0IGRlYWxzIHdpdGggbWVtb3J5IHNhZmV0eSBpc3N1ZXMuXG5cbkFscmlnaHQsIEkgdGhpbmsgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wbGljYXRpb25zIGhlcmUuIExldCdzIGJ1aWxkIHVwIHRoZSBuZWNlc3NhcnkgcmVhc29uaW5nIGFuZCBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MDgsIk91dHB1dFRva2VucyI6MjU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDc6MDUuNzE1NDU2ODc4WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgcmVzb2x2ZXMgc3RhdGUgdHJhY2tpbmcgYW5kIGNsZWFudXAgaXNzdWVzIGZvciBQSFkgaW50ZXJydXB0IHJlc3RvcmF0aW9uICh2aWEgYSBuZXcgYGlycV9zYXZlZGAgZmllbGQpIGFuZCBlcnJvciBoYW5kbGluZyBkdXJpbmcgcGh5bGluayBicmluZ3VwL2Rpc2Nvbm5lY3QuXFxuXFxuMS4gTWVtb3J5IGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uOiBgc3RydWN0IHBoeV9kZXZpY2VgIGlzIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jX29iamAsIGFuZCB0aGUgbmV3IGBpcnFfc2F2ZWRgIGZpZWxkIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYFBIWV9QT0xMYCB1cG9uIGNyZWF0aW9uIGluIGBwaHlfZGV2aWNlX2NyZWF0ZSgpYC5cXG4yLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZTogQWxsIG9wZXJhdGlvbnMgb24gYGlycV9zYXZlZGAgYW5kIGBwaHlkZXZgIG1lbWJlcnMgb3BlcmF0ZSBvbiBmdWxseSBpbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzIGFuZCBkbyBub3QgcmVhZCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5LlxcbjMuIE5vIGluZm8tbGVha3M6IE5vIHN0cnVjdHVyZXMsIHBhZGRpbmcsIG9yIGJ1ZmZlcnMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlIChubyBgY29weV90b191c2VyYCwgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bHMsIGV0Yy4pLlxcbjQuIEtBU0FOIC8gTE9DS0RFUCBhcHBsaWNhYmlsaXR5OiBBbnkgaXNzdWVzIGludHJvZHVjZWQgaW4gdGhlc2UgcGF0aHMgKHN1Y2ggYXMgbG9ja2luZyBtaXN0YWtlcyBhcm91bmQgYHBsLVxcdTAwM2VwaHlkZXZfbXV0ZXhgIG9yIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcykgYXJlIGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgcmVzb2x2ZXMgc3RhdGUgdHJhY2tpbmcgYW5kIGNsZWFudXAgaXNzdWVzIGZvciBQSFkgaW50ZXJydXB0IHJlc3RvcmF0aW9uICh2aWEgYSBuZXcgYGlycV9zYXZlZGAgZmllbGQpIGFuZCBlcnJvciBoYW5kbGluZyBkdXJpbmcgcGh5bGluayBicmluZ3VwL2Rpc2Nvbm5lY3QuXFxuXFxuMS4gTWVtb3J5IGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uOiBgc3RydWN0IHBoeV9kZXZpY2VgIGlzIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jX29iamAsIGFuZCB0aGUgbmV3IGBpcnFfc2F2ZWRgIGZpZWxkIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYFBIWV9QT0xMYCB1cG9uIGNyZWF0aW9uIGluIGBwaHlfZGV2aWNlX2NyZWF0ZSgpYC5cXG4yLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZTogQWxsIG9wZXJhdGlvbnMgb24gYGlycV9zYXZlZGAgYW5kIGBwaHlkZXZgIG1lbWJlcnMgb3BlcmF0ZSBvbiBmdWxseSBpbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzIGFuZCBkbyBub3QgcmVhZCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5LlxcbjMuIE5vIGluZm8tbGVha3M6IE5vIHN0cnVjdHVyZXMsIHBhZGRpbmcsIG9yIGJ1ZmZlcnMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlIChubyBgY29weV90b191c2VyYCwgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bHMsIGV0Yy4pLlxcbjQuIEtBU0FOIC8gTE9DS0RFUCBhcHBsaWNhYmlsaXR5OiBBbnkgaXNzdWVzIGludHJvZHVjZWQgaW4gdGhlc2UgcGF0aHMgKHN1Y2ggYXMgbG9ja2luZyBtaXN0YWtlcyBhcm91bmQgYHBsLVxcdTAwM2VwaHlkZXZfbXV0ZXhgIG9yIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcykgYXJlIGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow4khs8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 01:44:23 +0000 UTC FinishedAt: 2026-09-07 01:47:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "6262acad9db197b5ed12e3b245d2e6d0c80fb960", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "PHYLINK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "6262acad9db197b5ed12e3b245d2e6d0c80fb960", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "PHYLINK" ], "series_id": "71e0ef17-70ec-42b4-9cd3-46a46c6efeda" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phy_attach_direct", "phy_probe", "phy_remove", "phy_device_create", "phylink_bringup_phy", "phylink_disconnect_phy", "phylink_connect_phy" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQSFlMSU5LJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywKICAgICYjMzQ7cGh5X3Byb2JlJiMzNDssCiAgICAmIzM0O3BoeV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0OywKICAgICYjMzQ7cGh5bGlua19icmluZ3VwX3BoeSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfY29ubmVjdF9waHkmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgcmVzb2x2ZXMgc3RhdGUgdHJhY2tpbmcgYW5kIGNsZWFudXAgaXNzdWVzIGZvciBQSFkgaW50ZXJydXB0IHJlc3RvcmF0aW9uICh2aWEgYSBuZXcgYGlycV9zYXZlZGAgZmllbGQpIGFuZCBlcnJvciBoYW5kbGluZyBkdXJpbmcgcGh5bGluayBicmluZ3VwL2Rpc2Nvbm5lY3QuXG5cbjEuIE1lbW9yeSBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbjogYHN0cnVjdCBwaHlfZGV2aWNlYCBpcyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY19vYmpgLCBhbmQgdGhlIG5ldyBgaXJxX3NhdmVkYCBmaWVsZCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGBQSFlfUE9MTGAgdXBvbiBjcmVhdGlvbiBpbiBgcGh5X2RldmljZV9jcmVhdGUoKWAuXG4yLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZTogQWxsIG9wZXJhdGlvbnMgb24gYGlycV9zYXZlZGAgYW5kIGBwaHlkZXZgIG1lbWJlcnMgb3BlcmF0ZSBvbiBmdWxseSBpbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzIGFuZCBkbyBub3QgcmVhZCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5LlxuMy4gTm8gaW5mby1sZWFrczogTm8gc3RydWN0dXJlcywgcGFkZGluZywgb3IgYnVmZmVycyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UgKG5vIGBjb3B5X3RvX3VzZXJgLCBuZXRsaW5rIGF0dHJpYnV0ZXMsIGlvY3RscywgZXRjLikuXG40LiBLQVNBTiAvIExPQ0tERVAgYXBwbGljYWJpbGl0eTogQW55IGlzc3VlcyBpbnRyb2R1Y2VkIGluIHRoZXNlIHBhdGhzIChzdWNoIGFzIGxvY2tpbmcgbWlzdGFrZXMgYXJvdW5kIGBwbC1cdTAwM2VwaHlkZXZfbXV0ZXhgIG9yIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcykgYXJlIGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIHByZXNlcnZhdGlvbiBhbmQgcmVzdG9yYXRpb24gbG9naWMgYWNyb3NzIFBIWSBkZXZpY2UgcHJvYmUsIGF0dGFjaCwgZGV0YWNoLCBhbmQgcmVtb3ZlIGxpZmVjeWNsZSBwYXRocyBpbiBwaHlsaWIgKGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMpLCBhcyB3ZWxsIGFzIHBoeWxpbmsgY29ubmVjdGlvbiBlcnJvciB0ZWFyZG93biAoZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYykuIFRoZXNlIHN1YnN5c3RlbXMgYXJlIHJlYWNoYWJsZSB2aWEgdmlydHVhbGl6ZWQgbmV0d29ya2luZyBkcml2ZXJzIGFuZCBVU0IgRXRoZXJuZXQgZGV2aWNlIGVtdWxhdGlvbiAoZS5nLiBhc2l4LCBsYW43OHh4LCBzbXNjOTV4eCkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGRldGVjdCByZWdyZXNzaW9ucywgc3RhdGUgaW5jb25zaXN0ZW5jaWVzLCBhbmQgdGVhcmRvd24vZXJyb3ItaGFuZGxpbmcgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDk4MmNiOTUwZmIyMzIwZjBmMDYzZWJiMTE3NGYwYWE2NmFmYzA5NGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDAxOjQ2OjA1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li5iYTExNzE0NzcyMWFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTc3MCw2ICYjNDM7NzcwLDcgQEAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCB1MzIgcGh5X2lkLFxuIFx0bWRpb2Rldi1cdTAwM2VkZXZpY2VfcmVtb3ZlID0gcGh5X21kaW9fZGV2aWNlX3JlbW92ZTtcbiBcdG1kaW9kZXYtXHUwMDNlcmVzZXRfc3RhdGUgPSAtMTtcbiBcbiYjNDM7XHRkZXYtXHUwMDNlaXJxX3NhdmVkID0gUEhZX1BPTEw7XG4gXHRkZXYtXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuIFx0ZGV2LVx1MDAzZWR1cGxleCA9IERVUExFWF9VTktOT1dOO1xuIFx0ZGV2LVx1MDAzZXBhdXNlID0gZmFsc2U7XG5AQCAtMTczNCw2ICYjNDM7MTczNSwxOSBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG4gfVxuIFxuJiM0MzsvKiBHaXZlIGJhY2sgd2hhdCBwaHlfcHJvYmUoKSB0b29rLCBidXQgbm90IHdoaWxlIHBoeV9saW5rX2NoYW5nZSBtYXJrcyBhXG4mIzQzOyAqIGNvbnN1bWVyOiBpdCBza2lwcGVkIHBoeV9yZXF1ZXN0X2ludGVycnVwdCgpIG9uIHRoZSB2YWx1ZSBpdCBzYXcsIHNvXG4mIzQzOyAqIHBoeV9kaXNjb25uZWN0KCkgd291bGQgZnJlZSBhbiBpbnRlcnJ1cHQgbm9ib2R5IHJlcXVlc3RlZC5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX3Byb2JlX2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2VwaHlfbGlua19jaGFuZ2UgfHwgcGh5ZGV2LVx1MDAzZWlycV9zYXZlZCA9PSBQSFlfUE9MTClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0cGh5ZGV2LVx1MDAzZWlycSA9IHBoeWRldi1cdTAwM2VpcnFfc2F2ZWQ7XG4mIzQzO1x0cGh5ZGV2LVx1MDAzZWlycV9zYXZlZCA9IFBIWV9QT0xMO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbiAgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbkBAIC0xODk2LDYgJiM0MzsxOTEwLDcgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXG4gZXJyb3JfbW9kdWxlX3B1dDpcbiBcdG1vZHVsZV9wdXQoZC1cdTAwM2Vkcml2ZXItXHUwMDNlb3duZXIpO1xuJiM0MztcdHBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpO1xuIFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuIFx0ZC1cdTAwM2Vkcml2ZXIgPSBOVUxMO1xuIGVycm9yX3B1dF9kZXZpY2U6XG5AQCAtMzY5NCw4ICYjNDM7MzcwOSwxMCBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHQvKiBEaXNhYmxlIHRoZSBpbnRlcnJ1cHQgaWYgdGhlIFBIWSBkb2VzbiYjMzk7dCBzdXBwb3J0IGl0XG4gXHQgKiBidXQgdGhlIGludGVycnVwdCBpcyBzdGlsbCBhIHZhbGlkIG9uZVxuIFx0ICovXG4tXHRpZiAoIXBoeV9kcnZfc3VwcG9ydHNfaXJxKHBoeWRydikgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSlcbiYjNDM7XHRpZiAoIXBoeV9kcnZfc3VwcG9ydHNfaXJxKHBoeWRydikgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkge1xuJiM0MztcdFx0cGh5ZGV2LVx1MDAzZWlycV9zYXZlZCA9IHBoeWRldi1cdTAwM2VpcnE7XG4gXHRcdHBoeWRldi1cdTAwM2VpcnEgPSBQSFlfUE9MTDtcbiYjNDM7XHR9XG4gXG4gXHRpZiAocGh5ZHJ2LVx1MDAzZWZsYWdzIFx1MDAyNiBQSFlfSVNfSU5URVJOQUwpXG4gXHRcdHBoeWRldi1cdTAwM2Vpc19pbnRlcm5hbCA9IHRydWU7XG5AQCAtMzgyMCw2ICYjNDM7MzgzNyw4IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4gXHRcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xuIFxuJiM0MztcdHBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpO1xuJiM0MztcbiBcdC8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4gXG5AQCAtMzg0OCw2ICYjNDM7Mzg2Nyw4IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUpXG4gXHRcdHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKHBoeWRldik7XG4gXG4mIzQzO1x0cGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7XG4mIzQzO1xuIFx0LyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi9cbiBcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggM2VjM2JiNDM5MTA5NS4uNmE5MmZhYzU4ZjI1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0yMDgzLDYgJiM0MzsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0cmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpO1xuIH1cbiBcbiYjNDM7LyogRGlzYXNzb2NpYXRlIEBwaHkgZnJvbSBAcGwuIENhbGxlciBtdXN0IGhvbGQgcGwtXHUwMDNlcGh5ZGV2X211dGV4LiAqL1xuJiM0MztzdGF0aWMgdm9pZCBwaHlsaW5rX2NsZWFyX3BoeWRldihzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4mIzQzO3tcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbiYjNDM7XHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuJiM0MztcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4mIzQzO1x0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuQEAgLTIxOTcsNiAmIzQzOzIyMDksMTIgQEAgc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbiBcdGlmIChyZXQgPT0gMCBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxuIFx0XHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcbiBcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4mIzQzO1x0XHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0yMzQ3LDE1ICYjNDM7MjM2NSw4IEBAIHZvaWQgcGh5bGlua19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXHRwaHkgPSBwbC1cdTAwM2VwaHlkZXY7XG4tXHRpZiAocGh5KSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbi1cdFx0cGwtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbi1cdFx0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbi1cdFx0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4tXHR9XG4mIzQzO1x0aWYgKHBoeSlcbiYjNDM7XHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXG4gXHRpZiAocGh5KSB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmhcbmluZGV4IDVmOGQ2NTg2OGUwZmYuLmQ0OTI0MTc1NzJhMGYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtNTkxLDYgJiM0Mzs1OTEsOCBAQCBzdHJ1Y3QgcGh5X29hdGMxNF9zcWlfY2FwYWJpbGl0eSB7XG4gICogICAgICAtIEJpdHMgWzMxOjI0XSBhcmUgcmVzZXJ2ZWQgZm9yIGRlZmluaW5nIGdlbmVyaWNcbiAgKiAgICAgICAgUEhZIGRyaXZlciBiZWhhdmlvci5cbiAgKiBAaXJxOiBJUlEgbnVtYmVyIG9mIHRoZSBQSFkmIzM5O3MgaW50ZXJydXB0ICgtMSBpZiBub25lKVxuJiM0MzsgKiBAaXJxX3NhdmVkOiBAaXJxIGFzIGl0IHdhcyBiZWZvcmUgcGh5X3Byb2JlKCkgcmVwbGFjZWQgaXQgd2l0aCBQSFlfUE9MTCxcbiYjNDM7ICogICAgICAgICAgICAgb3IgUEhZX1BPTEwgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvIHJlc3RvcmVcbiAgKiBAcGh5bGluazogUG9pbnRlciB0byBwaHlsaW5rIGluc3RhbmNlIGZvciB0aGlzIFBIWVxuICAqIEBzZnBfYnVzX2F0dGFjaGVkOiBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgU0ZQIGJ1cyBoYXMgYmVlbiBhdHRhY2hlZFxuICAqIEBzZnBfYnVzOiBTRlAgYnVzIGF0dGFjaGVkIHRvIHRoaXMgUEhZJiMzOTtzIGZpYmVyIHBvcnRcbkBAIC03NjEsNiAmIzQzOzc2Myw3IEBAIHN0cnVjdCBwaHlfZGV2aWNlIHtcbiBcdCAqIC0xIG1lYW5zIG5vIGludGVycnVwdFxuIFx0ICovXG4gXHRpbnQgaXJxO1xuJiM0MztcdGludCBpcnFfc2F2ZWQ7XG4gXG4gXHQvKiBwcml2YXRlIGRhdGEgcG9pbnRlciAqL1xuIFx0LyogRm9yIHVzZSBieSBQSFlzIHRvIG1haW50YWluIGV4dHJhIHN0YXRlICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BIWUxJTksmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfYXR0YWNoX2RpcmVjdCYjMzQ7LAogICAgJiMzNDtwaHlfcHJvYmUmIzM0OywKICAgICYjMzQ7cGh5X3JlbW92ZSYjMzQ7LAogICAgJiMzNDtwaHlfZGV2aWNlX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2JyaW5ndXBfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZGlzY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19jb25uZWN0X3BoeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJUlEgcHJlc2VydmF0aW9uIGFuZCByZXN0b3JhdGlvbiBsb2dpYyBhY3Jvc3MgUEhZIGRldmljZSBwcm9iZSwgYXR0YWNoLCBkZXRhY2gsIGFuZCByZW1vdmUgbGlmZWN5Y2xlIHBhdGhzIGluIHBoeWxpYiAoZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyksIGFzIHdlbGwgYXMgcGh5bGluayBjb25uZWN0aW9uIGVycm9yIHRlYXJkb3duIChkcml2ZXJzL25ldC9waHkvcGh5bGluay5jKS4gVGhlc2Ugc3Vic3lzdGVtcyBhcmUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsaXplZCBuZXR3b3JraW5nIGRyaXZlcnMgYW5kIFVTQiBFdGhlcm5ldCBkZXZpY2UgZW11bGF0aW9uIChlLmcuIGFzaXgsIGxhbjc4eHgsIHNtc2M5NXh4KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gZGV0ZWN0IHJlZ3Jlc3Npb25zLCBzdGF0ZSBpbmNvbnNpc3RlbmNpZXMsIGFuZCB0ZWFyZG93bi9lcnJvci1oYW5kbGluZyBidWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTgyY2I5NTBmYjIzMjBmMGYwNjNlYmIxMTc0ZjBhYTY2YWZjMDk0ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDcgMDE6NDY6MDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwppbmRleCA5NGIyZTg1ZTAwYTM3Li5iYTExNzE0NzcyMWFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKQEAgLTc3MCw2ICYjNDM7NzcwLDcgQEAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCB1MzIgcGh5X2lkLAogCW1kaW9kZXYtJmd0O2RldmljZV9yZW1vdmUgPSBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlOwogCW1kaW9kZXYtJmd0O3Jlc2V0X3N0YXRlID0gLTE7CiAKJiM0MzsJZGV2LSZndDtpcnFfc2F2ZWQgPSBQSFlfUE9MTDsKIAlkZXYtJmd0O3NwZWVkID0gU1BFRURfVU5LTk9XTjsKIAlkZXYtJmd0O2R1cGxleCA9IERVUExFWF9VTktOT1dOOwogCWRldi0mZ3Q7cGF1c2UgPSBmYWxzZTsKQEAgLTE3MzQsNiAmIzQzOzE3MzUsMTkgQEAgc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydikKIAlyZXR1cm4gcGh5ZHJ2LSZndDtjb25maWdfaW50ciAmYW1wOyZhbXA7IHBoeWRydi0mZ3Q7aGFuZGxlX2ludGVycnVwdDsKIH0KIAomIzQzOy8qIEdpdmUgYmFjayB3aGF0IHBoeV9wcm9iZSgpIHRvb2ssIGJ1dCBub3Qgd2hpbGUgcGh5X2xpbmtfY2hhbmdlIG1hcmtzIGEKJiM0MzsgKiBjb25zdW1lcjogaXQgc2tpcHBlZCBwaHlfcmVxdWVzdF9pbnRlcnJ1cHQoKSBvbiB0aGUgdmFsdWUgaXQgc2F3LCBzbwomIzQzOyAqIHBoeV9kaXNjb25uZWN0KCkgd291bGQgZnJlZSBhbiBpbnRlcnJ1cHQgbm9ib2R5IHJlcXVlc3RlZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9wcm9iZV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CWlmIChwaHlkZXYtJmd0O3BoeV9saW5rX2NoYW5nZSB8fCBwaHlkZXYtJmd0O2lycV9zYXZlZCA9PSBQSFlfUE9MTCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJcGh5ZGV2LSZndDtpcnEgPSBwaHlkZXYtJmd0O2lycV9zYXZlZDsKJiM0MzsJcGh5ZGV2LSZndDtpcnFfc2F2ZWQgPSBQSFlfUE9MTDsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXIKICAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaApAQCAtMTg5Niw2ICYjNDM7MTkxMCw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCiBlcnJvcl9tb2R1bGVfcHV0OgogCW1vZHVsZV9wdXQoZC0mZ3Q7ZHJpdmVyLSZndDtvd25lcik7CiYjNDM7CXBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpOwogCXBoeWRldi0mZ3Q7aXNfZ2VucGh5X2RyaXZlbiA9IDA7CiAJZC0mZ3Q7ZHJpdmVyID0gTlVMTDsKIGVycm9yX3B1dF9kZXZpY2U6CkBAIC0zNjk0LDggJiM0MzszNzA5LDEwIEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAkvKiBEaXNhYmxlIHRoZSBpbnRlcnJ1cHQgaWYgdGhlIFBIWSBkb2VzbiYjMzk7dCBzdXBwb3J0IGl0CiAJICogYnV0IHRoZSBpbnRlcnJ1cHQgaXMgc3RpbGwgYSB2YWxpZCBvbmUKIAkgKi8KLQlpZiAoIXBoeV9kcnZfc3VwcG9ydHNfaXJxKHBoeWRydikgJmFtcDsmYW1wOyBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeWRldikpCiYjNDM7CWlmICghcGh5X2Rydl9zdXBwb3J0c19pcnEocGh5ZHJ2KSAmYW1wOyZhbXA7IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkgewomIzQzOwkJcGh5ZGV2LSZndDtpcnFfc2F2ZWQgPSBwaHlkZXYtJmd0O2lycTsKIAkJcGh5ZGV2LSZndDtpcnEgPSBQSFlfUE9MTDsKJiM0MzsJfQogCiAJaWYgKHBoeWRydi0mZ3Q7ZmxhZ3MgJmFtcDsgUEhZX0lTX0lOVEVSTkFMKQogCQlwaHlkZXYtJmd0O2lzX2ludGVybmFsID0gdHJ1ZTsKQEAgLTM4MjAsNiAmIzQzOzM4MzcsOCBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJaWYgKCFwaHlkZXYtJmd0O2lzX29uX3NmcF9tb2R1bGUpCiAJCXBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpOwogCiYjNDM7CXBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpOwomIzQzOwogCS8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovCiAJcGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpOwogCkBAIC0zODQ4LDYgJiM0MzszODY3LDggQEAgc3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlpZiAocGh5ZGV2LSZndDtkcnYgJmFtcDsmYW1wOyBwaHlkZXYtJmd0O2Rydi0mZ3Q7cmVtb3ZlKQogCQlwaHlkZXYtJmd0O2Rydi0mZ3Q7cmVtb3ZlKHBoeWRldik7CiAKJiM0MzsJcGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7CiYjNDM7CiAJLyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi8KIAlwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCmluZGV4IDNlYzNiYjQzOTEwOTUuLjZhOTJmYWM1OGYyNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtMjA4Myw2ICYjNDM7MjA4MywxOCBAQCBzdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSwKIAlyZXR1cm4gcGh5bGlua192YWxpZGF0ZShwbCwgc3VwcG9ydGVkLCBzdGF0ZSk7CiB9CiAKJiM0MzsvKiBEaXNhc3NvY2lhdGUgQHBoeSBmcm9tIEBwbC4gQ2FsbGVyIG11c3QgaG9sZCBwbC0mZ3Q7cGh5ZGV2X211dGV4LiAqLwomIzQzO3N0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSkKJiM0Mzt7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtwaHktJmd0O2xvY2spOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsJcGwtJmd0O3BoeWRldiA9IE5VTEw7CiYjNDM7CXBsLSZndDtwaHlfZW5hYmxlX3R4X2xwaSA9IGZhbHNlOwomIzQzOwlwbC0mZ3Q7bWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtzdGF0ZV9tdXRleCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSwKIAkJCSAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKQogewpAQCAtMjE5Nyw2ICYjNDM7MjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogCWlmIChyZXQgPT0gMCAmYW1wOyZhbXA7IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSkKIAkJcGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7CiAKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwomIzQzOwkJcGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKJiM0MzsJfQomIzQzOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTIzNDcsMTUgJiM0MzsyMzY1LDggQEAgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCkKIAogCW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKIAlwaHkgPSBwbC0mZ3Q7cGh5ZGV2OwotCWlmIChwaHkpIHsKLQkJbXV0ZXhfbG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7Ci0JCW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwotCQlwbC0mZ3Q7cGh5ZGV2ID0gTlVMTDsKLQkJcGwtJmd0O3BoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7Ci0JCXBsLSZndDttYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKLQl9CiYjNDM7CWlmIChwaHkpCiYjNDM7CQlwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTsKIAltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKIAogCWlmIChwaHkpIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oCmluZGV4IDVmOGQ2NTg2OGUwZmYuLmQ0OTI0MTc1NzJhMGYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9waHkuaApAQCAtNTkxLDYgJiM0Mzs1OTEsOCBAQCBzdHJ1Y3QgcGh5X29hdGMxNF9zcWlfY2FwYWJpbGl0eSB7CiAgKiAgICAgIC0gQml0cyBbMzE6MjRdIGFyZSByZXNlcnZlZCBmb3IgZGVmaW5pbmcgZ2VuZXJpYwogICogICAgICAgIFBIWSBkcml2ZXIgYmVoYXZpb3IuCiAgKiBAaXJxOiBJUlEgbnVtYmVyIG9mIHRoZSBQSFkmIzM5O3MgaW50ZXJydXB0ICgtMSBpZiBub25lKQomIzQzOyAqIEBpcnFfc2F2ZWQ6IEBpcnEgYXMgaXQgd2FzIGJlZm9yZSBwaHlfcHJvYmUoKSByZXBsYWNlZCBpdCB3aXRoIFBIWV9QT0xMLAomIzQzOyAqICAgICAgICAgICAgIG9yIFBIWV9QT0xMIHdoZW4gdGhlcmUgaXMgbm90aGluZyB0byByZXN0b3JlCiAgKiBAcGh5bGluazogUG9pbnRlciB0byBwaHlsaW5rIGluc3RhbmNlIGZvciB0aGlzIFBIWQogICogQHNmcF9idXNfYXR0YWNoZWQ6IEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBTRlAgYnVzIGhhcyBiZWVuIGF0dGFjaGVkCiAgKiBAc2ZwX2J1czogU0ZQIGJ1cyBhdHRhY2hlZCB0byB0aGlzIFBIWSYjMzk7cyBmaWJlciBwb3J0CkBAIC03NjEsNiAmIzQzOzc2Myw3IEBAIHN0cnVjdCBwaHlfZGV2aWNlIHsKIAkgKiAtMSBtZWFucyBubyBpbnRlcnJ1cHQKIAkgKi8KIAlpbnQgaXJxOwomIzQzOwlpbnQgaXJxX3NhdmVkOwogCiAJLyogcHJpdmF0ZSBkYXRhIHBvaW50ZXIgKi8KIAkvKiBGb3IgdXNlIGJ5IFBIWXMgdG8gbWFpbnRhaW4gZXh0cmEgc3RhdGUgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYzNwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDUzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBLZXJuZWwgUGF0Y2ggU2VyaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcyBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGl0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGJlaW5nIGNoYW5nZWQgaGVyZS4gVGhlIGluc3RydWN0aW9ucyBhcmUgdG8gZXZhbHVhdGUgdGhpcyBwYXRjaCwgc28gbGV0JiMzOTtzIGdldCBkb3duIHRvIGl0LgoKVGhlIGZpbGVzIGltcGFjdGVkIGFyZSBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AsIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCwgYW5kIGBpbmNsdWRlL2xpbnV4L3BoeS5oYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGFib3V0IHRoZSBQSFkgbGF5ZXIsIHdoaWNoIG1lYW5zIHBoeXNpY2FsIGxheWVyIHRyYW5zY2VpdmVycyBhbmQgdGhlaXIga2VybmVsIGludGVyYWN0aW9uLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gRmluZSwgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGUgY2hhbmdlcyBsYW5kLgoKTG9va2luZyBhdCBgcGh5X2RldmljZS5jYCwgSSBzZWUgYSBmb2N1cyBvbiBJUlEgaGFuZGxpbmcgYW5kIGVycm9yIHBhdGhzIHdpdGhpbiB0aGUgUEhZIGRldmljZSBjcmVhdGlvbiwgcHJvYmluZywgYW5kIHJlbW92YWwgcHJvY2Vzc2VzLiBJdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGNoYW5nZXMgaW52b2x2ZSBob3cgSVJRIGNvbmZpZ3VyYXRpb25zIGFyZSBzYXZlZCwgcmVzdG9yZWQsIGFuZCBtYW5hZ2VkLCBwYXJ0aWN1bGFybHkgd2hlbiBhIFBIWSBpcyBiZWluZyBpbml0aWFsaXplZCBvciBkZS1pbml0aWFsaXplZCBhbmQgZW5jb3VudGVyaW5nIGlzc3Vlcy4gU3BlY2lmaWNhbGx5OgoKKiAgIEluIGBwaHlfZGV2aWNlX2NyZWF0ZWAsIGBkZXYtJmd0O2lycV9zYXZlZCA9IFBIWV9QT0xMO2AgaXMgc2V0LiBPa2F5LCB0aGF0JiMzOTtzIGEgYmFzZWxpbmUuCiogICBUaGUgYHBoeV9yZXN0b3JlX3Byb2JlX2lycWAgZnVuY3Rpb24gaXMgaW50ZXJlc3RpbmcuIEl0JiMzOTtzIHNlbGVjdGl2ZWx5IHJlc3RvcmluZyBhIHByZXZpb3VzbHkgc2F2ZWQgSVJRIHZhbHVlLCBhbmQgdGhlIGxvZ2ljIGhlcmUgaXMgY3J1Y2lhbDogaXQgb25seSBkb2VzIHRoaXMgaWYgZWl0aGVyIHRoZSBQSFkgbGluayBzdGF0ZSBjaGFuZ2VkLCBvciBpZiBpdCBoYWQgYmVlbiBzZXQgdG8gcG9sbGluZy4KKiAgIEkgc2VlIGBwaHlfcmVzdG9yZV9wcm9iZV9pcnFgIGlzIGNhbGxlZCBvbiB0aGUgZXJyb3IgcGF0aCBvZiBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X3Byb2JlYCwgYW5kIGBwaHlfcmVtb3ZlYC4gVGhpcyBjbGVhcmx5IHN1Z2dlc3RzIHRoYXQgaXQmIzM5O3MgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoaW5ncyBhcmUgY2xlYW5lZCB1cCBwcm9wZXJseSBpbiBjYXNlcyB3aGVyZSBQSFkgYXR0YWNobWVudCBvciBkZXRhY2htZW50IGZhaWxzLiBUaGUgaW1wb3J0YW50IHRoaW5nIGhlcmUgaXMgdG8gbWFrZSBzdXJlIGl0IGRvZXNuJiMzOTt0IGNhdXNlIHByb2JsZW1zIGJ5IHJlc2V0dGluZyBzb21ldGhpbmcsIG9yIGxlYXZpbmcgc29tZXRoaW5nIHVuc2V0IHRoYXQgKnNob3VsZCogYmUgc2V0LgoKTW92aW5nIHRvIGBwaHlsaW5rLmNgLCB0aGUgcGF0Y2ggc2VlbXMgdG8gY2VudGVyIGFyb3VuZCBhIGhlbHBlciBmdW5jdGlvbiwgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YC4gSXQgbG9va3MgbGlrZSBpdCBpcyBzaW1wbGlmeWluZyB0aGUgY2xlYXJpbmcgb2YgdGhlIFBIWSBkZXZpY2Ugd2l0aGluIHRoZSBQaHlsaW5rIGNvZGUuIFNvLCB0aGF0JiMzOTtzIHByb2JhYmx5IGFib3V0IGZyZWVpbmcgcmVzb3VyY2VzIGFuZCBjbGVhbmluZyB1cCByZWZlcmVuY2VzIHdoZW4gYSBQSFkgaXMgZGlzY29ubmVjdGVkIG9yIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgYnJpbmdpbmcgYSBQSFkgdXAuIEkmIzM5O20gc2VlaW5nIGl0IGluIHRoZSBlcnJvciBwYXRocyBvZiBicmluZ3VwIGFuZCBkaXNjb25uZWN0IGZ1bmN0aW9ucy4gVGhpcyBzdWdnZXN0cyBhbiBlZmZvcnQgdG8gc3RyZWFtbGluZSBQSFkgZGV2aWNlIG1hbmFnZW1lbnQgaW4gcGh5bGluayBpbiByZXNwb25zZSB0byBmYWlsdXJlcyBhbmQgZGV2aWNlIHJlbW92YWwuCgpOb3csIGFzIGFuIGV4cGVydCwgSSYjMzk7bSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgaGVyZS4gRG9lcyB0aGlzIElSUSBoYW5kbGluZyBjaGFuZ2UgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucz8gQXJlIHRoZXJlIGFueSByYWNlIGNvbmRpdGlvbnMgdGhhdCBtaWdodCBhcHBlYXIgaGVyZT8gRG9lcyBpdCBoYW5kbGUgY29ybmVyIGNhc2VzIGNvcnJlY3RseT8gTW9yZSBpbXBvcnRhbnRseSwgaG93IGRvZXMgdGhpcyBhZmZlY3Qgb3VyIGFiaWxpdHkgdG8gcmVwcm9kdWNlIGFuZCBkZWJ1ZyBpc3N1ZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzPwoKVGhlcmVmb3JlLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZXNlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHBoeWxpYiwgcGh5bGluaywgTURJTywgYW5kIFBIWSBkZXZpY2VzIHBsYXkgb3V0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIEdDRSwgYW5kIGVzcGVjaWFsbHkgc3l6a2FsbGVyLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHN5emthbGxlciBvciBhIHVzZXIgc3BhY2UgcHJvY2VzcyBjYW4gZGlyZWN0bHkgaW50ZXJhY3Qgd2l0aCB0aGVzZSBQSFkgY29tcG9uZW50cyBvciB0aGUgTURJTyBidXMgdG8gdHJpZ2dlciB0aGlzIGNvZGUgYW5kIHZlcmlmeSBpdHMgY29ycmVjdG5lc3MuIERvZXMgdGhpcyB0b3VjaCBhbnkgb2YgdGhlIHJlbGV2YW50IEtjb25maWdzPyBJIG5lZWQgdG8gbG9vayBhdCBkcml2ZXJzL25ldC9waHkvS2NvbmZpZyB0byBlbnN1cmUgbm90aGluZyByZWxldmFudCBoYXMgYmVlbiBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX1BIWUxJQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT00PWxpYnBoeS15XHRcdFx0Oj0gcGh5Lm8gcGh5LWM0NS5vIHBoeS1jb3JlLm8gcGh5X2RldmljZS5vIFxcXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTgtXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTppZmRlZiBDT05GSUdfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTAtIyBidWlsdC1pbiB3aGVuZXZlciBQSFlMSUIgaXMgYnVpbHQtaW4gb3IgbW9kdWxlXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTE2PWxpYnBoeS0kKENPTkZJR19PUEVOX0FMTElBTkNFX0hFTFBFUlMpICYjNDM7PSBvcGVuX2FsbGlhbmNlX2hlbHBlcnMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE3LVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19QSFlMSUIpXHRcdCYjNDM7PSBtZGlvX2J1cy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTktb2JqLSQoQ09ORklHX1BIWUxJTkspXHRcdCYjNDM7PSBwaHlsaW5rLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbGlicGh5Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbWRpb19kZXZyZXMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTIyLW9iai0kKENPTkZJR19QSFlfUEFDS0FHRSlcdCYjNDM7PSBwaHlfcGFja2FnZS5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zNzAwPXN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4MjItXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzgyMzpcdGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXHUwMDI2XHUwMDI2ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4MjQtXHRcdGVyciA9IG9mX3BoeV9sZWRzKHBoeWRldik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zODQ4PXN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODUzLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozODU0Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcdTAwMjZcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4NTUtXHRcdHBoeV9sZWRzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvc3R1YnMuYy0zLSAqIFN0dWJzIGZvciBQSFkgbGlicmFyeSBmdW5jdGlvbmFsaXR5IGNhbGxlZCBieSB0aGUgY29yZSBuZXR3b3JrIHN0YWNrLlxuZHJpdmVycy9uZXQvcGh5L3N0dWJzLmM6NDogKiBUaGVzZSBhcmUgbmVjZXNzYXJ5IGJlY2F1c2UgQ09ORklHX1BIWUxJQiBjYW4gYmUgYSBtb2R1bGUsIGFuZCBidWlsdC1pblxuZHJpdmVycy9uZXQvcGh5L3N0dWJzLmMtNS0gKiBjb2RlIGNhbm5vdCBkaXJlY3RseSBjYWxsIHN5bWJvbHMgZXhwb3J0ZWQgYnkgbW9kdWxlcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTE5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBQaHlsaWIvUGh5bGluayBJbnRlZ3JhdGlvbiBpbiBTeXprYWxsZXIgYW5kIFZpcnR1YWwgRW52aXJvbm1lbnRzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gZmlndXJlIG91dCBob3cgYHBoeWxpYmAgb3IgYHBoeWxpbmtgIGZ1bmN0aW9uYWxpdGllcyBhcmUgYWNjZXNzZWQgYW5kIHBvdGVudGlhbGx5IHRlc3RlZCB3aXRoaW4gdGhlIFN5emthbGxlciBlbnZpcm9ubWVudCwgb3IgZXZlbiB3aXRoaW4gbW9yZSBzdGFuZGFyZCB2aXJ0dWFsIHNldHVwcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVudHJ5IHBvaW50cy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBleHBsb3JlIHdoZXRoZXIgdGhlcmUgYXJlIGFueSB2aXJ0dWFsIG9yIGVtdWxhdGVkIGRldmljZXMgdGhhdCBtYWtlIHVzZSBvZiB0aGVzZSBsaWJyYXJpZXMuIEFyZSB0aGVyZSB2aXJ0dWFsIGRyaXZlcnMsIHBlcmhhcHMgVVNCIGRyaXZlcnMgdGhhdCBpbnRlcmFjdCB3aXRoIGEgcGh5bGliIGFic3RyYWN0aW9uPyBXaGF0IGFib3V0IG5ldGxpbmsgaW50ZXJmYWNlcyB0aGF0IHdvdWxkIHJlcHJlc2VudCBhIFBIWSBjb25uZWN0aW9uLCBvciBkdW1teSBkZXZpY2VzIGRlc2lnbmVkIHRvIHRlc3QgUEhZIGludGVyYWN0aW9ucz8gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHN1Y2ggdGhpbmdzIGFyZSBvZnRlbiBwcmVzZW50IGluIHRoZXNlIHR5cGVzIG9mIGVudmlyb25tZW50cywgc28gaXQgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMsIEkmIzM5O20gZ29pbmcgdG8gbGV2ZXJhZ2UgbXkga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwgYW5kIHVzZSBzb21lIHRhcmdldGVkIGdyZXBzLiBJIG5lZWQgdG8gc2VhcmNoIHRoZSBjb2RlIGZvciBrZXkgZnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmVzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gUEhZIGluaXRpYWxpemF0aW9uIGFuZCBtYW5hZ2VtZW50LiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGluc3RhbmNlcyBvZiBgcGh5bGlua19jcmVhdGVgLCBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X2Nvbm5lY3RgLCBgbWRpb2J1c19yZWdpc3RlcmAsIGFuZCBgZml4ZWRfcGh5YC4gVGhlc2Ugc2hvdWxkIGFjdCBhcyBicmVhZGNydW1icywgbGVhZGluZyBtZSB0byB0aGUgc3BlY2lmaWMgZHJpdmVycyBvciBtb2R1bGVzIHRoYXQgbWlnaHQgYmUgdXNpbmcgcGh5bGliIG9yIHBoeWxpbmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7KHBoeWxpbmtfY3JlYXRlfHBoeV9jb25uZWN0fHBoeV9hdHRhY2hfZGlyZWN0fGZpeGVkX3BoeSkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTY1NyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjU2LVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2NTc6XHQvKiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IG9mX3BoeV9jb25uZWN0KCkgd2lsbCBub3Qgd29yayBieVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02NTgtXHQgKiByZW1vdmluZyB0aGUgJiMzOTtwaGFuZGxlJiMzOTsgYW5kICYjMzk7bGludXgscGhhbmRsZSYjMzk7IHByb3BlcnRpZXMgYW5kXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NDM4PXN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0MS1cdFx0aWYgKCFJU19FUlIocGh5ZGV2c1tpXSkpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDI6XHRcdFx0Zml4ZWRfcGh5X3VucmVnaXN0ZXIocGh5ZGV2c1tpXSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDMtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NDgyPXN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTEtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBOVU1fRklYRURfUEhZUzsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTI6XHRcdHBoeWRldnNbaV0gPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz05Njg9c3RhdGljIGJvb2wgbmV0Y19wb3J0X2lzX2VtZGlvX2NvbnN1bWVyKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODQtXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5ODU6LyogQ3VycmVudGx5LCBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgaXMgY2FsbGVkIGJ5IGRzYV91c2VyX2NyZWF0ZSgpLFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTg2LSAqIHNvIGlmIHRoZSBzd2l0Y2ggdXNlcyB0aGUgZXh0ZXJuYWwgTURJTyBjb250cm9sbGVyIChsaWtlIHRoZSBFTURJT1xuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTg3LSAqIGZ1bmN0aW9uKSB0byBtYW5hZ2UgdGhlIGV4dGVybmFsIFBIWXMuIFRoZSBNRElPIGJ1cyBtYXkgbm90IGJlXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5ODg6ICogY3JlYXRlZCB3aGVuIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSBpcyBjYWxsZWQsIHNvIGl0IHdpbGwgcmV0dXJuXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODktICogYW4gZXJyb3IgYW5kIGNhdXNlIHRoZSBzd2l0Y2ggZHJpdmVyIHRvIGZhaWwgdG8gcHJvYmUuXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5OTA6ICogVGhpcyB3b3JrYXJvdW5kIGNhbiBiZSByZW1vdmVkIHdoZW4gRFNBIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTkxLSAqIGNhbGxzIGFyZSBtb3ZlZCBmcm9tIHByb2JlKCkgdG8gbmRvX29wZW4oKS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz0zNjQ9c3RhdGljIGludCBheF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy0zNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzozNzc6XHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LCBwaHlfZGV2LCBheF9oYW5kbGVfbGlua19jaGFuZ2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy0zNzgtXHRcdFx0XHQgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM9MTU2OT1zdGF0aWMgaW50IGFkaW4xMTEwX3Byb2JlX25ldGRldnMoc3RydWN0IGFkaW4xMTEwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtMTYxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjE2MTM6XHRcdHBvcnRfcHJpdi1cdTAwM2VwaHlkZXYgPSBwaHlfY29ubmVjdChuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy0xNjE0LVx0XHRcdFx0XHRcdHBoeWRldl9uYW1lKHBvcnRfcHJpdi1cdTAwM2VwaHlkZXYpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jPTY1MD1zdGF0aWMgaW50IGFkaW4xMTQwX3BoeV9pbml0KHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTY2My1cdHByaXYtXHUwMDNlcGh5ZGV2LVx1MDAzZWlzX2ludGVybmFsID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjY2NDpcdHJldCA9IHBoeV9jb25uZWN0X2RpcmVjdChwcml2LVx1MDAzZW5ldGRldiwgcHJpdi1cdTAwM2VwaHlkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02NjUtXHRcdFx0XHQgXHUwMDI2YWRpbjExNDBfaGFuZGxlX2xpbmtfY2hhbmdlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM9MTI1Mz1zdGF0aWMgaW50IGdyZXRoX21kaW9fcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEyNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jOjEyNjg6XHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LCBwaHksIFx1MDAyNmdyZXRoX2xpbmtfY2hhbmdlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMjY5LVx0XHRcdFx0IGdyZXRoLVx1MDAzZWdiaXRfbWFjID8gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkgOiBQSFlfSU5URVJGQUNFX01PREVfTUlJKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYz0zMjczPXN0YXRpYyBpbnQgZXQxMzF4X21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTMyODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzozMjg0Olx0cGh5ZGV2ID0gcGh5X2Nvbm5lY3QobmV0ZGV2LCBwaHlkZXZfbmFtZShwaHlkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtMzI4NS1cdFx0XHQgICAgIFx1MDAyNmV0MTMxeF9hZGp1c3RfbGluaywgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYz0xNjc9c3RhdGljIGludCBlbWFjX21kaW9fcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTE3NC1cdC8qIGF0dGFjaCB0aGUgbWFjIHRvIHRoZSBwaHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmM6MTc1Olx0cGh5ZGV2ID0gb2ZfcGh5X2Nvbm5lY3QoZGItXHUwMDNlbmRldiwgZGItXHUwMDNlcGh5X25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTE3Ni1cdFx0XHRcdFx1MDAyNmVtYWNfaGFuZGxlX2xpbmtfY2hhbmdlLCAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz04NzY9c3RhdGljIGludCB0c2Vfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy05NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6OTUyOlx0cmV0ID0gcGh5bGlua19vZl9waHlfY29ubmVjdChwcml2LVx1MDAzZXBoeWxpbmssIHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGUsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTk1My1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTEyOD1zdGF0aWMgaW50IGFsdGVyYV90c2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxNDE2Olx0cHJpdi1cdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHJpdi1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE3LVx0XHRcdFx0ICAgICAgIG9mX2Z3bm9kZV9oYW5kbGUocHJpdi1cdTAwM2VkZXZpY2UtXHUwMDNlb2Zfbm9kZSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYz00NzI9c3RhdGljIGludCBhdTEwMDBfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy01MzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jOjUzOTpcdHBoeWRldiA9IHBoeV9jb25uZWN0KGRldiwgcGh5ZGV2X25hbWUocGh5ZGV2KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtNTQwLVx0XHRcdCAgICAgXHUwMDI2YXUxMDAwX2FkanVzdF9saW5rLCBQSFlfSU5URVJGQUNFX01PREVfTUlJKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jPTkzMT1zdGF0aWMgaW50IHhnYmVfcGh5X2ZpbmRfcGh5X2RldmljZShzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk4MzpcdHJldCA9IHBoeV9hdHRhY2hfZGlyZWN0KHBkYXRhLVx1MDAzZW5ldGRldiwgcGh5ZGV2LCBwaHlkZXYtXHUwMDNlZGV2X2ZsYWdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODQtXHRcdFx0XHRQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk4NjpcdFx0bmV0ZGV2X2VycihwZGF0YS1cdTAwM2VuZXRkZXYsIFwmIzM0O3BoeV9hdHRhY2hfZGlyZWN0IGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4Ny1cdFx0cGh5X2RldmljZV9yZW1vdmUocGh5ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTk4PWludCB4Z2VfbWRpb19jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMjgtXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjEyOTpcdHBoeWRldiA9IHBoeV9jb25uZWN0KG5kZXYsIHBoeWRldl9uYW1lKHBoeWRldiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEzMC1cdFx0XHQgICAgIFx1MDAyNnhnZV9hZGp1c3RfbGluayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTgxOT1zdGF0aWMgc3RydWN0IGFjcGlfZGV2aWNlICphY3BpX3BoeV9maW5kX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjgzNzppbnQgeGdlbmVfZW5ldF9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODM4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg0Ny1cdFx0XHRucCA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LVx1MDAzZW9mX25vZGUsIFwmIzM0O3BoeS1oYW5kbGVcJiMzNDssIGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo4NDg6XHRcdFx0cGh5X2RldiA9IG9mX3BoeV9jb25uZWN0KG5kZXYsIG5wLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04NDktXHRcdFx0XHRcdFx0IFx1MDAyNnhnZW5lX2VuZXRfYWRqdXN0X2xpbmssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04NjgtXHRcdGlmICghcGh5X2RldiB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo4Njk6XHRcdCAgICBwaHlfY29ubmVjdF9kaXJlY3QobmRldiwgcGh5X2RldiwgXHUwMDI2eGdlbmVfZW5ldF9hZGp1c3RfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODcwLVx0XHRcdFx0ICAgICAgIHBkYXRhLVx1MDAzZXBoeV9tb2RlKSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9OTM5PWludCB4Z2VuZV9lbmV0X21kaW9fY29uZmlnKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTY2Olx0cmV0ID0geGdlbmVfZW5ldF9waHlfY29ubmVjdChuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTY3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5oPTQyNj1ib29sIHhnZW5lX3JpbmdfbWdyX2luaXQoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuaDo0Mjc6aW50IHhnZW5lX2VuZXRfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuaC00Mjgtdm9pZCB4Z2VuZV9lbmV0X3BoeV9kaXNjb25uZWN0KHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5jPTE2NTE9c3RhdGljIHZvaWQgeGdlbmVfZW5ldF9jaGVja19waHlfaGFuZGxlKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmMtMTY2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uYzoxNjYxOlx0cmV0ID0geGdlbmVfZW5ldF9waHlfY29ubmVjdChwZGF0YS1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uYy0xNjYyLVx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jPTg1OD1pbnQgYXJjX2VtYWNfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGludCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTk4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYzo5ODk6XHRwaHlkZXYgPSBvZl9waHlfY29ubmVjdChuZGV2LCBwaHlfbm9kZSwgYXJjX2VtYWNfYWRqdXN0X2xpbmssIDAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmMtOTkwLVx0XHRcdFx0aW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYy05OTEtXHRpZiAoIXBoeWRldikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jOjk5MjpcdFx0ZGV2X2VycihkZXYsIFwmIzM0O29mX3BoeV9jb25uZWN0KCkgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYy05OTMtXHRcdGVyciA9IC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM9OTY2PXN0YXRpYyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDc2LVx0XHQgYXhfbG9jYWwtXHUwMDNlbWRpb2J1cy1cdTAwM2VpZCwgQVg4ODc5NkNfUEhZX0lEKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jOjEwNzc6XHRheF9sb2NhbC1cdTAwM2VwaHlkZXYgPSBwaHlfY29ubmVjdChheF9sb2NhbC1cdTAwM2VuZGV2LCBwaHlfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDc4LVx0XHRcdFx0ICAgICAgIGF4ODg3OTZjX2hhbmRsZV9saW5rX2NoYW5nZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTEwNzQ9c3RhdGljIGludCBhZzcxeHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgYWc3MXh4ICphZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjExMDk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2YWctXHUwMDNlcGh5bGlua19jb25maWcsIGFnLVx1MDAzZXBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTExMC1cdFx0XHRcdCBhZy1cdTAwM2VwaHlfaWZfbW9kZSwgXHUwMDI2YWc3MXh4X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz0xNDA0PXN0YXRpYyBpbnQgYWc3MXh4X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xNDA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxNDEwOlx0cmV0ID0gcGh5bGlua19vZl9waHlfY29ubmVjdChhZy1cdTAwM2VwaHlsaW5rLCBhZy1cdTAwM2VwZGV2LVx1MDAzZWRldi5vZl9ub2RlLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTQxMS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTQxMjpcdFx0bmV0aWZfZXJyKGFnLCBsaW5rLCBuZGV2LCBcJiMzNDtwaHlsaW5rX29mX3BoeV9jb25uZWN0IGZpbGVkIHdpdGggZXJyOiAlaVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTQxMy1cdFx0XHQgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jPTEwNzY9c3RhdGljIGludCBiY21hc3BfcGh5X2F0dGFjaChzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jLTEwODQtXHRwaHlfaWZhY2UgPSBiY21hc3BfcGh5X2lmYWNlX2Zvcl9jb25uZWN0KGludGYtXHUwMDNlcGh5X2ludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmM6MTA4NTpcdHBoeWRldiA9IG9mX3BoeV9jb25uZWN0KGludGYtXHUwMDNlbmRldiwgaW50Zi1cdTAwM2VwaHlfZG4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMtMTA4Ni1cdFx0XHRcdGJjbWFzcF9hZGpfbGluaywgcGh5X2ZsYWdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIyMzQ9c3RhdGljIGludCBiNDRfcmVnaXN0ZXJfcGh5X29uZShzdHJ1Y3QgYjQ0ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MjI3MzpcdFx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjc0LVx0XHRpZiAoIUlTX0VSUihwaHlkZXYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyODAtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjgxOlx0XHRlcnIgPSBwaHlfY29ubmVjdF9kaXJlY3QoYnAtXHUwMDNlZGV2LCBwaHlkZXYsIFx1MDAyNmI0NF9hZGp1c3RfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyODItXHRcdFx0XHRcdCBQSFlfSU5URVJGQUNFX01PREVfTUlJKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMzEzPXN0YXRpYyB2b2lkIGI0NF91bnJlZ2lzdGVyX3BoeV9vbmUoc3RydWN0IGI0NCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjMyMi1cdGlmIChwaHlfaXNfcHNldWRvX2ZpeGVkX2xpbmsocGh5ZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIzMjM6XHRcdGZpeGVkX3BoeV91bnJlZ2lzdGVyKHBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMzI0LVx0bWRpb2J1c191bnJlZ2lzdGVyKG1paV9idXMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTg5MD1zdGF0aWMgaW50IGJjbV9lbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy05MDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzo5MTA6XHRcdHBoeWRldiA9IHBoeV9jb25uZWN0KGRldiwgcGh5X2lkLCBiY21fZW5ldF9hZGp1c3RfcGh5X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy05MTEtXHRcdFx0XHQgICAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYz0xOTI4PXN0YXRpYyBpbnQgYmNtX3N5c3BvcnRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0xOTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jOjE5Njc6XHRwaHlkZXYgPSBvZl9waHlfY29ubmVjdChkZXYsIHByaXYtXHUwMDNlcGh5X2RuLCBiY21fc3lzcG9ydF9hZGpfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0xOTY4LVx0XHRcdFx0MCwgcHJpdi1cdTAwM2VwaHlfaW50ZXJmYWNlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmM9Nzk9c3RhdGljIHZvaWQgYmNtYV9iZ21hY19jbW5fbWFza3NldDMyKHN0cnVjdCBiZ21hYyAqYmdtYWMsIHUxNiBvZmZzZXQsIHUzMiBtYXNrLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy04NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYzo4NTpzdGF0aWMgaW50IGJjbWFfcGh5X2Nvbm5lY3Qoc3RydWN0IGJnbWFjICpiZ21hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy04Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jLTk5LVx0XHRcdCBiZ21hYy1cdTAwM2VwaHlhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYzoxMDA6XHRcdHBoeV9kZXYgPSBwaHlfY29ubmVjdChiZ21hYy1cdTAwM2VuZXRfZGV2LCBidXNfaWQsIGJnbWFjX2FkanVzdF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jLTEwMS1cdFx0XHRcdCAgICAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy0xMTAtXHQvKiBBc3N1bWUgYSBmaXhlZCBsaW5rIHRvIHRoZSBzd2l0Y2ggcG9ydCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jOjExMTpcdHJldHVybiBiZ21hY19waHlfY29ubmVjdF9kaXJlY3QoYmdtYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jLTExMi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jPTEyND1zdGF0aWMgaW50IGJnbWFjX3Byb2JlKHN0cnVjdCBiY21hX2RldmljZSAqY29yZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmMtMzExLVx0YmdtYWMtXHUwMDNlY21uX21hc2tzZXQzMiA9IGJjbWFfYmdtYWNfY21uX21hc2tzZXQzMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYzozMTI6XHRiZ21hYy1cdTAwM2VwaHlfY29ubmVjdCA9IGJjbWFfcGh5X2Nvbm5lY3Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmMtMzEzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmM9MTE4PXN0YXRpYyB2b2lkIGJnbWFjX25pY3BtX3NwZWVkX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2Rldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jLTE1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmM6MTUxOnN0YXRpYyBpbnQgcGxhdGZvcm1fcGh5X2Nvbm5lY3Qoc3RydWN0IGJnbWFjICpiZ21hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmMtMTUyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jPTE3MT1zdGF0aWMgaW50IGJnbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0yNDItXHRcdG9mX25vZGVfcHV0KHBoeV9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmM6MjQzOlx0XHRiZ21hYy1cdTAwM2VwaHlfY29ubmVjdCA9IHBsYXRmb3JtX3BoeV9jb25uZWN0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0yNDQtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYzoyNDU6XHRcdGJnbWFjLVx1MDAzZXBoeV9jb25uZWN0ID0gYmdtYWNfcGh5X2Nvbm5lY3RfZGlyZWN0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0yNDYtXHRcdGJnbWFjLVx1MDAzZWZlYXR1cmVfZmxhZ3MgfD0gQkdNQUNfRkVBVF9GT1JDRV9TUEVFRF8yNTAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM9MTQzNz1FWFBPUlRfU1lNQk9MX0dQTChiZ21hY19hZGp1c3RfbGluayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0MzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE0Mzk6aW50IGJnbWFjX3BoeV9jb25uZWN0X2RpcmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDQwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM6MTQ0MTpcdHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzIGZwaHlfc3RhdHVzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDQyLVx0XHQubGluayA9IDEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNDQ5Olx0cGh5X2RldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZmcGh5X3N0YXR1cywgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NTAtXHRpZiAoSVNfRVJSKHBoeV9kZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNDU1Olx0ZXJyID0gcGh5X2Nvbm5lY3RfZGlyZWN0KGJnbWFjLVx1MDAzZW5ldF9kZXYsIHBoeV9kZXYsIGJnbWFjX2FkanVzdF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDU2LVx0XHRcdFx0IFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ2My19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE0NjQ6RVhQT1JUX1NZTUJPTF9HUEwoYmdtYWNfcGh5X2Nvbm5lY3RfZGlyZWN0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ2NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jPTE0ODc9aW50IGJnbWFjX2VuZXRfcHJvYmUoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE1MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE1MzM6XHRlcnIgPSBiZ21hY19waHlfY29ubmVjdChiZ21hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE1MzQtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaD00Mzk9c3RydWN0IGJnbWFjIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oLTQ5NS1cdFx0XHQgICAgICB1MzIgc2V0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmg6NDk2Olx0aW50ICgqcGh5X2Nvbm5lY3QpKHN0cnVjdCBiZ21hYyAqYmdtYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaC00OTctfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oPTUwMj12b2lkIGJnbWFjX2FkanVzdF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmg6NTAzOmludCBiZ21hY19waHlfY29ubmVjdF9kaXJlY3Qoc3RydWN0IGJnbWFjICpiZ21hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oLTUwNC1pbnQgYmdtYWNfZW5ldF9zdXNwZW5kKHN0cnVjdCBiZ21hYyAqYmdtYWMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmg9NTgzPXN0YXRpYyBpbmxpbmUgdm9pZCBiZ21hY191bWFjX21hc2tzZXQoc3RydWN0IGJnbWFjICpiZ21hYywgdTE2IG9mZnNldCwgdTMyIG1hc2ssIHUzMiBzZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaC01ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oOjU4ODpzdGF0aWMgaW5saW5lIGludCBiZ21hY19waHlfY29ubmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaC01ODkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaDo1OTA6XHRyZXR1cm4gYmdtYWMtXHUwMDNlcGh5X2Nvbm5lY3QoYmdtYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaC01OTEtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTk3PXZvaWQgYmNtZ2VuZXRfbWlpX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6MTE3OnN0YXRpYyBpbnQgYmNtZ2VuZXRfZml4ZWRfcGh5X2xpbmtfdXBkYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzoxMTg6XHRcdFx0XHRcdCAgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTExOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MTg2PXN0YXRpYyB2b2lkIGJjbWdlbmV0X21vY2FfcGh5X3NldHVwKHN0cnVjdCBiY21nZW5ldF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTE4OC1cdGlmIChiY21nZW5ldF9oYXNfbW9jYV9saW5rX2RldChwcml2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjE4OTpcdFx0Zml4ZWRfcGh5X3NldF9saW5rX3VwZGF0ZShwcml2LVx1MDAzZWRldi1cdTAwM2VwaHlkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzoxOTA6XHRcdFx0XHRcdCAgYmNtZ2VuZXRfZml4ZWRfcGh5X2xpbmtfdXBkYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTE5MS19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MzAxPWludCBiY21nZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0zNTAtXHRpZiAoZG4pIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjM1MTpcdFx0cGh5ZGV2ID0gb2ZfcGh5X2Nvbm5lY3QoZGV2LCBwcml2LVx1MDAzZXBoeV9kbiwgYmNtZ2VuZXRfbWlpX3NldHVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMzUyLVx0XHRcdFx0XHRwaHlfZmxhZ3MsIHBoeV9pZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMzgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6MzgxOlx0XHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LCBwaHlkZXYsIGJjbWdlbmV0X21paV9zZXR1cCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTM4Mi1cdFx0XHRcdFx0IHBoeV9pZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jPTIzMjQ9c3RhdGljIGludCBzYm1hY19taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjMzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYzoyMzM1Olx0cGh5X2RldiA9IHBoeV9jb25uZWN0KGRldiwgZGV2X25hbWUoXHUwMDI2cGh5X2Rldi1cdTAwM2VtZGlvLmRldiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjMzNi1cdFx0XHQgICAgICBcdTAwMjZzYm1hY19taWlfcG9sbCwgUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTIwODQ9c3RhdGljIGludCB0ZzNfcGh5X2luaXQoc3RydWN0IHRnMyAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjA5Ni1cdC8qIEF0dGFjaCB0aGUgTUFDIHRvIHRoZSBQSFkuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoyMDk3Olx0cGh5ZGV2ID0gcGh5X2Nvbm5lY3QodHAtXHUwMDNlZGV2LCBwaHlkZXZfbmFtZShwaHlkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjA5OC1cdFx0XHQgICAgIHRnM19hZGp1c3RfbGluaywgcGh5ZGV2LVx1MDAzZWludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz05ODI9c3RhdGljIGludCBtYWNiX3BoeWxpbmtfY29ubmVjdChzdHJ1Y3QgbWFjYiAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05ODktXHRpZiAoZG4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk5MDpcdFx0cmV0ID0gcGh5bGlua19vZl9waHlfY29ubmVjdChicC1cdTAwM2VwaHlsaW5rLCBkbiwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk5MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcdGJwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZicC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVx0XHRcdFx0ICAgICBicC1cdTAwM2VwaHlfaW50ZXJmYWNlLCBcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmM9OTQ1PXN0YXRpYyBpbnQgb2N0ZW9uX21nbXRfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmMtOTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jOjk1NjpcdHBoeWRldiA9IG9mX3BoeV9jb25uZWN0KG5ldGRldiwgcC1cdTAwM2VwaHlfbnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmMtOTU3LVx0XHRcdFx0b2N0ZW9uX21nbXRfYWRqdXN0X2xpbmssIDAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvdGh1bmRlcl9iZ3guYz0xMDU1PXN0YXRpYyBpbnQgYmd4X2xtYWNfZW5hYmxlKHN0cnVjdCBiZ3ggKmJneCwgdTggbG1hY2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL3RodW5kZXJfYmd4LmMtMTExOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL3RodW5kZXJfYmd4LmM6MTEyMDpcdFx0aWYgKHBoeV9jb25uZWN0X2RpcmVjdChsbWFjLVx1MDAzZW5ldGRldiwgbG1hYy1cdTAwM2VwaHlkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci90aHVuZGVyX2JneC5jLTExMjEtXHRcdFx0XHQgICAgICAgYmd4X2xtYWNfaGFuZGxlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jPTExMzI9c3RhdGljIHZvaWQgZG05MDUxX2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExNTEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jOjExNTI6c3RhdGljIGludCBkbTkwNTFfcGh5X2Nvbm5lY3Qoc3RydWN0IGJvYXJkX2luZm8gKmRiKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMTUzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jOjExNTk6XHRkYi1cdTAwM2VwaHlkZXYgPSBwaHlfY29ubmVjdChkYi1cdTAwM2VuZGV2LCBwaHlfaWQsIGRtOTA1MV9oYW5kbGVfbGlua19jaGFuZ2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExNjAtXHRcdFx0XHQgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz0xMTY0PXN0YXRpYyBpbnQgZG05MDUxX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMjA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzoxMjA5Olx0cmV0ID0gZG05MDUxX3BoeV9jb25uZWN0KGRiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTIxMC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTI0MT1zdGF0aWMgaW50IHRzbmVwX3BoeV9vcGVuKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjQ3Olx0cmV0dmFsID0gcGh5X2Nvbm5lY3RfZGlyZWN0KGFkYXB0ZXItXHUwMDNlbmV0ZGV2LCBhZGFwdGVyLVx1MDAzZXBoeWRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDgtXHRcdFx0XHQgICAgdHNuZXBfcGh5X2xpbmtfc3RhdHVzX2NoYW5nZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTY5OT1zdGF0aWMgaW50IGV0aG9jX21kaW9fcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTcxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6NzE2Olx0ZXJyID0gcGh5X2Nvbm5lY3RfZGlyZWN0KGRldiwgcGh5LCBldGhvY19tZGlvX3BvbGwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTcxNy1cdFx0XHRcdCBQSFlfSU5URVJGQUNFX01PREVfR01JSSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz00Mz1zdHJ1Y3QgZnRnbWFjMTAwX21hdGNoX2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtNjYtLyogRm9yIE5DLVNJIHRvIHJlZ2lzdGVyIGEgZml4ZWQtbGluayBwaHkgZGV2aWNlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyBuY3NpX3BoeV9zdGF0dXMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTY4LVx0LmxpbmsgPSAxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTQ5Nz1zdGF0aWMgaW50IGZ0Z21hYzEwMF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE1NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE1NDI6XHRwaHlkZXYgPSBwaHlfY29ubmVjdChuZXRkZXYsIHBoeWRldl9uYW1lKHBoeWRldiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE1NDMtXHRcdFx0ICAgICBcdTAwMjZmdGdtYWMxMDBfYWRqdXN0X2xpbmssIHBoeV9pbnRmKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE3ODA9c3RhdGljIHZvaWQgZnRnbWFjMTAwX3BoeV9kaXNjb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzkyLVx0aWYgKHByaXYtXHUwMDNldXNlX25jc2kpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE3OTM6XHRcdGZpeGVkX3BoeV91bnJlZ2lzdGVyKHBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3OTQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTg0OD1zdGF0aWMgaW50IGZ0Z21hYzEwMF9wcm9iZV9uY3NpKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxODY3Olx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNm5jc2lfcGh5X3N0YXR1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODY4LVx0aWYgKElTX0VSUihwaHlkZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODcyLVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxODczOlx0ZXJyID0gcGh5X2Nvbm5lY3RfZGlyZWN0KG5ldGRldiwgcGh5ZGV2LCBmdGdtYWMxMDBfYWRqdXN0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4NzQtXHRcdFx0XHQgUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg4MS1lcnJfcmVnaXN0ZXJfcGh5OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxODgyOlx0Zml4ZWRfcGh5X3VucmVnaXN0ZXIocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg4My1lcnJfcmVnaXN0ZXJfbmRldjpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXHRtYWNfZGV2LVx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcdG1hY19kZXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hY19kZXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cdFx0XHRcdFx0ICBkZXZfZndub2RlKG1hY19kZXYtXHUwMDNlZGV2KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTI5NDE9c3RhdGljIGludCBkcGFhX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yOTUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYzoyOTUxOlx0ZXJyID0gcGh5bGlua19vZl9waHlfY29ubmVjdChtYWNfZGV2LVx1MDAzZXBoeWxpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI5NTItXHRcdFx0XHQgICAgIG1hY19kZXYtXHUwMDNlZGV2LVx1MDAzZW9mX25vZGUsIDApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYz01NjA9aW50IGRwYWEyX21hY19jb25uZWN0KHN0cnVjdCBkcGFhMl9tYWMgKm1hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjYyNTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZtYWMtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI2LVx0XHRcdFx0IGRwbWFjX25vZGUsIG1hYy1cdTAwM2VpZl9tb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MzQtXHRydG5sX2xvY2soKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MzU6XHRlcnIgPSBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdChtYWMtXHUwMDNlcGh5bGluaywgZHBtYWNfbm9kZSwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjM2LVx0cnRubF91bmxvY2soKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MzctXHRpZiAoZXJyKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NjM4Olx0XHRuZXRkZXZfZXJyKG5ldF9kZXYsIFwmIzM0O3BoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgPSAlZFxcblwmIzM0OywgZXJyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MzktXHRcdGdvdG8gZXJyX3BoeWxpbmtfZGVzdHJveTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYz0yOTM1PXN0YXRpYyBpbnQgZW5ldGNfcGh5bGlua19jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jLTI5NDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYzoyOTQ3Olx0ZXJyID0gcGh5bGlua19vZl9waHlfY29ubmVjdChwcml2LVx1MDAzZXBoeWxpbmssIHByaXYtXHUwMDNlZGV2LVx1MDAzZW9mX25vZGUsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmMtMjk0OC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYz0zMDEwPWludCBlbmV0Y19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jLTMwMjgtXHRpZiAoZXJyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmM6MzAyOTpcdFx0Z290byBlcnJfcGh5X2Nvbm5lY3Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYy0zMDMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jLTMwNTUtXHRcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkocHJpdi1cdTAwM2VwaHlsaW5rKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jOjMwNTY6ZXJyX3BoeV9jb25uZWN0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmMtMzA1Ny1cdGVuZXRjX2ZyZWVfaXJxcyhwcml2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTIzPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTQyOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTQzLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0NC1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTQ1Olx0XHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDYtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5NTA6ZXJyX3BoeWxpbmtfY3JlYXRlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1MS1cdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9Nzg1PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6ODY4Olx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg2OS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo4NzA6XHRcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODcxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg3OS1cdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjg4MDplcnJfcGh5bGlua19jcmVhdGU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04ODEtXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz00MTk9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDIxOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDIyLVx0XHRcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ2MS1cdHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBtYWNfY2FwcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzo0NjI6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cGYtXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDYzLVx0XHRcdFx0IHBmLVx1MDAzZWlmX21vZGUsIG9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ3Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDczOkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmgtMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9Mjk4MT1zdGF0aWMgaW50IGZlY19lbmV0X21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0yOTg3LVx0aWYgKGZlcC1cdTAwM2VwaHlfbm9kZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6Mjk4ODpcdFx0cGh5X2RldiA9IG9mX3BoeV9jb25uZWN0KG5kZXYsIGZlcC1cdTAwM2VwaHlfbm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTI5ODktXHRcdFx0XHRcdCBcdTAwMjZmZWNfZW5ldF9hZGp1c3RfbGluaywgMCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMDAyLVx0XHRcdG5ldGRldl9pbmZvKG5kZXYsIFwmIzM0O25vIFBIWSwgYXNzdW1pbmcgZGlyZWN0IGNvbm5lY3Rpb24gdG8gc3dpdGNoXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMDM6XHRcdFx0cGh5X2RldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwNC1cdFx0XHRpZiAoSVNfRVJSKHBoeV9kZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMTA6XHRcdHJldCA9IHBoeV9jb25uZWN0X2RpcmVjdChuZGV2LCBwaHlfZGV2LCBcdTAwMjZmZWNfZW5ldF9hZGp1c3RfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMTEtXHRcdFx0XHRcdCBmZXAtXHUwMDNlcGh5X2ludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAxMy1cdFx0XHRpZiAocGh5X2lzX3BzZXVkb19maXhlZF9saW5rKHBoeV9kZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6MzAxNDpcdFx0XHRcdGZpeGVkX3BoeV91bnJlZ2lzdGVyKHBoeV9kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAxNS1cdFx0XHRuZXRkZXZfZXJyKG5kZXYsIFwmIzM0O2NvdWxkIG5vdCBhdHRhY2ggdG8gUEhZXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00MjI4PWZlY19lbmV0X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQyNDMtXHRpZiAoIWZlcC1cdTAwM2VwaHlfbm9kZSBcdTAwMjZcdTAwMjYgcGh5X2lzX3BzZXVkb19maXhlZF9saW5rKHBoeV9kZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDI0NDpcdFx0Zml4ZWRfcGh5X3VucmVnaXN0ZXIocGh5X2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy00MjQ1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jPTIxNj1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYy0yMjItXHRpZiAocHJpdi1cdTAwM2VwaHlfbm9kZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM6MjIzOlx0XHRwaHlkZXYgPSBvZl9waHlfY29ubmVjdChwcml2LVx1MDAzZW5kZXYsIHByaXYtXHUwMDNlcGh5X25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYy0yMjQtXHRcdFx0XHRcdG1wYzUyeHhfZmVjX2FkanVzdF9saW5rLCAwLCAwKTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjQxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgVVNCIEV0aGVybmV0IGFuZCBOZXR3b3JraW5nIERldmljZSBEcml2ZXIgQXJjaGl0ZWN0dXJlKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IFVTQiBFdGhlcm5ldCBkZXZpY2VzIGFyZSBhcmNoaXRlY3RlZCBpbiB0aGlzIHN5c3RlbSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgcGh5c2ljYWwgbGF5ZXIuIFRoZSBjb3JlIHF1ZXN0aW9ucyBhcmU6IGRvIHRoZXNlIGRyaXZlcnMsIHRoaW5ncyBsaWtlIGBjZGNfbmNtYCwgYGFzaXhgLCBgdXNibmV0YCwgZXZlbiBzaW11bGF0ZWQgZGV2aWNlcyBsaWtlIGBuZXRkZXZzaW1gLCBgZHVtbXlgLCBvciBgdmlydGlvYCwgbGV2ZXJhZ2UgYHBoeWxpYmAgaW4gdGhlaXIgaW1wbGVtZW50YXRpb24/IFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHBoeXNpY2FsIGxpbmsgbWFuYWdlbWVudCBpbiB0aGVzZSBjb25maWd1cmF0aW9ucy4KCk15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGdyZXAgZm9yIGluc3RhbmNlcyBvZiBgcGh5X2Nvbm5lY3RgIG9yIGBwaHlsaW5rYCB3aXRoaW4gdGhlIHJlbGV2YW50IGRyaXZlciBkaXJlY3Rvcmllcy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgVVNCIEV0aGVybmV0IGRyaXZlcnMgdW5kZXIgYGRyaXZlcnMvbmV0L3VzYi9gLCBhbnkgc2ltdWxhdGlvbiBvciB0ZXN0IGRyaXZlcnMgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9gLCBhbmQgbWF5YmUgdGhlIGBkdW1teS5jYCBhbmQgc2ltaWxhciBmaWxlcyB0byBzZWUgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIFBIWSBpbnRlcmFjdGlvbnMgKG9yIGlmIHRoZXkmIzM5O3JlIGFic3RyYWN0aW5nIGl0IGVudGlyZWx5KS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHBpY3R1cmUgb2Ygd2hldGhlciBhbmQgaG93IHRoZXkmIzM5O3JlIHVzaW5nIHBoeWxpYiBmb3IgcGh5c2ljYWwgbGF5ZXIgbWFuYWdlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsocGh5X2Nvbm5lY3R8cGh5bGlua3xwaHlfYXR0YWNoKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeC5oLTI5LSNpbmNsdWRlIFx1MDAzY25ldC9zZWxmdGVzdHMuaFx1MDAzZVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDozMDojaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMzEtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaD0xNzg9c3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMTg3LVx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldl9pbnQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4ODpcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoxODk6XHRzdHJ1Y3QgcGh5bGlua19jb25maWcgcGh5bGlua19jb25maWc7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE5MC1cdHUxNiBwaHlfYWRkcjtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9Mjk0PXN0YXRpYyB2b2lkIGF4ODg3NzJfZXRodG9vbF9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjk5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjMwMDpcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbShwcml2LVx1MDAzZXBoeWxpbmssIHBhdXNlKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMDEtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zMDM9c3RhdGljIGludCBheDg4NzcyX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTMwOC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMDk6XHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHByaXYtXHUwMDNlcGh5bGluaywgcGF1c2UpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTMxMC19XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTMzMj1zdGF0aWMgaW50IGF4ODg3NzJfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zNTMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzU0Olx0cGh5bGlua19zdGFydChwcml2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTM1NS1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NTk2PXN0YXRpYyB2b2lkIGF4ODg3NzJfc3VzcGVuZChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYwMi1cdFx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjAzOlx0XHRwaHlsaW5rX3N1c3BlbmQocHJpdi1cdTAwM2VwaHlsaW5rLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjA0LVx0XHRydG5sX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02MjItICpcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2MjM6ICogLSBUaGUgTUFDIGRyaXZlciBtdXN0IGhvbGQgUlROTCB3aGVuIGNhbGxpbmcgcGh5bGluayBpbnRlcmZhY2VzIHN1Y2ggYXNcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2MjQ6ICogICBwaHlsaW5rX3N1c3BlbmQoKS9yZXN1bWUoKS4gVGhvc2UgY2FsbHMgd2lsbCBhbHNvIHBlcmZvcm0gTURJTyBJL08uXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjI1LSAqXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTY0Mj1zdGF0aWMgdm9pZCBheDg4NzcyX3Jlc3VtZShzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY1Mi1cdFx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjUzOlx0XHRwaHlsaW5rX3Jlc3VtZShwcml2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY1NC1cdFx0cnRubF91bmxvY2soKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzAzPXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X3BoeShzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxMy1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MTQ6XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXHUwMDNlcGh5bGluaywgcHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxNS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzIyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcyMzpcdHBoeV9hdHRhY2hlZF9pbmZvKHByaXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MjQtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTczNC1cdFx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzM1Olx0XHRwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHByaXYtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzM2LVx0XHRydG5sX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NDYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzQ3OnN0YXRpYyB2b2lkIGF4ODg3NzJfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzQ4Olx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0OS17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc1Mi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NTM6c3RhdGljIHZvaWQgYXg4ODc3Ml9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc1NC1cdFx0XHRcdCB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzYxLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc2MjpzdGF0aWMgdm9pZCBheDg4NzcyX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc2My1cdFx0XHQgICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzkyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc5MzpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBheDg4NzcyX3BoeWxpbmtfbWFjX29wcyA9IHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03OTQtXHQubWFjX2NvbmZpZyA9IGF4ODg3NzJfbWFjX2NvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzk4LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc5OTpzdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAwLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAyLVx0cGh5X2ludGVyZmFjZV90IHBoeV9pZl9tb2RlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwMzpcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MDU6XHRwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFx1MDAyNmRldi1cdTAwM2VuZXQtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNjpcdHByaXYtXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNzpcdHByaXYtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IE1BQ19TWU1fUEFVU0UgfCBNQUNfQVNZTV9QQVVTRSB8XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODA4LVx0XHRNQUNfMTAgfCBNQUNfMTAwO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTAtXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxMTpcdFx0ICBwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTItXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODEzOlx0XHQgIHByaXYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxNC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIxOlx0XHRcdFx0IHBoeV9pZl9tb2RlLCBcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIyOlx0aWYgKElTX0VSUihwaHlsaW5rKSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjM6XHRcdHJldHVybiBQVFJfRVJSKHBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjU6XHRwcml2LVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyNi1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz04Mjk9c3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTIwLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkyMTpcdHJldCA9IGF4ODg3NzJfcGh5bGlua19zZXR1cChkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyMi1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTIzOlx0XHRnb3RvIHBoeWxpbmtfZXJyO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyNC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTMxLVx0ICogdGhhdCBjb3VsZCBkZWFkbG9jayAoYXV0b3Jlc3VtZSB1bmRlciBSVE5MIHdoaWxlIFVTQiBQTSBsb2NrXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTMyOlx0ICogaXMgaGVsZCwgcGh5bGluay9NRElPIHdhbnRzIFJUTkwpLlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzMy1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MzgtaW5pdHBoeV9lcnI6XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTM5Olx0cGh5bGlua19kZXN0cm95KHByaXYtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTQwOnBoeWxpbmtfZXJyOlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk0MS1cdGF4ODg3NzJfbWRpb191bnJlZ2lzdGVyKHByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05NDY9c3RhdGljIGludCBheDg4NzcyX3N0b3Aoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NDktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTUwOlx0cGh5bGlua19zdG9wKHByaXYtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTUxLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05NTU9c3RhdGljIHZvaWQgYXg4ODc3Ml91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTU5LVx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTYwOlx0cGh5bGlua19kaXNjb25uZWN0X3BoeShwcml2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk2MS1cdHJ0bmxfdW5sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTYyOlx0cGh5bGlua19kZXN0cm95KHByaXYtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTYzLVx0YXg4ODc3Ml9tZGlvX3VucmVnaXN0ZXIocHJpdik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MjYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTMxMy1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjMxNDpcdHByaXYtXHUwMDNlcGh5ZGV2ID0gcGh5X2Nvbm5lY3QoZGV2LVx1MDAzZW5ldCwgcHJpdi1cdTAwM2VwaHlfbmFtZSxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTMxNS1cdFx0XHRcdCAgIFx1MDAyNmF4ODgxNzJhX2FkanVzdF9saW5rLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6OTojaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTAtI2luY2x1ZGUgXHUwMDNjbGludXgvdXNiLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTQxMz1zdHJ1Y3QgbGFuNzh4eF9uZXQge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDY2LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo0Njc6XHRzdHJ1Y3QgcGh5bGlua1x0XHQqcGh5bGluaztcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6NDY4Olx0c3RydWN0IHBoeWxpbmtfY29uZmlnXHRwaHlsaW5rX2NvbmZpZztcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDY5LX07XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0xODE2PXN0YXRpYyBpbnQgbGFuNzh4eF9nZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsIHN0cnVjdCBldGh0b29sX2tlZWUgKmVkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTgxOS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MTgyMDpcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZShkZXYtXHUwMDNlcGh5bGluaywgZWRhdGEpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xODIxLX1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE4MjM9c3RhdGljIGludCBsYW43OHh4X3NldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZWRhdGEpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xODI2LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxODI3Olx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKGRldi1cdTAwM2VwaHlsaW5rLCBlZGF0YSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4MjgtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTg1Mz1zdGF0aWMgaW50IGxhbjc4eHhfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xODU3LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxODU4Olx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KGRldi1cdTAwM2VwaHlsaW5rLCBjbWQpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xODU5LX1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE4NjE9c3RhdGljIGludCBsYW43OHh4X3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTg2NS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MTg2NjpcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldChkZXYtXHUwMDNlcGh5bGluaywgY21kKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTg2Ny19XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0xODY5PXN0YXRpYyB2b2lkIGxhbjc4eHhfZ2V0X3BhdXNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xODczLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxODc0Olx0cGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKGRldi1cdTAwM2VwaHlsaW5rLCBwYXVzZSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4NzUtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTg3Nz1zdGF0aWMgaW50IGxhbjc4eHhfc2V0X3BhdXNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xODgxLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxODgyOlx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbShkZXYtXHUwMDNlcGh5bGluaywgcGF1c2UpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xODgzLX1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTIyNTk9c3RhdGljIHZvaWQgbGFuNzh4eF9yZW1vdmVfaXJxX2RvbWFpbihzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIyNzAtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIyNzE6c3RhdGljIHZvaWQgbGFuNzh4eF9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjI3MjpcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIyNzMte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjMwNS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjMwNjpzdGF0aWMgdm9pZCBsYW43OHh4X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIzMDctXHRcdFx0XHQgIHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjQzMj1zdGF0aWMgaW50IGxhbjc4eHhfY29uZmlndXJlX2Zsb3djb250cm9sKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjQ3Ni1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjQ3NzpzdGF0aWMgdm9pZCBsYW43OHh4X21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNDc4LVx0XHRcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI1NzE9c3RhdGljIGludCBsYW43OHh4X21hY19lZWVfZW5hYmxlKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2LCBib29sIGVuYWJsZSlcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI1ODAtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI1ODE6c3RhdGljIHZvaWQgbGFuNzh4eF9tYWNfZGlzYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI1ODIte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjU4OC1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjU4OTpzdGF0aWMgaW50IGxhbjc4eHhfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHUzMiB0aW1lcixcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjU5MC1cdFx0XHRcdCAgICAgYm9vbCB0eF9jbGtfc3RvcClcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI1OTctXHQgKiBFdGhlcm5ldCBFbmFibGUgKEVFRUVOKSBpcyBjbGVhcmVkLiBXZSBlbnN1cmUgdGhhdCBieSBjbGVhcmluZ1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyNTk4Olx0ICogRUVFRU4gZHVyaW5nIHByb2JlLCBhbmQgcGh5bGluayBpdHNlbGYgZ3VhcmFudGVlcyB0aGF0XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI1OTktXHQgKiBtYWNfZGlzYWJsZV90eF9scGkoKSB3aWxsIGhhdmUgYmVlbiBwcmV2aW91c2x5IGNhbGxlZC5cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2MDctXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI2MDg6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzh4eF9waHlsaW5rX21hY19vcHMgPSB7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2MDktXHQubWFjX2NvbmZpZyA9IGxhbjc4eHhfbWFjX2NvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI2MjY9c3RhdGljIGludCBsYW43OHh4X3NldF9maXhlZF9saW5rKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNjI3LXtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjYyODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlIHN0YXRlID0ge1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNjI5LVx0XHQuc3BlZWQgPSBTUEVFRF8xMDAwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjYzNS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjYzNjpcdHJldHVybiBwaHlsaW5rX3NldF9maXhlZF9saW5rKGRldi1cdTAwM2VwaHlsaW5rLCBcdTAwMjZzdGF0ZSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2MzctfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjc2OT1zdGF0aWMgaW50IGxhbjc4eHhfY29uZmlndXJlX2xlZHNfZnJvbV9kdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldixcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI3OTgtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI3OTk6c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4MDAte1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODAxOlx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpwYyA9IFx1MDAyNmRldi1cdTAwM2VwaHlsaW5rX2NvbmZpZztcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjgwMjpcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODAzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgzNC1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjgzNTpcdG1lbWNweShkZXYtXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMsXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4MzY6XHQgICAgICAgZGV2LVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzLFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM3Olx0ICAgICAgIHNpemVvZihkZXYtXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgzOC1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjgzOTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShwYywgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODQwOlx0XHRcdFx0IGRldi1cdTAwM2VpbnRlcmZhY2UsIFx1MDAyNmxhbjc4eHhfcGh5bGlua19tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6Mjg0MTpcdGlmIChJU19FUlIocGh5bGluaykpXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4NDI6XHRcdHJldHVybiBQVFJfRVJSKHBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODQzLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODQ0Olx0ZGV2LVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODQ1LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjg0OT1zdGF0aWMgdm9pZCBsYW43OHh4X3BoeV91bmluaXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NTAte1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODUxOlx0aWYgKGRldi1cdTAwM2VwaHlsaW5rKSB7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4NTI6XHRcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkoZGV2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODUzOlx0XHRwaHlsaW5rX2Rlc3Ryb3koZGV2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODU0Olx0XHRkZXYtXHUwMDNlcGh5bGluayA9IE5VTEw7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NTUtXHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yODU4PXN0YXRpYyBpbnQgbGFuNzh4eF9waHlfaW5pdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NzAtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4NzE6XHRyZXQgPSBsYW43OHh4X3BoeWxpbmtfc2V0dXAoZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg3Mi1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODc2LVx0aWYgKHJldCBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6Mjg3NzpcdFx0Z290byBwaHlsaW5rX3VuaW5pdDtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg3OC1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4ODYtXHRcdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4ODc6XHRcdFx0Z290byBwaHlsaW5rX3VuaW5pdDtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg4OC1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg4OS1cdFx0LyogTm8gUEhZIGZvdW5kLCBzbyBzZXQgdXAgYSBmaXhlZCBsaW5rIGFuZCByZXR1cm4gZWFybHkuXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4OTA6XHRcdCAqIE5vIG5lZWQgdG8gY29uZmlndXJlIFBIWSBJUlEgb3IgYXR0YWNoIHRvIHBoeWxpbmsuXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4OTEtXHRcdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjkwMS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjkwMjpcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkoZGV2LVx1MDAzZXBoeWxpbmssIHBoeWRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTA1LVx0XHRcdCAgIGRldi1cdTAwM2VtZGlvYnVzLVx1MDAzZWlkLCBFUlJfUFRSKHJldCkpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyOTA2Olx0XHRnb3RvIHBoeWxpbmtfdW5pbml0O1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTA3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjkxMC1cdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI5MTE6XHRcdGdvdG8gcGh5bGlua191bmluaXQ7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MTItXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTE0LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyOTE1OnBoeWxpbmtfdW5pbml0OlxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTE2LVx0bGFuNzh4eF9waHlfdW5pbml0KGRldik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zNDYyPXN0YXRpYyBpbnQgbGFuNzh4eF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zNDkwLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozNDkxOlx0cGh5bGlua19zdGFydChkZXYtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTM0OTItXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zNTM4PXN0YXRpYyBpbnQgbGFuNzh4eF9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zNTU4LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozNTU5Olx0cGh5bGlua19zdG9wKGRldi1cdTAwM2VwaHlsaW5rKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzU2MC1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTQ1NzE9c3RhdGljIHZvaWQgbGFuNzh4eF9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDU4My1cdHJ0bmxfbG9jaygpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo0NTg0Olx0cGh5bGlua19zdG9wKGRldi1cdTAwM2VwaHlsaW5rKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6NDU4NTpcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkoZGV2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy00NTg2LVx0cnRubF91bmxvY2soKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTQ1OTMtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjQ1OTQ6XHRwaHlsaW5rX2Rlc3Ryb3koZGV2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy00NTk1LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9NTExNT1zdGF0aWMgaW50IGxhbjc4eHhfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy01MTQyLVx0XHRydG5sX2xvY2soKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6NTE0MzpcdFx0cGh5bGlua19zdXNwZW5kKGRldi1cdTAwM2VwaHlsaW5rLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTUxNDQtXHRcdHJ0bmxfdW5sb2NrKCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz01MzYyPXN0YXRpYyBpbnQgbGFuNzh4eF9yZXNldF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy01Mzc3LVx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjUzNzg6XHRwaHlsaW5rX3Jlc3VtZShkZXYtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTUzNzktXHRydG5sX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jPTExNDc9c3RhdGljIGludCBzbXNjOTV4eF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI4NC1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjEyODU6XHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LVx1MDAzZW5ldCwgcGRhdGEtXHUwMDNlcGh5ZGV2LFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI4Ni1cdFx0XHRcdCBcdTAwMjZzbXNjOTV4eF9oYW5kbGVfbGlua19jaGFuZ2UsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI5Mi1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjEyOTM6XHRwaHlfYXR0YWNoZWRfaW5mbyhkZXYtXHUwMDNlbmV0LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMjk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTQ5CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFVTQiBFdGhlcm5ldCBEcml2ZXIgVGVzdGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0aGVzZSBVU0IgRXRoZXJuZXQgZHJpdmVycyBhcmUgdGVzdGVkIGFuZCB3aGF0IHRlY2huaXF1ZXMgYXJlIGJlaW5nIHVzZWQuIFNwZWNpZmljYWxseSwgZHJpdmVycyBsaWtlIGBhc2l4YCwgYGF4ODgxNzJhYCwgYGxhbjc4eHhgLCBhbmQgYHNtc2M5NXh4YCBhcmUgaW4gdGhlIHNwb3RsaWdodC4gSSBzZWUgdGhhdCB0aGVyZSBhcmUgbXVsdGlwbGUgYW5nbGVzIGZvciBwcm9iaW5nIHRoZXNlIGRyaXZlcnM6IHVzaW5nIFVTQiBlbXVsYXRpb24g4oCTIHdoaWNoIGluY2x1ZGVzIHJhdy1nYWRnZXQsIHVzYi1mdXp6ZXIsIGFuZCBldmVuIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMg4oCTIG9yIGJ5IHVzaW5nIHZpcnR1YWwgZGV2aWNlcy4gRnVydGhlcm1vcmUsIGBkc2FfbG9vcGAsIGBmaXhlZF9waHlgLCBhbmQgb3RoZXIgbmV0IGRldmljZXMgY2FuIGFsc28gYmUgYnJvdWdodCBpbnRvIHBsYXkhCgpJIHJlY29nbml6ZSB0aGF0IHRoZSBzdGFuZGFyZCB2aXJ0dWFsIG5ldHdvcmtpbmcgc2V0dXAgYW5kIHRoZSBVU0IgZ2FkZ2V0IG5ldHdvcmtpbmcgd2l0aGluIHN5emthbGxlciBhcmUgYWxyZWFkeSBxdWl0ZSBlZmZlY3RpdmUgYXQgcmVndWxhcmx5IGV4ZXJjaXNpbmcgdGhlc2UgVVNCIG5ldCBkcml2ZXJzLiBUaGV5JiMzOTtyZSB0cmlnZ2VyaW5nIGNhbGxzIHRvIGltcG9ydGFudCBQSFkgZnVuY3Rpb25zIGxpa2UgYHBoeWxpbmtfY29ubmVjdF9waHlgLCBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAsIGBwaHlfY29ubmVjdGAsIGBwaHlfYXR0YWNoX2RpcmVjdGAsIGFuZCBgcGh5X3Byb2JlYC4KCkdpdmVuIHRoaXMgY29udGV4dCwgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRvIGdhaW4gYSBkZWVwZXIgdW5kZXJzdGFuZGluZy4gVG8gZG8gdGhhdCwgSSYjMzk7bSBnb2luZyB0byBjb25zdWx0IGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIGFueSByZWNlbnQgY2hhbmdlcyBpbiB0aGVzZSBmaWxlcy4gUmVhZGluZyB0aHJvdWdoIHRoZW0gd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiB0aGUgYnVnIG9yIHRoZSBmaXgsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTczMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNzMwOlx0XHRyZXR1cm4gcmV0O1xuMTczMTpcdH1cbjE3MzI6XHRcbjE3MzM6XHRzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuMTczNDpcdHtcbjE3MzU6XHRcdHJldHVybiBwaHlkcnYtXHUwMDNlY29uZmlnX2ludHIgXHUwMDI2XHUwMDI2IHBoeWRydi1cdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xuMTczNjpcdH1cbjE3Mzc6XHRcbjE3Mzg6XHQvKiBHaXZlIGJhY2sgd2hhdCBwaHlfcHJvYmUoKSB0b29rLCBidXQgbm90IHdoaWxlIHBoeV9saW5rX2NoYW5nZSBtYXJrcyBhXG4xNzM5Olx0ICogY29uc3VtZXI6IGl0IHNraXBwZWQgcGh5X3JlcXVlc3RfaW50ZXJydXB0KCkgb24gdGhlIHZhbHVlIGl0IHNhdywgc29cbjE3NDA6XHQgKiBwaHlfZGlzY29ubmVjdCgpIHdvdWxkIGZyZWUgYW4gaW50ZXJydXB0IG5vYm9keSByZXF1ZXN0ZWQuXG4xNzQxOlx0ICovXG4xNzQyOlx0c3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4xNzQzOlx0e1xuMTc0NDpcdFx0aWYgKHBoeWRldi1cdTAwM2VwaHlfbGlua19jaGFuZ2UgfHwgcGh5ZGV2LVx1MDAzZWlycV9zYXZlZCA9PSBQSFlfUE9MTClcbjE3NDU6XHRcdFx0cmV0dXJuO1xuMTc0NjpcdFxuMTc0NzpcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IHBoeWRldi1cdTAwM2VpcnFfc2F2ZWQ7XG4xNzQ4Olx0XHRwaHlkZXYtXHUwMDNlaXJxX3NhdmVkID0gUEhZX1BPTEw7XG4xNzQ5Olx0fVxuMTc1MDpcdFxuMTc1MTpcdC8qKlxuMTc1MjpcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbjE3NTM6XHQgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbjE3NTQ6XHQgKiBAcGh5ZGV2OiBQb2ludGVyIHRvIHBoeV9kZXZpY2UgdG8gYXR0YWNoXG4xNzU1Olx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJiMzOTtzIGRldl9mbGFnc1xuMTc1NjpcdCAqIEBpbnRlcmZhY2U6IFBIWSBkZXZpY2UmIzM5O3MgaW50ZXJmYWNlXG4xNzU3Olx0ICpcbjE3NTg6XHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGRyaXZlcnMgdG8gYXR0YWNoIHRvIGEgcGFydGljdWxhciBQSFlcbjE3NTk6XHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxuMTc2MDpcdCAqICAgICB0byB0aGUgcGh5X2RyaXZlci4gIElmIG5vIGRyaXZlciBpcyBhdHRhY2hlZCwgdGhlbiBhXG4xNzYxOlx0ICogICAgIGdlbmVyaWMgZHJpdmVyIGlzIHVzZWQuICBUaGUgcGh5X2RldmljZSBpcyBnaXZlbiBhIHB0ciB0b1xuMTc2MjpcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXG4xNzYzOlx0ICogICAgIGNoYW5nZS4gIFRoZSBwaHlfZGV2aWNlIGlzIHJldHVybmVkIHRvIHRoZSBhdHRhY2hpbmcgZHJpdmVyLlxuMTc2NDpcdCAqICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgcmVmZXJlbmNlIG9uIHRoZSBwaHkgZGV2aWNlLlxuMTc2NTpcdCAqL1xuMTc2NjpcdGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuMTc2NzpcdFx0XHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4xNzY4Olx0e1xuMTc2OTpcdFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbjE3NzA6XHRcdHN0cnVjdCBkZXZpY2UgKmQgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG4xNzcxOlx0XHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcbjE3NzI6XHRcdGludCBlcnI7XG4xNzczOlx0XG4xNzc0Olx0XHQvKiBGb3IgRXRoZXJuZXQgZGV2aWNlIGRyaXZlcnMgdGhhdCByZWdpc3RlciB0aGVpciBvd24gTURJTyBidXMsIHdlXG4xNzc1Olx0XHQgKiB3aWxsIGhhdmUgYnVzLVx1MDAzZW93bmVyIG1hdGNoIG5kZXZfbW9kLCBzbyB3ZSBkbyBub3Qgd2FudCB0byBpbmNyZW1lbnRcbjE3NzY6XHRcdCAqIG91ciBvd24gbW9kdWxlLVx1MDAzZXJlZmNudCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgbm90IGJlIGFibGUgdG9cbjE3Nzc6XHRcdCAqIHVubG9hZCBsYXRlciBvbi5cbjE3Nzg6XHRcdCAqL1xuMTc3OTpcdFx0aWYgKGRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkzMjQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0cywgZ2VhcmVkIHRvd2FyZHMgYW4gZXhwZXJ0OgoKKipEaXZpbmcgaW50byBgcGh5X2F0dGFjaF9kaXJlY3RgKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBwaHlfYXR0YWNoX2RpcmVjdGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBsaW5lcyAxODkwIHRocm91Z2ggMTkyNS4gR2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoZSBzeXN0ZW0sIHRoaXMgc2VjdGlvbiBpcyBsaWtlbHkgaGFuZGxpbmcgdGhlIGRpcmVjdCBQSFkgYXR0YWNobWVudCBwcm9jZWR1cmUuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpbml0aWFsaXplcyBhbmQgY29uZmlndXJlcyB0aGUgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlIGluIHRoaXMgc3BlY2lmaWMgc2NlbmFyaW8uIEkgZXhwZWN0IHRvIHNlZSB0aGUgdHlwaWNhbCBzZXF1ZW5jZSBvZiBhY3Rpb25zIGhlcmU6IGRldmljZSBwcm9iaW5nLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBwb3NzaWJseSByZWdpc3RlciBhY2Nlc3MgZm9yIGluaXRpYWwgUEhZIGNvbmZpZ3VyYXRpb24sIGFuZCB1bHRpbWF0ZWx5LCByZWdpc3RyYXRpb24gd2l0aCB0aGUgcmVsZXZhbnQgdXBwZXIgbGF5ZXIgZnJhbWV3b3JrLiBVbmRlcnN0YW5kaW5nIHRoZSBmbG93LCBpbmNsdWRpbmcgYW55IGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGlzIGJsb2NrLCBpcyBjcml0aWNhbCBmb3IgZGlhZ25vc2luZyBwb3RlbnRpYWwgYXR0YWNobWVudCBpc3N1ZXMuIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyB0ZWNobmlxdWVzIHRoZSBkZXZlbG9wZXJzIGhhdmUgZW1wbG95ZWQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTg5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxODkwOlx0XHRpZiAoZXJyKVxuMTg5MTpcdFx0XHRnb3RvIGVycm9yO1xuMTg5MjpcdFxuMTg5MzpcdFx0cGh5X3Jlc3VtZShwaHlkZXYpO1xuMTg5NDpcdFxuMTg5NTpcdFx0LyoqXG4xODk2Olx0XHQgKiBJZiB0aGUgZXh0ZXJuYWwgcGh5IHVzZWQgYnkgY3VycmVudCBtYWMgaW50ZXJmYWNlIGlzIG1hbmFnZWQgYnlcbjE4OTc6XHRcdCAqIGFub3RoZXIgbWFjIGludGVyZmFjZSwgc28gd2Ugc2hvdWxkIGNyZWF0ZSBhIGRldmljZSBsaW5rIGJldHdlZW5cbjE4OTg6XHRcdCAqIHBoeSBkZXYgYW5kIG1hYyBkZXYuXG4xODk5Olx0XHQgKi9cbjE5MDA6XHRcdGlmIChkZXYgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VwYXJlbnQgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2VkZXYucGFyZW50ICE9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VwYXJlbnQpXG4xOTAxOlx0XHRcdHBoeWRldi1cdTAwM2VkZXZsaW5rID0gZGV2aWNlX2xpbmtfYWRkKGRldi1cdTAwM2VkZXYucGFyZW50LCBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsXG4xOTAyOlx0XHRcdFx0XHRcdFx0ICBETF9GTEFHX1BNX1JVTlRJTUUgfCBETF9GTEFHX1NUQVRFTEVTUyk7XG4xOTAzOlx0XG4xOTA0Olx0XHRyZXR1cm4gZXJyO1xuMTkwNTpcdFxuMTkwNjpcdGVycm9yOlxuMTkwNzpcdFx0LyogcGh5X2RldGFjaCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXG4xOTA4Olx0XHRwaHlfZGV0YWNoKHBoeWRldik7XG4xOTA5Olx0XHRyZXR1cm4gZXJyO1xuMTkxMDpcdFxuMTkxMTpcdGVycm9yX21vZHVsZV9wdXQ6XG4xOTEyOlx0XHRtb2R1bGVfcHV0KGQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyKTtcbjE5MTM6XHRcdHBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpO1xuMTkxNDpcdFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuMTkxNTpcdFx0ZC1cdTAwM2Vkcml2ZXIgPSBOVUxMO1xuMTkxNjpcdGVycm9yX3B1dF9kZXZpY2U6XG4xOTE3Olx0XHRwdXRfZGV2aWNlKGQpO1xuMTkxODpcdFx0aWYgKG5kZXZfb3duZXIgIT0gYnVzLVx1MDAzZW93bmVyKVxuMTkxOTpcdFx0XHRtb2R1bGVfcHV0KGJ1cy1cdTAwM2Vvd25lcik7XG4xOTIwOlx0XHRyZXR1cm4gZXJyO1xuMTkyMTpcdH1cbjE5MjI6XHRFWFBPUlRfU1lNQk9MKHBoeV9hdHRhY2hfZGlyZWN0KTtcbjE5MjM6XHRcbjE5MjQ6XHQvKipcbjE5MjU6XHQgKiBwaHlfZGV0YWNoIC0gZGV0YWNoIGEgUEhZIGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZVxuMTkyNjpcdCAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuMTkyNzpcdCAqXG4xOTI4Olx0ICogVGhpcyBkZXRhY2hlcyB0aGUgcGh5IGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgdGhlIHBoeVxuMTkyOTpcdCAqIGRyaXZlciwgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgY291bnQgdGFrZW4gaW4gcGh5X2F0dGFjaF9kaXJlY3QoKS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAxNTQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0IEkgbmVlZCB0byBkbywgZXhwcmVzc2VkIGFzIGlmIHRoZXNlIHdlcmUgbXkgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgLSBMaW5lIFJhbmdlIDM2OTAtMzg3MCoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGF0IHNwZWNpZmljIHNlY3Rpb24gb2YgdGhlIFBIWSBkcml2ZXIgY29kZS4gQmFzZWQgb24gdGhlIHJlcXVlc3QsIEkgbmVlZCB0byBmb2N1cyBvbiBsaW5lcyAzNjkwIHRocm91Z2ggMzg3MCBvZiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuIFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIHJhbmdlLCB0aG91Z2ggd2l0aG91dCBjb250ZXh0LCBpdCBjb3VsZCBjb3ZlciBhIGxvdCBvZiBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhhdCBQSFkgZHJpdmVyLiBJJiMzOTtsbCBuZWVkIHRvIHJhcGlkbHkgcGFyc2UgdGhhdCBzZWN0aW9uLCBsaWtlbHkgbG9va2luZyBmb3Iga2V5IGZ1bmN0aW9ucywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBwb3RlbnRpYWxseSBpbnRlcnJ1cHQgaGFuZGxpbmcgb3IgcmVnaXN0ZXIgYWNjZXNzIHJvdXRpbmVzLiBJJiMzOTtsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBhbnl0aGluZyB0aGF0IG1pZ2h0IHJlbGF0ZSB0byB0aGUgcHJvYmxlbSBvciBhcmVhIG9mIGNvbmNlcm4gSSYjMzk7bSB3b3JraW5nIHdpdGggLSBpZiB0aGlzIHNlY3Rpb24gd2FzIHJlcXVlc3RlZCwgdGhlcmUmIzM5O3Mgb2J2aW91c2x5IHNvbWUgcmVhc29uIHRvIGJlbGlldmUgdGhlIGlzc3VlIGlzIHJlbGF0ZWQgdG8gZnVuY3Rpb25hbGl0eSBjb3ZlcmVkIGJ5IHRob3NlIGxpbmVzLiBJIHNob3VsZCB3YXRjaCBvdXQgZm9yIGRldmljZSBpbml0aWFsaXNhdGlvbiwgbGluayBzdGF0ZSBtb25pdG9yaW5nLCBhdXRvbmVnb3RpYXRpb24gc2V0dXAsIGFuZCBhbnkgcmVnaXN0ZXIgcmVhZHMgb3Igd3JpdGVzLiBJJiMzOTtsbCBub3RlIGFueXRoaW5nIHRoYXQganVtcHMgb3V0IGFzIGJlaW5nIHJlbGF0ZWQgdG8gaGFyZHdhcmUgaW50ZXJhY3Rpb25zIG9yIHBvc3NpYmx5IGVycm9yIGhhbmRsaW5nLiBMZXQmIzM5O3MgZ2V0IHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM2OTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzY5MDpcdFx0cmV0dXJuIGZ3bm9kZV9maW5kX3JlZmVyZW5jZShmd25vZGUsIFwmIzM0O3BoeS1kZXZpY2VcJiMzNDssIDApO1xuMzY5MTpcdH1cbjM2OTI6XHRFWFBPUlRfU1lNQk9MX0dQTChmd25vZGVfZ2V0X3BoeV9ub2RlKTtcbjM2OTM6XHRcbjM2OTQ6XHQvKipcbjM2OTU6XHQgKiBwaHlfcHJvYmUgLSBwcm9iZSBhbmQgaW5pdCBhIFBIWSBkZXZpY2VcbjM2OTY6XHQgKiBAZGV2OiBkZXZpY2UgdG8gcHJvYmUgYW5kIGluaXRcbjM2OTc6XHQgKlxuMzY5ODpcdCAqIFRha2UgY2FyZSBvZiBzZXR0aW5nIHVwIHRoZSBwaHlfZGV2aWNlIHN0cnVjdHVyZSwgc2V0IHRoZSBzdGF0ZSB0byBSRUFEWS5cbjM2OTk6XHQgKi9cbjM3MDA6XHRzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4zNzAxOlx0e1xuMzcwMjpcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTtcbjM3MDM6XHRcdHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYgPSBwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyO1xuMzcwNDpcdFx0c3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydiA9IHRvX3BoeV9kcml2ZXIoZHJ2KTtcbjM3MDU6XHRcdGludCBlcnIgPSAwO1xuMzcwNjpcdFxuMzcwNzpcdFx0cGh5ZGV2LVx1MDAzZWRydiA9IHBoeWRydjtcbjM3MDg6XHRcbjM3MDk6XHRcdC8qIERpc2FibGUgdGhlIGludGVycnVwdCBpZiB0aGUgUEhZIGRvZXNuJiMzOTt0IHN1cHBvcnQgaXRcbjM3MTA6XHRcdCAqIGJ1dCB0aGUgaW50ZXJydXB0IGlzIHN0aWxsIGEgdmFsaWQgb25lXG4zNzExOlx0XHQgKi9cbjM3MTI6XHRcdGlmICghcGh5X2Rydl9zdXBwb3J0c19pcnEocGh5ZHJ2KSBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHlkZXYpKSB7XG4zNzEzOlx0XHRcdHBoeWRldi1cdTAwM2VpcnFfc2F2ZWQgPSBwaHlkZXYtXHUwMDNlaXJxO1xuMzcxNDpcdFx0XHRwaHlkZXYtXHUwMDNlaXJxID0gUEhZX1BPTEw7XG4zNzE1Olx0XHR9XG4zNzE2Olx0XG4zNzE3Olx0XHRpZiAocGh5ZHJ2LVx1MDAzZWZsYWdzIFx1MDAyNiBQSFlfSVNfSU5URVJOQUwpXG4zNzE4Olx0XHRcdHBoeWRldi1cdTAwM2Vpc19pbnRlcm5hbCA9IHRydWU7XG4zNzE5Olx0XG4zNzIwOlx0XHQvKiBEZWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG4zNzIxOlx0XHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMCk7XG4zNzIyOlx0XG4zNzIzOlx0XHRpZiAocGh5ZGV2LVx1MDAzZWRydi1cdTAwM2Vwcm9iZSkge1xuMzcyNDpcdFx0XHRlcnIgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXByb2JlKHBoeWRldik7XG4zNzI1Olx0XHRcdGlmIChlcnIpXG4zNzI2Olx0XHRcdFx0Z290byBvdXQ7XG4zNzI3Olx0XHR9XG4zNzI4Olx0XG4zNzI5Olx0XHRwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7XG4zNzMwOlx0XG4zNzMxOlx0XHQvKiBTdGFydCBvdXQgc3VwcG9ydGluZyBldmVyeXRoaW5nLiBFdmVudHVhbGx5LFxuMzczMjpcdFx0ICogYSBjb250cm9sbGVyIHdpbGwgYXR0YWNoLCBhbmQgbWF5IG1vZGlmeSBvbmVcbjM3MzM6XHRcdCAqIG9yIGJvdGggb2YgdGhlc2UgdmFsdWVzXG4zNzM0Olx0XHQgKi9cbjM3MzU6XHRcdGlmIChwaHlkcnYtXHUwMDNlZmVhdHVyZXMpIHtcbjM3MzY6XHRcdFx0bGlua21vZGVfY29weShwaHlkZXYtXHUwMDNlc3VwcG9ydGVkLCBwaHlkcnYtXHUwMDNlZmVhdHVyZXMpO1xuMzczNzpcdFx0XHRnZW5waHlfYzQ1X3JlYWRfZWVlX2FiaWxpdGllcyhwaHlkZXYpO1xuMzczODpcdFx0fVxuMzczOTpcdFx0ZWxzZSBpZiAocGh5ZHJ2LVx1MDAzZWdldF9mZWF0dXJlcylcbjM3NDA6XHRcdFx0ZXJyID0gcGh5ZHJ2LVx1MDAzZWdldF9mZWF0dXJlcyhwaHlkZXYpO1xuMzc0MTpcdFx0ZWxzZSBpZiAocGh5ZGV2LVx1MDAzZWlzX2M0NSlcbjM3NDI6XHRcdFx0ZXJyID0gZ2VucGh5X2M0NV9wbWFfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcbjM3NDM6XHRcdGVsc2VcbjM3NDQ6XHRcdFx0ZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XG4zNzQ1Olx0XG4zNzQ2Olx0XHRpZiAoZXJyKVxuMzc0NzpcdFx0XHRnb3RvIG91dDtcbjM3NDg6XHRcbjM3NDk6XHRcdGlmICghbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsXG4zNzUwOlx0XHRcdFx0ICAgICAgIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuMzc1MTpcdFx0XHRwaHlkZXYtXHUwMDNlYXV0b25lZyA9IDA7XG4zNzUyOlx0XG4zNzUzOlx0XHRpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0hhbGZfQklULFxuMzc1NDpcdFx0XHRcdCAgICAgIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuMzc1NTpcdFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2lnYWJpdF9jYXBhYmxlID0gMTtcbjM3NTY6XHRcdGlmIChsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfRnVsbF9CSVQsXG4zNzU3Olx0XHRcdFx0ICAgICAgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCkpXG4zNzU4Olx0XHRcdHBoeWRldi1cdTAwM2Vpc19naWdhYml0X2NhcGFibGUgPSAxO1xuMzc1OTpcdFxuMzc2MDpcdFx0b2Zfc2V0X3BoeV9zdXBwb3J0ZWQocGh5ZGV2KTtcbjM3NjE6XHRcbjM3NjI6XHRcdGVyciA9IHBoeV9zZXR1cF9wb3J0cyhwaHlkZXYpO1xuMzc2MzpcdFx0aWYgKGVycilcbjM3NjQ6XHRcdFx0Z290byBvdXQ7XG4zNzY1Olx0XG4zNzY2Olx0XHRwaHlfYWR2ZXJ0aXNlX3N1cHBvcnRlZChwaHlkZXYpO1xuMzc2NzpcdFxuMzc2ODpcdFx0LyogR2V0IFBIWSBkZWZhdWx0IEVFRSBhZHZlcnRpc2luZyBtb2RlcyBhbmQgaGFuZGxlIHRoZW0gYXMgcG90ZW50aWFsbHlcbjM3Njk6XHRcdCAqIHNhZmUgaW5pdGlhbCBjb25maWd1cmF0aW9uLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTY5OQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgaWYgdGhleSB3ZXJlIG15IG93biBpbW1lZGlhdGUgY29uc2lkZXJhdGlvbnM6CgoqKlByb2JpbmcgYW5kIFJlbW92YWw6IEEgUXVpY2sgRGlhZ25vc3RpYyBDaGVjayoqCgpBbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwIGludG8gdGhlIHdlZWRzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEkmIzM5O3ZlIGdvdCBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGluIG1pbmQgZm9yIHRoZSBjdXJyZW50IGlzc3VlLCBidXQgSSBhbHdheXMgd2FudCB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBnbG9zc2VkIG92ZXIgYW55IHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZS4gTXkgaW5pdGlhbCBoeXBvdGhlc2lzIGZlZWxzIHNvdW5kLCBidXQgaXQmIzM5O3MgY3J1Y2lhbCB0byBjb25maXJtIHRoYXQgYHBoeV9wcm9iZWAgYW5kIGBwaHlfcmVtb3ZlYCBhcmVuJiMzOTt0IHNpbGVudGx5IGNvbnRyaWJ1dGluZyB0byB0aGUgcHJvYmxlbS4gSSYjMzk7bSBnb2luZyB0byBydW4gYSBtZW50YWwgc2NhbiBvZiB0aGUgcmVsZXZhbnQgY29kZSBzZWN0aW9ucyBmb3IgdGhvc2UgZnVuY3Rpb25zLiBJcyB0aGVyZSBhbnkgcG90ZW50aWFsIGludGVyYWN0aW9uIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgSSBtaWdodCBoYXZlIG92ZXJsb29rZWQ/IEFyZSB0aGVyZSByYWNlIGNvbmRpdGlvbnMsIHJlc291cmNlIGxlYWtzLCBvciBzdWJ0bGUgc2lkZSBlZmZlY3RzIHRoYXQgY291bGQgYmUgcmVsZXZhbnQ/IFRoaXMgaXMgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gZWxpbWluYXRlIHRoZSBwb3NzaWJpbGl0eSBvZiBhIHNpbXBsZSBtaXNjb25maWd1cmF0aW9uIG9yIG92ZXJsb29rZWQgZGVwZW5kZW5jeSBiZWZvcmUgSSBzdGFydCBsb29raW5nIGF0IG1vcmUgY29tcGxleCBpbnRlcmFjdGlvbnMuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGxvZ2ljIHdpdGhpbiB0aG9zZSB0d28gZnVuY3Rpb25zLCBhbmQgdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgbGFyZ2VyIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzgyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszODIwOlx0XHQvKiBHZXQgdGhlIExFRHMgZnJvbSB0aGUgZGV2aWNlIHRyZWUsIGFuZCBpbnN0YW50aWF0ZSBzdGFuZGFyZFxuMzgyMTpcdFx0ICogTEVEcyBmb3IgdGhlbS5cbjM4MjI6XHRcdCAqL1xuMzgyMzpcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcdTAwMjZcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHtcbjM4MjQ6XHRcdFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcbjM4MjU6XHRcdFx0aWYgKGVycilcbjM4MjY6XHRcdFx0XHRnb3RvIG91dDtcbjM4Mjc6XHRcdH1cbjM4Mjg6XHRcbjM4Mjk6XHRcdHJldHVybiAwO1xuMzgzMDpcdFxuMzgzMTpcdG91dDpcbjM4MzI6XHRcdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cdTAwM2VzZnBfYnVzKTtcbjM4MzM6XHRcdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbjM4MzQ6XHRcbjM4MzU6XHRcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4zODM2Olx0XG4zODM3Olx0XHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuMzgzODpcdFx0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbjM4Mzk6XHRcbjM4NDA6XHRcdHBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpO1xuMzg0MTpcdFxuMzg0MjpcdFx0LyogUmUtYXNzZXJ0IHRoZSByZXNldCBzaWduYWwgb24gZXJyb3IgKi9cbjM4NDM6XHRcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcbjM4NDQ6XHRcbjM4NDU6XHRcdHJldHVybiBlcnI7XG4zODQ2Olx0fVxuMzg0NzpcdFxuMzg0ODpcdHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4zODQ5Olx0e1xuMzg1MDpcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTtcbjM4NTE6XHRcbjM4NTI6XHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZwaHlkZXYtXHUwMDNlc3RhdGVfcXVldWUpO1xuMzg1MzpcdFxuMzg1NDpcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcdTAwMjZcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpXG4zODU1Olx0XHRcdHBoeV9sZWRzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbjM4NTY6XHRcbjM4NTc6XHRcdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4zODU4Olx0XHRcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xuMzg1OTpcdFxuMzg2MDpcdFx0cGh5ZGV2LVx1MDAzZXN0YXRlID0gUEhZX0RPV047XG4zODYxOlx0XG4zODYyOlx0XHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4zODYzOlx0XHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4zODY0Olx0XG4zODY1Olx0XHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xuMzg2NjpcdFxuMzg2NzpcdFx0aWYgKHBoeWRldi1cdTAwM2VkcnYgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKVxuMzg2ODpcdFx0XHRwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZShwaHlkZXYpO1xuMzg2OTpcdFxuMzg3MDpcdFx0cGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7XG4zODcxOlx0XG4zODcyOlx0XHQvKiBBc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqL1xuMzg3MzpcdFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xuMzg3NDpcdFxuMzg3NTpcdFx0cGh5ZGV2LVx1MDAzZWRydiA9IE5VTEw7XG4zODc2Olx0XG4zODc3Olx0XHRyZXR1cm4gMDtcbjM4Nzg6XHR9XG4zODc5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyODA2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgUEhZTElOSyBJbXBsZW1lbnRhdGlvbiBEZXRhaWxzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGJhY2sgaW50byB0aGlzIG5ldHdvcmsgZHJpdmVyIHNpdHVhdGlvbi4gSSYjMzk7dmUgYWxyZWFkeSBkb25lIHNvbWUgaW5pdGlhbCBhc3Nlc3NtZW50cywgYnV0IGl0JiMzOTtzIHRpbWUgdG8gZ2V0IGEgYml0IG1vcmUgZ3JhbnVsYXIuIExldCYjMzk7cyBzZWUuLi4gSSB3YW50IHRvIHNwZWNpZmljYWxseSBmb2N1cyBvbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgIGZpbGUuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgdGhlIGlubmVyIHdvcmtpbmdzIG9mIHBoeWxpbmssIGFuZCBJIHRoaW5rIHRoYXQgdGhlIGNvZGUgZnJvbSBhcm91bmQgbGluZXMgMjA4MCB0byAyMzcwIHNlZW1zIGxpa2UgYSBjcml0aWNhbCBzZWN0aW9uIHRoYXQgSSBuZWVkIHRvIGxvb2sgYXQuIEhvcGVmdWxseSwgdGhlIGNvZGUgY29tbWVudHMgdGhlcmUgYXJlIGhlbHBmdWwuIEl0JiMzOTtzIHRpbWUgdG8gem9vbSBpbiBvbiBob3cgdGhpcyBQSFkgYWJzdHJhY3Rpb24gaXMgaGFuZGxlZCBpbiBkZXRhaWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciB0aG9yb3VnaGx5IHRvIGJlIGFibGUgdG8gbWFrZSBhbnkgbWVhbmluZ2Z1bCBjaGFuZ2VzIG9yIHRyb3VibGVzaG9vdCBpc3N1ZXMuIEkmIzM5O2xsIHN0YXJ0IHdpdGggdGhpcyBjaHVuayBhbmQgc2VlIHdoZXJlIHRoYXQgdGFrZXMgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjE5MDpcdFx0XHQgICAgX19FVEhUT09MX0xJTktfTU9ERV9NQVNLX05CSVRTLCBwbC1cdTAwM2VzdXBwb3J0ZWQsXG4yMTkxOlx0XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBoeS1cdTAwM2VhZHZlcnRpc2luZyk7XG4yMTkyOlx0XG4yMTkzOlx0XHRpZiAocGwtXHUwMDNlY29uZmlnLVx1MDAzZW1hY19tYW5hZ2VkX3BtKVxuMjE5NDpcdFx0XHRwaHktXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuMjE5NTpcdFxuMjE5NjpcdFx0LyogQWxsb3cgdGhlIE1BQyB0byBzdG9wIGl0cyBjbG9jayBpZiB0aGUgUEhZIGhhcyB0aGUgY2FwYWJpbGl0eSAqL1xuMjE5NzpcdFx0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gcGh5X2VlZV90eF9jbG9ja19zdG9wX2NhcGFibGUocGh5KSBcdTAwM2UgMDtcbjIxOTg6XHRcbjIxOTk6XHRcdGlmIChwbC1cdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcykge1xuMjIwMDpcdFx0XHQvKiBFeHBsaWNpdGx5IGNvbmZpZ3VyZSB3aGV0aGVyIHRoZSBQSFkgaXMgYWxsb3dlZCB0byBzdG9wIGl0JiMzOTtzXG4yMjAxOlx0XHRcdCAqIHJlY2VpdmUgY2xvY2suXG4yMjAyOlx0XHRcdCAqL1xuMjIwMzpcdFx0XHRyZXQgPSBwaHlfZWVlX3J4X2Nsb2NrX3N0b3AocGh5LFxuMjIwNDpcdFx0XHRcdFx0XHQgICAgcGwtXHUwMDNlY29uZmlnLVx1MDAzZWVlZV9yeF9jbGtfc3RvcF9lbmFibGUpO1xuMjIwNTpcdFx0XHRpZiAocmV0ID09IC1FT1BOT1RTVVBQKVxuMjIwNjpcdFx0XHRcdHJldCA9IDA7XG4yMjA3Olx0XHR9XG4yMjA4Olx0XG4yMjA5Olx0XHRpZiAocmV0ID09IDAgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSlcbjIyMTA6XHRcdFx0cGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7XG4yMjExOlx0XG4yMjEyOlx0XHRpZiAocmV0KSB7XG4yMjEzOlx0XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbjIyMTQ6XHRcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4yMjE1Olx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuMjIxNjpcdFx0fVxuMjIxNzpcdFxuMjIxODpcdFx0cmV0dXJuIHJldDtcbjIyMTk6XHR9XG4yMjIwOlx0XG4yMjIxOlx0c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuMjIyMjpcdFx0XHRcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4yMjIzOlx0e1xuMjIyNDpcdFx0dTMyIGZsYWdzID0gMDtcbjIyMjU6XHRcbjIyMjY6XHRcdGlmIChXQVJOX09OKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSlcbjIyMjc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yMjI4Olx0XG4yMjI5Olx0XHRpZiAocGwtXHUwMDNlcGh5ZGV2KVxuMjIzMDpcdFx0XHRyZXR1cm4gLUVCVVNZO1xuMjIzMTpcdFxuMjIzMjpcdFx0aWYgKHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VtYWNfcmVxdWlyZXNfcnhjKVxuMjIzMzpcdFx0XHRmbGFncyB8PSBQSFlfRl9SWENfQUxXQVlTX09OO1xuMjIzNDpcdFxuMjIzNTpcdFx0cmV0dXJuIHBoeV9hdHRhY2hfZGlyZWN0KHBsLVx1MDAzZW5ldGRldiwgcGh5LCBmbGFncywgaW50ZXJmYWNlKTtcbjIyMzY6XHR9XG4yMjM3Olx0XG4yMjM4Olx0LyoqXG4yMjM5Olx0ICogcGh5bGlua19jb25uZWN0X3BoeSgpIC0gY29ubmVjdCBhIFBIWSB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzgyNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUEhZIERldmljZSBNYW5hZ2VtZW50IGluIFBoeWxpbmsqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBjb3JlIHJvdXRpbmVzIGZvciBQSFkgZGV2aWNlIG1hbmFnZW1lbnQgd2l0aGluIGBwaHlsaW5rYC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGV4YW1pbmluZyBgcGh5bGlua19icmluZ3VwX3BoeWAgYW5kIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYmVjYXVzZSB0aGVzZSBhcmUgdGhlIGNyaXRpY2FsIHBpZWNlcyB0aGF0IGhhbmRsZSBicmluZ2luZyBhIFBIWSBvbmxpbmUgYW5kIHRha2luZyBpdCBvZmZsaW5lLCByZXNwZWN0aXZlbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZXF1ZW5jaW5nIGFuZCB0aGUgcG90ZW50aWFsIGZhaWx1cmUgbW9kZXMuCgpgcGh5bGlua19icmluZ3VwX3BoeWAgaXMgaW50ZXJlc3RpbmcuIEkgc2VlIGEgYHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2VgIGFyZ3VtZW50LCB3aGljaCB0ZWxscyBtZSBpdCYjMzk7cyBkZWFsaW5nIHdpdGggdGhlIHNwZWNpZmljcyBvZiB0aGUgUEhZIGNvbm5lY3Rpb24gLSBNRElPLCBTR01JSSwgZXRjLiBUaGUgYHJldGAgdmFyaWFibGUgaXMgb2J2aW91c2x5IGNoZWNraW5nIGZvciBzb21lIHJldHVybiBjb2RlLCB3aGljaCBJJiMzOTtsbCBoYXZlIHRvIGludmVzdGlnYXRlIGxhdGVyIHRvIHNlZSB0aGUgc3BlY2lmaWMgZXJyb3Igc2NlbmFyaW9zIHRoYXQgY2FuIG9jY3VyLiBUaGUgY3JpdGljYWwgYml0IGhlcmUgaXMgdGhlIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgY2FsbC4gSXQmIzM5O3MgaW5zaWRlIGFuIGBpZiAocmV0KWAgYmxvY2ssIGFuZCB0aGVuIHdyYXBwZWQgYnkgYSBtdXRleCBsb2NrL3VubG9jay4gVGhpcyB0ZWxscyBtZSB0aGF0IGlmIHRoZSBicmluZ3VwICpmYWlscyosIGl0ICpjbGVhcnMqIHRoZSBQSFkgZGV2aWNlIGVudHJ5LiBUaGUgbXV0ZXgsIGBwbC0mZ3Q7cGh5ZGV2X211dGV4YCwgaXMgdXNlZCB0byBwcm90ZWN0IGNvbmN1cnJlbnQgYWNjZXNzIHRvIHRoZSBQSFkgZGV2aWNlIHN0cnVjdHVyZS4gU28sIGlmIHRoZSBQSFkgYnJpbmd1cCBmYWlscywgaXQgcmVsZWFzZXMgdGhlIFBIWS4KCk5vdywgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgIGlzIHNpbXBsZXIuIEl0IHJldHJpZXZlcyB0aGUgYHBoeWRldmAgdW5kZXIgdGhlIG11dGV4IGxvY2sgYW5kLCBpZiBvbmUgZXhpc3RzLCBpdCBjbGVhcnMgaXQgdmlhIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAuIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgKnRlYXJkb3duKiBvZiB0aGUgUEhZLCBhbmQsIHNpbWlsYXJseSwgcHJvdGVjdHMgYWNjZXNzIHRvIHRoZSBgcGh5ZGV2YCB3aXRoIGEgbXV0ZXguCgpJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YCB0byBzZWUgZXhhY3RseSB3aGF0JiMzOTtzIGJlaW5nIGRvbmUgd2hlbiB0aGUgUEhZIGlzIHJlbW92ZWQgb3IgYSBmYWlsdXJlIGlzIGVuY291bnRlcmVkLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIG1hZ2ljIChvciBwb3RlbnRpYWwgcHJvYmxlbXMpIGxpZS4gVGhlIG11dGV4IHByb3RlY3Rpb24gaXMgZ29vZCwgc3RhbmRhcmQgcHJhY3RpY2UsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHN0YXRlIHRoZSBgcGh5bGlua2Agc3RydWN0dXJlIGlzIGxlZnQgaW4gYWZ0ZXIgdGhlc2UgY2FsbHMsIGVzcGVjaWFsbHkgYWZ0ZXIgYSBicmluZ3VwIGZhaWx1cmUuIEFsc28sIEkgbmVlZCB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlcyBhbmQgZXJyb3IgaGFuZGxpbmcsIGVzcGVjaWFsbHkgdGhlIG1lYW5pbmcgb2YgdGhlIGByZXRgIHZhbHVlIGluIHRoZSBgcGh5bGlua19icmluZ3VwX3BoeWAgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfYnJpbmd1cF9waHkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjA4Nz1zdGF0aWMgdm9pZCBwaHlsaW5rX2NsZWFyX3BoeWRldihzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMDk3LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMDk4OnN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIwOTktXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjUzPWludCBwaHlsaW5rX2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjYtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjc6XHRyZXQgPSBwaHlsaW5rX2JyaW5ndXBfcGh5KHBsLCBwaHksIHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjMwNT1pbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0NC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM0NTpcdHJldCA9IHBoeWxpbmtfYnJpbmd1cF9waHkocGwsIHBoeV9kZXYsIHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzcxMT1zdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2NvbmZpZ19waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzc0OC1cdC8qIFRoaXMgd2lsbCB2YWxpZGF0ZSB0aGUgY29uZmlndXJhdGlvbiBmb3IgdXMuICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM3NDk6XHRyZXQgPSBwaHlsaW5rX2JyaW5ndXBfcGh5KHBsLCBwaHksIGNvbmZpZy5pbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzUwLVx0aWYgKHJldCBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTA0OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2NvbmZpZyBEaXZlIGZvciBQSFlMSUIgYW5kIFBIWUxJTksqKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBzdGF0dXMgb2YgUEhZTElCIGFuZCBQSFlMSU5LIGNvbmZpZ3VyYXRpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIGRlY2lzaW9ucyBhcmUgbWFkZSwgYW5kIGl0JiMzOTtsbCBnaXZlIG1lIGEgZ3JhbnVsYXIgdmlldyBvZiB0aGVpciBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgYW55IHJlbGV2YW50IG9wdGlvbnMuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIFBIWSBmcmFtZXdvcmtzIGFyZSBoYW5kbGVkIGluIHRoZSBzcGVjaWZpYyBwcm9qZWN0IG9yIGtlcm5lbCBJJiMzOTttIGxvb2tpbmcgYXQuIEFyZSB0aGV5IG1vZHVsYXI/IEJ1aWx0LWluPyBXaGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQ/IEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBwZXJoYXBzIHJlbGF0aW5nIHRvIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtcyBvciBuZXR3b3JraW5nIHN0YWNrcz8gSSBuZWVkIGEgY2xlYXIgbWVudGFsIHBpY3R1cmUgb2YgaG93IHRoZXNlIGFyZSBpbnRlZ3JhdGVkIGFuZCBjb25maWd1cmVkLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBlc3NlbnRpYWwga25vYnMgdG8gdHVybiwgdG8gdW5kZXJzdGFuZCBob3cgSSBjYW4gaW5mbHVlbmNlIG9yIG1vZGlmeSB0aGVpciBiZWhhdmlvdXIgYmFzZWQgb24gdGhlIGNvbnRleHQgb2Ygd2hhdCBJIGFtIHdvcmtpbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyAoUEhZTElCfFBIWUxJTkspJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY6Y29uZmlnIFBIWUxJTktcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTU6bWVudWNvbmZpZyBQSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2LVx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ2PWNvbmZpZyBPUEVOX0FMTElBTkNFX0hFTFBFUlNcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ5OmNvbmZpZyBQSFlMSUJfTEVEU1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTAtXHRkZWZfYm9vbCBPRlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTQ4MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpZ2dpbmcgRGVlcGVyIGludG8gdGhlIFBIWUxJQiBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSB3b3JraW5nIHdpdGggUEhZTElCL1BIWUxJTkssIGFuZCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZW5zdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBsdXJraW5nIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIGZsYWdzLiBZb3Uga25vdyBob3cgaXQgaXMg4oCTIGEgc2VlbWluZ2x5IHN0cmFpZ2h0Zm9yd2FyZCBjb21wb25lbnQgY2FuIGhhdmUgaGlkZGVuIG51YW5jZXMuIFRpbWUgdG8gZG91YmxlLWNoZWNrIGV2ZXJ5dGhpbmcsIGVzcGVjaWFsbHkgdG8gc2VlIHdoYXQgZWxzZSBjb3VsZCBiZSBsdXJraW5nIGluIHRoZSBzaGFkb3dzLiBJJiMzOTtsbCBzdGFydCBieSBleGFtaW5pbmcgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgYmVzdCBwbGFjZSB0byBmaW5kIHRoZSB0cnV0aCBhYm91dCB0aGUgb3B0aW9ucy4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gc2VlaW5nIHRoZSBmdWxsIHBpY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBQSFlMSU5LXG4gICA3Olx0XHR0cmlzdGF0ZVxuICAgODpcdFx0c2VsZWN0IFBIWUxJQlxuICAgOTpcdFx0c2VsZWN0IFNXUEhZXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxuICAxMjpcdFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXG4gIDEzOlx0XHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cbiAgMTQ6XHRcbiAgMTU6XHRtZW51Y29uZmlnIFBIWUxJQlxuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcbiAgMTk6XHRcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxuICAyMDpcdFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cbiAgMjE6XHRcbiAgMjI6XHRpZiBQSFlMSUJcbiAgMjM6XHRcbiAgMjQ6XHRjb25maWcgU1dQSFlcbiAgMjU6XHRcdGJvb2xcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgUEhZX1BBQ0tBR0VcbiAgMjg6XHRcdCB0cmlzdGF0ZVxuICAyOTpcdFxuICAzMDpcdGNvbmZpZyBMRURfVFJJR0dFUl9QSFlcbiAgMzE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBMRUQgdHJpZ2dlcnMgZm9yIHRyYWNraW5nIGxpbmsgc3RhdGVcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBBZGRzIHN1cHBvcnQgZm9yIGEgc2V0IG9mIExFRCB0cmlnZ2VyIGV2ZW50cyBwZXItUEhZLiAgTGlua1xuICAzNTpcdFx0ICBzdGF0ZSBjaGFuZ2Ugd2lsbCB0cmlnZ2VyIHRoZSBldmVudHMsIGZvciBjb25zdW1wdGlvbiBieSBhblxuICAzNjpcdFx0ICBMRUQgY2xhc3MgZHJpdmVyLiAgVGhlcmUgYXJlIHRyaWdnZXJzIGZvciBlYWNoIGxpbmsgc3BlZWQgY3VycmVudGx5XG4gIDM3Olx0XHQgIHN1cHBvcnRlZCBieSB0aGUgUEhZIGFuZCBhbHNvIGEgb25lIGNvbW1vbiBcJiMzNDtsaW5rXCYjMzQ7IHRyaWdnZXIgYXMgYVxuICAzODpcdFx0ICBsb2dpY2FsLW9yIG9mIGFsbCB0aGUgbGluayBzcGVlZCBvbmVzLlxuICAzOTpcdFx0ICBBbGwgdGhlc2UgdHJpZ2dlcnMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHBhdHRlcm46XG4gIDQwOlx0XHQgICAgICBcdTAwM2NtaWkgYnVzIGlkXHUwMDNlOlx1MDAzY3BoeVx1MDAzZTpcdTAwM2NzcGVlZFx1MDAzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjE2MgoJCQkJCQkJb3V0cHV0OiAyMDkKCQkJCQkJCXRob3VnaHRzOiA3NDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgUmVhY2hhYmlsaXR5IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgd2hpY2ggaXMgYSBjb21tb24gYmFzZS4gUGh5bGliIGFuZCBwaHlsaW5rIGFyZSBjb3JlIG5ldHdvcmtpbmcgUEhZIGxheWVyIGFic3RyYWN0aW9ucywgc28gdGhhdCYjMzk7cyBhIGtleSBzdGFydGluZyBwb2ludC4gR29vZC4KCkkgcmVjYWxsIHRoYXQgVVNCIEV0aGVybmV0IGRldmljZXMsIHRoaW5ncyBsaWtlIHRoZSBBU0lYIGNoaXBzLCBhcmUgZGVmaW5pdGVseSBlbXVsYXRlZCBhbmQgYWNjZXNzaWJsZSB0aHJvdWdoIHN5emthbGxlciYjMzk7cyBVU0IgZ2FkZ2V0LCByYXdfZ2FkZ2V0LCBvciB2aXJ0dWFsIFVTQiBlbXVsYXRpb24uIFRoYXQmIzM5O3MgYSBnb29kIHNpZ24uIEFsc28sIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIHdpdGhpbiB0aGUgc3RhY2sgbGlrZSBgZHNhX2xvb3BgIG9yIGBkdW1teWAgY2FuIGFsc28gZXhlcmNpc2UgcGh5bGliLiBQZXJmZWN0LgoKTm93LCBsb29raW5nIGF0IHRoZSBjb2RlIGNoYW5nZXMsIHdlIGhhdmUgbW9kaWZpY2F0aW9ucyB0byBzdGF0ZSBtYW5hZ2VtZW50LCB3aGljaCBpbmNsdWRlcyBpbnRlcnJ1cHQgaGFuZGxpbmcg4oCTIGBpcnFfc2F2ZWRgLCBgaXJxYCwgYHBoeV9yZXN0b3JlX3Byb2JlX2lycWAuIFRoZXJlJiMzOTtzIGFsc28gc29tZSBlcnJvciBoYW5kbGluZyBjbGVhbnVwLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGBlcnJvcl9tb2R1bGVfcHV0YCwgYG91dGAgbGFiZWxzLCBhbmQgYHJldGAgcGF0aHMuIFBsdXMsIGEgZmV3IG5ldyBoZWxwZXIgZnVuY3Rpb25zIGFyZSBpbnRyb2R1Y2VkOiBgcGh5X3Jlc3RvcmVfcHJvYmVfaXJxYCBhbmQgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YC4gSSBrbm93IHRoYXQgdGhlc2UgY2FuIGJlIHNpZ25pZmljYW50LgoKU2luY2UgdGhlIGNoYW5nZXMgaW1wYWN0IGVycm9yIGhhbmRsaW5nIGFuZCBjb3JlIGZ1bmN0aW9uYWxpdHksIGFuZCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggYSBjb3JlIHN1YnN5c3RlbSwgSSYjMzk7bSB0aGlua2luZyBgV29ydGhGdXp6aW5nPXRydWVgLgoKTmV4dCwgdGhlIGZvY3VzIHN5bWJvbHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoZSBtb3N0IHJlbGV2YW50IGVudHJ5IHBvaW50cy4gSSYjMzk7bSBmb2N1c2luZyBvbiBgcGh5X3Jlc3RvcmVfcHJvYmVfaXJxYCAoc3BlY2lmaWNhbGx5IGl0cyBjYWxsZXJzIC0gYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9wcm9iZWAsIGFuZCBgcGh5X3JlbW92ZWApIGFuZCBgcGh5bGlua19jbGVhcl9waHlkZXZgIChjYWxsZWQgYnkgYHBoeWxpbmtfYnJpbmd1cF9waHlgIGFuZCBgcGh5bGlua19kaXNjb25uZWN0X3BoeWApLiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCBgcGh5X2RldmljZV9jcmVhdGVgLCBgcGh5bGlua19icmluZ3VwX3BoeWAsIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYW5kIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCBhcmUgYWxzbyBmb2N1cyBzeW1ib2xzLiBPa2F5LCBpdCBzZWVtcyB0aGF0IHRoZXNlIGFyZW4mIzM5O3QgdWJpcXVpdG91c2x5IGhvdC1wYXRocywgYW5kIHRoZSBjb2RlIGNoYW5nZXMgYXJlIHNwZWNpZmljIHRvIHRoZSBwaHlsaWIvcGh5bGluayBsaWZlY3ljbGUuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zOiBgUEhZTElCYCBhbmQgYFBIWUxJTktgLiBHb29kLgoKTm93LCBsZXQmIzM5O3MgcmV2aWV3IHRoZSB0cmlhZ2UgcHJvY2Vzcy4gUmVhY2hhYmlsaXR5IGlzIHRoZSBwcmlvcml0eSwgc28gSSYjMzk7bGwgYmUgY29uZmlkZW50IGluIHRoZSB0cmlhZ2UgYXMgdGhlIHByaW1hcnkgY3JpdGVyaWEuIFRoZSBtb2RpZmllZCBjb2RlIHNlZW1zIHJlYWNoYWJsZSwgdGhlcmVmb3JlIGl0IHdhcnJhbnRzIGZ1enppbmcuIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgdHJ1ZWAuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSBub24tdWJpcXVpdG91cywgYW5kIHRoZSBlbmFibGUgY29uZmlndXJhdGlvbnMgYXJlLCBhcyBub3RlZCwgYFBIWUxJQmAgYW5kIGBQSFlMSU5LYC4gSSB3YW50IHRvIGVuc3VyZSBteSB0aGlua2luZyBpcyBjbGVhciBhbmQgY29tcGxldGUgYmVmb3JlIEkgc2V0IHRoZSByZXN1bHRzLgoKT2theSwgbGV0JiMzOTtzIHJldmlldyB0aGUgZm9jdXMgc3ltYm9scyBsaXN0OgotIGBwaHlfZGV2aWNlX2NyZWF0ZWAKLSBgcGh5X3Jlc3RvcmVfcHJvYmVfaXJxYCBhbmQgaXRzIGNhbGxlcnMgKGBwaHlfYXR0YWNoX2RpcmVjdGAsIGBwaHlfcHJvYmVgLCBgcGh5X3JlbW92ZWApCi0gYHBoeWxpbmtfYnJpbmd1cF9waHlgCi0gYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgCi0gYHBoeWxpbmtfY29ubmVjdF9waHlgCgpJIGJlbGlldmUgdGhpcyBpcyBhIGNvbmNpc2UgYW5kIGNvbXBsZXRlIGFuYWx5c2lzLiBJJiMzOTttIHJlYWR5IHRvIHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQSFlMSU5LJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywKICAgICYjMzQ7cGh5X3Byb2JlJiMzNDssCiAgICAmIzM0O3BoeV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0OywKICAgICYjMzQ7cGh5bGlua19icmluZ3VwX3BoeSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfY29ubmVjdF9waHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIHByZXNlcnZhdGlvbiBhbmQgcmVzdG9yYXRpb24gbG9naWMgYWNyb3NzIFBIWSBkZXZpY2UgcHJvYmUsIGF0dGFjaCwgZGV0YWNoLCBhbmQgcmVtb3ZlIGxpZmVjeWNsZSBwYXRocyBpbiBwaHlsaWIgKGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMpLCBhcyB3ZWxsIGFzIHBoeWxpbmsgY29ubmVjdGlvbiBlcnJvciB0ZWFyZG93biAoZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYykuIFRoZXNlIHN1YnN5c3RlbXMgYXJlIHJlYWNoYWJsZSB2aWEgdmlydHVhbGl6ZWQgbmV0d29ya2luZyBkcml2ZXJzIGFuZCBVU0IgRXRoZXJuZXQgZGV2aWNlIGVtdWxhdGlvbiAoZS5nLiBhc2l4LCBsYW43OHh4LCBzbXNjOTV4eCkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGRldGVjdCByZWdyZXNzaW9ucywgc3RhdGUgaW5jb25zaXN0ZW5jaWVzLCBhbmQgdGVhcmRvd24vZXJyb3ItaGFuZGxpbmcgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BIWUxJTksmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfYXR0YWNoX2RpcmVjdCYjMzQ7LAogICAgJiMzNDtwaHlfcHJvYmUmIzM0OywKICAgICYjMzQ7cGh5X3JlbW92ZSYjMzQ7LAogICAgJiMzNDtwaHlfZGV2aWNlX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2JyaW5ndXBfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZGlzY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19jb25uZWN0X3BoeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJUlEgcHJlc2VydmF0aW9uIGFuZCByZXN0b3JhdGlvbiBsb2dpYyBhY3Jvc3MgUEhZIGRldmljZSBwcm9iZSwgYXR0YWNoLCBkZXRhY2gsIGFuZCByZW1vdmUgbGlmZWN5Y2xlIHBhdGhzIGluIHBoeWxpYiAoZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyksIGFzIHdlbGwgYXMgcGh5bGluayBjb25uZWN0aW9uIGVycm9yIHRlYXJkb3duIChkcml2ZXJzL25ldC9waHkvcGh5bGluay5jKS4gVGhlc2Ugc3Vic3lzdGVtcyBhcmUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsaXplZCBuZXR3b3JraW5nIGRyaXZlcnMgYW5kIFVTQiBFdGhlcm5ldCBkZXZpY2UgZW11bGF0aW9uIChlLmcuIGFzaXgsIGxhbjc4eHgsIHNtc2M5NXh4KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gZGV0ZWN0IHJlZ3Jlc3Npb25zLCBzdGF0ZSBpbmNvbnNpc3RlbmNpZXMsIGFuZCB0ZWFyZG93bi9lcnJvci1oYW5kbGluZyBidWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIHJlc29sdmVzIHN0YXRlIHRyYWNraW5nIGFuZCBjbGVhbnVwIGlzc3VlcyBmb3IgUEhZIGludGVycnVwdCByZXN0b3JhdGlvbiAodmlhIGEgbmV3IGBpcnFfc2F2ZWRgIGZpZWxkKSBhbmQgZXJyb3IgaGFuZGxpbmcgZHVyaW5nIHBoeWxpbmsgYnJpbmd1cC9kaXNjb25uZWN0LlxuXG4xLiBNZW1vcnkgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb246IGBzdHJ1Y3QgcGh5X2RldmljZWAgaXMgYWxsb2NhdGVkIHdpdGggYGt6YWxsb2Nfb2JqYCwgYW5kIHRoZSBuZXcgYGlycV9zYXZlZGAgZmllbGQgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgUEhZX1BPTExgIHVwb24gY3JlYXRpb24gaW4gYHBoeV9kZXZpY2VfY3JlYXRlKClgLlxuMi4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2U6IEFsbCBvcGVyYXRpb25zIG9uIGBpcnFfc2F2ZWRgIGFuZCBgcGh5ZGV2YCBtZW1iZXJzIG9wZXJhdGUgb24gZnVsbHkgaW5pdGlhbGl6ZWQgc3RydWN0IGZpZWxkcyBhbmQgZG8gbm90IHJlYWQgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeS5cbjMuIE5vIGluZm8tbGVha3M6IE5vIHN0cnVjdHVyZXMsIHBhZGRpbmcsIG9yIGJ1ZmZlcnMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlIChubyBgY29weV90b191c2VyYCwgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bHMsIGV0Yy4pLlxuNC4gS0FTQU4gLyBMT0NLREVQIGFwcGxpY2FiaWxpdHk6IEFueSBpc3N1ZXMgaW50cm9kdWNlZCBpbiB0aGVzZSBwYXRocyAoc3VjaCBhcyBsb2NraW5nIG1pc3Rha2VzIGFyb3VuZCBgcGwtXHUwMDNlcGh5ZGV2X211dGV4YCBvciBsaWZldGltZS91c2UtYWZ0ZXItZnJlZSBpc3N1ZXMpIGFyZSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ODJjYjk1MGZiMjMyMGYwZjA2M2ViYjExNzRmMGFhNjZhZmMwOTRmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAwMTo0NjowNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IDk0YjJlODVlMDBhMzcuLmJhMTE3MTQ3NzIxYWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwpAQCAtNzcwLDYgJiM0Mzs3NzAsNyBAQCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsCiAJbWRpb2Rldi0mZ3Q7ZGV2aWNlX3JlbW92ZSA9IHBoeV9tZGlvX2RldmljZV9yZW1vdmU7CiAJbWRpb2Rldi0mZ3Q7cmVzZXRfc3RhdGUgPSAtMTsKIAomIzQzOwlkZXYtJmd0O2lycV9zYXZlZCA9IFBIWV9QT0xMOwogCWRldi0mZ3Q7c3BlZWQgPSBTUEVFRF9VTktOT1dOOwogCWRldi0mZ3Q7ZHVwbGV4ID0gRFVQTEVYX1VOS05PV047CiAJZGV2LSZndDtwYXVzZSA9IGZhbHNlOwpAQCAtMTczNCw2ICYjNDM7MTczNSwxOSBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KQogCXJldHVybiBwaHlkcnYtJmd0O2NvbmZpZ19pbnRyICZhbXA7JmFtcDsgcGh5ZHJ2LSZndDtoYW5kbGVfaW50ZXJydXB0OwogfQogCiYjNDM7LyogR2l2ZSBiYWNrIHdoYXQgcGh5X3Byb2JlKCkgdG9vaywgYnV0IG5vdCB3aGlsZSBwaHlfbGlua19jaGFuZ2UgbWFya3MgYQomIzQzOyAqIGNvbnN1bWVyOiBpdCBza2lwcGVkIHBoeV9yZXF1ZXN0X2ludGVycnVwdCgpIG9uIHRoZSB2YWx1ZSBpdCBzYXcsIHNvCiYjNDM7ICogcGh5X2Rpc2Nvbm5lY3QoKSB3b3VsZCBmcmVlIGFuIGludGVycnVwdCBub2JvZHkgcmVxdWVzdGVkLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX3Byb2JlX2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJaWYgKHBoeWRldi0mZ3Q7cGh5X2xpbmtfY2hhbmdlIHx8IHBoeWRldi0mZ3Q7aXJxX3NhdmVkID09IFBIWV9QT0xMKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlwaHlkZXYtJmd0O2lycSA9IHBoeWRldi0mZ3Q7aXJxX3NhdmVkOwomIzQzOwlwaHlkZXYtJmd0O2lycV9zYXZlZCA9IFBIWV9QT0xMOwomIzQzO30KJiM0MzsKIC8qKgogICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlcgogICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoCkBAIC0xODk2LDYgJiM0MzsxOTEwLDcgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiAKIGVycm9yX21vZHVsZV9wdXQ6CiAJbW9kdWxlX3B1dChkLSZndDtkcml2ZXItJmd0O293bmVyKTsKJiM0MzsJcGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7CiAJcGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuID0gMDsKIAlkLSZndDtkcml2ZXIgPSBOVUxMOwogZXJyb3JfcHV0X2RldmljZToKQEAgLTM2OTQsOCAmIzQzOzM3MDksMTAgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQogCS8qIERpc2FibGUgdGhlIGludGVycnVwdCBpZiB0aGUgUEhZIGRvZXNuJiMzOTt0IHN1cHBvcnQgaXQKIAkgKiBidXQgdGhlIGludGVycnVwdCBpcyBzdGlsbCBhIHZhbGlkIG9uZQogCSAqLwotCWlmICghcGh5X2Rydl9zdXBwb3J0c19pcnEocGh5ZHJ2KSAmYW1wOyZhbXA7IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkKJiM0MzsJaWYgKCFwaHlfZHJ2X3N1cHBvcnRzX2lycShwaHlkcnYpICZhbXA7JmFtcDsgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHlkZXYpKSB7CiYjNDM7CQlwaHlkZXYtJmd0O2lycV9zYXZlZCA9IHBoeWRldi0mZ3Q7aXJxOwogCQlwaHlkZXYtJmd0O2lycSA9IFBIWV9QT0xMOwomIzQzOwl9CiAKIAlpZiAocGh5ZHJ2LSZndDtmbGFncyAmYW1wOyBQSFlfSVNfSU5URVJOQUwpCiAJCXBoeWRldi0mZ3Q7aXNfaW50ZXJuYWwgPSB0cnVlOwpAQCAtMzgyMCw2ICYjNDM7MzgzNyw4IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlpZiAoIXBoeWRldi0mZ3Q7aXNfb25fc2ZwX21vZHVsZSkKIAkJcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyKHBoeWRldik7CiAKJiM0MzsJcGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7CiYjNDM7CiAJLyogUmUtYXNzZXJ0IHRoZSByZXNldCBzaWduYWwgb24gZXJyb3IgKi8KIAlwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7CiAKQEAgLTM4NDgsNiAmIzQzOzM4NjcsOCBAQCBzdGF0aWMgaW50IHBoeV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQogCWlmIChwaHlkZXYtJmd0O2RydiAmYW1wOyZhbXA7IHBoeWRldi0mZ3Q7ZHJ2LSZndDtyZW1vdmUpCiAJCXBoeWRldi0mZ3Q7ZHJ2LSZndDtyZW1vdmUocGh5ZGV2KTsKIAomIzQzOwlwaHlfcmVzdG9yZV9wcm9iZV9pcnEocGh5ZGV2KTsKJiM0MzsKIAkvKiBBc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqLwogCXBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKaW5kZXggM2VjM2JiNDM5MTA5NS4uNmE5MmZhYzU4ZjI1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCkBAIC0yMDgzLDYgJiM0MzsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogCXJldHVybiBwaHlsaW5rX3ZhbGlkYXRlKHBsLCBzdXBwb3J0ZWQsIHN0YXRlKTsKIH0KIAomIzQzOy8qIERpc2Fzc29jaWF0ZSBAcGh5IGZyb20gQHBsLiBDYWxsZXIgbXVzdCBob2xkIHBsLSZndDtwaHlkZXZfbXV0ZXguICovCiYjNDM7c3RhdGljIHZvaWQgcGh5bGlua19jbGVhcl9waHlkZXYoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KQomIzQzO3sKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwomIzQzOwlwbC0mZ3Q7cGh5ZGV2ID0gTlVMTDsKJiM0MzsJcGwtJmd0O3BoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7CiYjNDM7CXBsLSZndDttYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogCQkJICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiB7CkBAIC0yMTk3LDYgJiM0MzsyMjA5LDEyIEBAIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksCiAJaWYgKHJldCA9PSAwICZhbXA7JmFtcDsgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKQogCQlwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTsKIAomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3BoeWRldl9tdXRleCk7CiYjNDM7CQlwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMjM0NywxNSAmIzQzOzIzNjUsOCBAQCB2b2lkIHBoeWxpbmtfZGlzY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsKQogCiAJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwogCXBoeSA9IHBsLSZndDtwaHlkZXY7Ci0JaWYgKHBoeSkgewotCQltdXRleF9sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKLQkJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtzdGF0ZV9tdXRleCk7Ci0JCXBsLSZndDtwaHlkZXYgPSBOVUxMOwotCQlwbC0mZ3Q7cGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTsKLQkJcGwtJmd0O21hY190eF9jbGtfc3RvcCA9IGZhbHNlOwotCQltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwotCQltdXRleF91bmxvY2soJmFtcDtwaHktJmd0O2xvY2spOwotCX0KJiM0MzsJaWYgKHBoeSkKJiM0MzsJCXBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpOwogCW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwogCiAJaWYgKHBoeSkgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmgKaW5kZXggNWY4ZDY1ODY4ZTBmZi4uZDQ5MjQxNzU3MmEwZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9waHkuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeS5oCkBAIC01OTEsNiAmIzQzOzU5MSw4IEBAIHN0cnVjdCBwaHlfb2F0YzE0X3NxaV9jYXBhYmlsaXR5IHsKICAqICAgICAgLSBCaXRzIFszMToyNF0gYXJlIHJlc2VydmVkIGZvciBkZWZpbmluZyBnZW5lcmljCiAgKiAgICAgICAgUEhZIGRyaXZlciBiZWhhdmlvci4KICAqIEBpcnE6IElSUSBudW1iZXIgb2YgdGhlIFBIWSYjMzk7cyBpbnRlcnJ1cHQgKC0xIGlmIG5vbmUpCiYjNDM7ICogQGlycV9zYXZlZDogQGlycSBhcyBpdCB3YXMgYmVmb3JlIHBoeV9wcm9iZSgpIHJlcGxhY2VkIGl0IHdpdGggUEhZX1BPTEwsCiYjNDM7ICogICAgICAgICAgICAgb3IgUEhZX1BPTEwgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvIHJlc3RvcmUKICAqIEBwaHlsaW5rOiBQb2ludGVyIHRvIHBoeWxpbmsgaW5zdGFuY2UgZm9yIHRoaXMgUEhZCiAgKiBAc2ZwX2J1c19hdHRhY2hlZDogRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIFNGUCBidXMgaGFzIGJlZW4gYXR0YWNoZWQKICAqIEBzZnBfYnVzOiBTRlAgYnVzIGF0dGFjaGVkIHRvIHRoaXMgUEhZJiMzOTtzIGZpYmVyIHBvcnQKQEAgLTc2MSw2ICYjNDM7NzYzLDcgQEAgc3RydWN0IHBoeV9kZXZpY2UgewogCSAqIC0xIG1lYW5zIG5vIGludGVycnVwdAogCSAqLwogCWludCBpcnE7CiYjNDM7CWludCBpcnFfc2F2ZWQ7CiAKIAkvKiBwcml2YXRlIGRhdGEgcG9pbnRlciAqLwogCS8qIEZvciB1c2UgYnkgUEhZcyB0byBtYWludGFpbiBleHRyYSBzdGF0ZSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg0OQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDU5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBEcml2ZXIgUGF0Y2ggZm9yIFBvdGVudGlhbCBLTVNBTiBDb25jZXJucyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHNlZSBpZiB3ZSBuZWVkIHRvIGZpcmUgdXAgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbi4gRmlyc3QsIEkgbmVlZCB0byBicmVhayBkb3duIHRoZSBjaGFuZ2VzLiBUaGUgZGlmZiBzaG93cyBtb2RpZmljYXRpb25zIGluIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCwgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLCBhbmQgYGluY2x1ZGUvbGludXgvcGh5LmhgLiBJIHNlZSBjaGFuZ2VzIHRvIHRoZSBQSFkgaW50ZXJydXB0IGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHNhdmluZyBhbmQgcmVzdG9yaW5nIHRoZSBpbnRlcnJ1cHQgbnVtYmVyIChgaXJxX3NhdmVkYCkuCgpJbiBgcGh5X2RldmljZS5jYCwgdGhleSYjMzk7dmUgYWRkZWQgYGlycV9zYXZlZGAgdG8gdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3QuICBJdCBsb29rcyBsaWtlIHRoaXMgdmFyaWFibGUgaXMgYmVpbmcgdXNlZCB0byB0ZW1wb3JhcmlseSBzdG9yZSB0aGUgb3JpZ2luYWwgaW50ZXJydXB0IG51bWJlciAoYHBoeWRldi0mZ3Q7aXJxYCkgd2hlbiBpdCYjMzk7cyBiZWluZyBwb2xsZWQgaW5zdGVhZC4gIFRoZSBjb2RlIGluIGBwaHlfcHJvYmVgLCBgcGh5X3JlbW92ZWAsIGFuZCBgcGh5X2F0dGFjaF9kaXJlY3RgIHNlZW0gdG8gYmUgdGhlIGtleSBhcmVhcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgd2h5IHRoZSBpbnRlcnJ1cHQgaXMgYmVpbmcgJiMzNDtzYXZlZCYjMzQ7IGFuZCAmIzM0O3Jlc3RvcmVkLiYjMzQ7ICBUaGUgcmVmYWN0b3JpbmcgaW4gYHBoeWxpbmsuY2Agd2l0aCB0aGUgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YCBmdW5jdGlvbiBsb29rcyBsaWtlIGEgY2xlYW51cCBvcGVyYXRpb24sIHBvc3NpYmx5IHJlbGF0ZWQgdG8gZXJyb3IgaGFuZGxpbmcuCgpOb3csIHRoZSBjcml0aWNhbCBwYXJ0OiB1bmluaXRpYWxpemVkIG1lbW9yeSBhbmQgcG90ZW50aWFsIGluZm9ybWF0aW9uIGxlYWtzLiAgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGBpcnFfc2F2ZWRgIGlzbiYjMzk7dCBhIHZlY3RvciBmb3IgdnVsbmVyYWJpbGl0aWVzLiBJIHNlZSBgZGV2LSZndDtpcnFfc2F2ZWRgIGlzIGluaXRpYWxpemVkIHRvIGBQSFlfUE9MTGAgZHVyaW5nIGBwaHlfZGV2aWNlX2NyZWF0ZWAsIHdoaWNoIGlzIGdvb2QuICBJIG5lZWQgdG8gdmVyaWZ5IHRoZSBhbGxvY2F0aW9uIG9mIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IGl0c2VsZiwgYnV0IGl0IGFwcGVhcnMgdG8gYmUgaW5pdGlhbGl6ZWQgdmlhIGBremFsbG9jYC4gSSBhbHNvIGNoZWNrZWQgdGhlIGNvZGUgYW5kIHRoZXJlIGFwcGVhciB0byBiZSBubyBuZXcgaW5zdGFuY2VzIG9mIGBjb3B5X3RvX3VzZXJgLCBgcHV0X3VzZXJgLCBuZXRsaW5rIHNrYiBhdHRycywgaW9jdGxzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgbGVha3MuIEkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyB1bmluaXRpYWxpemVkIHN0cnVjdCBmaWVsZHMsIHVuaW5pdGlhbGl6ZWQgYnVmZmVycyBiZWluZyBwYXNzZWQgYXJvdW5kIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGJyYW5jaGluZy4gTm8gY2hhbmdlcyBzZWVtIHRvIGhhdmUgaW1wYWN0ZWQgdGhlIHVzZXItc3BhY2UgQUJJIHdoaWNoIHdvdWxkIGJlIGFub3RoZXIgcG9pbnQgb2YgY29uY2Vybi4KClRvIGJlIGV4dHJhIHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGBwaHlfZGV2aWNlX2NyZWF0ZWAgZnVuY3Rpb24gaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgIHRvIGNvbmZpcm0gdGhlIGluaXRpYWxpemF0aW9uIGFuZCBhbGxvY2F0aW9uIGRldGFpbHMsIGp1c3QgdG8gYmUgdGhvcm91Z2guIElmIHRoaXMgaXMgYSBzaW1wbGUgaW50ZXJydXB0IGhhbmRsaW5nIGNoYW5nZSB3aXRoIGEgcHJvcGVyIGluaXRpYWxpemF0aW9uIHBhdGgsIEkgZG9uJiMzOTt0IGV4cGVjdCBhbnkgS01TQU4gYWxhcm1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfZGV2aWNlX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM9NTUxPXN0YXRpYyB2b2lkIHRqYTExMDJfcDFfcmVnaXN0ZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU4NS1cdFx0LyogUmVhbCBQSFkgSUQgb2YgUG9ydCAxIGlzIDAgKi9cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU4NjpcdFx0cGh5ID0gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBQSFlfSURfVEpBMTEwMiwgZmFsc2UsIE5VTEwpO1xuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTg3LVx0XHRpZiAoSVNfRVJSKHBoeSkpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTItXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzo1OTM6XHRcdC8qIE92ZXJ3cml0ZSBwYXJlbnQgZGV2aWNlLiBwaHlfZGV2aWNlX2NyZWF0ZSgpIHNldCBwYXJlbnQgdG9cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU5NC1cdFx0ICogdGhlIG1paV9idXMtXHUwMDNlZGV2LCB3aGljaCBpcyBub3QgY29ycmVjdCBpbiBjYXNlLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NzI4PXN0YXRpYyBpbnQgcGh5X3JlcXVlc3RfZHJpdmVyX21vZHVsZShzdHJ1Y3QgcGh5X2RldmljZSAqZGV2LCB1MzIgcGh5X2lkKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNzQ3LVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo3NDg6c3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCB1MzIgcGh5X2lkLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy03NDktXHRcdFx0XHQgICAgIGJvb2wgaXNfYzQ1LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtODQwLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6ODQxOkVYUE9SVF9TWU1CT0wocGh5X2RldmljZV9jcmVhdGUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy04NDItXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMDcyPXN0cnVjdCBwaHlfZGV2aWNlICpnZXRfcGh5X2RldmljZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDk3LVx0XHRpZiAoIXIpXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEwOTg6XHRcdFx0cmV0dXJuIHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgcGh5X2lkLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDk5LVx0XHRcdFx0XHRcdCB0cnVlLCBcdTAwMjZjNDVfaWRzKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDEtXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjExMDI6XHRyZXR1cm4gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsIGlzX2M0NSwgXHUwMDI2YzQ1X2lkcyk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDMtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjgyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIFBIWSBEZXZpY2UgQ3JlYXRpb24qKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYHBoeV9kZXZpY2VfY3JlYXRlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkLiBUaGlzIGlzIGZ1bmRhbWVudGFsOyBhIG1pc3N0ZXAgaGVyZSBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiBtZW1vcnkgY29ycnVwdGlvbiBvciBhbGxvY2F0aW9uIGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJJiMzOTttIGdvaW5nIHRvIGZvbGxvdyB0aGUgZmxvdyBvZiBleGVjdXRpb24gYW5kIG1lbnRhbGx5IHBhcnNlIGVhY2ggYWxsb2NhdGlvbiBjYWxsLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBzb3VyY2Ugb2YgdGhlIG1lbW9yeSBhbmQgdGhlIGRhdGEgYmVpbmcgaW5pdGlhbGl6ZWQuIElzIGl0IG9uIHRoZSBzdGFjaywgZHluYW1pY2FsbHkgZnJvbSB0aGUgaGVhcCB2aWEgYGttYWxsb2NgLCBvciBwb3RlbnRpYWxseSB1c2luZyBzb21lIGtpbmQgb2YgY3VzdG9tIGFsbG9jYXRvcj8gQWxzbywgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgUEhZIGRhdGEgaXMgaGFuZGxlZC4gSXMgdGhlcmUgcHJvcGVyIGVycm9yIGNoZWNraW5nIGF0IGVhY2ggYWxsb2NhdGlvbiBzdGVwPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBtZW1vcnkgbGVha3MgaWYgYW4gYWxsb2NhdGlvbiBmYWlscyBwYXJ0IHdheSB0aHJvdWdoIHRoZSBwcm9jZXNzPyBJJiMzOTtsbCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgaG93IG90aGVyIHJlbGV2YW50IHN0cnVjdHVyZXMgYW5kIHBvaW50ZXJzIGFyZSBzZXQgaW4gcmVsYXRpb24gdG8gaXQgLSBzdWNoIGFzIHRoZSBwYXJlbnQgc3RydWN0dXJlIHBvaW50ZXJzLiBVbmRlcnN0YW5kaW5nIHRoZSBhbGxvY2F0aW9uIHN0cmF0ZWd5IHdpbGwgZGlyZWN0bHkgaW5mb3JtIGhvdyBJIGRlYWwgd2l0aCB0aGlzIGNvZGUgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3NDU6XHRcdHJldHVybiAwO1xuIDc0NjpcdH1cbiA3NDc6XHRcbiA3NDg6XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXG4gNzQ5Olx0XHRcdFx0XHQgICAgIGJvb2wgaXNfYzQ1LFxuIDc1MDpcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgcGh5X2M0NV9kZXZpY2VfaWRzICpjNDVfaWRzKVxuIDc1MTpcdHtcbiA3NTI6XHRcdHN0cnVjdCBwaHlfZGV2aWNlICpkZXY7XG4gNzUzOlx0XHRzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXY7XG4gNzU0Olx0XHRpbnQgcmV0ID0gMDtcbiA3NTU6XHRcbiA3NTY6XHRcdC8qIFdlIGFsbG9jYXRlIHRoZSBkZXZpY2UsIGFuZCBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHZhbHVlcyAqL1xuIDc1NzpcdFx0ZGV2ID0ga3phbGxvY19vYmooKmRldik7XG4gNzU4Olx0XHRpZiAoIWRldilcbiA3NTk6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4gNzYwOlx0XG4gNzYxOlx0XHRtZGlvZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZW1kaW87XG4gNzYyOlx0XHRtZGlvZGV2LVx1MDAzZWRldi5wYXJlbnQgPSBcdTAwMjZidXMtXHUwMDNlZGV2O1xuIDc2MzpcdFx0bWRpb2Rldi1cdTAwM2VkZXYuYnVzID0gXHUwMDI2bWRpb19idXNfdHlwZTtcbiA3NjQ6XHRcdG1kaW9kZXYtXHUwMDNlZGV2LnR5cGUgPSBcdTAwMjZtZGlvX2J1c19waHlfdHlwZTtcbiA3NjU6XHRcdG1kaW9kZXYtXHUwMDNlYnVzID0gYnVzO1xuIDc2NjpcdFx0bWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBwaHlfYnVzX21hdGNoO1xuIDc2NzpcdFx0bWRpb2Rldi1cdTAwM2VhZGRyID0gYWRkcjtcbiA3Njg6XHRcdG1kaW9kZXYtXHUwMDNlZmxhZ3MgPSBNRElPX0RFVklDRV9GTEFHX1BIWTtcbiA3Njk6XHRcdG1kaW9kZXYtXHUwMDNlZGV2aWNlX2ZyZWUgPSBwaHlfbWRpb19kZXZpY2VfZnJlZTtcbiA3NzA6XHRcdG1kaW9kZXYtXHUwMDNlZGV2aWNlX3JlbW92ZSA9IHBoeV9tZGlvX2RldmljZV9yZW1vdmU7XG4gNzcxOlx0XHRtZGlvZGV2LVx1MDAzZXJlc2V0X3N0YXRlID0gLTE7XG4gNzcyOlx0XG4gNzczOlx0XHRkZXYtXHUwMDNlaXJxX3NhdmVkID0gUEhZX1BPTEw7XG4gNzc0Olx0XHRkZXYtXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuIDc3NTpcdFx0ZGV2LVx1MDAzZWR1cGxleCA9IERVUExFWF9VTktOT1dOO1xuIDc3NjpcdFx0ZGV2LVx1MDAzZXBhdXNlID0gZmFsc2U7XG4gNzc3Olx0XHRkZXYtXHUwMDNlYXN5bV9wYXVzZSA9IGZhbHNlO1xuIDc3ODpcdFx0ZGV2LVx1MDAzZWxpbmsgPSAwO1xuIDc3OTpcdFx0ZGV2LVx1MDAzZXBvcnQgPSBQT1JUX1RQO1xuIDc4MDpcdFx0ZGV2LVx1MDAzZWludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJO1xuIDc4MTpcdFxuIDc4MjpcdFx0ZGV2LVx1MDAzZWF1dG9uZWcgPSBBVVRPTkVHX0VOQUJMRTtcbiA3ODM6XHRcbiA3ODQ6XHRcdGRldi1cdTAwM2VwbWFfZXh0YWJsZSA9IC1FTk9EQVRBO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMTo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjA4CgkJCQkJCQlvdXRwdXQ6IDI1NAoJCQkJCQkJdGhvdWdodHM6IDIxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBEZXZpY2UgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIHNlZSB0aGUgY29yZSBhbGxvY2F0aW9uIGlzIHVzaW5nIGBremFsbG9jX29iaigqZGV2KWAuIFRoYXQmIzM5O3MgZ29vZCwga2VlcHMgdGhpbmdzIGNsZWFuIHdpdGggdGhlIHplcm9lZCBtZW1vcnkuIFRoZSBjcnVjaWFsIHRoaW5nIGlzIHRoZSBleHBsaWNpdCBzZXR0aW5nIG9mIGBkZXYtJmd0O2lycV9zYXZlZCA9IFBIWV9QT0xMO2AuIFRoaXMgdGVsbHMgbWUgdGhlIGZvY3VzIGhlcmUgaXMgb24gcm9idXN0IElSUSBoYW5kbGluZywgYW5kIGdpdmVuIHRoZSBjb250ZXh0LCBJIHN1c3BlY3QgaXQmIzM5O3MgYWJvdXQgbWFuYWdpbmcgaW50ZXJydXB0IHN0YXRlIGR1cmluZyBlcnJvciBzY2VuYXJpb3MuCgpMb29raW5nIGNsb3NlciwgdGhlIGVudGlyZSBwYXRjaCBzZXJpZXMgYm9pbHMgZG93biB0byB0d28ga2V5IGFyZWFzOgoKMS4gICoqSVJRIHJlc3RvcmF0aW9uIG1hbmFnZW1lbnQ6KiogVGhlIHByaW1hcnkgZ29hbCBpcyB0byBwcmV2ZW50IHN0YXRlIGluY29uc2lzdGVuY2llcy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgc2l0dWF0aW9ucyB3aGVyZSBpbnRlcnJ1cHRzIG1pZ2h0IGJlIGluY29ycmVjdGx5IHJlLWVuYWJsZWQgb3IgZnJlZWQgd2hlbiB0aGUgdW5kZXJseWluZyBkcml2ZXIgZG9lc24mIzM5O3QgYWN0dWFsbHkgc3VwcG9ydCB0aGVtLiBTbywgaXQmIzM5O3MgYWJvdXQgYmVpbmcgdmVyeSBjYXJlZnVsIGFib3V0IHdoZXJlIGFuZCB3aGVuIHdlIG1hbmFnZSB0aGUgSVJRIHN0YXRlIG9mIHRoZSBQSFkgZGV2aWNlLCBlc3BlY2lhbGx5IGR1cmluZyBwcm9iZSwgcmVtb3ZlLCBhbmQgYXR0YWNoIG9wZXJhdGlvbnMgd2hlcmUgZmFpbHVyZXMgYXJlIHBvc3NpYmxlLiBUaGlzIGlzIHNtYXJ0LCBhdm9pZHMgc3VidGxlIHJhY2UgY29uZGl0aW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLgoyLiAgKipQaHlsaW5rIGVycm9yIGhhbmRsaW5nOioqIFRoZSBzZWNvbmQgYXJlYSBpcyBhIHJlZmFjdG9yaW5nIG9mIGhvdyB3ZSBoYW5kbGUgZXJyb3JzIHdoZW4gYnJpbmdpbmcgdXAgb3IgZGlzY29ubmVjdGluZyBhIHBoeWxpbmsuIFNwZWNpZmljYWxseSwgaWYgdGhlIGxpbmsgZXN0YWJsaXNobWVudCBmYWlscywgdGhpcyBwYXRjaCBjbGVhbmx5IGRpc2Fzc29jaWF0ZXMgdGhlIHBoeWxpbmsgZnJvbSB0aGUgUEhZIGRldmljZS4gTWFrZXMgc2Vuc2UsIGtlZXBzIHRoaW5ncyBjb25zaXN0ZW50IGFuZCBwcmV2ZW50cyBkYW5nbGluZyBwb2ludGVycyBvciBzdGFsZSBzdGF0ZXMuCgpUaGlzIHNlZW1zIHRvIGJlIGVudGlyZWx5IGludGVybmFsIGtlcm5lbCBsb2dpYywgc3BlY2lmaWNhbGx5IGFyb3VuZCBzdGF0ZSB0cmFja2luZyBhbmQgZXJyb3IgaGFuZGxpbmcgZm9yIGhvdyBwaHlsaW5rIGFuZCBwaHlfZGV2aWNlIGludGVyYWN0LiBUaGVyZSYjMzk7cyBubyB1c2VyLXNwYWNlIGludGVyYWN0aW9uLCBubyBtZW1vcnkgY29weWluZywgYW5kLCBpbXBvcnRhbnRseSwgbm8gaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBkYXRhIGxlYWtzLiBUaGF0IGlzIHJlYXNzdXJpbmcuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCwgaXQgc2VlbXMgYW55IHBvdGVudGlhbCBpc3N1ZXMg4oCTIHRoaW5ncyBsaWtlIGxvY2tpbmcgcHJvYmxlbXMsIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMsIG9yIGRvdWJsZS1mcmVlcyDigJMgYXJlIGlzc3VlcyB0aGF0IHdvdWxkIGJlIHJlYWRpbHkgZGV0ZWN0YWJsZSBieSBLQVNBTiBhbmQgTE9DS0RFUC4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGlzIHBhdGNoLCBJIHRoaW5rIHRoZSBhZGRpdGlvbiBvZiBLTVNBTiBvZmZlcnMgbm8gcmVhbCBiZW5lZml0IGFzIGl0IGRlYWxzIHdpdGggbWVtb3J5IHNhZmV0eSBpc3N1ZXMuCgpBbHJpZ2h0LCBJIHRoaW5rIEkgaGF2ZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGltcGxpY2F0aW9ucyBoZXJlLiBMZXQmIzM5O3MgYnVpbGQgdXAgdGhlIG5lY2Vzc2FyeSByZWFzb25pbmcgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIHJlc29sdmVzIHN0YXRlIHRyYWNraW5nIGFuZCBjbGVhbnVwIGlzc3VlcyBmb3IgUEhZIGludGVycnVwdCByZXN0b3JhdGlvbiAodmlhIGEgbmV3IGBpcnFfc2F2ZWRgIGZpZWxkKSBhbmQgZXJyb3IgaGFuZGxpbmcgZHVyaW5nIHBoeWxpbmsgYnJpbmd1cC9kaXNjb25uZWN0LlxuXG4xLiBNZW1vcnkgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb246IGBzdHJ1Y3QgcGh5X2RldmljZWAgaXMgYWxsb2NhdGVkIHdpdGggYGt6YWxsb2Nfb2JqYCwgYW5kIHRoZSBuZXcgYGlycV9zYXZlZGAgZmllbGQgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgUEhZX1BPTExgIHVwb24gY3JlYXRpb24gaW4gYHBoeV9kZXZpY2VfY3JlYXRlKClgLlxuMi4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2U6IEFsbCBvcGVyYXRpb25zIG9uIGBpcnFfc2F2ZWRgIGFuZCBgcGh5ZGV2YCBtZW1iZXJzIG9wZXJhdGUgb24gZnVsbHkgaW5pdGlhbGl6ZWQgc3RydWN0IGZpZWxkcyBhbmQgZG8gbm90IHJlYWQgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeS5cbjMuIE5vIGluZm8tbGVha3M6IE5vIHN0cnVjdHVyZXMsIHBhZGRpbmcsIG9yIGJ1ZmZlcnMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlIChubyBgY29weV90b191c2VyYCwgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bHMsIGV0Yy4pLlxuNC4gS0FTQU4gLyBMT0NLREVQIGFwcGxpY2FiaWxpdHk6IEFueSBpc3N1ZXMgaW50cm9kdWNlZCBpbiB0aGVzZSBwYXRocyAoc3VjaCBhcyBsb2NraW5nIG1pc3Rha2VzIGFyb3VuZCBgcGwtXHUwMDNlcGh5ZGV2X211dGV4YCBvciBsaWZldGltZS91c2UtYWZ0ZXItZnJlZSBpc3N1ZXMpIGFyZSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgcmVzb2x2ZXMgc3RhdGUgdHJhY2tpbmcgYW5kIGNsZWFudXAgaXNzdWVzIGZvciBQSFkgaW50ZXJydXB0IHJlc3RvcmF0aW9uICh2aWEgYSBuZXcgYGlycV9zYXZlZGAgZmllbGQpIGFuZCBlcnJvciBoYW5kbGluZyBkdXJpbmcgcGh5bGluayBicmluZ3VwL2Rpc2Nvbm5lY3QuXG5cbjEuIE1lbW9yeSBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbjogYHN0cnVjdCBwaHlfZGV2aWNlYCBpcyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY19vYmpgLCBhbmQgdGhlIG5ldyBgaXJxX3NhdmVkYCBmaWVsZCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGBQSFlfUE9MTGAgdXBvbiBjcmVhdGlvbiBpbiBgcGh5X2RldmljZV9jcmVhdGUoKWAuXG4yLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZTogQWxsIG9wZXJhdGlvbnMgb24gYGlycV9zYXZlZGAgYW5kIGBwaHlkZXZgIG1lbWJlcnMgb3BlcmF0ZSBvbiBmdWxseSBpbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzIGFuZCBkbyBub3QgcmVhZCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5LlxuMy4gTm8gaW5mby1sZWFrczogTm8gc3RydWN0dXJlcywgcGFkZGluZywgb3IgYnVmZmVycyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UgKG5vIGBjb3B5X3RvX3VzZXJgLCBuZXRsaW5rIGF0dHJpYnV0ZXMsIGlvY3RscywgZXRjLikuXG40LiBLQVNBTiAvIExPQ0tERVAgYXBwbGljYWJpbGl0eTogQW55IGlzc3VlcyBpbnRyb2R1Y2VkIGluIHRoZXNlIHBhdGhzIChzdWNoIGFzIGxvY2tpbmcgbWlzdGFrZXMgYXJvdW5kIGBwbC1cdTAwM2VwaHlkZXZfbXV0ZXhgIG9yIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcykgYXJlIGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MDYuMjM3MDQzNzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTQ3ODQ0NzM0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBIWUxJTktcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlfYXR0YWNoX2RpcmVjdFwiLFxuICAgIFwicGh5X3Byb2JlXCIsXG4gICAgXCJwaHlfcmVtb3ZlXCIsXG4gICAgXCJwaHlfZGV2aWNlX2NyZWF0ZVwiLFxuICAgIFwicGh5bGlua19icmluZ3VwX3BoeVwiLFxuICAgIFwicGh5bGlua19kaXNjb25uZWN0X3BoeVwiLFxuICAgIFwicGh5bGlua19jb25uZWN0X3BoeVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIHJlc29sdmVzIHN0YXRlIHRyYWNraW5nIGFuZCBjbGVhbnVwIGlzc3VlcyBmb3IgUEhZIGludGVycnVwdCByZXN0b3JhdGlvbiAodmlhIGEgbmV3IGBpcnFfc2F2ZWRgIGZpZWxkKSBhbmQgZXJyb3IgaGFuZGxpbmcgZHVyaW5nIHBoeWxpbmsgYnJpbmd1cC9kaXNjb25uZWN0LlxcblxcbjEuIE1lbW9yeSBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbjogYHN0cnVjdCBwaHlfZGV2aWNlYCBpcyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY19vYmpgLCBhbmQgdGhlIG5ldyBgaXJxX3NhdmVkYCBmaWVsZCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGBQSFlfUE9MTGAgdXBvbiBjcmVhdGlvbiBpbiBgcGh5X2RldmljZV9jcmVhdGUoKWAuXFxuMi4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2U6IEFsbCBvcGVyYXRpb25zIG9uIGBpcnFfc2F2ZWRgIGFuZCBgcGh5ZGV2YCBtZW1iZXJzIG9wZXJhdGUgb24gZnVsbHkgaW5pdGlhbGl6ZWQgc3RydWN0IGZpZWxkcyBhbmQgZG8gbm90IHJlYWQgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeS5cXG4zLiBObyBpbmZvLWxlYWtzOiBObyBzdHJ1Y3R1cmVzLCBwYWRkaW5nLCBvciBidWZmZXJzIGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSAobm8gYGNvcHlfdG9fdXNlcmAsIG5ldGxpbmsgYXR0cmlidXRlcywgaW9jdGxzLCBldGMuKS5cXG40LiBLQVNBTiAvIExPQ0tERVAgYXBwbGljYWJpbGl0eTogQW55IGlzc3VlcyBpbnRyb2R1Y2VkIGluIHRoZXNlIHBhdGhzIChzdWNoIGFzIGxvY2tpbmcgbWlzdGFrZXMgYXJvdW5kIGBwbC1cXHUwMDNlcGh5ZGV2X211dGV4YCBvciBsaWZldGltZS91c2UtYWZ0ZXItZnJlZSBpc3N1ZXMpIGFyZSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIHByZXNlcnZhdGlvbiBhbmQgcmVzdG9yYXRpb24gbG9naWMgYWNyb3NzIFBIWSBkZXZpY2UgcHJvYmUsIGF0dGFjaCwgZGV0YWNoLCBhbmQgcmVtb3ZlIGxpZmVjeWNsZSBwYXRocyBpbiBwaHlsaWIgKGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMpLCBhcyB3ZWxsIGFzIHBoeWxpbmsgY29ubmVjdGlvbiBlcnJvciB0ZWFyZG93biAoZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYykuIFRoZXNlIHN1YnN5c3RlbXMgYXJlIHJlYWNoYWJsZSB2aWEgdmlydHVhbGl6ZWQgbmV0d29ya2luZyBkcml2ZXJzIGFuZCBVU0IgRXRoZXJuZXQgZGV2aWNlIGVtdWxhdGlvbiAoZS5nLiBhc2l4LCBsYW43OHh4LCBzbXNjOTV4eCkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGRldGVjdCByZWdyZXNzaW9ucywgc3RhdGUgaW5jb25zaXN0ZW5jaWVzLCBhbmQgdGVhcmRvd24vZXJyb3ItaGFuZGxpbmcgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MDYuMjM3MDQ4MzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMTg3NjMwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDk4MmNiOTUwZmIyMzIwZjBmMDYzZWJiMTE3NGYwYWE2NmFmYzA5NGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBTZXAgNyAwMTo0NjowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbmluZGV4IDk0YjJlODVlMDBhMzcuLmJhMTE3MTQ3NzIxYWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcXG5AQCAtNzcwLDYgKzc3MCw3IEBAIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgdTMyIHBoeV9pZCxcXG4gXFx0bWRpb2Rldi1cXHUwMDNlZGV2aWNlX3JlbW92ZSA9IHBoeV9tZGlvX2RldmljZV9yZW1vdmU7XFxuIFxcdG1kaW9kZXYtXFx1MDAzZXJlc2V0X3N0YXRlID0gLTE7XFxuIFxcbitcXHRkZXYtXFx1MDAzZWlycV9zYXZlZCA9IFBIWV9QT0xMO1xcbiBcXHRkZXYtXFx1MDAzZXNwZWVkID0gU1BFRURfVU5LTk9XTjtcXG4gXFx0ZGV2LVxcdTAwM2VkdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcXG4gXFx0ZGV2LVxcdTAwM2VwYXVzZSA9IGZhbHNlO1xcbkBAIC0xNzM0LDYgKzE3MzUsMTkgQEAgc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcXG4gXFx0cmV0dXJuIHBoeWRydi1cXHUwMDNlY29uZmlnX2ludHIgXFx1MDAyNlxcdTAwMjYgcGh5ZHJ2LVxcdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xcbiB9XFxuIFxcbisvKiBHaXZlIGJhY2sgd2hhdCBwaHlfcHJvYmUoKSB0b29rLCBidXQgbm90IHdoaWxlIHBoeV9saW5rX2NoYW5nZSBtYXJrcyBhXFxuKyAqIGNvbnN1bWVyOiBpdCBza2lwcGVkIHBoeV9yZXF1ZXN0X2ludGVycnVwdCgpIG9uIHRoZSB2YWx1ZSBpdCBzYXcsIHNvXFxuKyAqIHBoeV9kaXNjb25uZWN0KCkgd291bGQgZnJlZSBhbiBpbnRlcnJ1cHQgbm9ib2R5IHJlcXVlc3RlZC5cXG4rICovXFxuK3N0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX3Byb2JlX2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbit7XFxuK1xcdGlmIChwaHlkZXYtXFx1MDAzZXBoeV9saW5rX2NoYW5nZSB8fCBwaHlkZXYtXFx1MDAzZWlycV9zYXZlZCA9PSBQSFlfUE9MTClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0cGh5ZGV2LVxcdTAwM2VpcnEgPSBwaHlkZXYtXFx1MDAzZWlycV9zYXZlZDtcXG4rXFx0cGh5ZGV2LVxcdTAwM2VpcnFfc2F2ZWQgPSBQSFlfUE9MTDtcXG4rfVxcbitcXG4gLyoqXFxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcXG4gICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXFxuQEAgLTE4OTYsNiArMTkxMCw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbiBcXG4gZXJyb3JfbW9kdWxlX3B1dDpcXG4gXFx0bW9kdWxlX3B1dChkLVxcdTAwM2Vkcml2ZXItXFx1MDAzZW93bmVyKTtcXG4rXFx0cGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7XFxuIFxcdHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XFxuIFxcdGQtXFx1MDAzZWRyaXZlciA9IE5VTEw7XFxuIGVycm9yX3B1dF9kZXZpY2U6XFxuQEAgLTM2OTQsOCArMzcwOSwxMCBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdC8qIERpc2FibGUgdGhlIGludGVycnVwdCBpZiB0aGUgUEhZIGRvZXNuJ3Qgc3VwcG9ydCBpdFxcbiBcXHQgKiBidXQgdGhlIGludGVycnVwdCBpcyBzdGlsbCBhIHZhbGlkIG9uZVxcbiBcXHQgKi9cXG4tXFx0aWYgKCFwaHlfZHJ2X3N1cHBvcnRzX2lycShwaHlkcnYpIFxcdTAwMjZcXHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSlcXG4rXFx0aWYgKCFwaHlfZHJ2X3N1cHBvcnRzX2lycShwaHlkcnYpIFxcdTAwMjZcXHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkge1xcbitcXHRcXHRwaHlkZXYtXFx1MDAzZWlycV9zYXZlZCA9IHBoeWRldi1cXHUwMDNlaXJxO1xcbiBcXHRcXHRwaHlkZXYtXFx1MDAzZWlycSA9IFBIWV9QT0xMO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAocGh5ZHJ2LVxcdTAwM2VmbGFncyBcXHUwMDI2IFBIWV9JU19JTlRFUk5BTClcXG4gXFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19pbnRlcm5hbCA9IHRydWU7XFxuQEAgLTM4MjAsNiArMzgzNyw4IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXFxuIFxcdFxcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xcbiBcXG4rXFx0cGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7XFxuK1xcbiBcXHQvKiBSZS1hc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCBvbiBlcnJvciAqL1xcbiBcXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XFxuIFxcbkBAIC0zODQ4LDYgKzM4NjcsOCBAQCBzdGF0aWMgaW50IHBoeV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHRpZiAocGh5ZGV2LVxcdTAwM2VkcnYgXFx1MDAyNlxcdTAwMjYgcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZXJlbW92ZSlcXG4gXFx0XFx0cGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZXJlbW92ZShwaHlkZXYpO1xcbiBcXG4rXFx0cGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7XFxuK1xcbiBcXHQvKiBBc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqL1xcbiBcXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDNlYzNiYjQzOTEwOTUuLjZhOTJmYWM1OGYyNTkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcXG5AQCAtMjA4Myw2ICsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbiBcXHRyZXR1cm4gcGh5bGlua192YWxpZGF0ZShwbCwgc3VwcG9ydGVkLCBzdGF0ZSk7XFxuIH1cXG4gXFxuKy8qIERpc2Fzc29jaWF0ZSBAcGh5IGZyb20gQHBsLiBDYWxsZXIgbXVzdCBob2xkIHBsLVxcdTAwM2VwaHlkZXZfbXV0ZXguICovXFxuK3N0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4re1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwaHktXFx1MDAzZWxvY2spO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbitcXHRwbC1cXHUwMDNlcGh5ZGV2ID0gTlVMTDtcXG4rXFx0cGwtXFx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XFxuK1xcdHBsLVxcdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuIFxcdFxcdFxcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbiB7XFxuQEAgLTIxOTcsNiArMjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbiBcXHRpZiAocmV0ID09IDAgXFx1MDAyNlxcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxcbiBcXHRcXHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcXG4gXFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuK1xcdFxcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC0yMzQ3LDE1ICsyMzY1LDggQEAgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbClcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbiBcXHRwaHkgPSBwbC1cXHUwMDNlcGh5ZGV2O1xcbi1cXHRpZiAocGh5KSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuLVxcdFxcdHBsLVxcdTAwM2VwaHlkZXYgPSBOVUxMO1xcbi1cXHRcXHRwbC1cXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcXG4tXFx0XFx0cGwtXFx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5LVxcdTAwM2Vsb2NrKTtcXG4tXFx0fVxcbitcXHRpZiAocGh5KVxcbitcXHRcXHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4gXFxuIFxcdGlmIChwaHkpIHtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmhcXG5pbmRleCA1ZjhkNjU4NjhlMGZmLi5kNDkyNDE3NTcyYTBmIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXFxuQEAgLTU5MSw2ICs1OTEsOCBAQCBzdHJ1Y3QgcGh5X29hdGMxNF9zcWlfY2FwYWJpbGl0eSB7XFxuICAqICAgICAgLSBCaXRzIFszMToyNF0gYXJlIHJlc2VydmVkIGZvciBkZWZpbmluZyBnZW5lcmljXFxuICAqICAgICAgICBQSFkgZHJpdmVyIGJlaGF2aW9yLlxcbiAgKiBAaXJxOiBJUlEgbnVtYmVyIG9mIHRoZSBQSFkncyBpbnRlcnJ1cHQgKC0xIGlmIG5vbmUpXFxuKyAqIEBpcnFfc2F2ZWQ6IEBpcnEgYXMgaXQgd2FzIGJlZm9yZSBwaHlfcHJvYmUoKSByZXBsYWNlZCBpdCB3aXRoIFBIWV9QT0xMLFxcbisgKiAgICAgICAgICAgICBvciBQSFlfUE9MTCB3aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmVzdG9yZVxcbiAgKiBAcGh5bGluazogUG9pbnRlciB0byBwaHlsaW5rIGluc3RhbmNlIGZvciB0aGlzIFBIWVxcbiAgKiBAc2ZwX2J1c19hdHRhY2hlZDogRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIFNGUCBidXMgaGFzIGJlZW4gYXR0YWNoZWRcXG4gICogQHNmcF9idXM6IFNGUCBidXMgYXR0YWNoZWQgdG8gdGhpcyBQSFkncyBmaWJlciBwb3J0XFxuQEAgLTc2MSw2ICs3NjMsNyBAQCBzdHJ1Y3QgcGh5X2RldmljZSB7XFxuIFxcdCAqIC0xIG1lYW5zIG5vIGludGVycnVwdFxcbiBcXHQgKi9cXG4gXFx0aW50IGlycTtcXG4rXFx0aW50IGlycV9zYXZlZDtcXG4gXFxuIFxcdC8qIHByaXZhdGUgZGF0YSBwb2ludGVyICovXFxuIFxcdC8qIEZvciB1c2UgYnkgUEhZcyB0byBtYWludGFpbiBleHRyYSBzdGF0ZSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjowNi42NTk2Mzk5MjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ2NTY2OTY0NDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUEhZTElOS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV9hdHRhY2hfZGlyZWN0XCIsXG4gICAgXCJwaHlfcHJvYmVcIixcbiAgICBcInBoeV9yZW1vdmVcIixcbiAgICBcInBoeV9kZXZpY2VfY3JlYXRlXCIsXG4gICAgXCJwaHlsaW5rX2JyaW5ndXBfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIHByZXNlcnZhdGlvbiBhbmQgcmVzdG9yYXRpb24gbG9naWMgYWNyb3NzIFBIWSBkZXZpY2UgcHJvYmUsIGF0dGFjaCwgZGV0YWNoLCBhbmQgcmVtb3ZlIGxpZmVjeWNsZSBwYXRocyBpbiBwaHlsaWIgKGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMpLCBhcyB3ZWxsIGFzIHBoeWxpbmsgY29ubmVjdGlvbiBlcnJvciB0ZWFyZG93biAoZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYykuIFRoZXNlIHN1YnN5c3RlbXMgYXJlIHJlYWNoYWJsZSB2aWEgdmlydHVhbGl6ZWQgbmV0d29ya2luZyBkcml2ZXJzIGFuZCBVU0IgRXRoZXJuZXQgZGV2aWNlIGVtdWxhdGlvbiAoZS5nLiBhc2l4LCBsYW43OHh4LCBzbXNjOTV4eCkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGRldGVjdCByZWdyZXNzaW9ucywgc3RhdGUgaW5jb25zaXN0ZW5jaWVzLCBhbmQgdGVhcmRvd24vZXJyb3ItaGFuZGxpbmcgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ODJjYjk1MGZiMjMyMGYwZjA2M2ViYjExNzRmMGFhNjZhZmMwOTRmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAwMTo0NjowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li5iYTExNzE0NzcyMWFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTc3MCw2ICs3NzAsNyBAQCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXG4gXHRtZGlvZGV2LVx1MDAzZWRldmljZV9yZW1vdmUgPSBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlO1xuIFx0bWRpb2Rldi1cdTAwM2VyZXNldF9zdGF0ZSA9IC0xO1xuIFxuK1x0ZGV2LVx1MDAzZWlycV9zYXZlZCA9IFBIWV9QT0xMO1xuIFx0ZGV2LVx1MDAzZXNwZWVkID0gU1BFRURfVU5LTk9XTjtcbiBcdGRldi1cdTAwM2VkdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcbiBcdGRldi1cdTAwM2VwYXVzZSA9IGZhbHNlO1xuQEAgLTE3MzQsNiArMTczNSwxOSBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG4gfVxuIFxuKy8qIEdpdmUgYmFjayB3aGF0IHBoeV9wcm9iZSgpIHRvb2ssIGJ1dCBub3Qgd2hpbGUgcGh5X2xpbmtfY2hhbmdlIG1hcmtzIGFcbisgKiBjb25zdW1lcjogaXQgc2tpcHBlZCBwaHlfcmVxdWVzdF9pbnRlcnJ1cHQoKSBvbiB0aGUgdmFsdWUgaXQgc2F3LCBzb1xuKyAqIHBoeV9kaXNjb25uZWN0KCkgd291bGQgZnJlZSBhbiBpbnRlcnJ1cHQgbm9ib2R5IHJlcXVlc3RlZC5cbisgKi9cbitzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9wcm9iZV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRpZiAocGh5ZGV2LVx1MDAzZXBoeV9saW5rX2NoYW5nZSB8fCBwaHlkZXYtXHUwMDNlaXJxX3NhdmVkID09IFBIWV9QT0xMKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRwaHlkZXYtXHUwMDNlaXJxID0gcGh5ZGV2LVx1MDAzZWlycV9zYXZlZDtcbitcdHBoeWRldi1cdTAwM2VpcnFfc2F2ZWQgPSBQSFlfUE9MTDtcbit9XG4rXG4gLyoqXG4gICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxuICAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxuQEAgLTE4OTYsNiArMTkxMCw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFxuIGVycm9yX21vZHVsZV9wdXQ6XG4gXHRtb2R1bGVfcHV0KGQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyKTtcbitcdHBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpO1xuIFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuIFx0ZC1cdTAwM2Vkcml2ZXIgPSBOVUxMO1xuIGVycm9yX3B1dF9kZXZpY2U6XG5AQCAtMzY5NCw4ICszNzA5LDEwIEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdC8qIERpc2FibGUgdGhlIGludGVycnVwdCBpZiB0aGUgUEhZIGRvZXNuJ3Qgc3VwcG9ydCBpdFxuIFx0ICogYnV0IHRoZSBpbnRlcnJ1cHQgaXMgc3RpbGwgYSB2YWxpZCBvbmVcbiBcdCAqL1xuLVx0aWYgKCFwaHlfZHJ2X3N1cHBvcnRzX2lycShwaHlkcnYpIFx1MDAyNlx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeWRldikpXG4rXHRpZiAoIXBoeV9kcnZfc3VwcG9ydHNfaXJxKHBoeWRydikgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkge1xuK1x0XHRwaHlkZXYtXHUwMDNlaXJxX3NhdmVkID0gcGh5ZGV2LVx1MDAzZWlycTtcbiBcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IFBIWV9QT0xMO1xuK1x0fVxuIFxuIFx0aWYgKHBoeWRydi1cdTAwM2VmbGFncyBcdTAwMjYgUEhZX0lTX0lOVEVSTkFMKVxuIFx0XHRwaHlkZXYtXHUwMDNlaXNfaW50ZXJuYWwgPSB0cnVlO1xuQEAgLTM4MjAsNiArMzgzNyw4IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4gXHRcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xuIFxuK1x0cGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7XG4rXG4gXHQvKiBSZS1hc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCBvbiBlcnJvciAqL1xuIFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xuIFxuQEAgLTM4NDgsNiArMzg2Nyw4IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUpXG4gXHRcdHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKHBoeWRldik7XG4gXG4rXHRwaHlfcmVzdG9yZV9wcm9iZV9pcnEocGh5ZGV2KTtcbitcbiBcdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDNlYzNiYjQzOTEwOTUuLjZhOTJmYWM1OGYyNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMjA4Myw2ICsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0cmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpO1xuIH1cbiBcbisvKiBEaXNhc3NvY2lhdGUgQHBoeSBmcm9tIEBwbC4gQ2FsbGVyIG11c3QgaG9sZCBwbC1cdTAwM2VwaHlkZXZfbXV0ZXguICovXG4rc3RhdGljIHZvaWQgcGh5bGlua19jbGVhcl9waHlkZXYoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuK3tcbitcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4rXHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuK1x0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbitcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuQEAgLTIxOTcsNiArMjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0aWYgKHJldCA9PSAwIFx1MDAyNlx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeSkpXG4gXHRcdHBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpO1xuIFxuK1x0aWYgKHJldCkge1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4rXHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbitcdH1cbitcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTIzNDcsMTUgKzIzNjUsOCBAQCB2b2lkIHBoeWxpbmtfZGlzY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsKVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuIFx0cGh5ID0gcGwtXHUwMDNlcGh5ZGV2O1xuLVx0aWYgKHBoeSkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdHBsLVx1MDAzZXBoeWRldiA9IE5VTEw7XG4tXHRcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4tXHRcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0fVxuK1x0aWYgKHBoeSlcbitcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbiBcbiBcdGlmIChwaHkpIHtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaFxuaW5kZXggNWY4ZDY1ODY4ZTBmZi4uZDQ5MjQxNzU3MmEwZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmhcbisrKyBiL2luY2x1ZGUvbGludXgvcGh5LmhcbkBAIC01OTEsNiArNTkxLDggQEAgc3RydWN0IHBoeV9vYXRjMTRfc3FpX2NhcGFiaWxpdHkge1xuICAqICAgICAgLSBCaXRzIFszMToyNF0gYXJlIHJlc2VydmVkIGZvciBkZWZpbmluZyBnZW5lcmljXG4gICogICAgICAgIFBIWSBkcml2ZXIgYmVoYXZpb3IuXG4gICogQGlycTogSVJRIG51bWJlciBvZiB0aGUgUEhZJ3MgaW50ZXJydXB0ICgtMSBpZiBub25lKVxuKyAqIEBpcnFfc2F2ZWQ6IEBpcnEgYXMgaXQgd2FzIGJlZm9yZSBwaHlfcHJvYmUoKSByZXBsYWNlZCBpdCB3aXRoIFBIWV9QT0xMLFxuKyAqICAgICAgICAgICAgIG9yIFBIWV9QT0xMIHdoZW4gdGhlcmUgaXMgbm90aGluZyB0byByZXN0b3JlXG4gICogQHBoeWxpbms6IFBvaW50ZXIgdG8gcGh5bGluayBpbnN0YW5jZSBmb3IgdGhpcyBQSFlcbiAgKiBAc2ZwX2J1c19hdHRhY2hlZDogRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIFNGUCBidXMgaGFzIGJlZW4gYXR0YWNoZWRcbiAgKiBAc2ZwX2J1czogU0ZQIGJ1cyBhdHRhY2hlZCB0byB0aGlzIFBIWSdzIGZpYmVyIHBvcnRcbkBAIC03NjEsNiArNzYzLDcgQEAgc3RydWN0IHBoeV9kZXZpY2Uge1xuIFx0ICogLTEgbWVhbnMgbm8gaW50ZXJydXB0XG4gXHQgKi9cbiBcdGludCBpcnE7XG4rXHRpbnQgaXJxX3NhdmVkO1xuIFxuIFx0LyogcHJpdmF0ZSBkYXRhIHBvaW50ZXIgKi9cbiBcdC8qIEZvciB1c2UgYnkgUEhZcyB0byBtYWludGFpbiBleHRyYSBzdGF0ZSAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MDYuNjU5NjQxNDcyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTI1OTIyNzE2MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRoaXMgS2VybmVsIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggc2VyaWVzIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGxldCdzIGRpdmUgaW50byBpdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGJlaW5nIGNoYW5nZWQgaGVyZS4gVGhlIGluc3RydWN0aW9ucyBhcmUgdG8gZXZhbHVhdGUgdGhpcyBwYXRjaCwgc28gbGV0J3MgZ2V0IGRvd24gdG8gaXQuXG5cblRoZSBmaWxlcyBpbXBhY3RlZCBhcmUgYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AsIGFuZCBgaW5jbHVkZS9saW51eC9waHkuaGAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBhYm91dCB0aGUgUEhZIGxheWVyLCB3aGljaCBtZWFucyBwaHlzaWNhbCBsYXllciB0cmFuc2NlaXZlcnMgYW5kIHRoZWlyIGtlcm5lbCBpbnRlcmFjdGlvbiwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgbmV0d29yayBpbnRlcmZhY2UuIEZpbmUsIGxldCdzIHNlZSB3aGVyZSB0aGUgY2hhbmdlcyBsYW5kLlxuXG5Mb29raW5nIGF0IGBwaHlfZGV2aWNlLmNgLCBJIHNlZSBhIGZvY3VzIG9uIElSUSBoYW5kbGluZyBhbmQgZXJyb3IgcGF0aHMgd2l0aGluIHRoZSBQSFkgZGV2aWNlIGNyZWF0aW9uLCBwcm9iaW5nLCBhbmQgcmVtb3ZhbCBwcm9jZXNzZXMuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgY2hhbmdlcyBpbnZvbHZlIGhvdyBJUlEgY29uZmlndXJhdGlvbnMgYXJlIHNhdmVkLCByZXN0b3JlZCwgYW5kIG1hbmFnZWQsIHBhcnRpY3VsYXJseSB3aGVuIGEgUEhZIGlzIGJlaW5nIGluaXRpYWxpemVkIG9yIGRlLWluaXRpYWxpemVkIGFuZCBlbmNvdW50ZXJpbmcgaXNzdWVzLiBTcGVjaWZpY2FsbHk6XG5cbiogICBJbiBgcGh5X2RldmljZV9jcmVhdGVgLCBgZGV2LVx1MDAzZWlycV9zYXZlZCA9IFBIWV9QT0xMO2AgaXMgc2V0LiBPa2F5LCB0aGF0J3MgYSBiYXNlbGluZS5cbiogICBUaGUgYHBoeV9yZXN0b3JlX3Byb2JlX2lycWAgZnVuY3Rpb24gaXMgaW50ZXJlc3RpbmcuIEl0J3Mgc2VsZWN0aXZlbHkgcmVzdG9yaW5nIGEgcHJldmlvdXNseSBzYXZlZCBJUlEgdmFsdWUsIGFuZCB0aGUgbG9naWMgaGVyZSBpcyBjcnVjaWFsOiBpdCBvbmx5IGRvZXMgdGhpcyBpZiBlaXRoZXIgdGhlIFBIWSBsaW5rIHN0YXRlIGNoYW5nZWQsIG9yIGlmIGl0IGhhZCBiZWVuIHNldCB0byBwb2xsaW5nLlxuKiAgIEkgc2VlIGBwaHlfcmVzdG9yZV9wcm9iZV9pcnFgIGlzIGNhbGxlZCBvbiB0aGUgZXJyb3IgcGF0aCBvZiBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X3Byb2JlYCwgYW5kIGBwaHlfcmVtb3ZlYC4gVGhpcyBjbGVhcmx5IHN1Z2dlc3RzIHRoYXQgaXQncyBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhpbmdzIGFyZSBjbGVhbmVkIHVwIHByb3Blcmx5IGluIGNhc2VzIHdoZXJlIFBIWSBhdHRhY2htZW50IG9yIGRldGFjaG1lbnQgZmFpbHMuIFRoZSBpbXBvcnRhbnQgdGhpbmcgaGVyZSBpcyB0byBtYWtlIHN1cmUgaXQgZG9lc24ndCBjYXVzZSBwcm9ibGVtcyBieSByZXNldHRpbmcgc29tZXRoaW5nLCBvciBsZWF2aW5nIHNvbWV0aGluZyB1bnNldCB0aGF0ICpzaG91bGQqIGJlIHNldC5cblxuTW92aW5nIHRvIGBwaHlsaW5rLmNgLCB0aGUgcGF0Y2ggc2VlbXMgdG8gY2VudGVyIGFyb3VuZCBhIGhlbHBlciBmdW5jdGlvbiwgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YC4gSXQgbG9va3MgbGlrZSBpdCBpcyBzaW1wbGlmeWluZyB0aGUgY2xlYXJpbmcgb2YgdGhlIFBIWSBkZXZpY2Ugd2l0aGluIHRoZSBQaHlsaW5rIGNvZGUuIFNvLCB0aGF0J3MgcHJvYmFibHkgYWJvdXQgZnJlZWluZyByZXNvdXJjZXMgYW5kIGNsZWFuaW5nIHVwIHJlZmVyZW5jZXMgd2hlbiBhIFBIWSBpcyBkaXNjb25uZWN0ZWQgb3IgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBicmluZ2luZyBhIFBIWSB1cC4gSSdtIHNlZWluZyBpdCBpbiB0aGUgZXJyb3IgcGF0aHMgb2YgYnJpbmd1cCBhbmQgZGlzY29ubmVjdCBmdW5jdGlvbnMuIFRoaXMgc3VnZ2VzdHMgYW4gZWZmb3J0IHRvIHN0cmVhbWxpbmUgUEhZIGRldmljZSBtYW5hZ2VtZW50IGluIHBoeWxpbmsgaW4gcmVzcG9uc2UgdG8gZmFpbHVyZXMgYW5kIGRldmljZSByZW1vdmFsLlxuXG5Ob3csIGFzIGFuIGV4cGVydCwgSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBoZXJlLiBEb2VzIHRoaXMgSVJRIGhhbmRsaW5nIGNoYW5nZSBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zPyBBcmUgdGhlcmUgYW55IHJhY2UgY29uZGl0aW9ucyB0aGF0IG1pZ2h0IGFwcGVhciBoZXJlPyBEb2VzIGl0IGhhbmRsZSBjb3JuZXIgY2FzZXMgY29ycmVjdGx5PyBNb3JlIGltcG9ydGFudGx5LCBob3cgZG9lcyB0aGlzIGFmZmVjdCBvdXIgYWJpbGl0eSB0byByZXByb2R1Y2UgYW5kIGRlYnVnIGlzc3VlcyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/XG5cblRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGVzZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiBwaHlsaWIsIHBoeWxpbmssIE1ESU8sIGFuZCBQSFkgZGV2aWNlcyBwbGF5IG91dCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBHQ0UsIGFuZCBlc3BlY2lhbGx5IHN5emthbGxlci4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBzeXprYWxsZXIgb3IgYSB1c2VyIHNwYWNlIHByb2Nlc3MgY2FuIGRpcmVjdGx5IGludGVyYWN0IHdpdGggdGhlc2UgUEhZIGNvbXBvbmVudHMgb3IgdGhlIE1ESU8gYnVzIHRvIHRyaWdnZXIgdGhpcyBjb2RlIGFuZCB2ZXJpZnkgaXRzIGNvcnJlY3RuZXNzLiBEb2VzIHRoaXMgdG91Y2ggYW55IG9mIHRoZSByZWxldmFudCBLY29uZmlncz8gSSBuZWVkIHRvIGxvb2sgYXQgZHJpdmVycy9uZXQvcGh5L0tjb25maWcgdG8gZW5zdXJlIG5vdGhpbmcgcmVsZXZhbnQgaGFzIGJlZW4gZW5hYmxlZCBvciBkaXNhYmxlZCBieSB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjM3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTM1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MTkuMjUxOTE1NDg5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NjU5NjM4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfUEhZTElCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT00PWxpYnBoeS15XFx0XFx0XFx0Oj0gcGh5Lm8gcGh5LWM0NS5vIHBoeS1jb3JlLm8gcGh5X2RldmljZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo5OmlmZGVmIENPTkZJR19QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTAtIyBidWlsdC1pbiB3aGVuZXZlciBQSFlMSUIgaXMgYnVpbHQtaW4gb3IgbW9kdWxlXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9MTY9bGlicGh5LSQoQ09ORklHX09QRU5fQUxMSUFOQ0VfSEVMUEVSUykgKz0gb3Blbl9hbGxpYW5jZV9oZWxwZXJzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTctXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19QSFlMSUIpXFx0XFx0Kz0gbWRpb19idXMub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0xOS1vYmotJChDT05GSUdfUEhZTElOSylcXHRcXHQrPSBwaHlsaW5rLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX1BIWUxJQilcXHRcXHQrPSBsaWJwaHkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfUEhZTElCKVxcdFxcdCs9IG1kaW9fZGV2cmVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMjItb2JqLSQoQ09ORklHX1BIWV9QQUNLQUdFKVxcdCs9IHBoeV9wYWNrYWdlLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzcwMD1zdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4MjItXFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozODIzOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXFx1MDAyNlxcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4MjQtXFx0XFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9Mzg0OD1zdGF0aWMgaW50IHBoeV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODUzLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mzg1NDpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZTElCX0xFRFMpIFxcdTAwMjZcXHUwMDI2ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzg1NS1cXHRcXHRwaHlfbGVkc191bnJlZ2lzdGVyKHBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc3R1YnMuYy0zLSAqIFN0dWJzIGZvciBQSFkgbGlicmFyeSBmdW5jdGlvbmFsaXR5IGNhbGxlZCBieSB0aGUgY29yZSBuZXR3b3JrIHN0YWNrLlxcbmRyaXZlcnMvbmV0L3BoeS9zdHVicy5jOjQ6ICogVGhlc2UgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIENPTkZJR19QSFlMSUIgY2FuIGJlIGEgbW9kdWxlLCBhbmQgYnVpbHQtaW5cXG5kcml2ZXJzL25ldC9waHkvc3R1YnMuYy01LSAqIGNvZGUgY2Fubm90IGRpcmVjdGx5IGNhbGwgc3ltYm9scyBleHBvcnRlZCBieSBtb2R1bGVzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjoxOS43Mzg1MTg5MDhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTAxODQyNDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUGh5bGliL1BoeWxpbmsgSW50ZWdyYXRpb24gaW4gU3l6a2FsbGVyIGFuZCBWaXJ0dWFsIEVudmlyb25tZW50cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBmaWd1cmUgb3V0IGhvdyBgcGh5bGliYCBvciBgcGh5bGlua2AgZnVuY3Rpb25hbGl0aWVzIGFyZSBhY2Nlc3NlZCBhbmQgcG90ZW50aWFsbHkgdGVzdGVkIHdpdGhpbiB0aGUgU3l6a2FsbGVyIGVudmlyb25tZW50LCBvciBldmVuIHdpdGhpbiBtb3JlIHN0YW5kYXJkIHZpcnR1YWwgc2V0dXBzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnRzLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhwbG9yZSB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgdmlydHVhbCBvciBlbXVsYXRlZCBkZXZpY2VzIHRoYXQgbWFrZSB1c2Ugb2YgdGhlc2UgbGlicmFyaWVzLiBBcmUgdGhlcmUgdmlydHVhbCBkcml2ZXJzLCBwZXJoYXBzIFVTQiBkcml2ZXJzIHRoYXQgaW50ZXJhY3Qgd2l0aCBhIHBoeWxpYiBhYnN0cmFjdGlvbj8gV2hhdCBhYm91dCBuZXRsaW5rIGludGVyZmFjZXMgdGhhdCB3b3VsZCByZXByZXNlbnQgYSBQSFkgY29ubmVjdGlvbiwgb3IgZHVtbXkgZGV2aWNlcyBkZXNpZ25lZCB0byB0ZXN0IFBIWSBpbnRlcmFjdGlvbnM/IEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBzdWNoIHRoaW5ncyBhcmUgb2Z0ZW4gcHJlc2VudCBpbiB0aGVzZSB0eXBlcyBvZiBlbnZpcm9ubWVudHMsIHNvIGl0IGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMsIEknbSBnb2luZyB0byBsZXZlcmFnZSBteSBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbCBhbmQgdXNlIHNvbWUgdGFyZ2V0ZWQgZ3JlcHMuIEkgbmVlZCB0byBzZWFyY2ggdGhlIGNvZGUgZm9yIGtleSBmdW5jdGlvbnMgYW5kIHN0cnVjdHVyZXMgZGlyZWN0bHkgcmVsYXRlZCB0byBQSFkgaW5pdGlhbGl6YXRpb24gYW5kIG1hbmFnZW1lbnQuIFNwZWNpZmljYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBpbnN0YW5jZXMgb2YgYHBoeWxpbmtfY3JlYXRlYCwgYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9jb25uZWN0YCwgYG1kaW9idXNfcmVnaXN0ZXJgLCBhbmQgYGZpeGVkX3BoeWAuIFRoZXNlIHNob3VsZCBhY3QgYXMgYnJlYWRjcnVtYnMsIGxlYWRpbmcgbWUgdG8gdGhlIHNwZWNpZmljIGRyaXZlcnMgb3IgbW9kdWxlcyB0aGF0IG1pZ2h0IGJlIHVzaW5nIHBoeWxpYiBvciBwaHlsaW5rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTE5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MjIuMjQwMzY0MTc2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTczMjAxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIocGh5bGlua19jcmVhdGV8cGh5X2Nvbm5lY3R8cGh5X2F0dGFjaF9kaXJlY3R8Zml4ZWRfcGh5KVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE2NTcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NjA3PXN0YXRpYyBpbnQgYmNtX3NmMl9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjU2LVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NjU3OlxcdC8qIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgb2ZfcGh5X2Nvbm5lY3QoKSB3aWxsIG5vdCB3b3JrIGJ5XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02NTgtXFx0ICogcmVtb3ZpbmcgdGhlICdwaGFuZGxlJyBhbmQgJ2xpbnV4LHBoYW5kbGUnIHByb3BlcnRpZXMgYW5kXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00Mzg9c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDEtXFx0XFx0aWYgKCFJU19FUlIocGh5ZGV2c1tpXSkpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQyOlxcdFxcdFxcdGZpeGVkX3BoeV91bnJlZ2lzdGVyKHBoeWRldnNbaV0pO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0My1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00ODI9c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOVU1fRklYRURfUEhZUzsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5MjpcXHRcXHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9OTY4PXN0YXRpYyBib29sIG5ldGNfcG9ydF9pc19lbWRpb19jb25zdW1lcihzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODQtXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6OTg1Oi8qIEN1cnJlbnRseSwgcGh5bGlua19vZl9waHlfY29ubmVjdCgpIGlzIGNhbGxlZCBieSBkc2FfdXNlcl9jcmVhdGUoKSxcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODYtICogc28gaWYgdGhlIHN3aXRjaCB1c2VzIHRoZSBleHRlcm5hbCBNRElPIGNvbnRyb2xsZXIgKGxpa2UgdGhlIEVNRElPXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTg3LSAqIGZ1bmN0aW9uKSB0byBtYW5hZ2UgdGhlIGV4dGVybmFsIFBIWXMuIFRoZSBNRElPIGJ1cyBtYXkgbm90IGJlXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6OTg4OiAqIGNyZWF0ZWQgd2hlbiBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgaXMgY2FsbGVkLCBzbyBpdCB3aWxsIHJldHVyblxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTk4OS0gKiBhbiBlcnJvciBhbmQgY2F1c2UgdGhlIHN3aXRjaCBkcml2ZXIgdG8gZmFpbCB0byBwcm9iZS5cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5OTA6ICogVGhpcyB3b3JrYXJvdW5kIGNhbiBiZSByZW1vdmVkIHdoZW4gRFNBIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTk5MS0gKiBjYWxscyBhcmUgbW92ZWQgZnJvbSBwcm9iZSgpIHRvIG5kb19vcGVuKCkuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz0zNjQ9c3RhdGljIGludCBheF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTM3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzozNzc6XFx0cmV0ID0gcGh5X2Nvbm5lY3RfZGlyZWN0KGRldiwgcGh5X2RldiwgYXhfaGFuZGxlX2xpbmtfY2hhbmdlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTM3OC1cXHRcXHRcXHRcXHQgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYz0xNTY5PXN0YXRpYyBpbnQgYWRpbjExMTBfcHJvYmVfbmV0ZGV2cyhzdHJ1Y3QgYWRpbjExMTBfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTE2MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM6MTYxMzpcXHRcXHRwb3J0X3ByaXYtXFx1MDAzZXBoeWRldiA9IHBoeV9jb25uZWN0KG5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy0xNjE0LVxcdFxcdFxcdFxcdFxcdFxcdHBoeWRldl9uYW1lKHBvcnRfcHJpdi1cXHUwMDNlcGh5ZGV2KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jPTY1MD1zdGF0aWMgaW50IGFkaW4xMTQwX3BoeV9pbml0KHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNjYzLVxcdHByaXYtXFx1MDAzZXBoeWRldi1cXHUwMDNlaXNfaW50ZXJuYWwgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjY2NDpcXHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QocHJpdi1cXHUwMDNlbmV0ZGV2LCBwcml2LVxcdTAwM2VwaHlkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNjY1LVxcdFxcdFxcdFxcdCBcXHUwMDI2YWRpbjExNDBfaGFuZGxlX2xpbmtfY2hhbmdlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYz0xMjUzPXN0YXRpYyBpbnQgZ3JldGhfbWRpb19wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMjY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM6MTI2ODpcXHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LCBwaHksIFxcdTAwMjZncmV0aF9saW5rX2NoYW5nZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEyNjktXFx0XFx0XFx0XFx0IGdyZXRoLVxcdTAwM2VnYml0X21hYyA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDogUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYz0zMjczPXN0YXRpYyBpbnQgZXQxMzF4X21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtMzI4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzozMjg0OlxcdHBoeWRldiA9IHBoeV9jb25uZWN0KG5ldGRldiwgcGh5ZGV2X25hbWUocGh5ZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy0zMjg1LVxcdFxcdFxcdCAgICAgXFx1MDAyNmV0MTMxeF9hZGp1c3RfbGluaywgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jPTE2Nz1zdGF0aWMgaW50IGVtYWNfbWRpb19wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYy0xNzQtXFx0LyogYXR0YWNoIHRoZSBtYWMgdG8gdGhlIHBoeSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmM6MTc1OlxcdHBoeWRldiA9IG9mX3BoeV9jb25uZWN0KGRiLVxcdTAwM2VuZGV2LCBkYi1cXHUwMDNlcGh5X25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYy0xNzYtXFx0XFx0XFx0XFx0XFx1MDAyNmVtYWNfaGFuZGxlX2xpbmtfY2hhbmdlLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTg3Nj1zdGF0aWMgaW50IHRzZV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtOTUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzo5NTI6XFx0cmV0ID0gcGh5bGlua19vZl9waHlfY29ubmVjdChwcml2LVxcdTAwM2VwaHlsaW5rLCBwcml2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZW9mX25vZGUsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy05NTMtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcXHRwcml2LVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE3LVxcdFxcdFxcdFxcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXFx1MDAzZWRldmljZS1cXHUwMDNlb2Zfbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jPTQ3Mj1zdGF0aWMgaW50IGF1MTAwMF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtNTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM6NTM5OlxcdHBoeWRldiA9IHBoeV9jb25uZWN0KGRldiwgcGh5ZGV2X25hbWUocGh5ZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jLTU0MC1cXHRcXHRcXHQgICAgIFxcdTAwMjZhdTEwMDBfYWRqdXN0X2xpbmssIFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYz05MzE9c3RhdGljIGludCB4Z2JlX3BoeV9maW5kX3BoeV9kZXZpY2Uoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzo5ODM6XFx0cmV0ID0gcGh5X2F0dGFjaF9kaXJlY3QocGRhdGEtXFx1MDAzZW5ldGRldiwgcGh5ZGV2LCBwaHlkZXYtXFx1MDAzZWRldl9mbGFncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4NC1cXHRcXHRcXHRcXHRQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTg1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk4NjpcXHRcXHRuZXRkZXZfZXJyKHBkYXRhLVxcdTAwM2VuZXRkZXYsIFxcXCJwaHlfYXR0YWNoX2RpcmVjdCBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTg3LVxcdFxcdHBoeV9kZXZpY2VfcmVtb3ZlKHBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTk4PWludCB4Z2VfbWRpb19jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEyOC1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMjk6XFx0cGh5ZGV2ID0gcGh5X2Nvbm5lY3QobmRldiwgcGh5ZGV2X25hbWUocGh5ZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEzMC1cXHRcXHRcXHQgICAgIFxcdTAwMjZ4Z2VfYWRqdXN0X2xpbmssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTgxOT1zdGF0aWMgc3RydWN0IGFjcGlfZGV2aWNlICphY3BpX3BoeV9maW5kX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTgzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjgzNzppbnQgeGdlbmVfZW5ldF9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTgzOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg0Ny1cXHRcXHRcXHRucCA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwicGh5LWhhbmRsZVxcXCIsIGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6ODQ4OlxcdFxcdFxcdHBoeV9kZXYgPSBvZl9waHlfY29ubmVjdChuZGV2LCBucCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg0OS1cXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNnhnZW5lX2VuZXRfYWRqdXN0X2xpbmssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg2OC1cXHRcXHRpZiAoIXBoeV9kZXYgfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjg2OTpcXHRcXHQgICAgcGh5X2Nvbm5lY3RfZGlyZWN0KG5kZXYsIHBoeV9kZXYsIFxcdTAwMjZ4Z2VuZV9lbmV0X2FkanVzdF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODcwLVxcdFxcdFxcdFxcdCAgICAgICBwZGF0YS1cXHUwMDNlcGh5X21vZGUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTkzOT1pbnQgeGdlbmVfZW5ldF9tZGlvX2NvbmZpZyhzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk2NjpcXHRyZXQgPSB4Z2VuZV9lbmV0X3BoeV9jb25uZWN0KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTY3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5oPTQyNj1ib29sIHhnZW5lX3JpbmdfbWdyX2luaXQoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3Lmg6NDI3OmludCB4Z2VuZV9lbmV0X3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5oLTQyOC12b2lkIHhnZW5lX2VuZXRfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uYz0xNjUxPXN0YXRpYyB2b2lkIHhnZW5lX2VuZXRfY2hlY2tfcGh5X2hhbmRsZShzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmMtMTY2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmM6MTY2MTpcXHRyZXQgPSB4Z2VuZV9lbmV0X3BoeV9jb25uZWN0KHBkYXRhLVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmMtMTY2Mi1cXHRpZiAoIXJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYz04NTg9aW50IGFyY19lbWFjX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTk4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmM6OTg5OlxcdHBoeWRldiA9IG9mX3BoeV9jb25uZWN0KG5kZXYsIHBoeV9ub2RlLCBhcmNfZW1hY19hZGp1c3RfbGluaywgMCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmMtOTkwLVxcdFxcdFxcdFxcdGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTk5MS1cXHRpZiAoIXBoeWRldikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYzo5OTI6XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJvZl9waHlfY29ubmVjdCgpIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTk5My1cXHRcXHRlcnIgPSAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM9OTY2PXN0YXRpYyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwNzYtXFx0XFx0IGF4X2xvY2FsLVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VpZCwgQVg4ODc5NkNfUEhZX0lEKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYzoxMDc3OlxcdGF4X2xvY2FsLVxcdTAwM2VwaHlkZXYgPSBwaHlfY29ubmVjdChheF9sb2NhbC1cXHUwMDNlbmRldiwgcGh5X2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwNzgtXFx0XFx0XFx0XFx0ICAgICAgIGF4ODg3OTZjX2hhbmRsZV9saW5rX2NoYW5nZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmFnLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVxcdFxcdFxcdFxcdCBhZy1cXHUwMDNlcGh5X2lmX21vZGUsIFxcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTQwND1zdGF0aWMgaW50IGFnNzF4eF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xNDA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTQxMDpcXHRyZXQgPSBwaHlsaW5rX29mX3BoeV9jb25uZWN0KGFnLVxcdTAwM2VwaHlsaW5rLCBhZy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2Lm9mX25vZGUsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTQxMS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxNDEyOlxcdFxcdG5ldGlmX2VycihhZywgbGluaywgbmRldiwgXFxcInBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QgZmlsZWQgd2l0aCBlcnI6ICVpXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTQxMy1cXHRcXHRcXHQgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmM9MTA3Nj1zdGF0aWMgaW50IGJjbWFzcF9waHlfYXR0YWNoKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYy0xMDg0LVxcdHBoeV9pZmFjZSA9IGJjbWFzcF9waHlfaWZhY2VfZm9yX2Nvbm5lY3QoaW50Zi1cXHUwMDNlcGh5X2ludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jOjEwODU6XFx0cGh5ZGV2ID0gb2ZfcGh5X2Nvbm5lY3QoaW50Zi1cXHUwMDNlbmRldiwgaW50Zi1cXHUwMDNlcGh5X2RuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYy0xMDg2LVxcdFxcdFxcdFxcdGJjbWFzcF9hZGpfbGluaywgcGh5X2ZsYWdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjczOlxcdFxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzQtXFx0XFx0aWYgKCFJU19FUlIocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyODAtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIyODE6XFx0XFx0ZXJyID0gcGh5X2Nvbm5lY3RfZGlyZWN0KGJwLVxcdTAwM2VkZXYsIHBoeWRldiwgXFx1MDAyNmI0NF9hZGp1c3RfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjgyLVxcdFxcdFxcdFxcdFxcdCBQSFlfSU5URVJGQUNFX01PREVfTUlJKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIzMTM9c3RhdGljIHZvaWQgYjQ0X3VucmVnaXN0ZXJfcGh5X29uZShzdHJ1Y3QgYjQ0ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIzMjItXFx0aWYgKHBoeV9pc19wc2V1ZG9fZml4ZWRfbGluayhwaHlkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIzMjM6XFx0XFx0Zml4ZWRfcGh5X3VucmVnaXN0ZXIocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMzI0LVxcdG1kaW9idXNfdW5yZWdpc3RlcihtaWlfYnVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTg5MD1zdGF0aWMgaW50IGJjbV9lbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTkwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzo5MTA6XFx0XFx0cGh5ZGV2ID0gcGh5X2Nvbm5lY3QoZGV2LCBwaHlfaWQsIGJjbV9lbmV0X2FkanVzdF9waHlfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy05MTEtXFx0XFx0XFx0XFx0ICAgICBQSFlfSU5URVJGQUNFX01PREVfTUlJKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYz0xOTI4PXN0YXRpYyBpbnQgYmNtX3N5c3BvcnRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jLTE5NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jOjE5Njc6XFx0cGh5ZGV2ID0gb2ZfcGh5X2Nvbm5lY3QoZGV2LCBwcml2LVxcdTAwM2VwaHlfZG4sIGJjbV9zeXNwb3J0X2Fkal9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0xOTY4LVxcdFxcdFxcdFxcdDAsIHByaXYtXFx1MDAzZXBoeV9pbnRlcmZhY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jPTc5PXN0YXRpYyB2b2lkIGJjbWFfYmdtYWNfY21uX21hc2tzZXQzMihzdHJ1Y3QgYmdtYWMgKmJnbWFjLCB1MTYgb2Zmc2V0LCB1MzIgbWFzayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy04NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmM6ODU6c3RhdGljIGludCBiY21hX3BoeV9jb25uZWN0KHN0cnVjdCBiZ21hYyAqYmdtYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jLTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy05OS1cXHRcXHRcXHQgYmdtYWMtXFx1MDAzZXBoeWFkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYzoxMDA6XFx0XFx0cGh5X2RldiA9IHBoeV9jb25uZWN0KGJnbWFjLVxcdTAwM2VuZXRfZGV2LCBidXNfaWQsIGJnbWFjX2FkanVzdF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy0xMDEtXFx0XFx0XFx0XFx0ICAgICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmMtMTEwLVxcdC8qIEFzc3VtZSBhIGZpeGVkIGxpbmsgdG8gdGhlIHN3aXRjaCBwb3J0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jOjExMTpcXHRyZXR1cm4gYmdtYWNfcGh5X2Nvbm5lY3RfZGlyZWN0KGJnbWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmMtMTEyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYz0xMjQ9c3RhdGljIGludCBiZ21hY19wcm9iZShzdHJ1Y3QgYmNtYV9kZXZpY2UgKmNvcmUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmMtMzExLVxcdGJnbWFjLVxcdTAwM2VjbW5fbWFza3NldDMyID0gYmNtYV9iZ21hY19jbW5fbWFza3NldDMyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYzozMTI6XFx0YmdtYWMtXFx1MDAzZXBoeV9jb25uZWN0ID0gYmNtYV9waHlfY29ubmVjdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmMtMzEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYz0xMTg9c3RhdGljIHZvaWQgYmdtYWNfbmljcG1fc3BlZWRfc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0xNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYzoxNTE6c3RhdGljIGludCBwbGF0Zm9ybV9waHlfY29ubmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmMtMTUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmM9MTcxPXN0YXRpYyBpbnQgYmdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmMtMjQyLVxcdFxcdG9mX25vZGVfcHV0KHBoeV9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jOjI0MzpcXHRcXHRiZ21hYy1cXHUwMDNlcGh5X2Nvbm5lY3QgPSBwbGF0Zm9ybV9waHlfY29ubmVjdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jLTI0NC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmM6MjQ1OlxcdFxcdGJnbWFjLVxcdTAwM2VwaHlfY29ubmVjdCA9IGJnbWFjX3BoeV9jb25uZWN0X2RpcmVjdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jLTI0Ni1cXHRcXHRiZ21hYy1cXHUwMDNlZmVhdHVyZV9mbGFncyB8PSBCR01BQ19GRUFUX0ZPUkNFX1NQRUVEXzI1MDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jPTE0Mzc9RVhQT1JUX1NZTUJPTF9HUEwoYmdtYWNfYWRqdXN0X2xpbmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQzOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE0Mzk6aW50IGJnbWFjX3BoeV9jb25uZWN0X2RpcmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ0MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNDQxOlxcdHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzIGZwaHlfc3RhdHVzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ0Mi1cXHRcXHQubGluayA9IDEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNDQ5OlxcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXFx1MDAyNmZwaHlfc3RhdHVzLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NTAtXFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM6MTQ1NTpcXHRlcnIgPSBwaHlfY29ubmVjdF9kaXJlY3QoYmdtYWMtXFx1MDAzZW5ldF9kZXYsIHBoeV9kZXYsIGJnbWFjX2FkanVzdF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ1Ni1cXHRcXHRcXHRcXHQgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NjMtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM6MTQ2NDpFWFBPUlRfU1lNQk9MX0dQTChiZ21hY19waHlfY29ubmVjdF9kaXJlY3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM9MTQ4Nz1pbnQgYmdtYWNfZW5ldF9wcm9iZShzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM6MTUzMzpcXHRlcnIgPSBiZ21hY19waHlfY29ubmVjdChiZ21hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNTM0LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmg9NDM5PXN0cnVjdCBiZ21hYyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oLTQ5NS1cXHRcXHRcXHQgICAgICB1MzIgc2V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oOjQ5NjpcXHRpbnQgKCpwaHlfY29ubmVjdCkoc3RydWN0IGJnbWFjICpiZ21hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaC00OTctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmg9NTAyPXZvaWQgYmdtYWNfYWRqdXN0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmg6NTAzOmludCBiZ21hY19waHlfY29ubmVjdF9kaXJlY3Qoc3RydWN0IGJnbWFjICpiZ21hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuaC01MDQtaW50IGJnbWFjX2VuZXRfc3VzcGVuZChzdHJ1Y3QgYmdtYWMgKmJnbWFjKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmg9NTgzPXN0YXRpYyBpbmxpbmUgdm9pZCBiZ21hY191bWFjX21hc2tzZXQoc3RydWN0IGJnbWFjICpiZ21hYywgdTE2IG9mZnNldCwgdTMyIG1hc2ssIHUzMiBzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oLTU4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oOjU4ODpzdGF0aWMgaW5saW5lIGludCBiZ21hY19waHlfY29ubmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmgtNTg5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oOjU5MDpcXHRyZXR1cm4gYmdtYWMtXFx1MDAzZXBoeV9jb25uZWN0KGJnbWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5oLTU5MS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYz05Nz12b2lkIGJjbWdlbmV0X21paV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjExNzpzdGF0aWMgaW50IGJjbWdlbmV0X2ZpeGVkX3BoeV9saW5rX3VwZGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjExODpcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMTE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTE4Nj1zdGF0aWMgdm9pZCBiY21nZW5ldF9tb2NhX3BoeV9zZXR1cChzdHJ1Y3QgYmNtZ2VuZXRfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTE4OC1cXHRpZiAoYmNtZ2VuZXRfaGFzX21vY2FfbGlua19kZXQocHJpdikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6MTg5OlxcdFxcdGZpeGVkX3BoeV9zZXRfbGlua191cGRhdGUocHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VwaHlkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6MTkwOlxcdFxcdFxcdFxcdFxcdCAgYmNtZ2VuZXRfZml4ZWRfcGh5X2xpbmtfdXBkYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0xOTEtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MzAxPWludCBiY21nZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTM1MC1cXHRpZiAoZG4pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzozNTE6XFx0XFx0cGh5ZGV2ID0gb2ZfcGh5X2Nvbm5lY3QoZGV2LCBwcml2LVxcdTAwM2VwaHlfZG4sIGJjbWdlbmV0X21paV9zZXR1cCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0zNTItXFx0XFx0XFx0XFx0XFx0cGh5X2ZsYWdzLCBwaHlfaWZhY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMzgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjM4MTpcXHRcXHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LCBwaHlkZXYsIGJjbWdlbmV0X21paV9zZXR1cCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0zODItXFx0XFx0XFx0XFx0XFx0IHBoeV9pZmFjZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM9MjMyND1zdGF0aWMgaW50IHNibWFjX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jLTIzMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jOjIzMzU6XFx0cGh5X2RldiA9IHBoeV9jb25uZWN0KGRldiwgZGV2X25hbWUoXFx1MDAyNnBoeV9kZXYtXFx1MDAzZW1kaW8uZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjMzNi1cXHRcXHRcXHQgICAgICBcXHUwMDI2c2JtYWNfbWlpX3BvbGwsIFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTIwODQ9c3RhdGljIGludCB0ZzNfcGh5X2luaXQoc3RydWN0IHRnMyAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0yMDk2LVxcdC8qIEF0dGFjaCB0aGUgTUFDIHRvIHRoZSBQSFkuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MjA5NzpcXHRwaHlkZXYgPSBwaHlfY29ubmVjdCh0cC1cXHUwMDNlZGV2LCBwaHlkZXZfbmFtZShwaHlkZXYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTIwOTgtXFx0XFx0XFx0ICAgICB0ZzNfYWRqdXN0X2xpbmssIHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9OTgyPXN0YXRpYyBpbnQgbWFjYl9waHlsaW5rX2Nvbm5lY3Qoc3RydWN0IG1hY2IgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05ODktXFx0aWYgKGRuKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTkwOlxcdFxcdHJldCA9IHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoYnAtXFx1MDAzZXBoeWxpbmssIGRuLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDg2OlxcdGJwLVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmJwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVxcdFxcdFxcdFxcdCAgICAgYnAtXFx1MDAzZXBoeV9pbnRlcmZhY2UsIFxcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYz05NDU9c3RhdGljIGludCBvY3Rlb25fbWdtdF9pbml0X3BoeShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jLTk1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmM6OTU2OlxcdHBoeWRldiA9IG9mX3BoeV9jb25uZWN0KG5ldGRldiwgcC1cXHUwMDNlcGh5X25wLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYy05NTctXFx0XFx0XFx0XFx0b2N0ZW9uX21nbXRfYWRqdXN0X2xpbmssIDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci90aHVuZGVyX2JneC5jPTEwNTU9c3RhdGljIGludCBiZ3hfbG1hY19lbmFibGUoc3RydWN0IGJneCAqYmd4LCB1OCBsbWFjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci90aHVuZGVyX2JneC5jLTExMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvdGh1bmRlcl9iZ3guYzoxMTIwOlxcdFxcdGlmIChwaHlfY29ubmVjdF9kaXJlY3QobG1hYy1cXHUwMDNlbmV0ZGV2LCBsbWFjLVxcdTAwM2VwaHlkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvdGh1bmRlcl9iZ3guYy0xMTIxLVxcdFxcdFxcdFxcdCAgICAgICBiZ3hfbG1hY19oYW5kbGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz0xMTMyPXN0YXRpYyB2b2lkIGRtOTA1MV9oYW5kbGVfbGlua19jaGFuZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExNTEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzoxMTUyOnN0YXRpYyBpbnQgZG05MDUxX3BoeV9jb25uZWN0KHN0cnVjdCBib2FyZF9pbmZvICpkYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMTU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM6MTE1OTpcXHRkYi1cXHUwMDNlcGh5ZGV2ID0gcGh5X2Nvbm5lY3QoZGItXFx1MDAzZW5kZXYsIHBoeV9pZCwgZG05MDUxX2hhbmRsZV9saW5rX2NoYW5nZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExNjAtXFx0XFx0XFx0XFx0IFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz0xMTY0PXN0YXRpYyBpbnQgZG05MDUxX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTEyMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzoxMjA5OlxcdHJldCA9IGRtOTA1MV9waHlfY29ubmVjdChkYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMjEwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjQxPXN0YXRpYyBpbnQgdHNuZXBfcGh5X29wZW4oc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyNDc6XFx0cmV0dmFsID0gcGh5X2Nvbm5lY3RfZGlyZWN0KGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgYWRhcHRlci1cXHUwMDNlcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDgtXFx0XFx0XFx0XFx0ICAgIHRzbmVwX3BoeV9saW5rX3N0YXR1c19jaGFuZ2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTY5OT1zdGF0aWMgaW50IGV0aG9jX21kaW9fcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtNzE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6NzE2OlxcdGVyciA9IHBoeV9jb25uZWN0X2RpcmVjdChkZXYsIHBoeSwgZXRob2NfbWRpb19wb2xsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtNzE3LVxcdFxcdFxcdFxcdCBQSFlfSU5URVJGQUNFX01PREVfR01JSSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTQzPXN0cnVjdCBmdGdtYWMxMDBfbWF0Y2hfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTY2LS8qIEZvciBOQy1TSSB0byByZWdpc3RlciBhIGZpeGVkLWxpbmsgcGh5IGRldmljZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6Njc6c3RhdGljIHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzIG5jc2lfcGh5X3N0YXR1cyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTY4LVxcdC5saW5rID0gMSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTQ5Nz1zdGF0aWMgaW50IGZ0Z21hYzEwMF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTU0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE1NDI6XFx0cGh5ZGV2ID0gcGh5X2Nvbm5lY3QobmV0ZGV2LCBwaHlkZXZfbmFtZShwaHlkZXYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTU0My1cXHRcXHRcXHQgICAgIFxcdTAwMjZmdGdtYWMxMDBfYWRqdXN0X2xpbmssIHBoeV9pbnRmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTc4MD1zdGF0aWMgdm9pZCBmdGdtYWMxMDBfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc5Mi1cXHRpZiAocHJpdi1cXHUwMDNldXNlX25jc2kpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxNzkzOlxcdFxcdGZpeGVkX3BoeV91bnJlZ2lzdGVyKHBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzk0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTg0OD1zdGF0aWMgaW50IGZ0Z21hYzEwMF9wcm9iZV9uY3NpKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxODY3OlxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2bmNzaV9waHlfc3RhdHVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODY4LVxcdGlmIChJU19FUlIocGh5ZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODcyLVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE4NzM6XFx0ZXJyID0gcGh5X2Nvbm5lY3RfZGlyZWN0KG5ldGRldiwgcGh5ZGV2LCBmdGdtYWMxMDBfYWRqdXN0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODc0LVxcdFxcdFxcdFxcdCBQSFlfSU5URVJGQUNFX01PREVfUk1JSSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4ODEtZXJyX3JlZ2lzdGVyX3BoeTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE4ODI6XFx0Zml4ZWRfcGh5X3VucmVnaXN0ZXIocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4ODMtZXJyX3JlZ2lzdGVyX25kZXY6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3NC1cXHRtYWNfZGV2LVxcdTAwM2V1cGRhdGVfc3BlZWQgPSBkcGFhX2V0aF9jZ3Jfc2V0X3NwZWVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM6Mjc1OlxcdG1hY19kZXYtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjX2Rldi1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzYtXFx0XFx0XFx0XFx0XFx0ICBkZXZfZndub2RlKG1hY19kZXYtXFx1MDAzZWRldiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTI5NDE9c3RhdGljIGludCBkcGFhX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI5NTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYzoyOTUxOlxcdGVyciA9IHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QobWFjX2Rldi1cXHUwMDNlcGh5bGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI5NTItXFx0XFx0XFx0XFx0ICAgICBtYWNfZGV2LVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGUsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTU2MD1pbnQgZHBhYTJfbWFjX2Nvbm5lY3Qoc3RydWN0IGRwYWEyX21hYyAqbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NjI1OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI2LVxcdFxcdFxcdFxcdCBkcG1hY19ub2RlLCBtYWMtXFx1MDAzZWlmX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjM0LVxcdHJ0bmxfbG9jaygpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MzU6XFx0ZXJyID0gcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QobWFjLVxcdTAwM2VwaHlsaW5rLCBkcG1hY19ub2RlLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjM2LVxcdHJ0bmxfdW5sb2NrKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYzNy1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjYzODpcXHRcXHRuZXRkZXZfZXJyKG5ldF9kZXYsIFxcXCJwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCgpID0gJWRcXFxcblxcXCIsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYzOS1cXHRcXHRnb3RvIGVycl9waHlsaW5rX2Rlc3Ryb3k7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYz0yOTM1PXN0YXRpYyBpbnQgZW5ldGNfcGh5bGlua19jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmMtMjk0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYzoyOTQ3OlxcdGVyciA9IHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QocHJpdi1cXHUwMDNlcGh5bGluaywgcHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYy0yOTQ4LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jPTMwMTA9aW50IGVuZXRjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYy0zMDI4LVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmM6MzAyOTpcXHRcXHRnb3RvIGVycl9waHlfY29ubmVjdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYy0zMDMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmMtMzA1NS1cXHRcXHRwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jOjMwNTY6ZXJyX3BoeV9jb25uZWN0OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jLTMwNTctXFx0ZW5ldGNfZnJlZV9pcnFzKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTkyMz1zdGF0aWMgaW50IGVuZXRjNF9saW5rX2luaXQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk0MjpcXHRlcnIgPSBlbmV0Y19waHlsaW5rX2NyZWF0ZShwcml2LCBub2RlLCBcXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0My1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0NC1cXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk0NTpcXHRcXHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTQ2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk1MDplcnJfcGh5bGlua19jcmVhdGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1MS1cXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9Nzg1PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04NjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6ODY4OlxcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFxcdTAwMjZlbmV0Y19tYWNfcGh5bGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg2OS1cXHRpZiAoZXJyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjg3MDpcXHRcXHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04NzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04NzktXFx0ZW5ldGNfcGh5bGlua19kZXN0cm95KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjg4MDplcnJfcGh5bGlua19jcmVhdGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODgxLVxcdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9NDE5PUVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX21kaW9idXNfZGVzdHJveSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDIxOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQyMi1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ2MS1cXHRwZi1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IG1hY19jYXBzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzo0NjI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwZi1cXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ2My1cXHRcXHRcXHRcXHQgcGYtXFx1MDAzZWlmX21vZGUsIG9wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDcyLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDczOkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaDoxMzppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaC0xNC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTI5ODE9c3RhdGljIGludCBmZWNfZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0yOTg3LVxcdGlmIChmZXAtXFx1MDAzZXBoeV9ub2RlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6Mjk4ODpcXHRcXHRwaHlfZGV2ID0gb2ZfcGh5X2Nvbm5lY3QobmRldiwgZmVwLVxcdTAwM2VwaHlfbm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0yOTg5LVxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2ZmVjX2VuZXRfYWRqdXN0X2xpbmssIDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMDAyLVxcdFxcdFxcdG5ldGRldl9pbmZvKG5kZXYsIFxcXCJubyBQSFksIGFzc3VtaW5nIGRpcmVjdCBjb25uZWN0aW9uIHRvIHN3aXRjaFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6MzAwMzpcXHRcXHRcXHRwaHlfZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwNC1cXHRcXHRcXHRpZiAoSVNfRVJSKHBoeV9kZXYpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMDA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMTA6XFx0XFx0cmV0ID0gcGh5X2Nvbm5lY3RfZGlyZWN0KG5kZXYsIHBoeV9kZXYsIFxcdTAwMjZmZWNfZW5ldF9hZGp1c3RfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMDExLVxcdFxcdFxcdFxcdFxcdCBmZXAtXFx1MDAzZXBoeV9pbnRlcmZhY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAxMy1cXHRcXHRcXHRpZiAocGh5X2lzX3BzZXVkb19maXhlZF9saW5rKHBoeV9kZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMTQ6XFx0XFx0XFx0XFx0Zml4ZWRfcGh5X3VucmVnaXN0ZXIocGh5X2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAxNS1cXHRcXHRcXHRuZXRkZXZfZXJyKG5kZXYsIFxcXCJjb3VsZCBub3QgYXR0YWNoIHRvIFBIWVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00MjI4PWZlY19lbmV0X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDI0My1cXHRpZiAoIWZlcC1cXHUwMDNlcGh5X25vZGUgXFx1MDAyNlxcdTAwMjYgcGh5X2lzX3BzZXVkb19maXhlZF9saW5rKHBoeV9kZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjQyNDQ6XFx0XFx0Zml4ZWRfcGh5X3VucmVnaXN0ZXIocGh5X2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDI0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jPTIxNj1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jLTIyMi1cXHRpZiAocHJpdi1cXHUwMDNlcGh5X25vZGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYzoyMjM6XFx0XFx0cGh5ZGV2ID0gb2ZfcGh5X2Nvbm5lY3QocHJpdi1cXHUwMDNlbmRldiwgcHJpdi1cXHUwMDNlcGh5X25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmMtMjI0LVxcdFxcdFxcdFxcdFxcdG1wYzUyeHhfZmVjX2FkanVzdF9saW5rLCAwLCAwKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MjIuNDQ2MTAwMTgzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYyOTAzMDMzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFVTQiBFdGhlcm5ldCBhbmQgTmV0d29ya2luZyBEZXZpY2UgRHJpdmVyIEFyY2hpdGVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgVVNCIEV0aGVybmV0IGRldmljZXMgYXJlIGFyY2hpdGVjdGVkIGluIHRoaXMgc3lzdGVtLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBwaHlzaWNhbCBsYXllci4gVGhlIGNvcmUgcXVlc3Rpb25zIGFyZTogZG8gdGhlc2UgZHJpdmVycywgdGhpbmdzIGxpa2UgYGNkY19uY21gLCBgYXNpeGAsIGB1c2JuZXRgLCBldmVuIHNpbXVsYXRlZCBkZXZpY2VzIGxpa2UgYG5ldGRldnNpbWAsIGBkdW1teWAsIG9yIGB2aXJ0aW9gLCBsZXZlcmFnZSBgcGh5bGliYCBpbiB0aGVpciBpbXBsZW1lbnRhdGlvbj8gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgcGh5c2ljYWwgbGluayBtYW5hZ2VtZW50IGluIHRoZXNlIGNvbmZpZ3VyYXRpb25zLlxuXG5NeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBncmVwIGZvciBpbnN0YW5jZXMgb2YgYHBoeV9jb25uZWN0YCBvciBgcGh5bGlua2Agd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIgZGlyZWN0b3JpZXMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgVVNCIEV0aGVybmV0IGRyaXZlcnMgdW5kZXIgYGRyaXZlcnMvbmV0L3VzYi9gLCBhbnkgc2ltdWxhdGlvbiBvciB0ZXN0IGRyaXZlcnMgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9gLCBhbmQgbWF5YmUgdGhlIGBkdW1teS5jYCBhbmQgc2ltaWxhciBmaWxlcyB0byBzZWUgaG93IHRoZXkncmUgaGFuZGxpbmcgUEhZIGludGVyYWN0aW9ucyAob3IgaWYgdGhleSdyZSBhYnN0cmFjdGluZyBpdCBlbnRpcmVseSkuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBwaWN0dXJlIG9mIHdoZXRoZXIgYW5kIGhvdyB0aGV5J3JlIHVzaW5nIHBoeWxpYiBmb3IgcGh5c2ljYWwgbGF5ZXIgbWFuYWdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyNDEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MjUuMDc1MTMyNDgzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzA1MjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIihwaHlfY29ubmVjdHxwaHlsaW5rfHBoeV9hdHRhY2gpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeC5oLTI5LSNpbmNsdWRlIFxcdTAwM2NuZXQvc2VsZnRlc3RzLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDozMDojaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5bGluay5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMzEtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oPTE3OD1zdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4Ny1cXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2X2ludDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4ODpcXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4OTpcXHRzdHJ1Y3QgcGh5bGlua19jb25maWcgcGh5bGlua19jb25maWc7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xOTAtXFx0dTE2IHBoeV9hZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTI5ND1zdGF0aWMgdm9pZCBheDg4NzcyX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjk5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMDA6XFx0cGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKHByaXYtXFx1MDAzZXBoeWxpbmssIHBhdXNlKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzAxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zMDM9c3RhdGljIGludCBheDg4NzcyX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzA4LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMDk6XFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbShwcml2LVxcdTAwM2VwaHlsaW5rLCBwYXVzZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTMxMC19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzMyPXN0YXRpYyBpbnQgYXg4ODc3Ml9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzUzLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozNTQ6XFx0cGh5bGlua19zdGFydChwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzU1LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTU5Nj1zdGF0aWMgdm9pZCBheDg4NzcyX3N1c3BlbmQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYwMi1cXHRcXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjAzOlxcdFxcdHBoeWxpbmtfc3VzcGVuZChwcml2LVxcdTAwM2VwaHlsaW5rLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYwNC1cXHRcXHRydG5sX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYyMi0gKlxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2MjM6ICogLSBUaGUgTUFDIGRyaXZlciBtdXN0IGhvbGQgUlROTCB3aGVuIGNhbGxpbmcgcGh5bGluayBpbnRlcmZhY2VzIHN1Y2ggYXNcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjI0OiAqICAgcGh5bGlua19zdXNwZW5kKCkvcmVzdW1lKCkuIFRob3NlIGNhbGxzIHdpbGwgYWxzbyBwZXJmb3JtIE1ESU8gSS9PLlxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02MjUtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02NDI9c3RhdGljIHZvaWQgYXg4ODc3Ml9yZXN1bWUoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY1Mi1cXHRcXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjUzOlxcdFxcdHBoeWxpbmtfcmVzdW1lKHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02NTQtXFx0XFx0cnRubF91bmxvY2soKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03MDM9c3RhdGljIGludCBheDg4NzcyX2luaXRfcGh5KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTMtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcxNDpcXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXFx1MDAzZXBoeWxpbmssIHByaXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzIyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MjM6XFx0cGh5X2F0dGFjaGVkX2luZm8ocHJpdi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzI0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTczNC1cXHRcXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzM1OlxcdFxcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkocHJpdi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTczNi1cXHRcXHRydG5sX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzQ3OnN0YXRpYyB2b2lkIGF4ODg3NzJfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc0ODpcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NTItXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc1MzpzdGF0aWMgdm9pZCBheDg4NzcyX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc1NC1cXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzYxLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NjI6c3RhdGljIHZvaWQgYXg4ODc3Ml9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzYzLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc5Mi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzkzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGF4ODg3NzJfcGh5bGlua19tYWNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03OTQtXFx0Lm1hY19jb25maWcgPSBheDg4NzcyX21hY19jb25maWcsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzk4LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3OTk6c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MDAte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwMi1cXHRwaHlfaW50ZXJmYWNlX3QgcGh5X2lmX21vZGU7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwMzpcXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODA0LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MDU6XFx0cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcuZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNjpcXHRwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNzpcXHRwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gTUFDX1NZTV9QQVVTRSB8IE1BQ19BU1lNX1BBVVNFIHxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODA4LVxcdFxcdE1BQ18xMCB8IE1BQ18xMDA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODEwLVxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxMTpcXHRcXHQgIHByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODEyLVxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfUk1JSSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODEzOlxcdFxcdCAgcHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTQtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjA6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMTpcXHRcXHRcXHRcXHQgcGh5X2lmX21vZGUsIFxcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMjpcXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjM6XFx0XFx0cmV0dXJuIFBUUl9FUlIocGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyNC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODI1OlxcdHByaXYtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjYtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9ODI5PXN0YXRpYyBpbnQgYXg4ODc3Ml9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTIwLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MjE6XFx0cmV0ID0gYXg4ODc3Ml9waHlsaW5rX3NldHVwKGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyMi1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MjM6XFx0XFx0Z290byBwaHlsaW5rX2VycjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTI0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzMS1cXHQgKiB0aGF0IGNvdWxkIGRlYWRsb2NrIChhdXRvcmVzdW1lIHVuZGVyIFJUTkwgd2hpbGUgVVNCIFBNIGxvY2tcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTMyOlxcdCAqIGlzIGhlbGQsIHBoeWxpbmsvTURJTyB3YW50cyBSVE5MKS5cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTMzLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzOC1pbml0cGh5X2VycjpcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTM5OlxcdHBoeWxpbmtfZGVzdHJveShwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTQwOnBoeWxpbmtfZXJyOlxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NDEtXFx0YXg4ODc3Ml9tZGlvX3VucmVnaXN0ZXIocHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTQ2PXN0YXRpYyBpbnQgYXg4ODc3Ml9zdG9wKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NDktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk1MDpcXHRwaHlsaW5rX3N0b3AocHJpdi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk1MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05NTU9c3RhdGljIHZvaWQgYXg4ODc3Ml91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NTktXFx0cnRubF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk2MDpcXHRwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NjEtXFx0cnRubF91bmxvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTYyOlxcdHBoeWxpbmtfZGVzdHJveShwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTYzLVxcdGF4ODg3NzJfbWRpb191bnJlZ2lzdGVyKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MjYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzEzLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjMxNDpcXHRwcml2LVxcdTAwM2VwaHlkZXYgPSBwaHlfY29ubmVjdChkZXYtXFx1MDAzZW5ldCwgcHJpdi1cXHUwMDNlcGh5X25hbWUsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzE1LVxcdFxcdFxcdFxcdCAgIFxcdTAwMjZheDg4MTcyYV9hZGp1c3RfbGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtOC0jaW5jbHVkZSBcXHUwMDNjbGludXgvZXRodG9vbC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6OTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5bGluay5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzYi5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz00MTM9c3RydWN0IGxhbjc4eHhfbmV0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDY2LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6NDY3OlxcdHN0cnVjdCBwaHlsaW5rXFx0XFx0KnBoeWxpbms7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo0Njg6XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnXFx0cGh5bGlua19jb25maWc7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy00NjktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTgxNj1zdGF0aWMgaW50IGxhbjc4eHhfZ2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICplZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTgxOS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE4MjA6XFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKGRldi1cXHUwMDNlcGh5bGluaywgZWRhdGEpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTgyMS19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE4MjM9c3RhdGljIGludCBsYW43OHh4X3NldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZWRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4MjYtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxODI3OlxcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZShkZXYtXFx1MDAzZXBoeWxpbmssIGVkYXRhKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4MjgtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0xODUzPXN0YXRpYyBpbnQgbGFuNzh4eF9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTg1Ny1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE4NTg6XFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KGRldi1cXHUwMDNlcGh5bGluaywgY21kKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4NTktfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0xODYxPXN0YXRpYyBpbnQgbGFuNzh4eF9zZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTg2NS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE4NjY6XFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KGRldi1cXHUwMDNlcGh5bGluaywgY21kKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4NjctfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0xODY5PXN0YXRpYyB2b2lkIGxhbjc4eHhfZ2V0X3BhdXNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4NzMtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxODc0OlxcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbShkZXYtXFx1MDAzZXBoeWxpbmssIHBhdXNlKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4NzUtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0xODc3PXN0YXRpYyBpbnQgbGFuNzh4eF9zZXRfcGF1c2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTg4MS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE4ODI6XFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbShkZXYtXFx1MDAzZXBoeWxpbmssIHBhdXNlKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE4ODMtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yMjU5PXN0YXRpYyB2b2lkIGxhbjc4eHhfcmVtb3ZlX2lycV9kb21haW4oc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIyNzAtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMjcxOnN0YXRpYyB2b2lkIGxhbjc4eHhfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMjcyOlxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIyNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMzA1LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjMwNjpzdGF0aWMgdm9pZCBsYW43OHh4X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMzA3LVxcdFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI0MzI9c3RhdGljIGludCBsYW43OHh4X2NvbmZpZ3VyZV9mbG93Y29udHJvbChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjQ3Ni1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI0Nzc6c3RhdGljIHZvaWQgbGFuNzh4eF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI0NzgtXFx0XFx0XFx0XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjU3MT1zdGF0aWMgaW50IGxhbjc4eHhfbWFjX2VlZV9lbmFibGUoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYsIGJvb2wgZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNTgwLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjU4MTpzdGF0aWMgdm9pZCBsYW43OHh4X21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI1ODIte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNTg4LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjU4OTpzdGF0aWMgaW50IGxhbjc4eHhfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHUzMiB0aW1lcixcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI1OTAtXFx0XFx0XFx0XFx0ICAgICBib29sIHR4X2Nsa19zdG9wKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNTk3LVxcdCAqIEV0aGVybmV0IEVuYWJsZSAoRUVFRU4pIGlzIGNsZWFyZWQuIFdlIGVuc3VyZSB0aGF0IGJ5IGNsZWFyaW5nXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyNTk4OlxcdCAqIEVFRUVOIGR1cmluZyBwcm9iZSwgYW5kIHBoeWxpbmsgaXRzZWxmIGd1YXJhbnRlZXMgdGhhdFxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjU5OS1cXHQgKiBtYWNfZGlzYWJsZV90eF9scGkoKSB3aWxsIGhhdmUgYmVlbiBwcmV2aW91c2x5IGNhbGxlZC5cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjYwNy1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI2MDg6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzh4eF9waHlsaW5rX21hY19vcHMgPSB7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNjA5LVxcdC5tYWNfY29uZmlnID0gbGFuNzh4eF9tYWNfY29uZmlnLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yNjI2PXN0YXRpYyBpbnQgbGFuNzh4eF9zZXRfZml4ZWRfbGluayhzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2Mjcte1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjYyODpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSBzdGF0ZSA9IHtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2MjktXFx0XFx0LnNwZWVkID0gU1BFRURfMTAwMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjYzNS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI2MzY6XFx0cmV0dXJuIHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoZGV2LVxcdTAwM2VwaHlsaW5rLCBcXHUwMDI2c3RhdGUpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjYzNy19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3Njk9c3RhdGljIGludCBsYW43OHh4X2NvbmZpZ3VyZV9sZWRzX2Zyb21fZHQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI3OTgtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyNzk5OnN0YXRpYyBpbnQgbGFuNzh4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgwMC17XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODAxOlxcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqcGMgPSBcXHUwMDI2ZGV2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZztcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4MDI6XFx0c3RydWN0IHBoeWxpbmsgKnBoeWxpbms7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODAzLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODM0LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjgzNTpcXHRtZW1jcHkoZGV2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyxcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4MzY6XFx0ICAgICAgIGRldi1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMsXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM3OlxcdCAgICAgICBzaXplb2YoZGV2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcykpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgzOC1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4Mzk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4NDA6XFx0XFx0XFx0XFx0IGRldi1cXHUwMDNlaW50ZXJmYWNlLCBcXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6Mjg0MTpcXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6Mjg0MjpcXHRcXHRyZXR1cm4gUFRSX0VSUihwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDMtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODQ0OlxcdGRldi1cXHUwMDNlcGh5bGluayA9IHBoeWxpbms7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yODQ5PXN0YXRpYyB2b2lkIGxhbjc4eHhfcGh5X3VuaW5pdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NTAte1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6Mjg1MTpcXHRpZiAoZGV2LVxcdTAwM2VwaHlsaW5rKSB7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODUyOlxcdFxcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkoZGV2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4NTM6XFx0XFx0cGh5bGlua19kZXN0cm95KGRldi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODU0OlxcdFxcdGRldi1cXHUwMDNlcGh5bGluayA9IE5VTEw7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODU1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjg1OD1zdGF0aWMgaW50IGxhbjc4eHhfcGh5X2luaXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NzAtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODcxOlxcdHJldCA9IGxhbjc4eHhfcGh5bGlua19zZXR1cChkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg3Mi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg3Ni1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4Nzc6XFx0XFx0Z290byBwaHlsaW5rX3VuaW5pdDtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NzgtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4ODYtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODg3OlxcdFxcdFxcdGdvdG8gcGh5bGlua191bmluaXQ7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODg4LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg4OS1cXHRcXHQvKiBObyBQSFkgZm91bmQsIHNvIHNldCB1cCBhIGZpeGVkIGxpbmsgYW5kIHJldHVybiBlYXJseS5cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4OTA6XFx0XFx0ICogTm8gbmVlZCB0byBjb25maWd1cmUgUEhZIElSUSBvciBhdHRhY2ggdG8gcGh5bGluay5cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4OTEtXFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDEtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyOTAyOlxcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkoZGV2LVxcdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjkwMy1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDUtXFx0XFx0XFx0ICAgZGV2LVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VpZCwgRVJSX1BUUihyZXQpKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI5MDY6XFx0XFx0Z290byBwaHlsaW5rX3VuaW5pdDtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTEwLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjkxMTpcXHRcXHRnb3RvIHBoeWxpbmtfdW5pbml0O1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjkxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjkxNC1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI5MTU6cGh5bGlua191bmluaXQ6XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOTE2LVxcdGxhbjc4eHhfcGh5X3VuaW5pdChkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zNDYyPXN0YXRpYyBpbnQgbGFuNzh4eF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTM0OTAtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozNDkxOlxcdHBoeWxpbmtfc3RhcnQoZGV2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTM0OTItXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTM1Mzg9c3RhdGljIGludCBsYW43OHh4X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5ldClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzU1OC1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjM1NTk6XFx0cGh5bGlua19zdG9wKGRldi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zNTYwLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz00NTcxPXN0YXRpYyB2b2lkIGxhbjc4eHhfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDU4My1cXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjQ1ODQ6XFx0cGh5bGlua19zdG9wKGRldi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo0NTg1OlxcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkoZGV2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTQ1ODYtXFx0cnRubF91bmxvY2soKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDU5My1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjQ1OTQ6XFx0cGh5bGlua19kZXN0cm95KGRldi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy00NTk1LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz01MTE1PXN0YXRpYyBpbnQgbGFuNzh4eF9zdXNwZW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBwbV9tZXNzYWdlX3QgbWVzc2FnZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNTE0Mi1cXHRcXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjUxNDM6XFx0XFx0cGh5bGlua19zdXNwZW5kKGRldi1cXHUwMDNlcGh5bGluaywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNTE0NC1cXHRcXHRydG5sX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz01MzYyPXN0YXRpYyBpbnQgbGFuNzh4eF9yZXNldF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTUzNzctXFx0cnRubF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo1Mzc4OlxcdHBoeWxpbmtfcmVzdW1lKGRldi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy01Mzc5LVxcdHJ0bmxfdW5sb2NrKCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYz0xMTQ3PXN0YXRpYyBpbnQgc21zYzk1eHhfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI4NC1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoxMjg1OlxcdHJldCA9IHBoeV9jb25uZWN0X2RpcmVjdChkZXYtXFx1MDAzZW5ldCwgcGRhdGEtXFx1MDAzZXBoeWRldixcXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMjg2LVxcdFxcdFxcdFxcdCBcXHUwMDI2c21zYzk1eHhfaGFuZGxlX2xpbmtfY2hhbmdlLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI5Mi1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoxMjkzOlxcdHBoeV9hdHRhY2hlZF9pbmZvKGRldi1cXHUwMDNlbmV0LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyOTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjQ2OjI1LjEyNDQ0MjkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgwNTQzNTI2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBVU0IgRXRoZXJuZXQgRHJpdmVyIFRlc3RpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZXNlIFVTQiBFdGhlcm5ldCBkcml2ZXJzIGFyZSB0ZXN0ZWQgYW5kIHdoYXQgdGVjaG5pcXVlcyBhcmUgYmVpbmcgdXNlZC4gU3BlY2lmaWNhbGx5LCBkcml2ZXJzIGxpa2UgYGFzaXhgLCBgYXg4ODE3MmFgLCBgbGFuNzh4eGAsIGFuZCBgc21zYzk1eHhgIGFyZSBpbiB0aGUgc3BvdGxpZ2h0LiBJIHNlZSB0aGF0IHRoZXJlIGFyZSBtdWx0aXBsZSBhbmdsZXMgZm9yIHByb2JpbmcgdGhlc2UgZHJpdmVyczogdXNpbmcgVVNCIGVtdWxhdGlvbiDigJMgd2hpY2ggaW5jbHVkZXMgcmF3LWdhZGdldCwgdXNiLWZ1enplciwgYW5kIGV2ZW4gc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIOKAkyBvciBieSB1c2luZyB2aXJ0dWFsIGRldmljZXMuIEZ1cnRoZXJtb3JlLCBgZHNhX2xvb3BgLCBgZml4ZWRfcGh5YCwgYW5kIG90aGVyIG5ldCBkZXZpY2VzIGNhbiBhbHNvIGJlIGJyb3VnaHQgaW50byBwbGF5IVxuXG5JIHJlY29nbml6ZSB0aGF0IHRoZSBzdGFuZGFyZCB2aXJ0dWFsIG5ldHdvcmtpbmcgc2V0dXAgYW5kIHRoZSBVU0IgZ2FkZ2V0IG5ldHdvcmtpbmcgd2l0aGluIHN5emthbGxlciBhcmUgYWxyZWFkeSBxdWl0ZSBlZmZlY3RpdmUgYXQgcmVndWxhcmx5IGV4ZXJjaXNpbmcgdGhlc2UgVVNCIG5ldCBkcml2ZXJzLiBUaGV5J3JlIHRyaWdnZXJpbmcgY2FsbHMgdG8gaW1wb3J0YW50IFBIWSBmdW5jdGlvbnMgbGlrZSBgcGh5bGlua19jb25uZWN0X3BoeWAsIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYHBoeV9jb25uZWN0YCwgYHBoeV9hdHRhY2hfZGlyZWN0YCwgYW5kIGBwaHlfcHJvYmVgLlxuXG5HaXZlbiB0aGlzIGNvbnRleHQsIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyB0byBnYWluIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcuIFRvIGRvIHRoYXQsIEknbSBnb2luZyB0byBjb25zdWx0IGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBJJ20gZ29pbmcgdG8gZm9jdXMgb24gYW55IHJlY2VudCBjaGFuZ2VzIGluIHRoZXNlIGZpbGVzLiBSZWFkaW5nIHRocm91Z2ggdGhlbSB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoZSBidWcgb3IgdGhlIGZpeCwgYW5kIGFueSBvdGhlciByZWxldmFudCBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzk0OSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjoyNy45Mjk4ODAzNzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ4NTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTczMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTczMDpcXHRcXHRyZXR1cm4gcmV0O1xcbjE3MzE6XFx0fVxcbjE3MzI6XFx0XFxuMTczMzpcXHRzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxcbjE3MzQ6XFx0e1xcbjE3MzU6XFx0XFx0cmV0dXJuIHBoeWRydi1cXHUwMDNlY29uZmlnX2ludHIgXFx1MDAyNlxcdTAwMjYgcGh5ZHJ2LVxcdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xcbjE3MzY6XFx0fVxcbjE3Mzc6XFx0XFxuMTczODpcXHQvKiBHaXZlIGJhY2sgd2hhdCBwaHlfcHJvYmUoKSB0b29rLCBidXQgbm90IHdoaWxlIHBoeV9saW5rX2NoYW5nZSBtYXJrcyBhXFxuMTczOTpcXHQgKiBjb25zdW1lcjogaXQgc2tpcHBlZCBwaHlfcmVxdWVzdF9pbnRlcnJ1cHQoKSBvbiB0aGUgdmFsdWUgaXQgc2F3LCBzb1xcbjE3NDA6XFx0ICogcGh5X2Rpc2Nvbm5lY3QoKSB3b3VsZCBmcmVlIGFuIGludGVycnVwdCBub2JvZHkgcmVxdWVzdGVkLlxcbjE3NDE6XFx0ICovXFxuMTc0MjpcXHRzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9wcm9iZV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4xNzQzOlxcdHtcXG4xNzQ0OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZXBoeV9saW5rX2NoYW5nZSB8fCBwaHlkZXYtXFx1MDAzZWlycV9zYXZlZCA9PSBQSFlfUE9MTClcXG4xNzQ1OlxcdFxcdFxcdHJldHVybjtcXG4xNzQ2OlxcdFxcbjE3NDc6XFx0XFx0cGh5ZGV2LVxcdTAwM2VpcnEgPSBwaHlkZXYtXFx1MDAzZWlycV9zYXZlZDtcXG4xNzQ4OlxcdFxcdHBoeWRldi1cXHUwMDNlaXJxX3NhdmVkID0gUEhZX1BPTEw7XFxuMTc0OTpcXHR9XFxuMTc1MDpcXHRcXG4xNzUxOlxcdC8qKlxcbjE3NTI6XFx0ICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxcbjE3NTM6XFx0ICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXFxuMTc1NDpcXHQgKiBAcGh5ZGV2OiBQb2ludGVyIHRvIHBoeV9kZXZpY2UgdG8gYXR0YWNoXFxuMTc1NTpcXHQgKiBAZmxhZ3M6IFBIWSBkZXZpY2UncyBkZXZfZmxhZ3NcXG4xNzU2OlxcdCAqIEBpbnRlcmZhY2U6IFBIWSBkZXZpY2UncyBpbnRlcmZhY2VcXG4xNzU3OlxcdCAqXFxuMTc1ODpcXHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGRyaXZlcnMgdG8gYXR0YWNoIHRvIGEgcGFydGljdWxhciBQSFlcXG4xNzU5OlxcdCAqICAgICBkZXZpY2UuIFRoZSBwaHlfZGV2aWNlIGlzIGZvdW5kLCBhbmQgcHJvcGVybHkgaG9va2VkIHVwXFxuMTc2MDpcXHQgKiAgICAgdG8gdGhlIHBoeV9kcml2ZXIuICBJZiBubyBkcml2ZXIgaXMgYXR0YWNoZWQsIHRoZW4gYVxcbjE3NjE6XFx0ICogICAgIGdlbmVyaWMgZHJpdmVyIGlzIHVzZWQuICBUaGUgcGh5X2RldmljZSBpcyBnaXZlbiBhIHB0ciB0b1xcbjE3NjI6XFx0ICogICAgIHRoZSBhdHRhY2hpbmcgZGV2aWNlLCBhbmQgZ2l2ZW4gYSBjYWxsYmFjayBmb3IgbGluayBzdGF0dXNcXG4xNzYzOlxcdCAqICAgICBjaGFuZ2UuICBUaGUgcGh5X2RldmljZSBpcyByZXR1cm5lZCB0byB0aGUgYXR0YWNoaW5nIGRyaXZlci5cXG4xNzY0OlxcdCAqICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgcmVmZXJlbmNlIG9uIHRoZSBwaHkgZGV2aWNlLlxcbjE3NjU6XFx0ICovXFxuMTc2NjpcXHRpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4xNzY3OlxcdFxcdFxcdCAgICAgIHUzMiBmbGFncywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4xNzY4OlxcdHtcXG4xNzY5OlxcdFxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzO1xcbjE3NzA6XFx0XFx0c3RydWN0IGRldmljZSAqZCA9IFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2O1xcbjE3NzE6XFx0XFx0c3RydWN0IG1vZHVsZSAqbmRldl9vd25lciA9IE5VTEw7XFxuMTc3MjpcXHRcXHRpbnQgZXJyO1xcbjE3NzM6XFx0XFxuMTc3NDpcXHRcXHQvKiBGb3IgRXRoZXJuZXQgZGV2aWNlIGRyaXZlcnMgdGhhdCByZWdpc3RlciB0aGVpciBvd24gTURJTyBidXMsIHdlXFxuMTc3NTpcXHRcXHQgKiB3aWxsIGhhdmUgYnVzLVxcdTAwM2Vvd25lciBtYXRjaCBuZGV2X21vZCwgc28gd2UgZG8gbm90IHdhbnQgdG8gaW5jcmVtZW50XFxuMTc3NjpcXHRcXHQgKiBvdXIgb3duIG1vZHVsZS1cXHUwMDNlcmVmY250IGhlcmUsIG90aGVyd2lzZSB3ZSB3b3VsZCBub3QgYmUgYWJsZSB0b1xcbjE3Nzc6XFx0XFx0ICogdW5sb2FkIGxhdGVyIG9uLlxcbjE3Nzg6XFx0XFx0ICovXFxuMTc3OTpcXHRcXHRpZiAoZGV2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjoyNy45MzAxMzE2MjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjEzNDgxMTA0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzLCBnZWFyZWQgdG93YXJkcyBhbiBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gYHBoeV9hdHRhY2hfZGlyZWN0YCoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBwaHlfYXR0YWNoX2RpcmVjdGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBsaW5lcyAxODkwIHRocm91Z2ggMTkyNS4gR2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoZSBzeXN0ZW0sIHRoaXMgc2VjdGlvbiBpcyBsaWtlbHkgaGFuZGxpbmcgdGhlIGRpcmVjdCBQSFkgYXR0YWNobWVudCBwcm9jZWR1cmUuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGluaXRpYWxpemVzIGFuZCBjb25maWd1cmVzIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2UgaW4gdGhpcyBzcGVjaWZpYyBzY2VuYXJpby4gSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIHNlcXVlbmNlIG9mIGFjdGlvbnMgaGVyZTogZGV2aWNlIHByb2JpbmcsIHJlc291cmNlIGFsbG9jYXRpb24sIHBvc3NpYmx5IHJlZ2lzdGVyIGFjY2VzcyBmb3IgaW5pdGlhbCBQSFkgY29uZmlndXJhdGlvbiwgYW5kIHVsdGltYXRlbHksIHJlZ2lzdHJhdGlvbiB3aXRoIHRoZSByZWxldmFudCB1cHBlciBsYXllciBmcmFtZXdvcmsuIFVuZGVyc3RhbmRpbmcgdGhlIGZsb3csIGluY2x1ZGluZyBhbnkgZXJyb3IgaGFuZGxpbmcgd2l0aGluIHRoaXMgYmxvY2ssIGlzIGNyaXRpY2FsIGZvciBkaWFnbm9zaW5nIHBvdGVudGlhbCBhdHRhY2htZW50IGlzc3Vlcy4gTGV0J3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgdGVjaG5pcXVlcyB0aGUgZGV2ZWxvcGVycyBoYXZlIGVtcGxveWVkIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzI0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjozMC4wNjQ5NDQ3OTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTg5MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTg5MDpcXHRcXHRpZiAoZXJyKVxcbjE4OTE6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4xODkyOlxcdFxcbjE4OTM6XFx0XFx0cGh5X3Jlc3VtZShwaHlkZXYpO1xcbjE4OTQ6XFx0XFxuMTg5NTpcXHRcXHQvKipcXG4xODk2OlxcdFxcdCAqIElmIHRoZSBleHRlcm5hbCBwaHkgdXNlZCBieSBjdXJyZW50IG1hYyBpbnRlcmZhY2UgaXMgbWFuYWdlZCBieVxcbjE4OTc6XFx0XFx0ICogYW5vdGhlciBtYWMgaW50ZXJmYWNlLCBzbyB3ZSBzaG91bGQgY3JlYXRlIGEgZGV2aWNlIGxpbmsgYmV0d2VlblxcbjE4OTg6XFx0XFx0ICogcGh5IGRldiBhbmQgbWFjIGRldi5cXG4xODk5OlxcdFxcdCAqL1xcbjE5MDA6XFx0XFx0aWYgKGRldiBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2VwYXJlbnQgXFx1MDAyNlxcdTAwMjYgZGV2LVxcdTAwM2VkZXYucGFyZW50ICE9IHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZXBhcmVudClcXG4xOTAxOlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlZGV2bGluayA9IGRldmljZV9saW5rX2FkZChkZXYtXFx1MDAzZWRldi5wYXJlbnQsIFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LFxcbjE5MDI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBETF9GTEFHX1BNX1JVTlRJTUUgfCBETF9GTEFHX1NUQVRFTEVTUyk7XFxuMTkwMzpcXHRcXG4xOTA0OlxcdFxcdHJldHVybiBlcnI7XFxuMTkwNTpcXHRcXG4xOTA2OlxcdGVycm9yOlxcbjE5MDc6XFx0XFx0LyogcGh5X2RldGFjaCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXFxuMTkwODpcXHRcXHRwaHlfZGV0YWNoKHBoeWRldik7XFxuMTkwOTpcXHRcXHRyZXR1cm4gZXJyO1xcbjE5MTA6XFx0XFxuMTkxMTpcXHRlcnJvcl9tb2R1bGVfcHV0OlxcbjE5MTI6XFx0XFx0bW9kdWxlX3B1dChkLVxcdTAwM2Vkcml2ZXItXFx1MDAzZW93bmVyKTtcXG4xOTEzOlxcdFxcdHBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpO1xcbjE5MTQ6XFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcXG4xOTE1OlxcdFxcdGQtXFx1MDAzZWRyaXZlciA9IE5VTEw7XFxuMTkxNjpcXHRlcnJvcl9wdXRfZGV2aWNlOlxcbjE5MTc6XFx0XFx0cHV0X2RldmljZShkKTtcXG4xOTE4OlxcdFxcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cXHUwMDNlb3duZXIpXFxuMTkxOTpcXHRcXHRcXHRtb2R1bGVfcHV0KGJ1cy1cXHUwMDNlb3duZXIpO1xcbjE5MjA6XFx0XFx0cmV0dXJuIGVycjtcXG4xOTIxOlxcdH1cXG4xOTIyOlxcdEVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xcbjE5MjM6XFx0XFxuMTkyNDpcXHQvKipcXG4xOTI1OlxcdCAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXFxuMTkyNjpcXHQgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4xOTI3OlxcdCAqXFxuMTkyODpcXHQgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XFxuMTkyOTpcXHQgKiBkcml2ZXIsIGFuZCBkcm9wcyB0aGUgcmVmZXJlbmNlIGNvdW50IHRha2VuIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjQ2OjMwLjA2NTIzMjc3MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjAwNDIyNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCBJIG5lZWQgdG8gZG8sIGV4cHJlc3NlZCBhcyBpZiB0aGVzZSB3ZXJlIG15IHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgLSBMaW5lIFJhbmdlIDM2OTAtMzg3MCoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhhdCBzcGVjaWZpYyBzZWN0aW9uIG9mIHRoZSBQSFkgZHJpdmVyIGNvZGUuIEJhc2VkIG9uIHRoZSByZXF1ZXN0LCBJIG5lZWQgdG8gZm9jdXMgb24gbGluZXMgMzY5MCB0aHJvdWdoIDM4NzAgb2YgYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBUaGF0J3MgYSByZWFzb25hYmxlIHJhbmdlLCB0aG91Z2ggd2l0aG91dCBjb250ZXh0LCBpdCBjb3VsZCBjb3ZlciBhIGxvdCBvZiBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhhdCBQSFkgZHJpdmVyLiBJJ2xsIG5lZWQgdG8gcmFwaWRseSBwYXJzZSB0aGF0IHNlY3Rpb24sIGxpa2VseSBsb29raW5nIGZvciBrZXkgZnVuY3Rpb25zLCBkYXRhIHN0cnVjdHVyZXMsIG9yIHBvdGVudGlhbGx5IGludGVycnVwdCBoYW5kbGluZyBvciByZWdpc3RlciBhY2Nlc3Mgcm91dGluZXMuIEknbGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55dGhpbmcgdGhhdCBtaWdodCByZWxhdGUgdG8gdGhlIHByb2JsZW0gb3IgYXJlYSBvZiBjb25jZXJuIEknbSB3b3JraW5nIHdpdGggLSBpZiB0aGlzIHNlY3Rpb24gd2FzIHJlcXVlc3RlZCwgdGhlcmUncyBvYnZpb3VzbHkgc29tZSByZWFzb24gdG8gYmVsaWV2ZSB0aGUgaXNzdWUgaXMgcmVsYXRlZCB0byBmdW5jdGlvbmFsaXR5IGNvdmVyZWQgYnkgdGhvc2UgbGluZXMuIEkgc2hvdWxkIHdhdGNoIG91dCBmb3IgZGV2aWNlIGluaXRpYWxpc2F0aW9uLCBsaW5rIHN0YXRlIG1vbml0b3JpbmcsIGF1dG9uZWdvdGlhdGlvbiBzZXR1cCwgYW5kIGFueSByZWdpc3RlciByZWFkcyBvciB3cml0ZXMuIEknbGwgbm90ZSBhbnl0aGluZyB0aGF0IGp1bXBzIG91dCBhcyBiZWluZyByZWxhdGVkIHRvIGhhcmR3YXJlIGludGVyYWN0aW9ucyBvciBwb3NzaWJseSBlcnJvciBoYW5kbGluZy4gTGV0J3MgZ2V0IHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMTU0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjozMi42NjU2NTc4MTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzY5MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzY5MDpcXHRcXHRyZXR1cm4gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGZ3bm9kZSwgXFxcInBoeS1kZXZpY2VcXFwiLCAwKTtcXG4zNjkxOlxcdH1cXG4zNjkyOlxcdEVYUE9SVF9TWU1CT0xfR1BMKGZ3bm9kZV9nZXRfcGh5X25vZGUpO1xcbjM2OTM6XFx0XFxuMzY5NDpcXHQvKipcXG4zNjk1OlxcdCAqIHBoeV9wcm9iZSAtIHByb2JlIGFuZCBpbml0IGEgUEhZIGRldmljZVxcbjM2OTY6XFx0ICogQGRldjogZGV2aWNlIHRvIHByb2JlIGFuZCBpbml0XFxuMzY5NzpcXHQgKlxcbjM2OTg6XFx0ICogVGFrZSBjYXJlIG9mIHNldHRpbmcgdXAgdGhlIHBoeV9kZXZpY2Ugc3RydWN0dXJlLCBzZXQgdGhlIHN0YXRlIHRvIFJFQURZLlxcbjM2OTk6XFx0ICovXFxuMzcwMDpcXHRzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuMzcwMTpcXHR7XFxuMzcwMjpcXHRcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdG9fcGh5X2RldmljZShkZXYpO1xcbjM3MDM6XFx0XFx0c3RydWN0IGRldmljZV9kcml2ZXIgKmRydiA9IHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyO1xcbjM3MDQ6XFx0XFx0c3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydiA9IHRvX3BoeV9kcml2ZXIoZHJ2KTtcXG4zNzA1OlxcdFxcdGludCBlcnIgPSAwO1xcbjM3MDY6XFx0XFxuMzcwNzpcXHRcXHRwaHlkZXYtXFx1MDAzZWRydiA9IHBoeWRydjtcXG4zNzA4OlxcdFxcbjM3MDk6XFx0XFx0LyogRGlzYWJsZSB0aGUgaW50ZXJydXB0IGlmIHRoZSBQSFkgZG9lc24ndCBzdXBwb3J0IGl0XFxuMzcxMDpcXHRcXHQgKiBidXQgdGhlIGludGVycnVwdCBpcyBzdGlsbCBhIHZhbGlkIG9uZVxcbjM3MTE6XFx0XFx0ICovXFxuMzcxMjpcXHRcXHRpZiAoIXBoeV9kcnZfc3VwcG9ydHNfaXJxKHBoeWRydikgXFx1MDAyNlxcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHlkZXYpKSB7XFxuMzcxMzpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWlycV9zYXZlZCA9IHBoeWRldi1cXHUwMDNlaXJxO1xcbjM3MTQ6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VpcnEgPSBQSFlfUE9MTDtcXG4zNzE1OlxcdFxcdH1cXG4zNzE2OlxcdFxcbjM3MTc6XFx0XFx0aWYgKHBoeWRydi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBQSFlfSVNfSU5URVJOQUwpXFxuMzcxODpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2ludGVybmFsID0gdHJ1ZTtcXG4zNzE5OlxcdFxcbjM3MjA6XFx0XFx0LyogRGVhc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqL1xcbjM3MjE6XFx0XFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDApO1xcbjM3MjI6XFx0XFxuMzcyMzpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZXByb2JlKSB7XFxuMzcyNDpcXHRcXHRcXHRlcnIgPSBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcHJvYmUocGh5ZGV2KTtcXG4zNzI1OlxcdFxcdFxcdGlmIChlcnIpXFxuMzcyNjpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4zNzI3OlxcdFxcdH1cXG4zNzI4OlxcdFxcbjM3Mjk6XFx0XFx0cGh5X2Rpc2FibGVfaW50ZXJydXB0cyhwaHlkZXYpO1xcbjM3MzA6XFx0XFxuMzczMTpcXHRcXHQvKiBTdGFydCBvdXQgc3VwcG9ydGluZyBldmVyeXRoaW5nLiBFdmVudHVhbGx5LFxcbjM3MzI6XFx0XFx0ICogYSBjb250cm9sbGVyIHdpbGwgYXR0YWNoLCBhbmQgbWF5IG1vZGlmeSBvbmVcXG4zNzMzOlxcdFxcdCAqIG9yIGJvdGggb2YgdGhlc2UgdmFsdWVzXFxuMzczNDpcXHRcXHQgKi9cXG4zNzM1OlxcdFxcdGlmIChwaHlkcnYtXFx1MDAzZWZlYXR1cmVzKSB7XFxuMzczNjpcXHRcXHRcXHRsaW5rbW9kZV9jb3B5KHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkLCBwaHlkcnYtXFx1MDAzZWZlYXR1cmVzKTtcXG4zNzM3OlxcdFxcdFxcdGdlbnBoeV9jNDVfcmVhZF9lZWVfYWJpbGl0aWVzKHBoeWRldik7XFxuMzczODpcXHRcXHR9XFxuMzczOTpcXHRcXHRlbHNlIGlmIChwaHlkcnYtXFx1MDAzZWdldF9mZWF0dXJlcylcXG4zNzQwOlxcdFxcdFxcdGVyciA9IHBoeWRydi1cXHUwMDNlZ2V0X2ZlYXR1cmVzKHBoeWRldik7XFxuMzc0MTpcXHRcXHRlbHNlIGlmIChwaHlkZXYtXFx1MDAzZWlzX2M0NSlcXG4zNzQyOlxcdFxcdFxcdGVyciA9IGdlbnBoeV9jNDVfcG1hX3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XFxuMzc0MzpcXHRcXHRlbHNlXFxuMzc0NDpcXHRcXHRcXHRlcnIgPSBnZW5waHlfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcXG4zNzQ1OlxcdFxcbjM3NDY6XFx0XFx0aWYgKGVycilcXG4zNzQ3OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjM3NDg6XFx0XFxuMzc0OTpcXHRcXHRpZiAoIWxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULFxcbjM3NTA6XFx0XFx0XFx0XFx0ICAgICAgIHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkKSlcXG4zNzUxOlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlYXV0b25lZyA9IDA7XFxuMzc1MjpcXHRcXG4zNzUzOlxcdFxcdGlmIChsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfSGFsZl9CSVQsXFxuMzc1NDpcXHRcXHRcXHRcXHQgICAgICBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCkpXFxuMzc1NTpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2dpZ2FiaXRfY2FwYWJsZSA9IDE7XFxuMzc1NjpcXHRcXHRpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0Z1bGxfQklULFxcbjM3NTc6XFx0XFx0XFx0XFx0ICAgICAgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQpKVxcbjM3NTg6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19naWdhYml0X2NhcGFibGUgPSAxO1xcbjM3NTk6XFx0XFxuMzc2MDpcXHRcXHRvZl9zZXRfcGh5X3N1cHBvcnRlZChwaHlkZXYpO1xcbjM3NjE6XFx0XFxuMzc2MjpcXHRcXHRlcnIgPSBwaHlfc2V0dXBfcG9ydHMocGh5ZGV2KTtcXG4zNzYzOlxcdFxcdGlmIChlcnIpXFxuMzc2NDpcXHRcXHRcXHRnb3RvIG91dDtcXG4zNzY1OlxcdFxcbjM3NjY6XFx0XFx0cGh5X2FkdmVydGlzZV9zdXBwb3J0ZWQocGh5ZGV2KTtcXG4zNzY3OlxcdFxcbjM3Njg6XFx0XFx0LyogR2V0IFBIWSBkZWZhdWx0IEVFRSBhZHZlcnRpc2luZyBtb2RlcyBhbmQgaGFuZGxlIHRoZW0gYXMgcG90ZW50aWFsbHlcXG4zNzY5OlxcdFxcdCAqIHNhZmUgaW5pdGlhbCBjb25maWd1cmF0aW9uLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjozMi42NjU4NzA0MjNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjUzMzk3ODA1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgaWYgdGhleSB3ZXJlIG15IG93biBpbW1lZGlhdGUgY29uc2lkZXJhdGlvbnM6XG5cbioqUHJvYmluZyBhbmQgUmVtb3ZhbDogQSBRdWljayBEaWFnbm9zdGljIENoZWNrKipcblxuQWxyaWdodCwgYmVmb3JlIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoZSB3ZWVkcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEkndmUgZ290IGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gaW4gbWluZCBmb3IgdGhlIGN1cnJlbnQgaXNzdWUsIGJ1dCBJIGFsd2F5cyB3YW50IHRvIGVuc3VyZSBJIGhhdmVuJ3QgZ2xvc3NlZCBvdmVyIGFueSBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUuIE15IGluaXRpYWwgaHlwb3RoZXNpcyBmZWVscyBzb3VuZCwgYnV0IGl0J3MgY3J1Y2lhbCB0byBjb25maXJtIHRoYXQgYHBoeV9wcm9iZWAgYW5kIGBwaHlfcmVtb3ZlYCBhcmVuJ3Qgc2lsZW50bHkgY29udHJpYnV0aW5nIHRvIHRoZSBwcm9ibGVtLiBJJ20gZ29pbmcgdG8gcnVuIGEgbWVudGFsIHNjYW4gb2YgdGhlIHJlbGV2YW50IGNvZGUgc2VjdGlvbnMgZm9yIHRob3NlIGZ1bmN0aW9ucy4gSXMgdGhlcmUgYW55IHBvdGVudGlhbCBpbnRlcmFjdGlvbiBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIEkgbWlnaHQgaGF2ZSBvdmVybG9va2VkPyBBcmUgdGhlcmUgcmFjZSBjb25kaXRpb25zLCByZXNvdXJjZSBsZWFrcywgb3Igc3VidGxlIHNpZGUgZWZmZWN0cyB0aGF0IGNvdWxkIGJlIHJlbGV2YW50PyBUaGlzIGlzIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGVsaW1pbmF0ZSB0aGUgcG9zc2liaWxpdHkgb2YgYSBzaW1wbGUgbWlzY29uZmlndXJhdGlvbiBvciBvdmVybG9va2VkIGRlcGVuZGVuY3kgYmVmb3JlIEkgc3RhcnQgbG9va2luZyBhdCBtb3JlIGNvbXBsZXggaW50ZXJhY3Rpb25zLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBsb2dpYyB3aXRoaW4gdGhvc2UgdHdvIGZ1bmN0aW9ucywgYW5kIHRoZWlyIGludGVyYWN0aW9uIHdpdGggdGhlIGxhcmdlciBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjk5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjozNS4xOTk4NTY0NDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzgyMCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzgyMDpcXHRcXHQvKiBHZXQgdGhlIExFRHMgZnJvbSB0aGUgZGV2aWNlIHRyZWUsIGFuZCBpbnN0YW50aWF0ZSBzdGFuZGFyZFxcbjM4MjE6XFx0XFx0ICogTEVEcyBmb3IgdGhlbS5cXG4zODIyOlxcdFxcdCAqL1xcbjM4MjM6XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcXHUwMDI2XFx1MDAyNiAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkge1xcbjM4MjQ6XFx0XFx0XFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcXG4zODI1OlxcdFxcdFxcdGlmIChlcnIpXFxuMzgyNjpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4zODI3OlxcdFxcdH1cXG4zODI4OlxcdFxcbjM4Mjk6XFx0XFx0cmV0dXJuIDA7XFxuMzgzMDpcXHRcXG4zODMxOlxcdG91dDpcXG4zODMyOlxcdFxcdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cXHUwMDNlc2ZwX2J1cyk7XFxuMzgzMzpcXHRcXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbjM4MzQ6XFx0XFxuMzgzNTpcXHRcXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xcbjM4MzY6XFx0XFxuMzgzNzpcXHRcXHRpZiAoIXBoeWRldi1cXHUwMDNlaXNfb25fc2ZwX21vZHVsZSlcXG4zODM4OlxcdFxcdFxcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xcbjM4Mzk6XFx0XFxuMzg0MDpcXHRcXHRwaHlfcmVzdG9yZV9wcm9iZV9pcnEocGh5ZGV2KTtcXG4zODQxOlxcdFxcbjM4NDI6XFx0XFx0LyogUmUtYXNzZXJ0IHRoZSByZXNldCBzaWduYWwgb24gZXJyb3IgKi9cXG4zODQzOlxcdFxcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcXG4zODQ0OlxcdFxcbjM4NDU6XFx0XFx0cmV0dXJuIGVycjtcXG4zODQ2OlxcdH1cXG4zODQ3OlxcdFxcbjM4NDg6XFx0c3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4zODQ5OlxcdHtcXG4zODUwOlxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0b19waHlfZGV2aWNlKGRldik7XFxuMzg1MTpcXHRcXG4zODUyOlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cGh5ZGV2LVxcdTAwM2VzdGF0ZV9xdWV1ZSk7XFxuMzg1MzpcXHRcXG4zODU0OlxcdFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXFx1MDAyNlxcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpXFxuMzg1NTpcXHRcXHRcXHRwaHlfbGVkc191bnJlZ2lzdGVyKHBoeWRldik7XFxuMzg1NjpcXHRcXG4zODU3OlxcdFxcdGlmICghcGh5ZGV2LVxcdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxcbjM4NTg6XFx0XFx0XFx0cGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyKHBoeWRldik7XFxuMzg1OTpcXHRcXG4zODYwOlxcdFxcdHBoeWRldi1cXHUwMDNlc3RhdGUgPSBQSFlfRE9XTjtcXG4zODYxOlxcdFxcbjM4NjI6XFx0XFx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVxcdTAwM2VzZnBfYnVzKTtcXG4zODYzOlxcdFxcdHBoeWRldi1cXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XFxuMzg2NDpcXHRcXG4zODY1OlxcdFxcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XFxuMzg2NjpcXHRcXG4zODY3OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWRydiBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcmVtb3ZlKVxcbjM4Njg6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZXJlbW92ZShwaHlkZXYpO1xcbjM4Njk6XFx0XFxuMzg3MDpcXHRcXHRwaHlfcmVzdG9yZV9wcm9iZV9pcnEocGh5ZGV2KTtcXG4zODcxOlxcdFxcbjM4NzI6XFx0XFx0LyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi9cXG4zODczOlxcdFxcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcXG4zODc0OlxcdFxcbjM4NzU6XFx0XFx0cGh5ZGV2LVxcdTAwM2VkcnYgPSBOVUxMO1xcbjM4NzY6XFx0XFxuMzg3NzpcXHRcXHRyZXR1cm4gMDtcXG4zODc4OlxcdH1cXG4zODc5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NjozNS4yMDAwNTc2MDlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTk3MjE0NzY3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgUEhZTElOSyBJbXBsZW1lbnRhdGlvbiBEZXRhaWxzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBiYWNrIGludG8gdGhpcyBuZXR3b3JrIGRyaXZlciBzaXR1YXRpb24uIEkndmUgYWxyZWFkeSBkb25lIHNvbWUgaW5pdGlhbCBhc3Nlc3NtZW50cywgYnV0IGl0J3MgdGltZSB0byBnZXQgYSBiaXQgbW9yZSBncmFudWxhci4gTGV0J3Mgc2VlLi4uIEkgd2FudCB0byBzcGVjaWZpY2FsbHkgZm9jdXMgb24gdGhlIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCBmaWxlLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgdGhlIGlubmVyIHdvcmtpbmdzIG9mIHBoeWxpbmssIGFuZCBJIHRoaW5rIHRoYXQgdGhlIGNvZGUgZnJvbSBhcm91bmQgbGluZXMgMjA4MCB0byAyMzcwIHNlZW1zIGxpa2UgYSBjcml0aWNhbCBzZWN0aW9uIHRoYXQgSSBuZWVkIHRvIGxvb2sgYXQuIEhvcGVmdWxseSwgdGhlIGNvZGUgY29tbWVudHMgdGhlcmUgYXJlIGhlbHBmdWwuIEl0J3MgdGltZSB0byB6b29tIGluIG9uIGhvdyB0aGlzIFBIWSBhYnN0cmFjdGlvbiBpcyBoYW5kbGVkIGluIGRldGFpbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIHRob3JvdWdobHkgdG8gYmUgYWJsZSB0byBtYWtlIGFueSBtZWFuaW5nZnVsIGNoYW5nZXMgb3IgdHJvdWJsZXNob290IGlzc3Vlcy4gSSdsbCBzdGFydCB3aXRoIHRoaXMgY2h1bmsgYW5kIHNlZSB3aGVyZSB0aGF0IHRha2VzIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjgwNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MzcuMTcyMjA4MDkyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxOTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIxOTA6XFx0XFx0XFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGwtXFx1MDAzZXN1cHBvcnRlZCxcXG4yMTkxOlxcdFxcdFxcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbjIxOTI6XFx0XFxuMjE5MzpcXHRcXHRpZiAocGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX21hbmFnZWRfcG0pXFxuMjE5NDpcXHRcXHRcXHRwaHktXFx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcXG4yMTk1OlxcdFxcbjIxOTY6XFx0XFx0LyogQWxsb3cgdGhlIE1BQyB0byBzdG9wIGl0cyBjbG9jayBpZiB0aGUgUEhZIGhhcyB0aGUgY2FwYWJpbGl0eSAqL1xcbjIxOTc6XFx0XFx0cGwtXFx1MDAzZW1hY190eF9jbGtfc3RvcCA9IHBoeV9lZWVfdHhfY2xvY2tfc3RvcF9jYXBhYmxlKHBoeSkgXFx1MDAzZSAwO1xcbjIxOTg6XFx0XFxuMjE5OTpcXHRcXHRpZiAocGwtXFx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzKSB7XFxuMjIwMDpcXHRcXHRcXHQvKiBFeHBsaWNpdGx5IGNvbmZpZ3VyZSB3aGV0aGVyIHRoZSBQSFkgaXMgYWxsb3dlZCB0byBzdG9wIGl0J3NcXG4yMjAxOlxcdFxcdFxcdCAqIHJlY2VpdmUgY2xvY2suXFxuMjIwMjpcXHRcXHRcXHQgKi9cXG4yMjAzOlxcdFxcdFxcdHJldCA9IHBoeV9lZWVfcnhfY2xvY2tfc3RvcChwaHksXFxuMjIwNDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgcGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlZWVlX3J4X2Nsa19zdG9wX2VuYWJsZSk7XFxuMjIwNTpcXHRcXHRcXHRpZiAocmV0ID09IC1FT1BOT1RTVVBQKVxcbjIyMDY6XFx0XFx0XFx0XFx0cmV0ID0gMDtcXG4yMjA3OlxcdFxcdH1cXG4yMjA4OlxcdFxcbjIyMDk6XFx0XFx0aWYgKHJldCA9PSAwIFxcdTAwMjZcXHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSlcXG4yMjEwOlxcdFxcdFxcdHBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpO1xcbjIyMTE6XFx0XFxuMjIxMjpcXHRcXHRpZiAocmV0KSB7XFxuMjIxMzpcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMjE0OlxcdFxcdFxcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xcbjIyMTU6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMjE2OlxcdFxcdH1cXG4yMjE3OlxcdFxcbjIyMTg6XFx0XFx0cmV0dXJuIHJldDtcXG4yMjE5OlxcdH1cXG4yMjIwOlxcdFxcbjIyMjE6XFx0c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbjIyMjI6XFx0XFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4yMjIzOlxcdHtcXG4yMjI0OlxcdFxcdHUzMiBmbGFncyA9IDA7XFxuMjIyNTpcXHRcXG4yMjI2OlxcdFxcdGlmIChXQVJOX09OKHBsLVxcdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCkpXFxuMjIyNzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yMjI4OlxcdFxcbjIyMjk6XFx0XFx0aWYgKHBsLVxcdTAwM2VwaHlkZXYpXFxuMjIzMDpcXHRcXHRcXHRyZXR1cm4gLUVCVVNZO1xcbjIyMzE6XFx0XFxuMjIzMjpcXHRcXHRpZiAocGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX3JlcXVpcmVzX3J4YylcXG4yMjMzOlxcdFxcdFxcdGZsYWdzIHw9IFBIWV9GX1JYQ19BTFdBWVNfT047XFxuMjIzNDpcXHRcXG4yMjM1OlxcdFxcdHJldHVybiBwaHlfYXR0YWNoX2RpcmVjdChwbC1cXHUwMDNlbmV0ZGV2LCBwaHksIGZsYWdzLCBpbnRlcmZhY2UpO1xcbjIyMzY6XFx0fVxcbjIyMzc6XFx0XFxuMjIzODpcXHQvKipcXG4yMjM5OlxcdCAqIHBoeWxpbmtfY29ubmVjdF9waHkoKSAtIGNvbm5lY3QgYSBQSFkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6MzcuMTcyNDE1ODIyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ3NTQxMDc2ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBIWSBEZXZpY2UgTWFuYWdlbWVudCBpbiBQaHlsaW5rKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJJ20gbG9va2luZyBhdCB0aGUgY29yZSByb3V0aW5lcyBmb3IgUEhZIGRldmljZSBtYW5hZ2VtZW50IHdpdGhpbiBgcGh5bGlua2AuIFNwZWNpZmljYWxseSwgSSdtIGV4YW1pbmluZyBgcGh5bGlua19icmluZ3VwX3BoeWAgYW5kIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYmVjYXVzZSB0aGVzZSBhcmUgdGhlIGNyaXRpY2FsIHBpZWNlcyB0aGF0IGhhbmRsZSBicmluZ2luZyBhIFBIWSBvbmxpbmUgYW5kIHRha2luZyBpdCBvZmZsaW5lLCByZXNwZWN0aXZlbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZXF1ZW5jaW5nIGFuZCB0aGUgcG90ZW50aWFsIGZhaWx1cmUgbW9kZXMuXG5cbmBwaHlsaW5rX2JyaW5ndXBfcGh5YCBpcyBpbnRlcmVzdGluZy4gSSBzZWUgYSBgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZWAgYXJndW1lbnQsIHdoaWNoIHRlbGxzIG1lIGl0J3MgZGVhbGluZyB3aXRoIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIFBIWSBjb25uZWN0aW9uIC0gTURJTywgU0dNSUksIGV0Yy4gVGhlIGByZXRgIHZhcmlhYmxlIGlzIG9idmlvdXNseSBjaGVja2luZyBmb3Igc29tZSByZXR1cm4gY29kZSwgd2hpY2ggSSdsbCBoYXZlIHRvIGludmVzdGlnYXRlIGxhdGVyIHRvIHNlZSB0aGUgc3BlY2lmaWMgZXJyb3Igc2NlbmFyaW9zIHRoYXQgY2FuIG9jY3VyLiBUaGUgY3JpdGljYWwgYml0IGhlcmUgaXMgdGhlIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgY2FsbC4gSXQncyBpbnNpZGUgYW4gYGlmIChyZXQpYCBibG9jaywgYW5kIHRoZW4gd3JhcHBlZCBieSBhIG11dGV4IGxvY2svdW5sb2NrLiBUaGlzIHRlbGxzIG1lIHRoYXQgaWYgdGhlIGJyaW5ndXAgKmZhaWxzKiwgaXQgKmNsZWFycyogdGhlIFBIWSBkZXZpY2UgZW50cnkuIFRoZSBtdXRleCwgYHBsLVx1MDAzZXBoeWRldl9tdXRleGAsIGlzIHVzZWQgdG8gcHJvdGVjdCBjb25jdXJyZW50IGFjY2VzcyB0byB0aGUgUEhZIGRldmljZSBzdHJ1Y3R1cmUuIFNvLCBpZiB0aGUgUEhZIGJyaW5ndXAgZmFpbHMsIGl0IHJlbGVhc2VzIHRoZSBQSFkuXG5cbk5vdywgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgIGlzIHNpbXBsZXIuIEl0IHJldHJpZXZlcyB0aGUgYHBoeWRldmAgdW5kZXIgdGhlIG11dGV4IGxvY2sgYW5kLCBpZiBvbmUgZXhpc3RzLCBpdCBjbGVhcnMgaXQgdmlhIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAuIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgKnRlYXJkb3duKiBvZiB0aGUgUEhZLCBhbmQsIHNpbWlsYXJseSwgcHJvdGVjdHMgYWNjZXNzIHRvIHRoZSBgcGh5ZGV2YCB3aXRoIGEgbXV0ZXguXG5cbkkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBvZiBgcGh5bGlua19jbGVhcl9waHlkZXZgIHRvIHNlZSBleGFjdGx5IHdoYXQncyBiZWluZyBkb25lIHdoZW4gdGhlIFBIWSBpcyByZW1vdmVkIG9yIGEgZmFpbHVyZSBpcyBlbmNvdW50ZXJlZC4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIG1hZ2ljIChvciBwb3RlbnRpYWwgcHJvYmxlbXMpIGxpZS4gVGhlIG11dGV4IHByb3RlY3Rpb24gaXMgZ29vZCwgc3RhbmRhcmQgcHJhY3RpY2UsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHN0YXRlIHRoZSBgcGh5bGlua2Agc3RydWN0dXJlIGlzIGxlZnQgaW4gYWZ0ZXIgdGhlc2UgY2FsbHMsIGVzcGVjaWFsbHkgYWZ0ZXIgYSBicmluZ3VwIGZhaWx1cmUuIEFsc28sIEkgbmVlZCB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlcyBhbmQgZXJyb3IgaGFuZGxpbmcsIGVzcGVjaWFsbHkgdGhlIG1lYW5pbmcgb2YgdGhlIGByZXRgIHZhbHVlIGluIHRoZSBgcGh5bGlua19icmluZ3VwX3BoeWAgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzODI1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NDEuOTI2NTI3MzE1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTc1NDU1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2JyaW5ndXBfcGh5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMDg3PXN0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjA5Ny1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIwOTg6c3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIwOTktXFx0XFx0XFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNTM9aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjY2LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI2NzpcXHRyZXQgPSBwaHlsaW5rX2JyaW5ndXBfcGh5KHBsLCBwaHksIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzA1PWludCBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdChzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDQtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzQ1OlxcdHJldCA9IHBoeWxpbmtfYnJpbmd1cF9waHkocGwsIHBoeV9kZXYsIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNzExPXN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29uZmlnX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM3NDgtXFx0LyogVGhpcyB3aWxsIHZhbGlkYXRlIHRoZSBjb25maWd1cmF0aW9uIGZvciB1cy4gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM3NDk6XFx0cmV0ID0gcGh5bGlua19icmluZ3VwX3BoeShwbCwgcGh5LCBjb25maWcuaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM3NTAtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NDEuOTc2Mjg2MzQyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI5ODk2NzkyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBQSFlMSUIgYW5kIFBIWUxJTksqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHN0YXR1cyBvZiBQSFlMSUIgYW5kIFBIWUxJTksgY29uZmlndXJhdGlvbi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gZGVjaXNpb25zIGFyZSBtYWRlLCBhbmQgaXQnbGwgZ2l2ZSBtZSBhIGdyYW51bGFyIHZpZXcgb2YgdGhlaXIgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIGFueSByZWxldmFudCBvcHRpb25zLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBQSFkgZnJhbWV3b3JrcyBhcmUgaGFuZGxlZCBpbiB0aGUgc3BlY2lmaWMgcHJvamVjdCBvciBrZXJuZWwgSSdtIGxvb2tpbmcgYXQuIEFyZSB0aGV5IG1vZHVsYXI/IEJ1aWx0LWluPyBXaGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQ/IEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBwZXJoYXBzIHJlbGF0aW5nIHRvIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtcyBvciBuZXR3b3JraW5nIHN0YWNrcz8gSSBuZWVkIGEgY2xlYXIgbWVudGFsIHBpY3R1cmUgb2YgaG93IHRoZXNlIGFyZSBpbnRlZ3JhdGVkIGFuZCBjb25maWd1cmVkLiBJJ20gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBrbm9icyB0byB0dXJuLCB0byB1bmRlcnN0YW5kIGhvdyBJIGNhbiBpbmZsdWVuY2Ugb3IgbW9kaWZ5IHRoZWlyIGJlaGF2aW91ciBiYXNlZCBvbiB0aGUgY29udGV4dCBvZiB3aGF0IEkgYW0gd29ya2luZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUwNDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0Njo0NC45NjU5NjgxMjlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjY0MTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyAoUEhZTElCfFBIWUxJTkspXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Njpjb25maWcgUEhZTElOS1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTctXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1Om1lbnVjb25maWcgUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYtXFx0dHJpc3RhdGUgXFxcIlBIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01MC1cXHRkZWZfYm9vbCBPRlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0Njo0NS4wMTM2Mzk5MTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTgyNTAwODk0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaWdnaW5nIERlZXBlciBpbnRvIHRoZSBQSFlMSUIgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIHdvcmtpbmcgd2l0aCBQSFlMSUIvUEhZTElOSywgYW5kIG15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBlbnN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgbHVya2luZyBkZXBlbmRlbmNpZXMgb3IgY29uZmlndXJhdGlvbiBmbGFncy4gWW91IGtub3cgaG93IGl0IGlzIOKAkyBhIHNlZW1pbmdseSBzdHJhaWdodGZvcndhcmQgY29tcG9uZW50IGNhbiBoYXZlIGhpZGRlbiBudWFuY2VzLiBUaW1lIHRvIGRvdWJsZS1jaGVjayBldmVyeXRoaW5nLCBlc3BlY2lhbGx5IHRvIHNlZSB3aGF0IGVsc2UgY291bGQgYmUgbHVya2luZyBpbiB0aGUgc2hhZG93cy4gSSdsbCBzdGFydCBieSBleGFtaW5pbmcgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkuIFRoYXQncyB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhlIHRydXRoIGFib3V0IHRoZSBvcHRpb25zLiBHb3R0YSBtYWtlIHN1cmUgSSdtIHNlZWluZyB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NDgzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NDYuODM4NjUxODg4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBQSFlMSU5LXFxuICAgNzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAgIDk6XFx0XFx0c2VsZWN0IFNXUEhZXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxcbiAgMTI6XFx0XFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXFxuICAxMzpcXHRcXHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0bWVudWNvbmZpZyBQSFlMSUJcXG4gIDE2OlxcdFxcdHRyaXN0YXRlIFxcXCJQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXFxcIlxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcXG4gIDE5OlxcdFxcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxcbiAgMjA6XFx0XFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0aWYgUEhZTElCXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBTV1BIWVxcbiAgMjU6XFx0XFx0Ym9vbFxcbiAgMjY6XFx0XFxuICAyNzpcXHRjb25maWcgUEhZX1BBQ0tBR0VcXG4gIDI4OlxcdFxcdCB0cmlzdGF0ZVxcbiAgMjk6XFx0XFxuICAzMDpcXHRjb25maWcgTEVEX1RSSUdHRVJfUEhZXFxuICAzMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IExFRCB0cmlnZ2VycyBmb3IgdHJhY2tpbmcgbGluayBzdGF0ZVxcXCJcXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBBZGRzIHN1cHBvcnQgZm9yIGEgc2V0IG9mIExFRCB0cmlnZ2VyIGV2ZW50cyBwZXItUEhZLiAgTGlua1xcbiAgMzU6XFx0XFx0ICBzdGF0ZSBjaGFuZ2Ugd2lsbCB0cmlnZ2VyIHRoZSBldmVudHMsIGZvciBjb25zdW1wdGlvbiBieSBhblxcbiAgMzY6XFx0XFx0ICBMRUQgY2xhc3MgZHJpdmVyLiAgVGhlcmUgYXJlIHRyaWdnZXJzIGZvciBlYWNoIGxpbmsgc3BlZWQgY3VycmVudGx5XFxuICAzNzpcXHRcXHQgIHN1cHBvcnRlZCBieSB0aGUgUEhZIGFuZCBhbHNvIGEgb25lIGNvbW1vbiBcXFwibGlua1xcXCIgdHJpZ2dlciBhcyBhXFxuICAzODpcXHRcXHQgIGxvZ2ljYWwtb3Igb2YgYWxsIHRoZSBsaW5rIHNwZWVkIG9uZXMuXFxuICAzOTpcXHRcXHQgIEFsbCB0aGVzZSB0cmlnZ2VycyBhcmUgbmFtZWQgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgcGF0dGVybjpcXG4gIDQwOlxcdFxcdCAgICAgIFxcdTAwM2NtaWkgYnVzIGlkXFx1MDAzZTpcXHUwMDNjcGh5XFx1MDAzZTpcXHUwMDNjc3BlZWRcXHUwMDNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjQ2OjQ2LjgzODc0NzA5N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MzA2MzIxMjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFJlYWNoYWJpbGl0eSBhbmQgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGlzIGNvZGUgaXMgcmVhY2hhYmxlIHdpdGhpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB3aGljaCBpcyBhIGNvbW1vbiBiYXNlLiBQaHlsaWIgYW5kIHBoeWxpbmsgYXJlIGNvcmUgbmV0d29ya2luZyBQSFkgbGF5ZXIgYWJzdHJhY3Rpb25zLCBzbyB0aGF0J3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQuIEdvb2QuXG5cbkkgcmVjYWxsIHRoYXQgVVNCIEV0aGVybmV0IGRldmljZXMsIHRoaW5ncyBsaWtlIHRoZSBBU0lYIGNoaXBzLCBhcmUgZGVmaW5pdGVseSBlbXVsYXRlZCBhbmQgYWNjZXNzaWJsZSB0aHJvdWdoIHN5emthbGxlcidzIFVTQiBnYWRnZXQsIHJhd19nYWRnZXQsIG9yIHZpcnR1YWwgVVNCIGVtdWxhdGlvbi4gVGhhdCdzIGEgZ29vZCBzaWduLiBBbHNvLCB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlcyB3aXRoaW4gdGhlIHN0YWNrIGxpa2UgYGRzYV9sb29wYCBvciBgZHVtbXlgIGNhbiBhbHNvIGV4ZXJjaXNlIHBoeWxpYi4gUGVyZmVjdC5cblxuTm93LCBsb29raW5nIGF0IHRoZSBjb2RlIGNoYW5nZXMsIHdlIGhhdmUgbW9kaWZpY2F0aW9ucyB0byBzdGF0ZSBtYW5hZ2VtZW50LCB3aGljaCBpbmNsdWRlcyBpbnRlcnJ1cHQgaGFuZGxpbmcg4oCTIGBpcnFfc2F2ZWRgLCBgaXJxYCwgYHBoeV9yZXN0b3JlX3Byb2JlX2lycWAuIFRoZXJlJ3MgYWxzbyBzb21lIGVycm9yIGhhbmRsaW5nIGNsZWFudXAsIHNwZWNpZmljYWxseSBhcm91bmQgYGVycm9yX21vZHVsZV9wdXRgLCBgb3V0YCBsYWJlbHMsIGFuZCBgcmV0YCBwYXRocy4gUGx1cywgYSBmZXcgbmV3IGhlbHBlciBmdW5jdGlvbnMgYXJlIGludHJvZHVjZWQ6IGBwaHlfcmVzdG9yZV9wcm9iZV9pcnFgIGFuZCBgcGh5bGlua19jbGVhcl9waHlkZXZgLiBJIGtub3cgdGhhdCB0aGVzZSBjYW4gYmUgc2lnbmlmaWNhbnQuXG5cblNpbmNlIHRoZSBjaGFuZ2VzIGltcGFjdCBlcnJvciBoYW5kbGluZyBhbmQgY29yZSBmdW5jdGlvbmFsaXR5LCBhbmQgaXQncyBkZWFsaW5nIHdpdGggYSBjb3JlIHN1YnN5c3RlbSwgSSdtIHRoaW5raW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbk5leHQsIHRoZSBmb2N1cyBzeW1ib2xzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkndmUgZ290IHRoZSBtb3N0IHJlbGV2YW50IGVudHJ5IHBvaW50cy4gSSdtIGZvY3VzaW5nIG9uIGBwaHlfcmVzdG9yZV9wcm9iZV9pcnFgIChzcGVjaWZpY2FsbHkgaXRzIGNhbGxlcnMgLSBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X3Byb2JlYCwgYW5kIGBwaHlfcmVtb3ZlYCkgYW5kIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgKGNhbGxlZCBieSBgcGh5bGlua19icmluZ3VwX3BoeWAgYW5kIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCkuIEkgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGF0IGBwaHlfZGV2aWNlX2NyZWF0ZWAsIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCwgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgLCBhbmQgYHBoeWxpbmtfY29ubmVjdF9waHlgIGFyZSBhbHNvIGZvY3VzIHN5bWJvbHMuIE9rYXksIGl0IHNlZW1zIHRoYXQgdGhlc2UgYXJlbid0IHViaXF1aXRvdXNseSBob3QtcGF0aHMsIGFuZCB0aGUgY29kZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byB0aGUgcGh5bGliL3BoeWxpbmsgbGlmZWN5Y2xlLiBUaGF0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnM6IGBQSFlMSUJgIGFuZCBgUEhZTElOS2AuIEdvb2QuXG5cbk5vdywgbGV0J3MgcmV2aWV3IHRoZSB0cmlhZ2UgcHJvY2Vzcy4gUmVhY2hhYmlsaXR5IGlzIHRoZSBwcmlvcml0eSwgc28gSSdsbCBiZSBjb25maWRlbnQgaW4gdGhlIHRyaWFnZSBhcyB0aGUgcHJpbWFyeSBjcml0ZXJpYS4gVGhlIG1vZGlmaWVkIGNvZGUgc2VlbXMgcmVhY2hhYmxlLCB0aGVyZWZvcmUgaXQgd2FycmFudHMgZnV6emluZy4gYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGB0cnVlYC4gVGhlIGZvY3VzIHN5bWJvbHMgYXJlIG5vbi11YmlxdWl0b3VzLCBhbmQgdGhlIGVuYWJsZSBjb25maWd1cmF0aW9ucyBhcmUsIGFzIG5vdGVkLCBgUEhZTElCYCBhbmQgYFBIWUxJTktgLiBJIHdhbnQgdG8gZW5zdXJlIG15IHRoaW5raW5nIGlzIGNsZWFyIGFuZCBjb21wbGV0ZSBiZWZvcmUgSSBzZXQgdGhlIHJlc3VsdHMuXG5cbk9rYXksIGxldCdzIHJldmlldyB0aGUgZm9jdXMgc3ltYm9scyBsaXN0OlxuLSBgcGh5X2RldmljZV9jcmVhdGVgXG4tIGBwaHlfcmVzdG9yZV9wcm9iZV9pcnFgIGFuZCBpdHMgY2FsbGVycyAoYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYClcbi0gYHBoeWxpbmtfYnJpbmd1cF9waHlgXG4tIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YFxuLSBgcGh5bGlua19jb25uZWN0X3BoeWBcblxuSSBiZWxpZXZlIHRoaXMgaXMgYSBjb25jaXNlIGFuZCBjb21wbGV0ZSBhbmFseXNpcy4gSSdtIHJlYWR5IHRvIHNldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYxNjIsIk91dHB1dFRva2VucyI6MjA5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NTMuMTQ1MDcxMjlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTUzMDAwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQSFlMSU5LXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2F0dGFjaF9kaXJlY3RcIixcbiAgICBcInBoeV9wcm9iZVwiLFxuICAgIFwicGh5X3JlbW92ZVwiLFxuICAgIFwicGh5X2RldmljZV9jcmVhdGVcIixcbiAgICBcInBoeWxpbmtfYnJpbmd1cF9waHlcIixcbiAgICBcInBoeWxpbmtfZGlzY29ubmVjdF9waHlcIixcbiAgICBcInBoeWxpbmtfY29ubmVjdF9waHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUlEgcHJlc2VydmF0aW9uIGFuZCByZXN0b3JhdGlvbiBsb2dpYyBhY3Jvc3MgUEhZIGRldmljZSBwcm9iZSwgYXR0YWNoLCBkZXRhY2gsIGFuZCByZW1vdmUgbGlmZWN5Y2xlIHBhdGhzIGluIHBoeWxpYiAoZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyksIGFzIHdlbGwgYXMgcGh5bGluayBjb25uZWN0aW9uIGVycm9yIHRlYXJkb3duIChkcml2ZXJzL25ldC9waHkvcGh5bGluay5jKS4gVGhlc2Ugc3Vic3lzdGVtcyBhcmUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsaXplZCBuZXR3b3JraW5nIGRyaXZlcnMgYW5kIFVTQiBFdGhlcm5ldCBkZXZpY2UgZW11bGF0aW9uIChlLmcuIGFzaXgsIGxhbjc4eHgsIHNtc2M5NXh4KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gZGV0ZWN0IHJlZ3Jlc3Npb25zLCBzdGF0ZSBpbmNvbnNpc3RlbmNpZXMsIGFuZCB0ZWFyZG93bi9lcnJvci1oYW5kbGluZyBidWdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUEhZTElOS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV9hdHRhY2hfZGlyZWN0XCIsXG4gICAgXCJwaHlfcHJvYmVcIixcbiAgICBcInBoeV9yZW1vdmVcIixcbiAgICBcInBoeV9kZXZpY2VfY3JlYXRlXCIsXG4gICAgXCJwaHlsaW5rX2JyaW5ndXBfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIHByZXNlcnZhdGlvbiBhbmQgcmVzdG9yYXRpb24gbG9naWMgYWNyb3NzIFBIWSBkZXZpY2UgcHJvYmUsIGF0dGFjaCwgZGV0YWNoLCBhbmQgcmVtb3ZlIGxpZmVjeWNsZSBwYXRocyBpbiBwaHlsaWIgKGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMpLCBhcyB3ZWxsIGFzIHBoeWxpbmsgY29ubmVjdGlvbiBlcnJvciB0ZWFyZG93biAoZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYykuIFRoZXNlIHN1YnN5c3RlbXMgYXJlIHJlYWNoYWJsZSB2aWEgdmlydHVhbGl6ZWQgbmV0d29ya2luZyBkcml2ZXJzIGFuZCBVU0IgRXRoZXJuZXQgZGV2aWNlIGVtdWxhdGlvbiAoZS5nLiBhc2l4LCBsYW43OHh4LCBzbXNjOTV4eCkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGRldGVjdCByZWdyZXNzaW9ucywgc3RhdGUgaW5jb25zaXN0ZW5jaWVzLCBhbmQgdGVhcmRvd24vZXJyb3ItaGFuZGxpbmcgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NTMuMjI2NjA4NjQ1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ4ODg2ODM1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjQ2OjUzLjIyNzIwMTA1NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEyNDg4MjcxODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgcmVzb2x2ZXMgc3RhdGUgdHJhY2tpbmcgYW5kIGNsZWFudXAgaXNzdWVzIGZvciBQSFkgaW50ZXJydXB0IHJlc3RvcmF0aW9uICh2aWEgYSBuZXcgYGlycV9zYXZlZGAgZmllbGQpIGFuZCBlcnJvciBoYW5kbGluZyBkdXJpbmcgcGh5bGluayBicmluZ3VwL2Rpc2Nvbm5lY3QuXFxuXFxuMS4gTWVtb3J5IGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uOiBgc3RydWN0IHBoeV9kZXZpY2VgIGlzIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jX29iamAsIGFuZCB0aGUgbmV3IGBpcnFfc2F2ZWRgIGZpZWxkIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYFBIWV9QT0xMYCB1cG9uIGNyZWF0aW9uIGluIGBwaHlfZGV2aWNlX2NyZWF0ZSgpYC5cXG4yLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZTogQWxsIG9wZXJhdGlvbnMgb24gYGlycV9zYXZlZGAgYW5kIGBwaHlkZXZgIG1lbWJlcnMgb3BlcmF0ZSBvbiBmdWxseSBpbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzIGFuZCBkbyBub3QgcmVhZCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5LlxcbjMuIE5vIGluZm8tbGVha3M6IE5vIHN0cnVjdHVyZXMsIHBhZGRpbmcsIG9yIGJ1ZmZlcnMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlIChubyBgY29weV90b191c2VyYCwgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bHMsIGV0Yy4pLlxcbjQuIEtBU0FOIC8gTE9DS0RFUCBhcHBsaWNhYmlsaXR5OiBBbnkgaXNzdWVzIGludHJvZHVjZWQgaW4gdGhlc2UgcGF0aHMgKHN1Y2ggYXMgbG9ja2luZyBtaXN0YWtlcyBhcm91bmQgYHBsLVxcdTAwM2VwaHlkZXZfbXV0ZXhgIG9yIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcykgYXJlIGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ODJjYjk1MGZiMjMyMGYwZjA2M2ViYjExNzRmMGFhNjZhZmMwOTRmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAwMTo0NjowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li5iYTExNzE0NzcyMWFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTc3MCw2ICs3NzAsNyBAQCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXG4gXHRtZGlvZGV2LVx1MDAzZWRldmljZV9yZW1vdmUgPSBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlO1xuIFx0bWRpb2Rldi1cdTAwM2VyZXNldF9zdGF0ZSA9IC0xO1xuIFxuK1x0ZGV2LVx1MDAzZWlycV9zYXZlZCA9IFBIWV9QT0xMO1xuIFx0ZGV2LVx1MDAzZXNwZWVkID0gU1BFRURfVU5LTk9XTjtcbiBcdGRldi1cdTAwM2VkdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcbiBcdGRldi1cdTAwM2VwYXVzZSA9IGZhbHNlO1xuQEAgLTE3MzQsNiArMTczNSwxOSBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG4gfVxuIFxuKy8qIEdpdmUgYmFjayB3aGF0IHBoeV9wcm9iZSgpIHRvb2ssIGJ1dCBub3Qgd2hpbGUgcGh5X2xpbmtfY2hhbmdlIG1hcmtzIGFcbisgKiBjb25zdW1lcjogaXQgc2tpcHBlZCBwaHlfcmVxdWVzdF9pbnRlcnJ1cHQoKSBvbiB0aGUgdmFsdWUgaXQgc2F3LCBzb1xuKyAqIHBoeV9kaXNjb25uZWN0KCkgd291bGQgZnJlZSBhbiBpbnRlcnJ1cHQgbm9ib2R5IHJlcXVlc3RlZC5cbisgKi9cbitzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9wcm9iZV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRpZiAocGh5ZGV2LVx1MDAzZXBoeV9saW5rX2NoYW5nZSB8fCBwaHlkZXYtXHUwMDNlaXJxX3NhdmVkID09IFBIWV9QT0xMKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRwaHlkZXYtXHUwMDNlaXJxID0gcGh5ZGV2LVx1MDAzZWlycV9zYXZlZDtcbitcdHBoeWRldi1cdTAwM2VpcnFfc2F2ZWQgPSBQSFlfUE9MTDtcbit9XG4rXG4gLyoqXG4gICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxuICAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxuQEAgLTE4OTYsNiArMTkxMCw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFxuIGVycm9yX21vZHVsZV9wdXQ6XG4gXHRtb2R1bGVfcHV0KGQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyKTtcbitcdHBoeV9yZXN0b3JlX3Byb2JlX2lycShwaHlkZXYpO1xuIFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuIFx0ZC1cdTAwM2Vkcml2ZXIgPSBOVUxMO1xuIGVycm9yX3B1dF9kZXZpY2U6XG5AQCAtMzY5NCw4ICszNzA5LDEwIEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdC8qIERpc2FibGUgdGhlIGludGVycnVwdCBpZiB0aGUgUEhZIGRvZXNuJ3Qgc3VwcG9ydCBpdFxuIFx0ICogYnV0IHRoZSBpbnRlcnJ1cHQgaXMgc3RpbGwgYSB2YWxpZCBvbmVcbiBcdCAqL1xuLVx0aWYgKCFwaHlfZHJ2X3N1cHBvcnRzX2lycShwaHlkcnYpIFx1MDAyNlx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeWRldikpXG4rXHRpZiAoIXBoeV9kcnZfc3VwcG9ydHNfaXJxKHBoeWRydikgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkge1xuK1x0XHRwaHlkZXYtXHUwMDNlaXJxX3NhdmVkID0gcGh5ZGV2LVx1MDAzZWlycTtcbiBcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IFBIWV9QT0xMO1xuK1x0fVxuIFxuIFx0aWYgKHBoeWRydi1cdTAwM2VmbGFncyBcdTAwMjYgUEhZX0lTX0lOVEVSTkFMKVxuIFx0XHRwaHlkZXYtXHUwMDNlaXNfaW50ZXJuYWwgPSB0cnVlO1xuQEAgLTM4MjAsNiArMzgzNyw4IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4gXHRcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xuIFxuK1x0cGh5X3Jlc3RvcmVfcHJvYmVfaXJxKHBoeWRldik7XG4rXG4gXHQvKiBSZS1hc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCBvbiBlcnJvciAqL1xuIFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xuIFxuQEAgLTM4NDgsNiArMzg2Nyw4IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUpXG4gXHRcdHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKHBoeWRldik7XG4gXG4rXHRwaHlfcmVzdG9yZV9wcm9iZV9pcnEocGh5ZGV2KTtcbitcbiBcdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDNlYzNiYjQzOTEwOTUuLjZhOTJmYWM1OGYyNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMjA4Myw2ICsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0cmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpO1xuIH1cbiBcbisvKiBEaXNhc3NvY2lhdGUgQHBoeSBmcm9tIEBwbC4gQ2FsbGVyIG11c3QgaG9sZCBwbC1cdTAwM2VwaHlkZXZfbXV0ZXguICovXG4rc3RhdGljIHZvaWQgcGh5bGlua19jbGVhcl9waHlkZXYoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuK3tcbitcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4rXHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuK1x0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbitcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuQEAgLTIxOTcsNiArMjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0aWYgKHJldCA9PSAwIFx1MDAyNlx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeSkpXG4gXHRcdHBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpO1xuIFxuK1x0aWYgKHJldCkge1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4rXHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbitcdH1cbitcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTIzNDcsMTUgKzIzNjUsOCBAQCB2b2lkIHBoeWxpbmtfZGlzY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsKVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuIFx0cGh5ID0gcGwtXHUwMDNlcGh5ZGV2O1xuLVx0aWYgKHBoeSkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdHBsLVx1MDAzZXBoeWRldiA9IE5VTEw7XG4tXHRcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4tXHRcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0fVxuK1x0aWYgKHBoeSlcbitcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbiBcbiBcdGlmIChwaHkpIHtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaFxuaW5kZXggNWY4ZDY1ODY4ZTBmZi4uZDQ5MjQxNzU3MmEwZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmhcbisrKyBiL2luY2x1ZGUvbGludXgvcGh5LmhcbkBAIC01OTEsNiArNTkxLDggQEAgc3RydWN0IHBoeV9vYXRjMTRfc3FpX2NhcGFiaWxpdHkge1xuICAqICAgICAgLSBCaXRzIFszMToyNF0gYXJlIHJlc2VydmVkIGZvciBkZWZpbmluZyBnZW5lcmljXG4gICogICAgICAgIFBIWSBkcml2ZXIgYmVoYXZpb3IuXG4gICogQGlycTogSVJRIG51bWJlciBvZiB0aGUgUEhZJ3MgaW50ZXJydXB0ICgtMSBpZiBub25lKVxuKyAqIEBpcnFfc2F2ZWQ6IEBpcnEgYXMgaXQgd2FzIGJlZm9yZSBwaHlfcHJvYmUoKSByZXBsYWNlZCBpdCB3aXRoIFBIWV9QT0xMLFxuKyAqICAgICAgICAgICAgIG9yIFBIWV9QT0xMIHdoZW4gdGhlcmUgaXMgbm90aGluZyB0byByZXN0b3JlXG4gICogQHBoeWxpbms6IFBvaW50ZXIgdG8gcGh5bGluayBpbnN0YW5jZSBmb3IgdGhpcyBQSFlcbiAgKiBAc2ZwX2J1c19hdHRhY2hlZDogRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIFNGUCBidXMgaGFzIGJlZW4gYXR0YWNoZWRcbiAgKiBAc2ZwX2J1czogU0ZQIGJ1cyBhdHRhY2hlZCB0byB0aGlzIFBIWSdzIGZpYmVyIHBvcnRcbkBAIC03NjEsNiArNzYzLDcgQEAgc3RydWN0IHBoeV9kZXZpY2Uge1xuIFx0ICogLTEgbWVhbnMgbm8gaW50ZXJydXB0XG4gXHQgKi9cbiBcdGludCBpcnE7XG4rXHRpbnQgaXJxX3NhdmVkO1xuIFxuIFx0LyogcHJpdmF0ZSBkYXRhIHBvaW50ZXIgKi9cbiBcdC8qIEZvciB1c2UgYnkgUEhZcyB0byBtYWludGFpbiBleHRyYSBzdGF0ZSAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NTMuMjI3MjAzODc1WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUyNTgwOTEwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIFBhdGNoIGZvciBQb3RlbnRpYWwgS01TQU4gQ29uY2VybnMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgc2VlIGlmIHdlIG5lZWQgdG8gZmlyZSB1cCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uLiBGaXJzdCwgSSBuZWVkIHRvIGJyZWFrIGRvd24gdGhlIGNoYW5nZXMuIFRoZSBkaWZmIHNob3dzIG1vZGlmaWNhdGlvbnMgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AsIGFuZCBgaW5jbHVkZS9saW51eC9waHkuaGAuIEkgc2VlIGNoYW5nZXMgdG8gdGhlIFBIWSBpbnRlcnJ1cHQgaGFuZGxpbmcsIHNwZWNpZmljYWxseSBhcm91bmQgc2F2aW5nIGFuZCByZXN0b3JpbmcgdGhlIGludGVycnVwdCBudW1iZXIgKGBpcnFfc2F2ZWRgKS5cblxuSW4gYHBoeV9kZXZpY2UuY2AsIHRoZXkndmUgYWRkZWQgYGlycV9zYXZlZGAgdG8gdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3QuICBJdCBsb29rcyBsaWtlIHRoaXMgdmFyaWFibGUgaXMgYmVpbmcgdXNlZCB0byB0ZW1wb3JhcmlseSBzdG9yZSB0aGUgb3JpZ2luYWwgaW50ZXJydXB0IG51bWJlciAoYHBoeWRldi1cdTAwM2VpcnFgKSB3aGVuIGl0J3MgYmVpbmcgcG9sbGVkIGluc3RlYWQuICBUaGUgY29kZSBpbiBgcGh5X3Byb2JlYCwgYHBoeV9yZW1vdmVgLCBhbmQgYHBoeV9hdHRhY2hfZGlyZWN0YCBzZWVtIHRvIGJlIHRoZSBrZXkgYXJlYXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZW4gYW5kIHdoeSB0aGUgaW50ZXJydXB0IGlzIGJlaW5nIFwic2F2ZWRcIiBhbmQgXCJyZXN0b3JlZC5cIiAgVGhlIHJlZmFjdG9yaW5nIGluIGBwaHlsaW5rLmNgIHdpdGggdGhlIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgZnVuY3Rpb24gbG9va3MgbGlrZSBhIGNsZWFudXAgb3BlcmF0aW9uLCBwb3NzaWJseSByZWxhdGVkIHRvIGVycm9yIGhhbmRsaW5nLlxuXG5Ob3csIHRoZSBjcml0aWNhbCBwYXJ0OiB1bmluaXRpYWxpemVkIG1lbW9yeSBhbmQgcG90ZW50aWFsIGluZm9ybWF0aW9uIGxlYWtzLiAgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGBpcnFfc2F2ZWRgIGlzbid0IGEgdmVjdG9yIGZvciB2dWxuZXJhYmlsaXRpZXMuIEkgc2VlIGBkZXYtXHUwMDNlaXJxX3NhdmVkYCBpcyBpbml0aWFsaXplZCB0byBgUEhZX1BPTExgIGR1cmluZyBgcGh5X2RldmljZV9jcmVhdGVgLCB3aGljaCBpcyBnb29kLiAgSSBuZWVkIHRvIHZlcmlmeSB0aGUgYWxsb2NhdGlvbiBvZiB0aGUgYHBoeV9kZXZpY2VgIHN0cnVjdCBpdHNlbGYsIGJ1dCBpdCBhcHBlYXJzIHRvIGJlIGluaXRpYWxpemVkIHZpYSBga3phbGxvY2AuIEkgYWxzbyBjaGVja2VkIHRoZSBjb2RlIGFuZCB0aGVyZSBhcHBlYXIgdG8gYmUgbm8gbmV3IGluc3RhbmNlcyBvZiBgY29weV90b191c2VyYCwgYHB1dF91c2VyYCwgbmV0bGluayBza2IgYXR0cnMsIGlvY3Rscywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzIHRoYXQgY291bGQgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGxlYWtzLiBJIGRvbid0IHNlZSBhbnkgb2J2aW91cyB1bmluaXRpYWxpemVkIHN0cnVjdCBmaWVsZHMsIHVuaW5pdGlhbGl6ZWQgYnVmZmVycyBiZWluZyBwYXNzZWQgYXJvdW5kIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGJyYW5jaGluZy4gTm8gY2hhbmdlcyBzZWVtIHRvIGhhdmUgaW1wYWN0ZWQgdGhlIHVzZXItc3BhY2UgQUJJIHdoaWNoIHdvdWxkIGJlIGFub3RoZXIgcG9pbnQgb2YgY29uY2Vybi5cblxuVG8gYmUgZXh0cmEgc3VyZSwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBgcGh5X2RldmljZV9jcmVhdGVgIGZ1bmN0aW9uIGluIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCB0byBjb25maXJtIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgYWxsb2NhdGlvbiBkZXRhaWxzLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJZiB0aGlzIGlzIGEgc2ltcGxlIGludGVycnVwdCBoYW5kbGluZyBjaGFuZ2Ugd2l0aCBhIHByb3BlciBpbml0aWFsaXphdGlvbiBwYXRoLCBJIGRvbid0IGV4cGVjdCBhbnkgS01TQU4gYWxhcm1zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODQ5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTkzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NTguNDg1Mjk4NTk2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzgzMjk5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfZGV2aWNlX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jPTU1MT1zdGF0aWMgdm9pZCB0amExMTAyX3AxX3JlZ2lzdGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU4NS1cXHRcXHQvKiBSZWFsIFBIWSBJRCBvZiBQb3J0IDEgaXMgMCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU4NjpcXHRcXHRwaHkgPSBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIFBIWV9JRF9USkExMTAyLCBmYWxzZSwgTlVMTCk7XFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTg3LVxcdFxcdGlmIChJU19FUlIocGh5KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTkyLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU5MzpcXHRcXHQvKiBPdmVyd3JpdGUgcGFyZW50IGRldmljZS4gcGh5X2RldmljZV9jcmVhdGUoKSBzZXQgcGFyZW50IHRvXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTk0LVxcdFxcdCAqIHRoZSBtaWlfYnVzLVxcdTAwM2VkZXYsIHdoaWNoIGlzIG5vdCBjb3JyZWN0IGluIGNhc2UuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTcyOD1zdGF0aWMgaW50IHBoeV9yZXF1ZXN0X2RyaXZlcl9tb2R1bGUoc3RydWN0IHBoeV9kZXZpY2UgKmRldiwgdTMyIHBoeV9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNzQ3LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NzQ4OnN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgdTMyIHBoeV9pZCxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc0OS1cXHRcXHRcXHRcXHQgICAgIGJvb2wgaXNfYzQ1LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy04NDAtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6ODQxOkVYUE9SVF9TWU1CT0wocGh5X2RldmljZV9jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtODQyLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMDcyPXN0cnVjdCBwaHlfZGV2aWNlICpnZXRfcGh5X2RldmljZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwOTctXFx0XFx0aWYgKCFyKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTA5ODpcXHRcXHRcXHRyZXR1cm4gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDk5LVxcdFxcdFxcdFxcdFxcdFxcdCB0cnVlLCBcXHUwMDI2YzQ1X2lkcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDEtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTAyOlxcdHJldHVybiBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIHBoeV9pZCwgaXNfYzQ1LCBcXHUwMDI2YzQ1X2lkcyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTAzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDY6NTguNTM5MTM4MzAyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0MTMyMjIwNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBQSFkgRGV2aWNlIENyZWF0aW9uKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYHBoeV9kZXZpY2VfY3JlYXRlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkLiBUaGlzIGlzIGZ1bmRhbWVudGFsOyBhIG1pc3N0ZXAgaGVyZSBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiBtZW1vcnkgY29ycnVwdGlvbiBvciBhbGxvY2F0aW9uIGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJJ20gZ29pbmcgdG8gZm9sbG93IHRoZSBmbG93IG9mIGV4ZWN1dGlvbiBhbmQgbWVudGFsbHkgcGFyc2UgZWFjaCBhbGxvY2F0aW9uIGNhbGwsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHNvdXJjZSBvZiB0aGUgbWVtb3J5IGFuZCB0aGUgZGF0YSBiZWluZyBpbml0aWFsaXplZC4gSXMgaXQgb24gdGhlIHN0YWNrLCBkeW5hbWljYWxseSBmcm9tIHRoZSBoZWFwIHZpYSBga21hbGxvY2AsIG9yIHBvdGVudGlhbGx5IHVzaW5nIHNvbWUga2luZCBvZiBjdXN0b20gYWxsb2NhdG9yPyBBbHNvLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBQSFkgZGF0YSBpcyBoYW5kbGVkLiBJcyB0aGVyZSBwcm9wZXIgZXJyb3IgY2hlY2tpbmcgYXQgZWFjaCBhbGxvY2F0aW9uIHN0ZXA/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBpZiBhbiBhbGxvY2F0aW9uIGZhaWxzIHBhcnQgd2F5IHRocm91Z2ggdGhlIHByb2Nlc3M/IEknbGwgc3BlY2lmaWNhbGx5IGxvb2sgZm9yIGhvdyBvdGhlciByZWxldmFudCBzdHJ1Y3R1cmVzIGFuZCBwb2ludGVycyBhcmUgc2V0IGluIHJlbGF0aW9uIHRvIGl0IC0gc3VjaCBhcyB0aGUgcGFyZW50IHN0cnVjdHVyZSBwb2ludGVycy4gVW5kZXJzdGFuZGluZyB0aGUgYWxsb2NhdGlvbiBzdHJhdGVneSB3aWxsIGRpcmVjdGx5IGluZm9ybSBob3cgSSBkZWFsIHdpdGggdGhpcyBjb2RlIGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2ODIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NzowMC45NTIzNjI2NzZaIiwiU2VxIjozMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUzNzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzQ1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzQ1OlxcdFxcdHJldHVybiAwO1xcbiA3NDY6XFx0fVxcbiA3NDc6XFx0XFxuIDc0ODpcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXFxuIDc0OTpcXHRcXHRcXHRcXHRcXHQgICAgIGJvb2wgaXNfYzQ1LFxcbiA3NTA6XFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGh5X2M0NV9kZXZpY2VfaWRzICpjNDVfaWRzKVxcbiA3NTE6XFx0e1xcbiA3NTI6XFx0XFx0c3RydWN0IHBoeV9kZXZpY2UgKmRldjtcXG4gNzUzOlxcdFxcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldjtcXG4gNzU0OlxcdFxcdGludCByZXQgPSAwO1xcbiA3NTU6XFx0XFxuIDc1NjpcXHRcXHQvKiBXZSBhbGxvY2F0ZSB0aGUgZGV2aWNlLCBhbmQgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB2YWx1ZXMgKi9cXG4gNzU3OlxcdFxcdGRldiA9IGt6YWxsb2Nfb2JqKCpkZXYpO1xcbiA3NTg6XFx0XFx0aWYgKCFkZXYpXFxuIDc1OTpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4gNzYwOlxcdFxcbiA3NjE6XFx0XFx0bWRpb2RldiA9IFxcdTAwMjZkZXYtXFx1MDAzZW1kaW87XFxuIDc2MjpcXHRcXHRtZGlvZGV2LVxcdTAwM2VkZXYucGFyZW50ID0gXFx1MDAyNmJ1cy1cXHUwMDNlZGV2O1xcbiA3NjM6XFx0XFx0bWRpb2Rldi1cXHUwMDNlZGV2LmJ1cyA9IFxcdTAwMjZtZGlvX2J1c190eXBlO1xcbiA3NjQ6XFx0XFx0bWRpb2Rldi1cXHUwMDNlZGV2LnR5cGUgPSBcXHUwMDI2bWRpb19idXNfcGh5X3R5cGU7XFxuIDc2NTpcXHRcXHRtZGlvZGV2LVxcdTAwM2VidXMgPSBidXM7XFxuIDc2NjpcXHRcXHRtZGlvZGV2LVxcdTAwM2VidXNfbWF0Y2ggPSBwaHlfYnVzX21hdGNoO1xcbiA3Njc6XFx0XFx0bWRpb2Rldi1cXHUwMDNlYWRkciA9IGFkZHI7XFxuIDc2ODpcXHRcXHRtZGlvZGV2LVxcdTAwM2VmbGFncyA9IE1ESU9fREVWSUNFX0ZMQUdfUEhZO1xcbiA3Njk6XFx0XFx0bWRpb2Rldi1cXHUwMDNlZGV2aWNlX2ZyZWUgPSBwaHlfbWRpb19kZXZpY2VfZnJlZTtcXG4gNzcwOlxcdFxcdG1kaW9kZXYtXFx1MDAzZWRldmljZV9yZW1vdmUgPSBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlO1xcbiA3NzE6XFx0XFx0bWRpb2Rldi1cXHUwMDNlcmVzZXRfc3RhdGUgPSAtMTtcXG4gNzcyOlxcdFxcbiA3NzM6XFx0XFx0ZGV2LVxcdTAwM2VpcnFfc2F2ZWQgPSBQSFlfUE9MTDtcXG4gNzc0OlxcdFxcdGRldi1cXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xcbiA3NzU6XFx0XFx0ZGV2LVxcdTAwM2VkdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcXG4gNzc2OlxcdFxcdGRldi1cXHUwMDNlcGF1c2UgPSBmYWxzZTtcXG4gNzc3OlxcdFxcdGRldi1cXHUwMDNlYXN5bV9wYXVzZSA9IGZhbHNlO1xcbiA3Nzg6XFx0XFx0ZGV2LVxcdTAwM2VsaW5rID0gMDtcXG4gNzc5OlxcdFxcdGRldi1cXHUwMDNlcG9ydCA9IFBPUlRfVFA7XFxuIDc4MDpcXHRcXHRkZXYtXFx1MDAzZWludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJO1xcbiA3ODE6XFx0XFxuIDc4MjpcXHRcXHRkZXYtXFx1MDAzZWF1dG9uZWcgPSBBVVRPTkVHX0VOQUJMRTtcXG4gNzgzOlxcdFxcbiA3ODQ6XFx0XFx0ZGV2LVxcdTAwM2VwbWFfZXh0YWJsZSA9IC1FTk9EQVRBO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMTo0NzowMC45NTI2MTg1NjZaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDc2MjgzNjI5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBIWSBEZXZpY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgdGhlIGNvcmUgYWxsb2NhdGlvbiBpcyB1c2luZyBga3phbGxvY19vYmooKmRldilgLiBUaGF0J3MgZ29vZCwga2VlcHMgdGhpbmdzIGNsZWFuIHdpdGggdGhlIHplcm9lZCBtZW1vcnkuIFRoZSBjcnVjaWFsIHRoaW5nIGlzIHRoZSBleHBsaWNpdCBzZXR0aW5nIG9mIGBkZXYtXHUwMDNlaXJxX3NhdmVkID0gUEhZX1BPTEw7YC4gVGhpcyB0ZWxscyBtZSB0aGUgZm9jdXMgaGVyZSBpcyBvbiByb2J1c3QgSVJRIGhhbmRsaW5nLCBhbmQgZ2l2ZW4gdGhlIGNvbnRleHQsIEkgc3VzcGVjdCBpdCdzIGFib3V0IG1hbmFnaW5nIGludGVycnVwdCBzdGF0ZSBkdXJpbmcgZXJyb3Igc2NlbmFyaW9zLlxuXG5Mb29raW5nIGNsb3NlciwgdGhlIGVudGlyZSBwYXRjaCBzZXJpZXMgYm9pbHMgZG93biB0byB0d28ga2V5IGFyZWFzOlxuXG4xLiAgKipJUlEgcmVzdG9yYXRpb24gbWFuYWdlbWVudDoqKiBUaGUgcHJpbWFyeSBnb2FsIGlzIHRvIHByZXZlbnQgc3RhdGUgaW5jb25zaXN0ZW5jaWVzLiBXZSdyZSB0YWxraW5nIGFib3V0IHNpdHVhdGlvbnMgd2hlcmUgaW50ZXJydXB0cyBtaWdodCBiZSBpbmNvcnJlY3RseSByZS1lbmFibGVkIG9yIGZyZWVkIHdoZW4gdGhlIHVuZGVybHlpbmcgZHJpdmVyIGRvZXNuJ3QgYWN0dWFsbHkgc3VwcG9ydCB0aGVtLiBTbywgaXQncyBhYm91dCBiZWluZyB2ZXJ5IGNhcmVmdWwgYWJvdXQgd2hlcmUgYW5kIHdoZW4gd2UgbWFuYWdlIHRoZSBJUlEgc3RhdGUgb2YgdGhlIFBIWSBkZXZpY2UsIGVzcGVjaWFsbHkgZHVyaW5nIHByb2JlLCByZW1vdmUsIGFuZCBhdHRhY2ggb3BlcmF0aW9ucyB3aGVyZSBmYWlsdXJlcyBhcmUgcG9zc2libGUuIFRoaXMgaXMgc21hcnQsIGF2b2lkcyBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG4yLiAgKipQaHlsaW5rIGVycm9yIGhhbmRsaW5nOioqIFRoZSBzZWNvbmQgYXJlYSBpcyBhIHJlZmFjdG9yaW5nIG9mIGhvdyB3ZSBoYW5kbGUgZXJyb3JzIHdoZW4gYnJpbmdpbmcgdXAgb3IgZGlzY29ubmVjdGluZyBhIHBoeWxpbmsuIFNwZWNpZmljYWxseSwgaWYgdGhlIGxpbmsgZXN0YWJsaXNobWVudCBmYWlscywgdGhpcyBwYXRjaCBjbGVhbmx5IGRpc2Fzc29jaWF0ZXMgdGhlIHBoeWxpbmsgZnJvbSB0aGUgUEhZIGRldmljZS4gTWFrZXMgc2Vuc2UsIGtlZXBzIHRoaW5ncyBjb25zaXN0ZW50IGFuZCBwcmV2ZW50cyBkYW5nbGluZyBwb2ludGVycyBvciBzdGFsZSBzdGF0ZXMuXG5cblRoaXMgc2VlbXMgdG8gYmUgZW50aXJlbHkgaW50ZXJuYWwga2VybmVsIGxvZ2ljLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHN0YXRlIHRyYWNraW5nIGFuZCBlcnJvciBoYW5kbGluZyBmb3IgaG93IHBoeWxpbmsgYW5kIHBoeV9kZXZpY2UgaW50ZXJhY3QuIFRoZXJlJ3Mgbm8gdXNlci1zcGFjZSBpbnRlcmFjdGlvbiwgbm8gbWVtb3J5IGNvcHlpbmcsIGFuZCwgaW1wb3J0YW50bHksIG5vIGluZGljYXRpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgZGF0YSBsZWFrcy4gVGhhdCBpcyByZWFzc3VyaW5nLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCwgaXQgc2VlbXMgYW55IHBvdGVudGlhbCBpc3N1ZXMg4oCTIHRoaW5ncyBsaWtlIGxvY2tpbmcgcHJvYmxlbXMsIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMsIG9yIGRvdWJsZS1mcmVlcyDigJMgYXJlIGlzc3VlcyB0aGF0IHdvdWxkIGJlIHJlYWRpbHkgZGV0ZWN0YWJsZSBieSBLQVNBTiBhbmQgTE9DS0RFUC4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGlzIHBhdGNoLCBJIHRoaW5rIHRoZSBhZGRpdGlvbiBvZiBLTVNBTiBvZmZlcnMgbm8gcmVhbCBiZW5lZml0IGFzIGl0IGRlYWxzIHdpdGggbWVtb3J5IHNhZmV0eSBpc3N1ZXMuXG5cbkFscmlnaHQsIEkgdGhpbmsgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wbGljYXRpb25zIGhlcmUuIExldCdzIGJ1aWxkIHVwIHRoZSBuZWNlc3NhcnkgcmVhc29uaW5nIGFuZCBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MDgsIk91dHB1dFRva2VucyI6MjU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6NDc6MDUuNzE1NDU2ODc4WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgcmVzb2x2ZXMgc3RhdGUgdHJhY2tpbmcgYW5kIGNsZWFudXAgaXNzdWVzIGZvciBQSFkgaW50ZXJydXB0IHJlc3RvcmF0aW9uICh2aWEgYSBuZXcgYGlycV9zYXZlZGAgZmllbGQpIGFuZCBlcnJvciBoYW5kbGluZyBkdXJpbmcgcGh5bGluayBicmluZ3VwL2Rpc2Nvbm5lY3QuXFxuXFxuMS4gTWVtb3J5IGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uOiBgc3RydWN0IHBoeV9kZXZpY2VgIGlzIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jX29iamAsIGFuZCB0aGUgbmV3IGBpcnFfc2F2ZWRgIGZpZWxkIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYFBIWV9QT0xMYCB1cG9uIGNyZWF0aW9uIGluIGBwaHlfZGV2aWNlX2NyZWF0ZSgpYC5cXG4yLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZTogQWxsIG9wZXJhdGlvbnMgb24gYGlycV9zYXZlZGAgYW5kIGBwaHlkZXZgIG1lbWJlcnMgb3BlcmF0ZSBvbiBmdWxseSBpbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzIGFuZCBkbyBub3QgcmVhZCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5LlxcbjMuIE5vIGluZm8tbGVha3M6IE5vIHN0cnVjdHVyZXMsIHBhZGRpbmcsIG9yIGJ1ZmZlcnMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlIChubyBgY29weV90b191c2VyYCwgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bHMsIGV0Yy4pLlxcbjQuIEtBU0FOIC8gTE9DS0RFUCBhcHBsaWNhYmlsaXR5OiBBbnkgaXNzdWVzIGludHJvZHVjZWQgaW4gdGhlc2UgcGF0aHMgKHN1Y2ggYXMgbG9ja2luZyBtaXN0YWtlcyBhcm91bmQgYHBsLVxcdTAwM2VwaHlkZXZfbXV0ZXhgIG9yIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcykgYXJlIGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgcmVzb2x2ZXMgc3RhdGUgdHJhY2tpbmcgYW5kIGNsZWFudXAgaXNzdWVzIGZvciBQSFkgaW50ZXJydXB0IHJlc3RvcmF0aW9uICh2aWEgYSBuZXcgYGlycV9zYXZlZGAgZmllbGQpIGFuZCBlcnJvciBoYW5kbGluZyBkdXJpbmcgcGh5bGluayBicmluZ3VwL2Rpc2Nvbm5lY3QuXFxuXFxuMS4gTWVtb3J5IGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uOiBgc3RydWN0IHBoeV9kZXZpY2VgIGlzIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jX29iamAsIGFuZCB0aGUgbmV3IGBpcnFfc2F2ZWRgIGZpZWxkIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYFBIWV9QT0xMYCB1cG9uIGNyZWF0aW9uIGluIGBwaHlfZGV2aWNlX2NyZWF0ZSgpYC5cXG4yLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZTogQWxsIG9wZXJhdGlvbnMgb24gYGlycV9zYXZlZGAgYW5kIGBwaHlkZXZgIG1lbWJlcnMgb3BlcmF0ZSBvbiBmdWxseSBpbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzIGFuZCBkbyBub3QgcmVhZCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5LlxcbjMuIE5vIGluZm8tbGVha3M6IE5vIHN0cnVjdHVyZXMsIHBhZGRpbmcsIG9yIGJ1ZmZlcnMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlIChubyBgY29weV90b191c2VyYCwgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bHMsIGV0Yy4pLlxcbjQuIEtBU0FOIC8gTE9DS0RFUCBhcHBsaWNhYmlsaXR5OiBBbnkgaXNzdWVzIGludHJvZHVjZWQgaW4gdGhlc2UgcGF0aHMgKHN1Y2ggYXMgbG9ja2luZyBtaXN0YWtlcyBhcm91bmQgYHBsLVxcdTAwM2VwaHlkZXZfbXV0ZXhgIG9yIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcykgYXJlIGNvdmVyZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow4khs8[1] Phase: Succeeded StartedAt: 2026-09-07 01:47:17 +0000 UTC FinishedAt: 2026-09-07 01:47:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-07 01:47:17 +0000 UTC FinishedAt: 2026-09-07 01:47:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2] Phase: Succeeded StartedAt: 2026-09-07 01:47:17 +0000 UTC FinishedAt: 2026-09-07 03:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-07 01:47:17 +0000 UTC FinishedAt: 2026-09-07 03:17:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-07 01:47:17 +0000 UTC FinishedAt: 2026-09-07 01:47:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-07 01:47:17 +0000 UTC FinishedAt: 2026-09-07 01:47:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow4khs8/series-workflow4khs8-convert-artifact-3843138035/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-07 01:47:27 +0000 UTC FinishedAt: 2026-09-07 02:03:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-07 01:47:27 +0000 UTC FinishedAt: 2026-09-07 02:03: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:*663e1eee-40e2-470c-a623-e4a230906c49,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-workflow4khs8/series-workflow4khs8-convert-artifact-3843138035/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": "dda36b9f-5b70-4a03-b1cf-8ec7c3f34263", "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-workflow4khs8/series-workflow4khs8-build-action-464258209/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-07 01:47:27 +0000 UTC FinishedAt: 2026-09-07 02:03:37 +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:*663e1eee-40e2-470c-a623-e4a230906c49,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-workflow4khs8/series-workflow4khs8-convert-artifact-3843138035/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": "dda36b9f-5b70-4a03-b1cf-8ec7c3f34263", "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-workflow4khs8/series-workflow4khs8-build-action-464258209/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-07 02:03:46 +0000 UTC FinishedAt: 2026-09-07 02:03:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-07 02:03:46 +0000 UTC FinishedAt: 2026-09-07 02:03:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-07 02:03:46 +0000 UTC FinishedAt: 2026-09-07 02:03:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-07 02:03:46 +0000 UTC FinishedAt: 2026-09-07 02:03:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow4khs8/series-workflow4khs8-convert-artifact-666300394/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-07 02:03:56 +0000 UTC FinishedAt: 2026-09-07 02:06:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-07 02:03:56 +0000 UTC FinishedAt: 2026-09-07 02:05:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dda36b9f-5b70-4a03-b1cf-8ec7c3f34263,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-workflow4khs8/series-workflow4khs8-build-action-464258209/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-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-07 02:06:08 +0000 UTC FinishedAt: 2026-09-07 02:06:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-07 02:06:08 +0000 UTC FinishedAt: 2026-09-07 02:06:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-07 02:06:08 +0000 UTC FinishedAt: 2026-09-07 02:22:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-07 02:06:08 +0000 UTC FinishedAt: 2026-09-07 02:22:24 +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:*663e1eee-40e2-470c-a623-e4a230906c49,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-workflow4khs8/series-workflow4khs8-convert-artifact-666300394/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": "aa61b459-ecde-4f74-9107-f9dddf261ea1", "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-workflow4khs8/series-workflow4khs8-build-action-2587827214/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-07 02:06:08 +0000 UTC FinishedAt: 2026-09-07 02:22:14 +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:*663e1eee-40e2-470c-a623-e4a230906c49,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-workflow4khs8/series-workflow4khs8-convert-artifact-666300394/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": "aa61b459-ecde-4f74-9107-f9dddf261ea1", "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-workflow4khs8/series-workflow4khs8-build-action-2587827214/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-07 02:22:24 +0000 UTC FinishedAt: 2026-09-07 02:22:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-07 02:22:24 +0000 UTC FinishedAt: 2026-09-07 02:22:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-07 02:22:24 +0000 UTC FinishedAt: 2026-09-07 02:24:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-07 02:22:24 +0000 UTC FinishedAt: 2026-09-07 02:23:56 +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:*aa61b459-ecde-4f74-9107-f9dddf261ea1,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-workflow4khs8/series-workflow4khs8-build-action-2587827214/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-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-07 02:24:05 +0000 UTC FinishedAt: 2026-09-07 03:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-07 02:24:05 +0000 UTC FinishedAt: 2026-09-07 03:17:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"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:*dda36b9f-5b70-4a03-b1cf-8ec7c3f34263,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aa61b459-ecde-4f74-9107-f9dddf261ea1,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-workflow4khs8/series-workflow4khs8-build-action-464258209/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-workflow4khs8/series-workflow4khs8-build-action-2587827214/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-07 02:24:05 +0000 UTC FinishedAt: 2026-09-07 02:24:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-07 02:24:05 +0000 UTC FinishedAt: 2026-09-07 02:24:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"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-workflow4khs8/series-workflow4khs8-convert-artifact-330324607/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-07 02:24:05 +0000 UTC FinishedAt: 2026-09-07 02:24:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-07 02:24:05 +0000 UTC FinishedAt: 2026-09-07 02:24:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-07 02:24:05 +0000 UTC FinishedAt: 2026-09-07 02:24:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-07 02:24:15 +0000 UTC FinishedAt: 2026-09-07 03:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4khs8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_probe","phy_remove","phy_device_create","phylink_bringup_phy","phylink_disconnect_phy","phylink_connect_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6262acad9db197b5ed12e3b245d2e6d0c80fb960","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","PHYLINK"],"series_id":"71e0ef17-70ec-42b4-9cd3-46a46c6efeda","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-07 02:24:15 +0000 UTC FinishedAt: 2026-09-07 03:17:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dda36b9f-5b70-4a03-b1cf-8ec7c3f34263,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aa61b459-ecde-4f74-9107-f9dddf261ea1,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-workflow4khs8/series-workflow4khs8-build-action-464258209/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-workflow4khs8/series-workflow4khs8-build-action-2587827214/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-workflow4khs8/series-workflow4khs8-convert-artifact-330324607/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,}