Name: series-workflowh4fhm Phase: Succeeded StartedAt: 2026-06-30 11:18:15 +0000 UTC FinishedAt: 2026-06-30 13:19:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[0] Phase: Succeeded StartedAt: 2026-06-30 11:18:15 +0000 UTC FinishedAt: 2026-06-30 11:27:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 11:18:15 +0000 UTC FinishedAt: 2026-06-30 11:27:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cef9d6804030793cf8b8796fd6936197d065dd3e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PSE_CONTROLLER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cef9d6804030793cf8b8796fd6936197d065dd3e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PSE_CONTROLLER" ], "series_id": "ce052446-a7f4-4573-bbb4-b3f43e7409cb" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phy_try_attach_pse", "phy_pse_attach_one", "phy_pse_detach_one", "phy_pse_notifier_event", "phy_device_register_locked", "pse_register_notifier", "pse_unregister_notifier", "pse_control_matches_pcdev" ], "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+CgkJCTx0ZD4yMDI2LzA2LzMwIDExOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BTRV9DT05UUk9MTEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X3RyeV9hdHRhY2hfcHNlJiMzNDssCiAgICAmIzM0O3BoeV9wc2VfYXR0YWNoX29uZSYjMzQ7LAogICAgJiMzNDtwaHlfcHNlX2RldGFjaF9vbmUmIzM0OywKICAgICYjMzQ7cGh5X3BzZV9ub3RpZmllcl9ldmVudCYjMzQ7LAogICAgJiMzNDtwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZCYjMzQ7LAogICAgJiMzNDtwc2VfcmVnaXN0ZXJfbm90aWZpZXImIzM0OywKICAgICYjMzQ7cHNlX3VucmVnaXN0ZXJfbm90aWZpZXImIzM0OywKICAgICYjMzQ7cHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUEhZIGRldmljZSByZWdpc3RyYXRpb24gcHJvY2VzcyB0byBhdHRhY2ggUG93ZXIgU291cmNpbmcgRXF1aXBtZW50IChQU0UpIGNvbnRyb2xsZXJzIHVzaW5nIGEgbm90aWZpZXItYmFzZWQgbWVjaGFuaXNtLiBJdCBpbnRyb2R1Y2VzIG5ldyBmdW5jdGlvbnMgdG8gaGFuZGxlIFBTRSBhdHRhY2htZW50L2RldGFjaG1lbnQgYW5kIG5vdGlmaWVyIGV2ZW50cy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB2aXJ0dWFsIE1ESU8gYnVzZXMgKGUuZy4sIFVTQiBuZXR3b3JrIGFkYXB0ZXJzLCBEU0EgbG9vcGJhY2spIGFuZCB2aXJ0dWFsIFBTRSBjb250cm9sbGVycy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyBhdHRhY2htZW50IGxvZ2ljIGFuZCBub3RpZmllciBjYWxsYmFja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTE6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjOGIxZWE5MGIwYzI0YTNmMTQ3ZmJhZjEyNWMyM2JlZWQwOTI2YWU2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTE6MjU6MzMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jIGIvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jXG5pbmRleCBiYTcwOTE1MTgyNjU0MC4uN2JkOTc5YjU5ZjQ5NjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uY1xuQEAgLTExLDMzICYjNDM7MTEsMTEgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9md25vZGVfbWRpby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvcHNlLXBkL3BzZS5oXHUwMDNlXG4gXG4gTU9EVUxFX0FVVEhPUihcJiMzNDtDYWx2aW4gSm9obnNvbiBcdTAwM2NjYWx2aW4uam9obnNvbkBvc3MubnhwLmNvbVx1MDAzZVwmIzM0Oyk7XG4gTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiBNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7RldOT0RFIE1ESU8gYnVzIChFdGhlcm5ldCBQSFkpIGFjY2Vzc29yc1wmIzM0Oyk7XG4gXG4tc3RhdGljIHN0cnVjdCBwc2VfY29udHJvbCAqXG4tZndub2RlX2ZpbmRfcHNlX2NvbnRyb2woc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbi1cdFx0XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYztcbi1cdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7XG4tXG4tXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1BTRV9DT05UUk9MTEVSKSlcbi1cdFx0cmV0dXJuIE5VTEw7XG4tXG4tXHRucCA9IHRvX29mX25vZGUoZndub2RlKTtcbi1cdGlmICghbnApXG4tXHRcdHJldHVybiBOVUxMO1xuLVxuLVx0cHNlYyA9IG9mX3BzZV9jb250cm9sX2dldChucCwgcGh5ZGV2KTtcbi1cdGlmIChQVFJfRVJSKHBzZWMpID09IC1FTk9FTlQpXG4tXHRcdHJldHVybiBOVUxMO1xuLVxuLVx0cmV0dXJuIHBzZWM7XG4tfVxuLVxuIHN0YXRpYyBzdHJ1Y3QgbWlpX3RpbWVzdGFtcGVyICpcbiBmd25vZGVfZmluZF9taWlfdGltZXN0YW1wZXIoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSlcbiB7XG5AQCAtMTE4LDcgJiM0Mzs5Niw2IEBAIGludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcbiBcdFx0XHRcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpjaGlsZCwgdTMyIGFkZHIpXG4ge1xuIFx0c3RydWN0IG1paV90aW1lc3RhbXBlciAqbWlpX3RzID0gTlVMTDtcbi1cdHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyA9IE5VTEw7XG4gXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5O1xuIFx0Ym9vbCBpc19jNDU7XG4gXHR1MzIgcGh5X2lkO1xuQEAgLTE1OSwxNCAmIzQzOzEzNiw2IEBAIGludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcbiBcdFx0XHRnb3RvIGNsZWFuX3BoeTtcbiBcdH1cbiBcbi1cdHBzZWMgPSBmd25vZGVfZmluZF9wc2VfY29udHJvbChjaGlsZCwgcGh5KTtcbi1cdGlmIChJU19FUlIocHNlYykpIHtcbi1cdFx0cmMgPSBQVFJfRVJSKHBzZWMpO1xuLVx0XHRnb3RvIHVucmVnaXN0ZXJfcGh5O1xuLVx0fVxuLVxuLVx0cGh5LVx1MDAzZXBzZWMgPSBwc2VjO1xuLVxuIFx0LyogcGh5LVx1MDAzZW1paV90cyBtYXkgYWxyZWFkeSBiZSBkZWZpbmVkIGJ5IHRoZSBQSFkgZHJpdmVyLiBBXG4gXHQgKiBtaWlfdGltZXN0YW1wZXIgcHJvYmVkIHZpYSB0aGUgZGV2aWNlIHRyZWUgd2lsbCBzdGlsbCBoYXZlXG4gXHQgKiBwcmVjZWRlbmNlLlxuQEAgLTE3Niw5ICYjNDM7MTQ1LDYgQEAgaW50IGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuIFxuIFx0cmV0dXJuIDA7XG4gXG4tdW5yZWdpc3Rlcl9waHk6XG4tXHRpZiAoaXNfYWNwaV9ub2RlKGNoaWxkKSB8fCBpc19vZl9ub2RlKGNoaWxkKSlcbi1cdFx0cGh5X2RldmljZV9yZW1vdmUocGh5KTtcbiBjbGVhbl9waHk6XG4gXHRwaHlfZGV2aWNlX2ZyZWUocGh5KTtcbiBjbGVhbl9taWlfdHM6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbmluZGV4IDA2MTUyMjg0NTllZjQyLi5mNWZlYmZmNGIwMGI4ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0yMjMsOCAmIzQzOzIyMywxOSBAQCBzdGF0aWMgdm9pZCBwaHlfbWRpb19kZXZpY2VfZnJlZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gXG4gc3RhdGljIHZvaWQgcGh5X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbiB7XG4mIzQzO1x0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTtcbiYjNDM7XG4mIzQzO1x0LyogYnVzX2Zvcl9lYWNoX2RldigpIGhvbGRzIGdldF9kZXZpY2UoKSBhY3Jvc3MgZWFjaCBpdGVyYXRpb25cbiYjNDM7XHQgKiBzdGVwLCBkZWZlcnJpbmcgdGhpcyByZWxlYXNlIGNhbGxiYWNrIHVudGlsIGFueSBpbi1mbGlnaHQgUFNFXG4mIzQzO1x0ICogbm90aWZpZXIgd2FsayBoYXMgYWR2YW5jZWQgcGFzdCB0aGlzIHBoeS4gcHNlX2NvbnRyb2xfcHV0KClcbiYjNDM7XHQgKiB0YWtlcyBwc2VfbGlzdF9tdXRleCwgc28gdGhpcyBwYXRoIG11c3QgcnVuIGluIHNsZWVwYWJsZVxuJiM0MztcdCAqIGNvbnRleHQuXG4mIzQzO1x0ICovXG4mIzQzO1x0bWlnaHRfc2xlZXAoKTtcbiYjNDM7XHRwc2VfY29udHJvbF9wdXQocGh5ZGV2LVx1MDAzZXBzZWMpO1xuJiM0MztcbiBcdGZ3bm9kZV9oYW5kbGVfcHV0KGRldi1cdTAwM2Vmd25vZGUpO1xuLVx0a2ZyZWUodG9fcGh5X2RldmljZShkZXYpKTtcbiYjNDM7XHRrZnJlZShwaHlkZXYpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbkBAIC0xMTAyLDExICYjNDM7MTExMywxMDMgQEAgc3RydWN0IHBoeV9kZXZpY2UgKmdldF9waHlfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGlzX2M0NSlcbiB9XG4gRVhQT1JUX1NZTUJPTChnZXRfcGh5X2RldmljZSk7XG4gXG4tLyoqXG4tICogcGh5X2RldmljZV9yZWdpc3RlciAtIFJlZ2lzdGVyIHRoZSBwaHkgZGV2aWNlIG9uIHRoZSBNRElPIGJ1c1xuLSAqIEBwaHlkZXY6IHBoeV9kZXZpY2Ugc3RydWN0dXJlIHRvIGJlIGFkZGVkIHRvIHRoZSBNRElPIGJ1c1xuJiM0MzsvKiBCZXN0LWVmZm9ydCBhdHRhY2ggb2YgcGh5ZGV2LVx1MDAzZXBzZWMgZnJvbSBhIERUIGBwc2VzID0gXHUwMDNjXHUwMDI2Li4uXHUwMDNlYCBwaGFuZGxlLlxuJiM0MzsgKiBDYWxsZXIgbXVzdCBob2xkIHJ0bmwuIEEgbWlzc2luZyBwaGFuZGxlICgtRU5PRU5UKSBvciBhIG5vdC15ZXQtcmVnaXN0ZXJlZFxuJiM0MzsgKiBjb250cm9sbGVyICgtRVBST0JFX0RFRkVSKSBpcyBzaWxlbnQ7IHRoZSBub3RpZmllciByZXRyaWVzIHRoZSBsYXR0ZXIgYXRcbiYjNDM7ICogUFNFX1JFR0lTVEVSRUQgdGltZS4gQW55IG90aGVyIGVycm9yIG1lYW5zIGEgYnJva2VuIGJpbmRpbmcgYW5kIGlzIHdhcm5lZFxuJiM0MzsgKiBhYm91dCwgYnV0IGxlZnQgbm9uLWZhdGFsIHNvIHRoZSBwaHkgc3RpbGwgcmVnaXN0ZXJzLlxuICAqL1xuLWludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3N0YXRpYyB2b2lkIHBoeV90cnlfYXR0YWNoX3BzZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBzZV9jb250cm9sICpwc2VjO1xuJiM0MztcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7XG4mIzQzO1xuJiM0MztcdEFTU0VSVF9SVE5MKCk7XG4mIzQzO1xuJiM0MztcdG5wID0gcGh5ZGV2LVx1MDAzZW1kaW8uZGV2Lm9mX25vZGU7XG4mIzQzO1x0aWYgKCFucClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2Vwc2VjKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRwc2VjID0gb2ZfcHNlX2NvbnRyb2xfZ2V0KG5wLCBwaHlkZXYpO1xuJiM0MztcdGlmIChJU19FUlIocHNlYykpIHtcbiYjNDM7XHRcdGlmIChQVFJfRVJSKHBzZWMpICE9IC1FUFJPQkVfREVGRVIgXHUwMDI2XHUwMDI2IFBUUl9FUlIocHNlYykgIT0gLUVOT0VOVClcbiYjNDM7XHRcdFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcJiMzNDtmYWlsZWQgdG8gZ2V0IFBTRSBjb250cm9sOiAlcGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgIHBzZWMpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cGh5ZGV2LVx1MDAzZXBzZWMgPSBwc2VjO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHBoeV9wc2VfYXR0YWNoX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEgX19tYXliZV91bnVzZWQpXG4mIzQzO3tcbiYjNDM7XHRBU1NFUlRfUlROTCgpO1xuJiM0MztcbiYjNDM7XHRpZiAoZGV2LVx1MDAzZXR5cGUgIT0gXHUwMDI2bWRpb19idXNfcGh5X3R5cGUpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cGh5X3RyeV9hdHRhY2hfcHNlKHRvX3BoeV9kZXZpY2UoZGV2KSk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcGh5X3BzZV9kZXRhY2hfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2ID0gZGF0YTtcbiYjNDM7XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xuJiM0MztcdHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYztcbiYjNDM7XG4mIzQzO1x0QVNTRVJUX1JUTkwoKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGRldi1cdTAwM2V0eXBlICE9IFx1MDAyNm1kaW9fYnVzX3BoeV90eXBlKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTtcbiYjNDM7XHRwc2VjID0gcGh5ZGV2LVx1MDAzZXBzZWM7XG4mIzQzO1x0aWYgKCFwc2VjIHx8ICFwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2KHBzZWMsIHBjZGV2KSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRwaHlkZXYtXHUwMDNlcHNlYyA9IE5VTEw7XG4mIzQzO1x0cHNlX2NvbnRyb2xfcHV0KHBzZWMpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHBoeV9wc2Vfbm90aWZpZXJfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbiYjNDM7XHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKmRhdGEpXG4mIzQzO3tcbiYjNDM7XHRzd2l0Y2ggKGV2ZW50KSB7XG4mIzQzO1x0Y2FzZSBQU0VfUkVHSVNURVJFRDpcbiYjNDM7XHRcdHJ0bmxfbG9jaygpO1xuJiM0MztcdFx0YnVzX2Zvcl9lYWNoX2RldihcdTAwMjZtZGlvX2J1c190eXBlLCBOVUxMLCBOVUxMLFxuJiM0MztcdFx0XHRcdCBwaHlfcHNlX2F0dGFjaF9vbmUpO1xuJiM0MztcdFx0cnRubF91bmxvY2soKTtcbiYjNDM7XHRcdHJldHVybiBOT1RJRllfT0s7XG4mIzQzO1x0Y2FzZSBQU0VfVU5SRUdJU1RFUkVEOlxuJiM0MztcdFx0cnRubF9sb2NrKCk7XG4mIzQzO1x0XHRidXNfZm9yX2VhY2hfZGV2KFx1MDAyNm1kaW9fYnVzX3R5cGUsIE5VTEwsIGRhdGEsXG4mIzQzO1x0XHRcdFx0IHBoeV9wc2VfZGV0YWNoX29uZSk7XG4mIzQzO1x0XHRydG5sX3VubG9jaygpO1xuJiM0MztcdFx0cmV0dXJuIE5PVElGWV9PSztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIE5PVElGWV9ET05FO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBwaHlfcHNlX25vdGlmaWVyIF9fcmVhZF9tb3N0bHkgPSB7XG4mIzQzO1x0Lm5vdGlmaWVyX2NhbGwgPSBwaHlfcHNlX25vdGlmaWVyX2V2ZW50LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7LyogQ29yZSByZWdpc3RyYXRpb246IGFkZCB0aGUgcGh5IHRvIHRoZSBNRElPIGJ1cy4gRG9lcyBub3QgdG91Y2ggcnRubCBvclxuJiM0MzsgKiBQU0UuIHBoeWRldi1cdTAwM2Vwc2VjIGlzIGF0dGFjaGVkIGJ5IHRoZSBjYWxsZXJzIGJlbG93LCBhZnRlciBkZXZpY2VfYWRkKClcbiYjNDM7ICogaGFzIG1hZGUgdGhlIHBoeSB2aXNpYmxlIG9uIG1kaW9fYnVzX3R5cGUsIHNvIHRoYXQgYSBjb25jdXJyZW50IFBTRVxuJiM0MzsgKiBub3RpZmllciB3YWxrIGFuZCB0aGUgYXR0YWNoIGNhbiBuZXZlciBsZWF2ZSB0aGUgcGh5IHVuYXR0YWNoZWQuIEtlZXBpbmdcbiYjNDM7ICogZGV2aWNlX2FkZCgpIG91dCBvZiBydG5sIGFsc28gYXZvaWRzIGRlYWRsb2NraW5nIHdoZW4gYmluZGluZyBhIHBoeSB0aGF0XG4mIzQzOyAqIGl0c2VsZiBwcm92aWRlcyBhbiBTRlAgY2FnZSAocGh5X3Byb2JlKCkgLVx1MDAzZSBwaHlfc2ZwX3Byb2JlKCkgLVx1MDAzZVxuJiM0MzsgKiBzZnBfYnVzX2FkZF91cHN0cmVhbSgpIHRha2VzIHJ0bmwpLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBfX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRpbnQgZXJyO1xuIFxuQEAgLTExMzUsMTAgJiM0MzsxMjM4LDU0IEBAIGludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gIG91dDpcbiBcdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4tXG4gXHRtZGlvYnVzX3VucmVnaXN0ZXJfZGV2aWNlKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvKTtcbiBcdHJldHVybiBlcnI7XG4gfVxuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkIC0gUmVnaXN0ZXIgdGhlIHBoeSBkZXZpY2Ugb24gdGhlIE1ESU8gYnVzXG4mIzQzOyAqIEBwaHlkZXY6IHBoeV9kZXZpY2Ugc3RydWN0dXJlIHRvIGJlIGFkZGVkIHRvIHRoZSBNRElPIGJ1c1xuJiM0MzsgKlxuJiM0MzsgKiBTYW1lIGFzIHBoeV9kZXZpY2VfcmVnaXN0ZXIoKSBidXQgY2FsbGVyIG11c3QgYWxyZWFkeSBob2xkIHJ0bmxfbG9jaygpLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxuJiM0MzsgKi9cbiYjNDM7aW50IHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRBU1NFUlRfUlROTCgpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBfX3BoeV9kZXZpY2VfcmVnaXN0ZXIocGh5ZGV2KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4mIzQzO1x0cGh5X3RyeV9hdHRhY2hfcHNlKHBoeWRldik7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0wocGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWQpO1xuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHBoeV9kZXZpY2VfcmVnaXN0ZXIgLSBSZWdpc3RlciB0aGUgcGh5IGRldmljZSBvbiB0aGUgTURJTyBidXNcbiYjNDM7ICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXG4mIzQzOyAqL1xuJiM0MztpbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gX19waHlfZGV2aWNlX3JlZ2lzdGVyKHBoeWRldik7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1xuJiM0MztcdHJ0bmxfbG9jaygpO1xuJiM0MztcdHBoeV90cnlfYXR0YWNoX3BzZShwaHlkZXYpO1xuJiM0MztcdHJ0bmxfdW5sb2NrKCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4gRVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyKTtcbiBcbiAvKipcbkBAIC0xMTUyLDggJiM0MzsxMjk5LDYgQEAgRVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyKTtcbiB2b2lkIHBoeV9kZXZpY2VfcmVtb3ZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0dW5yZWdpc3Rlcl9taWlfdGltZXN0YW1wZXIocGh5ZGV2LVx1MDAzZW1paV90cyk7XG4tXHRwc2VfY29udHJvbF9wdXQocGh5ZGV2LVx1MDAzZXBzZWMpO1xuLVxuIFx0ZGV2aWNlX2RlbChcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuIFxuIFx0LyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi9cbkBAIC0zOTgxLDggJiM0Mzs0MTI2LDE0IEBAIHN0YXRpYyBpbnQgX19pbml0IHBoeV9pbml0KHZvaWQpXG4gXHRpZiAocmMpXG4gXHRcdGdvdG8gZXJyX2M0NTtcbiBcbiYjNDM7XHRyYyA9IHBzZV9yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZwaHlfcHNlX25vdGlmaWVyKTtcbiYjNDM7XHRpZiAocmMpXG4mIzQzO1x0XHRnb3RvIGVycl9nZW5waHk7XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gXG4mIzQzO2Vycl9nZW5waHk6XG4mIzQzO1x0cGh5X2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmdlbnBoeV9kcml2ZXIpO1xuIGVycl9jNDU6XG4gXHRwaHlfZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2Z2VucGh5X2M0NV9kcml2ZXIpO1xuIGVycl9ldGh0b29sX3BoeV9vcHM6XG5AQCAtMzk5OSw2ICYjNDM7NDE1MCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHBoeV9pbml0KHZvaWQpXG4gXG4gc3RhdGljIHZvaWQgX19leGl0IHBoeV9leGl0KHZvaWQpXG4ge1xuJiM0MztcdHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNnBoeV9wc2Vfbm90aWZpZXIpO1xuIFx0cGh5X2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmdlbnBoeV9jNDVfZHJpdmVyKTtcbiBcdHBoeV9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZnZW5waHlfZHJpdmVyKTtcbiBcdHJ0bmxfbG9jaygpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9zZnAuYyBiL2RyaXZlcnMvbmV0L3BoeS9zZnAuY1xuaW5kZXggMDNiZmQ4NjQwZGI5NjMuLjE4ODY4YmRkNjQ4NTJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3NmcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvc2ZwLmNcbkBAIC0yMDgzLDcgJiM0MzsyMDgzLDcgQEAgc3RhdGljIGludCBzZnBfc21fcHJvYmVfcGh5KHN0cnVjdCBzZnAgKnNmcCwgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxuIFx0LyogTWFyayB0aGlzIFBIWSBhcyBiZWluZyBvbiBhIFNGUCBtb2R1bGUgKi9cbiBcdHBoeS1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlID0gdHJ1ZTtcbiBcbi1cdGVyciA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcbiYjNDM7XHRlcnIgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZChwaHkpO1xuIFx0aWYgKGVycikge1xuIFx0XHRwaHlfZGV2aWNlX2ZyZWUocGh5KTtcbiBcdFx0ZGV2X2VycihzZnAtXHUwMDNlZGV2LCBcJiMzNDtwaHlfZGV2aWNlX3JlZ2lzdGVyIGZhaWxlZDogJXBlXFxuXCYjMzQ7LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jIGIvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmNcbmluZGV4IDY5ZGJkYmRlOWQ3MWE3Li42MTE1NDBkZjQzYmIxYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY1xuQEAgLTgsNiAmIzQzOzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbF9uZXRsaW5rLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbm90aWZpZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BzZS1wZC9wc2UuaFx1MDAzZVxuQEAgLTIzLDYgJiM0MzsyNCwzOSBAQCBzdGF0aWMgTElTVF9IRUFEKHBzZV9jb250cm9sbGVyX2xpc3QpO1xuIHN0YXRpYyBERUZJTkVfWEFSUkFZX0FMTE9DKHBzZV9wd19kX21hcCk7XG4gc3RhdGljIERFRklORV9NVVRFWChwc2VfcHdfZF9tdXRleCk7XG4gXG4mIzQzO3N0YXRpYyBCTE9DS0lOR19OT1RJRklFUl9IRUFEKHBzZV9jb250cm9sbGVyX25vdGlmaWVyKTtcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBwc2VfcmVnaXN0ZXJfbm90aWZpZXIgLSByZWdpc3RlciBhIGNhbGxiYWNrIGZvciBQU0UgY29udHJvbGxlciBldmVudHNcbiYjNDM7ICogQG5iOiBub3RpZmllciBibG9jayB0byByZWdpc3RlclxuJiM0MzsgKlxuJiM0MzsgKiBTZWUgZW51bSBwc2VfY29udHJvbGxlcl9ldmVudCBmb3IgZXZlbnRzIGZpcmVkIGFuZCB0aGVpciBzdWJzY3JpYmVyXG4mIzQzOyAqIGNvbnRyYWN0LiBDYWxsYmFja3MgcnVuIGluIHByb2Nlc3MgY29udGV4dDsgdGhleSBtYXkgc2xlZXAsIHRha2VcbiYjNDM7ICogcnRubCwgYW5kIGNhbGwgb2ZfcHNlX2NvbnRyb2xfZ2V0KCkuIFRoZSBjaGFpbiBmaXJlcyBzeW5jaHJvbm91c2x5LFxuJiM0MzsgKiBzbyBhIFBTRSBjb250cm9sbGVyIGRyaXZlciYjMzk7cyBwcm9iZS91bmJpbmQgcGF0aCBtdXN0IG5vdCBob2xkIGFueVxuJiM0MzsgKiBzdWNoIGxvY2sgd2hlbiBjYWxsaW5nIHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKCkgb3JcbiYjNDM7ICogcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcigpLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4mIzQzOyAqL1xuJiM0MztpbnQgcHNlX3JlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gYmxvY2tpbmdfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoXHUwMDI2cHNlX2NvbnRyb2xsZXJfbm90aWZpZXIsIG5iKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwc2VfcmVnaXN0ZXJfbm90aWZpZXIpO1xuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyIC0gdW5yZWdpc3RlciBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBjYWxsYmFja1xuJiM0MzsgKiBAbmI6IG5vdGlmaWVyIGJsb2NrIHByZXZpb3VzbHkgcGFzc2VkIHRvIHBzZV9yZWdpc3Rlcl9ub3RpZmllcigpXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS5cbiYjNDM7ICovXG4mIzQzO2ludCBwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoXHUwMDI2cHNlX2NvbnRyb2xsZXJfbm90aWZpZXIsIG5iKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcik7XG4mIzQzO1xuIC8qKlxuICAqIHN0cnVjdCBwc2VfY29udHJvbCAtIGEgUFNFIGNvbnRyb2xcbiAgKiBAcGNkZXY6IGEgcG9pbnRlciB0byB0aGUgUFNFIGNvbnRyb2xsZXIgZGV2aWNlXG5AQCAtMTEwNCw2ICYjNDM7MTEzOCw5IEBAIGludCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcihzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldilcbiBcdGxpc3RfYWRkKFx1MDAyNnBjZGV2LVx1MDAzZWxpc3QsIFx1MDAyNnBzZV9jb250cm9sbGVyX2xpc3QpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBzZV9saXN0X211dGV4KTtcbiBcbiYjNDM7XHRibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKFx1MDAyNnBzZV9jb250cm9sbGVyX25vdGlmaWVyLFxuJiM0MztcdFx0XHRcdCAgICAgUFNFX1JFR0lTVEVSRUQsIHBjZGV2KTtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIpO1xuQEAgLTExMTQsNiAmIzQzOzExNTEsOSBAQCBFWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XG4gICovXG4gdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxuIHtcbiYjNDM7XHRibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKFx1MDAyNnBzZV9jb250cm9sbGVyX25vdGlmaWVyLFxuJiM0MztcdFx0XHRcdCAgICAgUFNFX1VOUkVHSVNURVJFRCwgcGNkZXYpO1xuJiM0MztcbiBcdHBzZV9mbHVzaF9wd19kcyhwY2Rldik7XG4gXHRwc2VfcmVsZWFzZV9waXMocGNkZXYpO1xuIFx0aWYgKHBjZGV2LVx1MDAzZWlycSlcbkBAIC0xOTgxLDMgJiM0MzsyMDIxLDE3IEBAIGJvb2wgcHNlX2hhc19jMzMoc3RydWN0IHBzZV9jb250cm9sICpwc2VjKVxuIFx0cmV0dXJuIHBzZWMtXHUwMDNlcGNkZXYtXHUwMDNldHlwZXMgXHUwMDI2IEVUSFRPT0xfUFNFX0MzMztcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocHNlX2hhc19jMzMpO1xuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYgLSBUZXN0IHdoZXRoZXIgYSBwc2VfY29udHJvbCB0YXJnZXRzIGEgY29udHJvbGxlclxuJiM0MzsgKiBAcHNlYzogcHNlX2NvbnRyb2wgb2J0YWluZWQgZnJvbSBvZl9wc2VfY29udHJvbF9nZXQoKVxuJiM0MzsgKiBAcGNkZXY6IFBTRSBjb250cm9sbGVyIHRvIGNvbXBhcmUgYWdhaW5zdFxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46ICV0cnVlIGlmIEBwc2VjIHdhcyBvYnRhaW5lZCBmcm9tIEBwY2RldiwgJWZhbHNlIG90aGVyd2lzZS5cbiYjNDM7ICovXG4mIzQzO2Jvb2wgcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldihzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMsXG4mIzQzO1x0XHRcdCAgICAgICBzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldilcbiYjNDM7e1xuJiM0MztcdHJldHVybiBwc2VjLVx1MDAzZXBjZGV2ID09IHBjZGV2O1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5pbmRleCAxOTlhN2FhYTM0MWJmZC4uODY1YjliYWRkYjg1ZmEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtMjE1OCw2ICYjNDM7MjE1OCw4IEBAIHN0cnVjdCBwaHlfZGV2aWNlICpmd25vZGVfcGh5X2ZpbmRfZGV2aWNlKHN0cnVjdCBmd25vZGVfaGFuZGxlICpwaHlfZndub2RlKTtcbiBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlX2dldF9waHlfbm9kZShjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKTtcbiBzdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KTtcbiBpbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KTtcbiYjNDM7LyogQ2FsbGVyIG11c3QgaG9sZCBydG5sX2xvY2soKTsgc2VlIHBoeV9kZXZpY2VfcmVnaXN0ZXIoKSBmb3IgdGhlIHB1YmxpYyBmb3JtLiAqL1xuJiM0MztpbnQgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSk7XG4gdm9pZCBwaHlfZGV2aWNlX2ZyZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gdm9pZCBwaHlfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgcGh5X2dldF9jNDVfaWRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHNlLXBkL3BzZS5oIGIvaW5jbHVkZS9saW51eC9wc2UtcGQvcHNlLmhcbmluZGV4IDRlNTY5NmNmYWRlN2NjLi5kNDMxMGNhNzFhM2UwOCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcHNlLXBkL3BzZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaFxuQEAgLTIxLDYgJiM0MzsyMSw3IEBAIHN0cnVjdCBuZXRfZGV2aWNlO1xuIHN0cnVjdCBwaHlfZGV2aWNlO1xuIHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXY7XG4gc3RydWN0IG5ldGxpbmtfZXh0X2FjaztcbiYjNDM7c3RydWN0IG5vdGlmaWVyX2Jsb2NrO1xuIFxuIC8qIEMzMyBQU0UgZXh0ZW5kZWQgc3RhdGUgYW5kIHN1YnN0YXRlLiAqL1xuIHN0cnVjdCBldGh0b29sX2MzM19wc2VfZXh0X3N0YXRlX2luZm8ge1xuQEAgLTMzNyw2ICYjNDM7MzM4LDI0IEBAIGVudW0gcHNlX2J1ZGdldF9ldmFsX3N0cmF0ZWdpZXMge1xuIFx0UFNFX0JVREdFVF9FVkFMX1NUUkFUX0RZTkFNSUNcdD0gMSBcdTAwM2NcdTAwM2MgMixcbiB9O1xuIFxuJiM0MzsvKipcbiYjNDM7ICogZW51bSBwc2VfY29udHJvbGxlcl9ldmVudCAtIFBTRSBjb250cm9sbGVyIGxpZmVjeWNsZSBldmVudHNcbiYjNDM7ICpcbiYjNDM7ICogRXZlbnQgZGF0YSBpbiBjYWxsYmFja3MgaXMgYWx3YXlzIGEgcG9pbnRlciB0byB0aGUgc3RydWN0XG4mIzQzOyAqIHBzZV9jb250cm9sbGVyX2RldiBmaXJpbmcgdGhlIGV2ZW50LlxuJiM0MzsgKlxuJiM0MzsgKiBAUFNFX1JFR0lTVEVSRUQ6IGNvbnRyb2xsZXIgYWRkZWQgdG8gcHNlX2NvbnRyb2xsZXJfbGlzdCBhbmRcbiYjNDM7ICpcdHJlc29sdmFibGUgYnkgb2ZfcHNlX2NvbnRyb2xfZ2V0KCkuXG4mIzQzOyAqIEBQU0VfVU5SRUdJU1RFUkVEOiBjb250cm9sbGVyIGFib3V0IHRvIGJlIHJlbW92ZWQgZnJvbVxuJiM0MzsgKlx0cHNlX2NvbnRyb2xsZXJfbGlzdC4gU3Vic2NyaWJlcnMgaG9sZGluZyBwc2VfY29udHJvbCByZWZlcmVuY2VzXG4mIzQzOyAqXHR0YXJnZXRpbmcgaXQgbXVzdCBkcm9wIHRoZW0gYmVmb3JlIHJldHVybmluZyBhbmQgbXVzdCBub3RcbiYjNDM7ICpcdGFjcXVpcmUgbmV3IHJlZmVyZW5jZXMgZm9yIGl0LlxuJiM0MzsgKi9cbiYjNDM7ZW51bSBwc2VfY29udHJvbGxlcl9ldmVudCB7XG4mIzQzO1x0UFNFX1JFR0lTVEVSRUQsXG4mIzQzO1x0UFNFX1VOUkVHSVNURVJFRCxcbiYjNDM7fTtcbiYjNDM7XG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX1BTRV9DT05UUk9MTEVSKVxuIGludCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcihzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2Rldik7XG4gdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KTtcbkBAIC0zNjYsNiAmIzQzOzM4NSwxMiBAQCBpbnQgcHNlX2V0aHRvb2xfc2V0X3ByaW8oc3RydWN0IHBzZV9jb250cm9sICpwc2VjLFxuIGJvb2wgcHNlX2hhc19wb2RsKHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyk7XG4gYm9vbCBwc2VfaGFzX2MzMyhzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMpO1xuIFxuJiM0Mztib29sIHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYoc3RydWN0IHBzZV9jb250cm9sICpwc2VjLFxuJiM0MztcdFx0XHQgICAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpO1xuJiM0MztcbiYjNDM7aW50IHBzZV9yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTtcbiYjNDM7aW50IHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpO1xuJiM0MztcbiAjZWxzZVxuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBzZV9jb250cm9sICpvZl9wc2VfY29udHJvbF9nZXQoc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuQEAgLTQxNiw2ICYjNDM7NDQxLDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwc2VfaGFzX2MzMyhzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMpXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldihzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMsXG4mIzQzO1x0XHRcdFx0XHQgICAgIHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGZhbHNlO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGludCBwc2VfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGludCBwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gI2VuZGlmXG4gXG4gI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTE6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFNFX0NPTlRST0xMRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfdHJ5X2F0dGFjaF9wc2UmIzM0OywKICAgICYjMzQ7cGh5X3BzZV9hdHRhY2hfb25lJiMzNDssCiAgICAmIzM0O3BoeV9wc2VfZGV0YWNoX29uZSYjMzQ7LAogICAgJiMzNDtwaHlfcHNlX25vdGlmaWVyX2V2ZW50JiMzNDssCiAgICAmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkJiMzNDssCiAgICAmIzM0O3BzZV9yZWdpc3Rlcl9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtwc2VfdW5yZWdpc3Rlcl9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBQSFkgZGV2aWNlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHRvIGF0dGFjaCBQb3dlciBTb3VyY2luZyBFcXVpcG1lbnQgKFBTRSkgY29udHJvbGxlcnMgdXNpbmcgYSBub3RpZmllci1iYXNlZCBtZWNoYW5pc20uIEl0IGludHJvZHVjZXMgbmV3IGZ1bmN0aW9ucyB0byBoYW5kbGUgUFNFIGF0dGFjaG1lbnQvZGV0YWNobWVudCBhbmQgbm90aWZpZXIgZXZlbnRzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgTURJTyBidXNlcyAoZS5nLiwgVVNCIG5ldHdvcmsgYWRhcHRlcnMsIERTQSBsb29wYmFjaykgYW5kIHZpcnR1YWwgUFNFIGNvbnRyb2xsZXJzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV3IGF0dGFjaG1lbnQgbG9naWMgYW5kIG5vdGlmaWVyIGNhbGxiYWNrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzhiMWVhOTBiMGMyNGEzZjE0N2ZiYWYxMjVjMjNiZWVkMDkyNmFlNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDExOjI1OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jIGIvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jCmluZGV4IGJhNzA5MTUxODI2NTQwLi43YmQ5NzliNTlmNDk2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYwpAQCAtMTEsMzMgJiM0MzsxMSwxMSBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2Z3bm9kZV9tZGlvLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9waHkuaCZndDsKLSNpbmNsdWRlICZsdDtsaW51eC9wc2UtcGQvcHNlLmgmZ3Q7CiAKIE1PRFVMRV9BVVRIT1IoJiMzNDtDYWx2aW4gSm9obnNvbiAmbHQ7Y2FsdmluLmpvaG5zb25Ab3NzLm54cC5jb20mZ3Q7JiMzNDspOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CiBNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtGV05PREUgTURJTyBidXMgKEV0aGVybmV0IFBIWSkgYWNjZXNzb3JzJiMzNDspOwogCi1zdGF0aWMgc3RydWN0IHBzZV9jb250cm9sICoKLWZ3bm9kZV9maW5kX3BzZV9jb250cm9sKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsCi0JCQlzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQotewotCXN0cnVjdCBwc2VfY29udHJvbCAqcHNlYzsKLQlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOwotCi0JaWYgKCFJU19FTkFCTEVEKENPTkZJR19QU0VfQ09OVFJPTExFUikpCi0JCXJldHVybiBOVUxMOwotCi0JbnAgPSB0b19vZl9ub2RlKGZ3bm9kZSk7Ci0JaWYgKCFucCkKLQkJcmV0dXJuIE5VTEw7Ci0KLQlwc2VjID0gb2ZfcHNlX2NvbnRyb2xfZ2V0KG5wLCBwaHlkZXYpOwotCWlmIChQVFJfRVJSKHBzZWMpID09IC1FTk9FTlQpCi0JCXJldHVybiBOVUxMOwotCi0JcmV0dXJuIHBzZWM7Ci19Ci0KIHN0YXRpYyBzdHJ1Y3QgbWlpX3RpbWVzdGFtcGVyICoKIGZ3bm9kZV9maW5kX21paV90aW1lc3RhbXBlcihzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKQogewpAQCAtMTE4LDcgJiM0Mzs5Niw2IEBAIGludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cywKIAkJCQlzdHJ1Y3QgZndub2RlX2hhbmRsZSAqY2hpbGQsIHUzMiBhZGRyKQogewogCXN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cyA9IE5VTEw7Ci0Jc3RydWN0IHBzZV9jb250cm9sICpwc2VjID0gTlVMTDsKIAlzdHJ1Y3QgcGh5X2RldmljZSAqcGh5OwogCWJvb2wgaXNfYzQ1OwogCXUzMiBwaHlfaWQ7CkBAIC0xNTksMTQgJiM0MzsxMzYsNiBAQCBpbnQgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICpidXMsCiAJCQlnb3RvIGNsZWFuX3BoeTsKIAl9CiAKLQlwc2VjID0gZndub2RlX2ZpbmRfcHNlX2NvbnRyb2woY2hpbGQsIHBoeSk7Ci0JaWYgKElTX0VSUihwc2VjKSkgewotCQlyYyA9IFBUUl9FUlIocHNlYyk7Ci0JCWdvdG8gdW5yZWdpc3Rlcl9waHk7Ci0JfQotCi0JcGh5LSZndDtwc2VjID0gcHNlYzsKLQogCS8qIHBoeS0mZ3Q7bWlpX3RzIG1heSBhbHJlYWR5IGJlIGRlZmluZWQgYnkgdGhlIFBIWSBkcml2ZXIuIEEKIAkgKiBtaWlfdGltZXN0YW1wZXIgcHJvYmVkIHZpYSB0aGUgZGV2aWNlIHRyZWUgd2lsbCBzdGlsbCBoYXZlCiAJICogcHJlY2VkZW5jZS4KQEAgLTE3Niw5ICYjNDM7MTQ1LDYgQEAgaW50IGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLAogCiAJcmV0dXJuIDA7CiAKLXVucmVnaXN0ZXJfcGh5OgotCWlmIChpc19hY3BpX25vZGUoY2hpbGQpIHx8IGlzX29mX25vZGUoY2hpbGQpKQotCQlwaHlfZGV2aWNlX3JlbW92ZShwaHkpOwogY2xlYW5fcGh5OgogCXBoeV9kZXZpY2VfZnJlZShwaHkpOwogY2xlYW5fbWlpX3RzOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKaW5kZXggMDYxNTIyODQ1OWVmNDIuLmY1ZmViZmY0YjAwYjhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKQEAgLTIyMyw4ICYjNDM7MjIzLDE5IEBAIHN0YXRpYyB2b2lkIHBoeV9tZGlvX2RldmljZV9mcmVlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldikKIAogc3RhdGljIHZvaWQgcGh5X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldikKIHsKJiM0MzsJc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTsKJiM0MzsKJiM0MzsJLyogYnVzX2Zvcl9lYWNoX2RldigpIGhvbGRzIGdldF9kZXZpY2UoKSBhY3Jvc3MgZWFjaCBpdGVyYXRpb24KJiM0MzsJICogc3RlcCwgZGVmZXJyaW5nIHRoaXMgcmVsZWFzZSBjYWxsYmFjayB1bnRpbCBhbnkgaW4tZmxpZ2h0IFBTRQomIzQzOwkgKiBub3RpZmllciB3YWxrIGhhcyBhZHZhbmNlZCBwYXN0IHRoaXMgcGh5LiBwc2VfY29udHJvbF9wdXQoKQomIzQzOwkgKiB0YWtlcyBwc2VfbGlzdF9tdXRleCwgc28gdGhpcyBwYXRoIG11c3QgcnVuIGluIHNsZWVwYWJsZQomIzQzOwkgKiBjb250ZXh0LgomIzQzOwkgKi8KJiM0MzsJbWlnaHRfc2xlZXAoKTsKJiM0MzsJcHNlX2NvbnRyb2xfcHV0KHBoeWRldi0mZ3Q7cHNlYyk7CiYjNDM7CiAJZndub2RlX2hhbmRsZV9wdXQoZGV2LSZndDtmd25vZGUpOwotCWtmcmVlKHRvX3BoeV9kZXZpY2UoZGV2KSk7CiYjNDM7CWtmcmVlKHBoeWRldik7CiB9CiAKIHN0YXRpYyB2b2lkIHBoeV9tZGlvX2RldmljZV9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KQpAQCAtMTEwMiwxMSAmIzQzOzExMTMsMTAzIEBAIHN0cnVjdCBwaHlfZGV2aWNlICpnZXRfcGh5X2RldmljZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpCiB9CiBFWFBPUlRfU1lNQk9MKGdldF9waHlfZGV2aWNlKTsKIAotLyoqCi0gKiBwaHlfZGV2aWNlX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgdGhlIHBoeSBkZXZpY2Ugb24gdGhlIE1ESU8gYnVzCi0gKiBAcGh5ZGV2OiBwaHlfZGV2aWNlIHN0cnVjdHVyZSB0byBiZSBhZGRlZCB0byB0aGUgTURJTyBidXMKJiM0MzsvKiBCZXN0LWVmZm9ydCBhdHRhY2ggb2YgcGh5ZGV2LSZndDtwc2VjIGZyb20gYSBEVCBgcHNlcyA9ICZsdDsmYW1wOy4uLiZndDtgIHBoYW5kbGUuCiYjNDM7ICogQ2FsbGVyIG11c3QgaG9sZCBydG5sLiBBIG1pc3NpbmcgcGhhbmRsZSAoLUVOT0VOVCkgb3IgYSBub3QteWV0LXJlZ2lzdGVyZWQKJiM0MzsgKiBjb250cm9sbGVyICgtRVBST0JFX0RFRkVSKSBpcyBzaWxlbnQ7IHRoZSBub3RpZmllciByZXRyaWVzIHRoZSBsYXR0ZXIgYXQKJiM0MzsgKiBQU0VfUkVHSVNURVJFRCB0aW1lLiBBbnkgb3RoZXIgZXJyb3IgbWVhbnMgYSBicm9rZW4gYmluZGluZyBhbmQgaXMgd2FybmVkCiYjNDM7ICogYWJvdXQsIGJ1dCBsZWZ0IG5vbi1mYXRhbCBzbyB0aGUgcGh5IHN0aWxsIHJlZ2lzdGVycy4KICAqLwotaW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0MztzdGF0aWMgdm9pZCBwaHlfdHJ5X2F0dGFjaF9wc2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwc2VfY29udHJvbCAqcHNlYzsKJiM0MzsJc3RydWN0IGRldmljZV9ub2RlICpucDsKJiM0MzsKJiM0MzsJQVNTRVJUX1JUTkwoKTsKJiM0MzsKJiM0MzsJbnAgPSBwaHlkZXYtJmd0O21kaW8uZGV2Lm9mX25vZGU7CiYjNDM7CWlmICghbnApCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWlmIChwaHlkZXYtJmd0O3BzZWMpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXBzZWMgPSBvZl9wc2VfY29udHJvbF9nZXQobnAsIHBoeWRldik7CiYjNDM7CWlmIChJU19FUlIocHNlYykpIHsKJiM0MzsJCWlmIChQVFJfRVJSKHBzZWMpICE9IC1FUFJPQkVfREVGRVIgJmFtcDsmYW1wOyBQVFJfRVJSKHBzZWMpICE9IC1FTk9FTlQpCiYjNDM7CQkJcGh5ZGV2X3dhcm4ocGh5ZGV2LCAmIzM0O2ZhaWxlZCB0byBnZXQgUFNFIGNvbnRyb2w6ICVwZVxuJiMzNDssCiYjNDM7CQkJCSAgICBwc2VjKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlwaHlkZXYtJmd0O3BzZWMgPSBwc2VjOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHBoeV9wc2VfYXR0YWNoX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEgX19tYXliZV91bnVzZWQpCiYjNDM7ewomIzQzOwlBU1NFUlRfUlROTCgpOwomIzQzOwomIzQzOwlpZiAoZGV2LSZndDt0eXBlICE9ICZhbXA7bWRpb19idXNfcGh5X3R5cGUpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJcGh5X3RyeV9hdHRhY2hfcHNlKHRvX3BoeV9kZXZpY2UoZGV2KSk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHBoeV9wc2VfZGV0YWNoX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldiA9IGRhdGE7CiYjNDM7CXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7CiYjNDM7CXN0cnVjdCBwc2VfY29udHJvbCAqcHNlYzsKJiM0MzsKJiM0MzsJQVNTRVJUX1JUTkwoKTsKJiM0MzsKJiM0MzsJaWYgKGRldi0mZ3Q7dHlwZSAhPSAmYW1wO21kaW9fYnVzX3BoeV90eXBlKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTsKJiM0MzsJcHNlYyA9IHBoeWRldi0mZ3Q7cHNlYzsKJiM0MzsJaWYgKCFwc2VjIHx8ICFwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2KHBzZWMsIHBjZGV2KSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlwaHlkZXYtJmd0O3BzZWMgPSBOVUxMOwomIzQzOwlwc2VfY29udHJvbF9wdXQocHNlYyk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHBoeV9wc2Vfbm90aWZpZXJfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKJiM0MzsJCQkJICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpkYXRhKQomIzQzO3sKJiM0MzsJc3dpdGNoIChldmVudCkgewomIzQzOwljYXNlIFBTRV9SRUdJU1RFUkVEOgomIzQzOwkJcnRubF9sb2NrKCk7CiYjNDM7CQlidXNfZm9yX2VhY2hfZGV2KCZhbXA7bWRpb19idXNfdHlwZSwgTlVMTCwgTlVMTCwKJiM0MzsJCQkJIHBoeV9wc2VfYXR0YWNoX29uZSk7CiYjNDM7CQlydG5sX3VubG9jaygpOwomIzQzOwkJcmV0dXJuIE5PVElGWV9PSzsKJiM0MzsJY2FzZSBQU0VfVU5SRUdJU1RFUkVEOgomIzQzOwkJcnRubF9sb2NrKCk7CiYjNDM7CQlidXNfZm9yX2VhY2hfZGV2KCZhbXA7bWRpb19idXNfdHlwZSwgTlVMTCwgZGF0YSwKJiM0MzsJCQkJIHBoeV9wc2VfZGV0YWNoX29uZSk7CiYjNDM7CQlydG5sX3VubG9jaygpOwomIzQzOwkJcmV0dXJuIE5PVElGWV9PSzsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiBOT1RJRllfRE9ORTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHBoeV9wc2Vfbm90aWZpZXIgX19yZWFkX21vc3RseSA9IHsKJiM0MzsJLm5vdGlmaWVyX2NhbGwgPSBwaHlfcHNlX25vdGlmaWVyX2V2ZW50LAomIzQzO307CiYjNDM7CiYjNDM7LyogQ29yZSByZWdpc3RyYXRpb246IGFkZCB0aGUgcGh5IHRvIHRoZSBNRElPIGJ1cy4gRG9lcyBub3QgdG91Y2ggcnRubCBvcgomIzQzOyAqIFBTRS4gcGh5ZGV2LSZndDtwc2VjIGlzIGF0dGFjaGVkIGJ5IHRoZSBjYWxsZXJzIGJlbG93LCBhZnRlciBkZXZpY2VfYWRkKCkKJiM0MzsgKiBoYXMgbWFkZSB0aGUgcGh5IHZpc2libGUgb24gbWRpb19idXNfdHlwZSwgc28gdGhhdCBhIGNvbmN1cnJlbnQgUFNFCiYjNDM7ICogbm90aWZpZXIgd2FsayBhbmQgdGhlIGF0dGFjaCBjYW4gbmV2ZXIgbGVhdmUgdGhlIHBoeSB1bmF0dGFjaGVkLiBLZWVwaW5nCiYjNDM7ICogZGV2aWNlX2FkZCgpIG91dCBvZiBydG5sIGFsc28gYXZvaWRzIGRlYWRsb2NraW5nIHdoZW4gYmluZGluZyBhIHBoeSB0aGF0CiYjNDM7ICogaXRzZWxmIHByb3ZpZGVzIGFuIFNGUCBjYWdlIChwaHlfcHJvYmUoKSAtJmd0OyBwaHlfc2ZwX3Byb2JlKCkgLSZndDsKJiM0MzsgKiBzZnBfYnVzX2FkZF91cHN0cmVhbSgpIHRha2VzIHJ0bmwpLgomIzQzOyAqLwomIzQzO3N0YXRpYyBpbnQgX19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJaW50IGVycjsKIApAQCAtMTEzNSwxMCAmIzQzOzEyMzgsNTQgQEAgaW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKICBvdXQ6CiAJLyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi8KIAlwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7Ci0KIAltZGlvYnVzX3VucmVnaXN0ZXJfZGV2aWNlKCZhbXA7cGh5ZGV2LSZndDttZGlvKTsKIAlyZXR1cm4gZXJyOwogfQomIzQzOwomIzQzOy8qKgomIzQzOyAqIHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkIC0gUmVnaXN0ZXIgdGhlIHBoeSBkZXZpY2Ugb24gdGhlIE1ESU8gYnVzCiYjNDM7ICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzCiYjNDM7ICoKJiM0MzsgKiBTYW1lIGFzIHBoeV9kZXZpY2VfcmVnaXN0ZXIoKSBidXQgY2FsbGVyIG11c3QgYWxyZWFkeSBob2xkIHJ0bmxfbG9jaygpLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KJiM0MzsgKi8KJiM0MztpbnQgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CUFTU0VSVF9SVE5MKCk7CiYjNDM7CiYjNDM7CWVyciA9IF9fcGh5X2RldmljZV9yZWdpc3RlcihwaHlkZXYpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJcGh5X3RyeV9hdHRhY2hfcHNlKHBoeWRldik7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkKTsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBwaHlfZGV2aWNlX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgdGhlIHBoeSBkZXZpY2Ugb24gdGhlIE1ESU8gYnVzCiYjNDM7ICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgomIzQzOyAqLwomIzQzO2ludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwllcnIgPSBfX3BoeV9kZXZpY2VfcmVnaXN0ZXIocGh5ZGV2KTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiYjNDM7CXJ0bmxfbG9jaygpOwomIzQzOwlwaHlfdHJ5X2F0dGFjaF9wc2UocGh5ZGV2KTsKJiM0MzsJcnRubF91bmxvY2soKTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQogRVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyKTsKIAogLyoqCkBAIC0xMTUyLDggJiM0MzsxMjk5LDYgQEAgRVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyKTsKIHZvaWQgcGh5X2RldmljZV9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKIAl1bnJlZ2lzdGVyX21paV90aW1lc3RhbXBlcihwaHlkZXYtJmd0O21paV90cyk7Ci0JcHNlX2NvbnRyb2xfcHV0KHBoeWRldi0mZ3Q7cHNlYyk7Ci0KIAlkZXZpY2VfZGVsKCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldik7CiAKIAkvKiBBc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqLwpAQCAtMzk4MSw4ICYjNDM7NDEyNiwxNCBAQCBzdGF0aWMgaW50IF9faW5pdCBwaHlfaW5pdCh2b2lkKQogCWlmIChyYykKIAkJZ290byBlcnJfYzQ1OwogCiYjNDM7CXJjID0gcHNlX3JlZ2lzdGVyX25vdGlmaWVyKCZhbXA7cGh5X3BzZV9ub3RpZmllcik7CiYjNDM7CWlmIChyYykKJiM0MzsJCWdvdG8gZXJyX2dlbnBoeTsKJiM0MzsKIAlyZXR1cm4gMDsKIAomIzQzO2Vycl9nZW5waHk6CiYjNDM7CXBoeV9kcml2ZXJfdW5yZWdpc3RlcigmYW1wO2dlbnBoeV9kcml2ZXIpOwogZXJyX2M0NToKIAlwaHlfZHJpdmVyX3VucmVnaXN0ZXIoJmFtcDtnZW5waHlfYzQ1X2RyaXZlcik7CiBlcnJfZXRodG9vbF9waHlfb3BzOgpAQCAtMzk5OSw2ICYjNDM7NDE1MCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHBoeV9pbml0KHZvaWQpCiAKIHN0YXRpYyB2b2lkIF9fZXhpdCBwaHlfZXhpdCh2b2lkKQogewomIzQzOwlwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcigmYW1wO3BoeV9wc2Vfbm90aWZpZXIpOwogCXBoeV9kcml2ZXJfdW5yZWdpc3RlcigmYW1wO2dlbnBoeV9jNDVfZHJpdmVyKTsKIAlwaHlfZHJpdmVyX3VucmVnaXN0ZXIoJmFtcDtnZW5waHlfZHJpdmVyKTsKIAlydG5sX2xvY2soKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9zZnAuYyBiL2RyaXZlcnMvbmV0L3BoeS9zZnAuYwppbmRleCAwM2JmZDg2NDBkYjk2My4uMTg4NjhiZGQ2NDg1MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9zZnAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvc2ZwLmMKQEAgLTIwODMsNyAmIzQzOzIwODMsNyBAQCBzdGF0aWMgaW50IHNmcF9zbV9wcm9iZV9waHkoc3RydWN0IHNmcCAqc2ZwLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpCiAJLyogTWFyayB0aGlzIFBIWSBhcyBiZWluZyBvbiBhIFNGUCBtb2R1bGUgKi8KIAlwaHktJmd0O2lzX29uX3NmcF9tb2R1bGUgPSB0cnVlOwogCi0JZXJyID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpOwomIzQzOwllcnIgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZChwaHkpOwogCWlmIChlcnIpIHsKIAkJcGh5X2RldmljZV9mcmVlKHBoeSk7CiAJCWRldl9lcnIoc2ZwLSZndDtkZXYsICYjMzQ7cGh5X2RldmljZV9yZWdpc3RlciBmYWlsZWQ6ICVwZVxuJiMzNDssCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jCmluZGV4IDY5ZGJkYmRlOWQ3MWE3Li42MTE1NDBkZjQzYmIxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMKQEAgLTgsNiAmIzQzOzgsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2RldmljZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V0aHRvb2wuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9ldGh0b29sX25ldGxpbmsuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbm90aWZpZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BzZS1wZC9wc2UuaCZndDsKQEAgLTIzLDYgJiM0MzsyNCwzOSBAQCBzdGF0aWMgTElTVF9IRUFEKHBzZV9jb250cm9sbGVyX2xpc3QpOwogc3RhdGljIERFRklORV9YQVJSQVlfQUxMT0MocHNlX3B3X2RfbWFwKTsKIHN0YXRpYyBERUZJTkVfTVVURVgocHNlX3B3X2RfbXV0ZXgpOwogCiYjNDM7c3RhdGljIEJMT0NLSU5HX05PVElGSUVSX0hFQUQocHNlX2NvbnRyb2xsZXJfbm90aWZpZXIpOwomIzQzOwomIzQzOy8qKgomIzQzOyAqIHBzZV9yZWdpc3Rlcl9ub3RpZmllciAtIHJlZ2lzdGVyIGEgY2FsbGJhY2sgZm9yIFBTRSBjb250cm9sbGVyIGV2ZW50cwomIzQzOyAqIEBuYjogbm90aWZpZXIgYmxvY2sgdG8gcmVnaXN0ZXIKJiM0MzsgKgomIzQzOyAqIFNlZSBlbnVtIHBzZV9jb250cm9sbGVyX2V2ZW50IGZvciBldmVudHMgZmlyZWQgYW5kIHRoZWlyIHN1YnNjcmliZXIKJiM0MzsgKiBjb250cmFjdC4gQ2FsbGJhY2tzIHJ1biBpbiBwcm9jZXNzIGNvbnRleHQ7IHRoZXkgbWF5IHNsZWVwLCB0YWtlCiYjNDM7ICogcnRubCwgYW5kIGNhbGwgb2ZfcHNlX2NvbnRyb2xfZ2V0KCkuIFRoZSBjaGFpbiBmaXJlcyBzeW5jaHJvbm91c2x5LAomIzQzOyAqIHNvIGEgUFNFIGNvbnRyb2xsZXIgZHJpdmVyJiMzOTtzIHByb2JlL3VuYmluZCBwYXRoIG11c3Qgbm90IGhvbGQgYW55CiYjNDM7ICogc3VjaCBsb2NrIHdoZW4gY2FsbGluZyBwc2VfY29udHJvbGxlcl9yZWdpc3RlcigpIG9yCiYjNDM7ICogcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcigpLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgomIzQzOyAqLwomIzQzO2ludCBwc2VfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKJiM0Mzt7CiYjNDM7CXJldHVybiBibG9ja2luZ19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcigmYW1wO3BzZV9jb250cm9sbGVyX25vdGlmaWVyLCBuYik7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHBzZV9yZWdpc3Rlcl9ub3RpZmllcik7CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogcHNlX3VucmVnaXN0ZXJfbm90aWZpZXIgLSB1bnJlZ2lzdGVyIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIGNhbGxiYWNrCiYjNDM7ICogQG5iOiBub3RpZmllciBibG9jayBwcmV2aW91c2x5IHBhc3NlZCB0byBwc2VfcmVnaXN0ZXJfbm90aWZpZXIoKQomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgomIzQzOyAqLwomIzQzO2ludCBwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKQomIzQzO3sKJiM0MzsJcmV0dXJuIGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoJmFtcDtwc2VfY29udHJvbGxlcl9ub3RpZmllciwgbmIpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcik7CiYjNDM7CiAvKioKICAqIHN0cnVjdCBwc2VfY29udHJvbCAtIGEgUFNFIGNvbnRyb2wKICAqIEBwY2RldjogYSBwb2ludGVyIHRvIHRoZSBQU0UgY29udHJvbGxlciBkZXZpY2UKQEAgLTExMDQsNiAmIzQzOzExMzgsOSBAQCBpbnQgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpCiAJbGlzdF9hZGQoJmFtcDtwY2Rldi0mZ3Q7bGlzdCwgJmFtcDtwc2VfY29udHJvbGxlcl9saXN0KTsKIAltdXRleF91bmxvY2soJmFtcDtwc2VfbGlzdF9tdXRleCk7CiAKJiM0MzsJYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFpbigmYW1wO3BzZV9jb250cm9sbGVyX25vdGlmaWVyLAomIzQzOwkJCQkgICAgIFBTRV9SRUdJU1RFUkVELCBwY2Rldik7CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7CkBAIC0xMTE0LDYgJiM0MzsxMTUxLDkgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIpOwogICovCiB2b2lkIHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpCiB7CiYjNDM7CWJsb2NraW5nX25vdGlmaWVyX2NhbGxfY2hhaW4oJmFtcDtwc2VfY29udHJvbGxlcl9ub3RpZmllciwKJiM0MzsJCQkJICAgICBQU0VfVU5SRUdJU1RFUkVELCBwY2Rldik7CiYjNDM7CiAJcHNlX2ZsdXNoX3B3X2RzKHBjZGV2KTsKIAlwc2VfcmVsZWFzZV9waXMocGNkZXYpOwogCWlmIChwY2Rldi0mZ3Q7aXJxKQpAQCAtMTk4MSwzICYjNDM7MjAyMSwxNyBAQCBib29sIHBzZV9oYXNfYzMzKHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYykKIAlyZXR1cm4gcHNlYy0mZ3Q7cGNkZXYtJmd0O3R5cGVzICZhbXA7IEVUSFRPT0xfUFNFX0MzMzsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9oYXNfYzMzKTsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2IC0gVGVzdCB3aGV0aGVyIGEgcHNlX2NvbnRyb2wgdGFyZ2V0cyBhIGNvbnRyb2xsZXIKJiM0MzsgKiBAcHNlYzogcHNlX2NvbnRyb2wgb2J0YWluZWQgZnJvbSBvZl9wc2VfY29udHJvbF9nZXQoKQomIzQzOyAqIEBwY2RldjogUFNFIGNvbnRyb2xsZXIgdG8gY29tcGFyZSBhZ2FpbnN0CiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46ICV0cnVlIGlmIEBwc2VjIHdhcyBvYnRhaW5lZCBmcm9tIEBwY2RldiwgJWZhbHNlIG90aGVyd2lzZS4KJiM0MzsgKi8KJiM0Mztib29sIHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYoc3RydWN0IHBzZV9jb250cm9sICpwc2VjLAomIzQzOwkJCSAgICAgICBzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldikKJiM0Mzt7CiYjNDM7CXJldHVybiBwc2VjLSZndDtwY2RldiA9PSBwY2RldjsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xfbWF0Y2hlc19wY2Rldik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaAppbmRleCAxOTlhN2FhYTM0MWJmZC4uODY1YjliYWRkYjg1ZmEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9waHkuaApAQCAtMjE1OCw2ICYjNDM7MjE1OCw4IEBAIHN0cnVjdCBwaHlfZGV2aWNlICpmd25vZGVfcGh5X2ZpbmRfZGV2aWNlKHN0cnVjdCBmd25vZGVfaGFuZGxlICpwaHlfZndub2RlKTsKIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGVfZ2V0X3BoeV9ub2RlKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpOwogc3RydWN0IHBoeV9kZXZpY2UgKmdldF9waHlfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGlzX2M0NSk7CiBpbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KTsKJiM0MzsvKiBDYWxsZXIgbXVzdCBob2xkIHJ0bmxfbG9jaygpOyBzZWUgcGh5X2RldmljZV9yZWdpc3RlcigpIGZvciB0aGUgcHVibGljIGZvcm0uICovCiYjNDM7aW50IHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpOwogdm9pZCBwaHlfZGV2aWNlX2ZyZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiB2b2lkIHBoeV9kZXZpY2VfcmVtb3ZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwogaW50IHBoeV9nZXRfYzQ1X2lkcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHNlLXBkL3BzZS5oIGIvaW5jbHVkZS9saW51eC9wc2UtcGQvcHNlLmgKaW5kZXggNGU1Njk2Y2ZhZGU3Y2MuLmQ0MzEwY2E3MWEzZTA4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaApAQCAtMjEsNiAmIzQzOzIxLDcgQEAgc3RydWN0IG5ldF9kZXZpY2U7CiBzdHJ1Y3QgcGh5X2RldmljZTsKIHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXY7CiBzdHJ1Y3QgbmV0bGlua19leHRfYWNrOwomIzQzO3N0cnVjdCBub3RpZmllcl9ibG9jazsKIAogLyogQzMzIFBTRSBleHRlbmRlZCBzdGF0ZSBhbmQgc3Vic3RhdGUuICovCiBzdHJ1Y3QgZXRodG9vbF9jMzNfcHNlX2V4dF9zdGF0ZV9pbmZvIHsKQEAgLTMzNyw2ICYjNDM7MzM4LDI0IEBAIGVudW0gcHNlX2J1ZGdldF9ldmFsX3N0cmF0ZWdpZXMgewogCVBTRV9CVURHRVRfRVZBTF9TVFJBVF9EWU5BTUlDCT0gMSAmbHQ7Jmx0OyAyLAogfTsKIAomIzQzOy8qKgomIzQzOyAqIGVudW0gcHNlX2NvbnRyb2xsZXJfZXZlbnQgLSBQU0UgY29udHJvbGxlciBsaWZlY3ljbGUgZXZlbnRzCiYjNDM7ICoKJiM0MzsgKiBFdmVudCBkYXRhIGluIGNhbGxiYWNrcyBpcyBhbHdheXMgYSBwb2ludGVyIHRvIHRoZSBzdHJ1Y3QKJiM0MzsgKiBwc2VfY29udHJvbGxlcl9kZXYgZmlyaW5nIHRoZSBldmVudC4KJiM0MzsgKgomIzQzOyAqIEBQU0VfUkVHSVNURVJFRDogY29udHJvbGxlciBhZGRlZCB0byBwc2VfY29udHJvbGxlcl9saXN0IGFuZAomIzQzOyAqCXJlc29sdmFibGUgYnkgb2ZfcHNlX2NvbnRyb2xfZ2V0KCkuCiYjNDM7ICogQFBTRV9VTlJFR0lTVEVSRUQ6IGNvbnRyb2xsZXIgYWJvdXQgdG8gYmUgcmVtb3ZlZCBmcm9tCiYjNDM7ICoJcHNlX2NvbnRyb2xsZXJfbGlzdC4gU3Vic2NyaWJlcnMgaG9sZGluZyBwc2VfY29udHJvbCByZWZlcmVuY2VzCiYjNDM7ICoJdGFyZ2V0aW5nIGl0IG11c3QgZHJvcCB0aGVtIGJlZm9yZSByZXR1cm5pbmcgYW5kIG11c3Qgbm90CiYjNDM7ICoJYWNxdWlyZSBuZXcgcmVmZXJlbmNlcyBmb3IgaXQuCiYjNDM7ICovCiYjNDM7ZW51bSBwc2VfY29udHJvbGxlcl9ldmVudCB7CiYjNDM7CVBTRV9SRUdJU1RFUkVELAomIzQzOwlQU0VfVU5SRUdJU1RFUkVELAomIzQzO307CiYjNDM7CiAjaWYgSVNfRU5BQkxFRChDT05GSUdfUFNFX0NPTlRST0xMRVIpCiBpbnQgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpOwogdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KTsKQEAgLTM2Niw2ICYjNDM7Mzg1LDEyIEBAIGludCBwc2VfZXRodG9vbF9zZXRfcHJpbyhzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMsCiBib29sIHBzZV9oYXNfcG9kbChzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMpOwogYm9vbCBwc2VfaGFzX2MzMyhzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMpOwogCiYjNDM7Ym9vbCBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2KHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYywKJiM0MzsJCQkgICAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpOwomIzQzOwomIzQzO2ludCBwc2VfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CiYjNDM7aW50IHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwomIzQzOwogI2Vsc2UKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgcHNlX2NvbnRyb2wgKm9mX3BzZV9jb250cm9sX2dldChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsCkBAIC00MTYsNiAmIzQzOzQ0MSwyMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcHNlX2hhc19jMzMoc3RydWN0IHBzZV9jb250cm9sICpwc2VjKQogCXJldHVybiBmYWxzZTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2KHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYywKJiM0MzsJCQkJCSAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpCiYjNDM7ewomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgaW50IHBzZV9yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKQomIzQzO3sKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgaW50IHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiAjZW5kaWYKIAogI2VuZGlmCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDExOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxODkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBTRS9QSFkgQXR0YWNobWVudCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgcmVmYWN0b3IsIG1vdmluZyB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIFBvd2VyIFNvdXJjaW5nIEVxdWlwbWVudCAoUFNFKSBjb250cm9sbGVycyBhbmQgUEhZIGRldmljZXMgYXdheSBmcm9tIHRoZSBgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5YCBmdW5jdGlvbiB0byBhIG5vdGlmaWVyLWJhc2VkIHN5c3RlbSB3aXRoaW4gYHBoeV9kZXZpY2UuY2AuIFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIGFyY2hpdGVjdHVyYWwgY2hvaWNlLCBJIGNhbiBzZWUgdGhlIGFkdmFudGFnZXMgb2YgZGVjb3VwbGluZyB0aGUgYXR0YWNobWVudCBwcm9jZXNzLiBUaGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGBwaHlfcHNlX25vdGlmaWVyX2V2ZW50YCB0byBsaXN0ZW4gZm9yIGBQU0VfUkVHSVNURVJFRGAgYW5kIGBQU0VfVU5SRUdJU1RFUkVEYCBldmVudHMsIHdoaWNoIGlzIHRoZSBjb3JlIG9mIHRoZSBuZXcgbWVjaGFuaXNtLiBJdCBhbHNvIGludHJvZHVjZXMgZnVuY3Rpb25zIGxpa2UgYHBoeV90cnlfYXR0YWNoX3BzZWAsIGBwaHlfcHNlX2F0dGFjaF9vbmVgLCBhbmQgYHBoeV9wc2VfZGV0YWNoX29uZWAgdG8gaGFuZGxlIHRoZSBhY3R1YWwgYXR0YWNobWVudCBhbmQgZGV0YWNobWVudCBsb2dpYy4gTW9kaWZ5aW5nIHRoZSBgcGh5X2RldmljZV9yZWdpc3RlcmAgZnVuY3Rpb24gdG8gdHJpZ2dlciBQU0UgYXR0YWNobWVudCBpcyBhbHNvIGEgbG9naWNhbCBzdGVwLCBhbG9uZyB3aXRoIHRoZSBhZGRpdGlvbiBvZiBgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWRgIHRvIG1hbmFnZSBjb25jdXJyZW5jeS4gRmluYWxseSwgdGhlIGludHJvZHVjdGlvbiBvZiBgcHNlX3JlZ2lzdGVyX25vdGlmaWVyYCBhbmQgYHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyYCBpbiBgcHNlX2NvcmUuY2Agc29saWRpZmllcyB0aGUgbm90aWZpZXItYmFzZWQgYXJjaGl0ZWN0dXJlLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBjYW4gdGhpcyBjb2RlIGJlIHJlYWNoZWQgYW5kIGZ1enplZD8gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29kZSBpcyBpbiBgcGh5X2RldmljZS5jYCBhbmQgYHBzZV9jb3JlLmNgLCBib3RoIGZpcm1seSB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgUEhZIGFuZCBQU0UuIFdlIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXZSBjb3VsZCByZWdpc3RlciB2aXJ0dWFsIFBIWXMsIG9yIHVzZSBkdW1teSBuZXR3b3JrIGRldmljZXMgdGhhdCBtaWdodCBoYXZlIGFzc29jaWF0ZWQgUEhZcy4gVGhhdCBsb29rcyBmZWFzaWJsZS4gTm93LCB0aGUgYG1kaW9fYnVzYCBpcyBjcmVhdGVkIGJ5IGBtYWNiYCwgYGZlY2AsIGFuZCBvdGhlciBkcml2ZXJzLiBCdXQgd2hhdCBhYm91dCB2aXJ0dWFsIGRyaXZlcnM/IEkgbmVlZCB0byBjaGVjayBgbWRpb19idXMuY2AgaW4gdGhlIHBoeSBkaXJlY3RvcnksIHRoYXQmIzM5O3Mgd2hlcmUgTURJTyBidXNlcyBhcmUgbWFuYWdlZC4KClRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gd2UgY3JlYXRlIGFuIE1ESU8gYnVzIGFuZCBQSFkgZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgb3IgdmlhIGEgdmlydHVhbCBkcml2ZXI/IEkgbmVlZCB0byBkaWcgZGVlcGVyIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHZpcnR1YWwgTURJTyBkcml2ZXJzIG9yIFBTRSBjb250cm9sbGVycyBhdmFpbGFibGUgaW4gdGhlIGtlcm5lbC4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIG1ha2luZyB0aGlzIGZ1enphYmxlIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudC4gTmVlZCB0byBpZGVudGlmeSBob3cgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHdvcmtzIGZvciB0aGVzZSBwaWVjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpby4qYnVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5NzcwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0xMTI4PXN0YXRpYyBzdHJ1Y3QgcGh5X2RldmljZSAqYjUzX2dldF9waHlfZGV2aWNlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTEzNy1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjExMzg6XHRyZXR1cm4gbWRpb2J1c19nZXRfcGh5KGRzLVx1MDAzZXVzZXJfbWlpX2J1cywgcG9ydCk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xMTM5LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9NDI9c3RhdGljIGludCBiNTNfbWRpb19vcChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsIHUxNiBvcClcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtNTEtXHRcdHYgPSAocGFnZSBcdTAwM2NcdTAwM2MgOCkgfCBSRUdfTUlJX1BBR0VfRU5BQkxFO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjUyOlx0XHRyZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTUzLVx0XHRcdFx0XHQgICBSRUdfTUlJX1BBR0UsIHYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy02MC1cdHYgPSAocmVnIFx1MDAzY1x1MDAzYyA4KSB8IG9wO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjYxOlx0cmV0ID0gbWRpb2J1c193cml0ZV9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUiwgUkVHX01JSV9BRERSLCB2KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy02Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTY2LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgNTsgJiM0MzsmIzQzO2kpIHtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzo2NzpcdFx0diA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy02OC1cdFx0XHRcdFx0UkVHX01JSV9BRERSKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9ODA9c3RhdGljIGludCBiNTNfbWRpb19yZWFkOChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsIHU4ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTg4LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjg5Olx0KnZhbCA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy05MC1cdFx0XHRcdCAgIFJFR19NSUlfREFUQTApIFx1MDAyNiAweGZmO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz05NT1zdGF0aWMgaW50IGI1M19tZGlvX3JlYWQxNihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsIHUxNiAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0xMDMtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MTA0Olx0KnZhbCA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUiwgUkVHX01JSV9EQVRBMCk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMTA1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0xMDk9c3RhdGljIGludCBiNTNfbWRpb19yZWFkMzIoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgdTggcGFnZSwgdTggcmVnLCB1MzIgKnZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMTE3LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjExODpcdCp2YWwgPSBtZGlvYnVzX3JlYWRfbmVzdGVkKGJ1cywgQlJDTV9QU0VVRE9fUEhZX0FERFIsIFJFR19NSUlfREFUQTApO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjExOTpcdCp2YWwgfD0gbWRpb2J1c19yZWFkX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTEyMC1cdFx0XHRcdCAgICBSRUdfTUlJX0RBVEExKSBcdTAwM2NcdTAwM2MgMTY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTEyNT1zdGF0aWMgaW50IGI1M19tZGlvX3JlYWQ0OChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsIHU2NCAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0xMzctXHRcdHRlbXAgXHUwMDNjXHUwMDNjPSAxNjtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoxMzg6XHRcdHRlbXAgfD0gbWRpb2J1c19yZWFkX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTEzOS1cdFx0XHRcdCAgICAgUkVHX01JSV9EQVRBMCAmIzQzOyBpKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MTQ3PXN0YXRpYyBpbnQgYjUzX21kaW9fcmVhZDY0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZywgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE1OS1cdFx0dGVtcCBcdTAwM2NcdTAwM2M9IDE2O1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjE2MDpcdFx0dGVtcCB8PSBtZGlvYnVzX3JlYWRfbmVzdGVkKGJ1cywgQlJDTV9QU0VVRE9fUEhZX0FERFIsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMTYxLVx0XHRcdFx0XHQgICAgUkVHX01JSV9EQVRBMCAmIzQzOyBpKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MTY5PXN0YXRpYyBpbnQgYjUzX21kaW9fd3JpdGU4KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZywgdTggdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE3My1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoxNzQ6XHRyZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE3NS1cdFx0XHRcdCAgIFJFR19NSUlfREFUQTAsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MTgyPXN0YXRpYyBpbnQgYjUzX21kaW9fd3JpdGUxNihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE4Ny1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoxODg6XHRyZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE4OS1cdFx0XHRcdCAgIFJFR19NSUlfREFUQTAsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MTk2PXN0YXRpYyBpbnQgYjUzX21kaW9fd3JpdGUzMihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTIwMy1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDI7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MjA0Olx0XHRpbnQgcmV0ID0gbWRpb2J1c193cml0ZV9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0yMDUtXHRcdFx0XHRcdCAgICAgICBSRUdfTUlJX0RBVEEwICYjNDM7IGksXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTIxNT1zdGF0aWMgaW50IGI1M19tZGlvX3dyaXRlNDgoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgdTggcGFnZSwgdTggcmVnLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0yMjItXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjIyMzpcdFx0aW50IHJldCA9IG1kaW9idXNfd3JpdGVfbmVzdGVkKGJ1cywgQlJDTV9QU0VVRE9fUEhZX0FERFIsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMjI0LVx0XHRcdFx0XHQgICAgICAgUkVHX01JSV9EQVRBMCAmIzQzOyBpLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0yMzQ9c3RhdGljIGludCBiNTNfbWRpb193cml0ZTY0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMjQxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgNDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoyNDI6XHRcdGludCByZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTI0My1cdFx0XHRcdFx0ICAgICAgIFJFR19NSUlfREFUQTAgJiM0MzsgaSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MjUzPXN0YXRpYyBpbnQgYjUzX21kaW9fcGh5X3JlYWQxNihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgYWRkciwgaW50IHJlZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMjU3LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjI1ODpcdCp2YWx1ZSA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBhZGRyLCByZWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTI1OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MjYzPXN0YXRpYyBpbnQgYjUzX21kaW9fcGh5X3dyaXRlMTYoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IGFkZHIsIGludCByZWcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTI2Ny1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoyNjg6XHRyZXR1cm4gbWRpb2J1c193cml0ZV9uZXN0ZWQoYnVzLCBhZGRyLCByZWcsIHZhbHVlKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0yNjktfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0yOTI9c3RhdGljIGludCBiNTNfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTMwNy1cdC8qIHJlYWQgdGhlIGZpcnN0IHBvcnQmIzM5O3MgaWQgKi9cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzozMDg6XHRwaHlfaWQgPSBtZGlvYnVzX3JlYWQobWRpb2Rldi1cdTAwM2VidXMsIDAsIDIpIFx1MDAzY1x1MDAzYyAxNjtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzozMDk6XHRwaHlfaWQgfD0gbWRpb2J1c19yZWFkKG1kaW9kZXYtXHUwMDNlYnVzLCAwLCAzKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zMTAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTMzMS1cdGlmIChvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXCYjMzQ7YnJjbSxiY203NDQ1ZDBcJiMzNDspIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjMzMjpcdCAgICBzdHJjbXAobWRpb2Rldi1cdTAwM2VidXMtXHUwMDNlbmFtZSwgXCYjMzQ7c2YyIHVzZXIgbWlpXCYjMzQ7KSlcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zMzMtXHRcdHJldHVybiAtRVBST0JFX0RFRkVSO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTMzNC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzozMzU6XHRkZXYgPSBiNTNfc3dpdGNoX2FsbG9jKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2LCBcdTAwMjZiNTNfbWRpb19vcHMsIG1kaW9kZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zMzYtXHRpZiAoIWRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMzQwLVx0ZGV2LVx1MDAzZWN1cnJlbnRfcGFnZSA9IDB4ZmY7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MzQxOlx0ZGV2LVx1MDAzZWJ1cyA9IG1kaW9kZXYtXHUwMDNlYnVzO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTM0Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTM4MT1zdGF0aWMgaW50IGJjbV9zZjJfc3dfaW5kaXJfcncoc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdiwgaW50IG9wLCBpbnQgYWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQxMS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDEyOnN0YXRpYyBpbnQgYmNtX3NmMl9zd19tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQxMy17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00MjEtXHRlbHNlXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjQyMjpcdFx0cmV0dXJuIG1kaW9idXNfcmVhZF9uZXN0ZWQocHJpdi1cdTAwM2VtYXN0ZXJfbWlpX2J1cywgYWRkciwgcmVnbnVtKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDIzLX1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDI0LVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo0MjU6c3RhdGljIGludCBiY21fc2YyX3N3X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQyNi1cdFx0XHRcdCB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDM1LVx0ZWxzZVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo0MzY6XHRcdHJldHVybiBtZGlvYnVzX3dyaXRlX25lc3RlZChwcml2LVx1MDAzZW1hc3Rlcl9taWlfYnVzLCBhZGRyLFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00MzctXHRcdFx0XHRyZWdudW0sIHZhbCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjE3LVx0ZG4gPSBvZl9maW5kX2NvbXBhdGlibGVfbm9kZShOVUxMLCBOVUxMLCBcJiMzNDticmNtLHVuaW1hYy1tZGlvXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NjE4Olx0cHJpdi1cdTAwM2VtYXN0ZXJfbWlpX2J1cyA9IG9mX21kaW9fZmluZF9idXMoZG4pO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02MTktXHRpZiAoIXByaXYtXHUwMDNlbWFzdGVyX21paV9idXMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTYyMy1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NjI0Olx0cHJpdi1cdTAwM2V1c2VyX21paV9idXMgPSBtZGlvYnVzX2FsbG9jKCk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTYyNS1cdGlmICghcHJpdi1cdTAwM2V1c2VyX21paV9idXMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4My1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6Njg0Olx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02OTItZXJyX2ZyZWVfdXNlcl9taWlfYnVzOlxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2OTM6XHRtZGlvYnVzX2ZyZWUocHJpdi1cdTAwM2V1c2VyX21paV9idXMpO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02OTQtZXJyX3B1dF9tYXN0ZXJfbWlpX2J1c19kZXY6XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz03MDE9c3RhdGljIHZvaWQgYmNtX3NmMl9tZGlvX3VucmVnaXN0ZXIoc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzAyLXtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NzAzOlx0bWRpb2J1c191bnJlZ2lzdGVyKHByaXYtXHUwMDNldXNlcl9taWlfYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NzA0Olx0bWRpb2J1c19mcmVlKHByaXYtXHUwMDNldXNlcl9taWlfYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzA1LVx0cHV0X2RldmljZShcdTAwMjZwcml2LVx1MDAzZW1hc3Rlcl9taWlfYnVzLVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MTg0PXN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3JlYWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxOTA6XHRyZXQgPSBtZGlvYnVzX3JlYWRfbmVzdGVkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIHJlZ251bSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xOTEtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTE5OT1zdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwNjpcdHJldCA9IG1kaW9idXNfd3JpdGVfbmVzdGVkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIHJlZ251bSwgdmFsdWUpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjA3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0yNTA9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjYzLVx0LyogSnVzdCBkbyBhIHNsZWVwaW5nIG9wZXJhdGlvbiB0byBtYWtlIGxvY2tkZXAgY2hlY2tzIGVmZmVjdGl2ZSAqL1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjY0Olx0bWRpb2J1c19yZWFkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIE1JSV9CTVNSKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2NS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0yODM9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkyLVx0LyogSnVzdCBkbyBhIHNsZWVwaW5nIG9wZXJhdGlvbiB0byBtYWtlIGxvY2tkZXAgY2hlY2tzIGVmZmVjdGl2ZSAqL1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkzOlx0bWRpb2J1c19yZWFkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIE1JSV9CTVNSKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zNTU9c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cdGRzLVx1MDAzZXByaXYgPSBwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4NTpcdHBzLVx1MDAzZWJ1cyA9IG1kaW9kZXYtXHUwMDNlYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ0Nj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYodm9pZClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NjM6XHRidXMgPSBtZGlvX2ZpbmRfYnVzKFwmIzM0O2ZpeGVkLTBcJiMzNDspO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDY0LVx0aWYgKFdBUk5fT04oIWJ1cykpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDY2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDY3Olx0c3dpdGNoX21kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCAzMSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjgtXHRpZiAoSVNfRVJSKHN3aXRjaF9tZGlvZGV2KSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzItXHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYz0yNT1zdGF0aWMgdm9pZCBsYW45MzAzX21kaW9fcmVhbF93cml0ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW8sIGludCByZWcsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmMtMjYte1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jOjI3Olx0bWRpby1cdTAwM2VidXMtXHUwMDNld3JpdGUobWRpby1cdTAwM2VidXMsIFBIWV9BRERSKHJlZyksIFBIWV9SRUcocmVnKSwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy0yOC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jPTQzPXN0YXRpYyB1MTYgbGFuOTMwM19tZGlvX3JlYWxfcmVhZChzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW8sIGludCByZWcpXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmMtNDQte1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jOjQ1Olx0cmV0dXJuIG1kaW8tXHUwMDNlYnVzLVx1MDAzZXJlYWQobWRpby1cdTAwM2VidXMsIFBIWV9BRERSKHJlZyksIFBIWV9SRUcocmVnKSk7XG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmMtNDYtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYz02MT1zdGF0aWMgaW50IGxhbjkzMDNfbWRpb19waHlfd3JpdGUoc3RydWN0IGxhbjkzMDMgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy02NS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYzo2NjpcdHJldHVybiBtZGlvYnVzX3dyaXRlX25lc3RlZChzd19kZXYtXHUwMDNlZGV2aWNlLVx1MDAzZWJ1cywgYWRkciwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jLTY3LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmM9Njk9c3RhdGljIGludCBsYW45MzAzX21kaW9fcGh5X3JlYWQoc3RydWN0IGxhbjkzMDMgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy03Mi1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYzo3MzpcdHJldHVybiBtZGlvYnVzX3JlYWRfbmVzdGVkKHN3X2Rldi1cdTAwM2VkZXZpY2UtXHUwMDNlYnVzLCBhZGRyLCByZWcpO1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jLTc0LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jPTM0MT1zdGF0aWMgaW50IGdzd2lwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00MDgtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjQwOTpcdC8qIGJyaW5nIHVwIHRoZSBtZGlvIGJ1cyAqL1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00MTAtXHRncGh5X2Z3X25wID0gb2ZfZ2V0X2NvbXBhdGlibGVfY2hpbGQoZGV2LVx1MDAzZW9mX25vZGUsIFwmIzM0O2xhbnRpcSxncGh5LWZ3XCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xMjk9c3RhdGljIGludCBnc3dpcF9tZGlvX3BvbGwoc3RydWN0IGdzd2lwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTM2LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTM3OnN0YXRpYyBpbnQgZ3N3aXBfbWRpb193cihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTEzOC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU2LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTU3OnN0YXRpYyBpbnQgZ3N3aXBfbWRpb19yZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZylcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTg3PXN0YXRpYyBpbnQgZ3N3aXBfbWRpbyhzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMDAtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoyMDE6XHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2MoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIwMi1cdGlmICghYnVzKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjEzLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MjE0Olx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxNS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz02NDM9c3RhdGljIGludCBnc3dpcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtNjk0LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6Njk1Olx0LyogYnJpbmcgdXAgdGhlIG1kaW8gYnVzICovXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy02OTYtXHRlcnIgPSBnc3dpcF9tZGlvKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtNjk3LVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6Njk4Olx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDttZGlvIGJ1cyBzZXR1cCBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtNjk5LVx0XHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jPTQxPXN0YXRpYyBpbnQgZ3N3MXh4X2NvbmZpZ19zbWRpb19iYWRyKHN0cnVjdCBnc3cxeHhfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy00My17XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo0NDpcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZW1kaW9fZGV2LVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTQ1LVx0aW50IHN3X2FkZHIgPSBwcml2LVx1MDAzZW1kaW9fZGV2LVx1MDAzZWFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNTMtXHRcdHNtZGlvX2JhZHIgPSByZWcgXHUwMDI2IH5HRU5NQVNLKDMsIDApO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6NTQ6XHRcdHJlcyA9IF9fbWRpb2J1c193cml0ZShidXMsIHN3X2FkZHIsIEdTVzFYWF9TTURJT19CQURSLCBzbWRpb19iYWRyKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTU1LVx0XHRpZiAocmVzIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9Njc9c3RhdGljIGludCBnc3cxeHhfcmVnbWFwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy03MC1cdHN0cnVjdCBnc3cxeHhfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo3MTpcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZW1kaW9fZGV2LVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTcyLVx0aW50IHN3X2FkZHIgPSBwcml2LVx1MDAzZW1kaW9fZGV2LVx1MDAzZWFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNzktXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo4MDpcdHJlcyA9IF9fbWRpb2J1c19yZWFkKGJ1cywgc3dfYWRkciwgcmVnIC0gc21kaW9fYmFkcik7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy04MS1cdGlmIChyZXMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYz05Mj1zdGF0aWMgaW50IGdzdzF4eF9yZWdtYXBfd3JpdGUodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy05NS1cdHN0cnVjdCBnc3cxeHhfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo5NjpcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZW1kaW9fZGV2LVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTk3LVx0aW50IHN3X2FkZHIgPSBwcml2LVx1MDAzZW1kaW9fZGV2LVx1MDAzZWFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTA0LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTA1Olx0cmVzID0gX19tZGlvYnVzX3dyaXRlKGJ1cywgc3dfYWRkciwgcmVnIC0gc21kaW9fYmFkciwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEwNi1cdGlmIChyZXMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9NjQ1PXN0YXRpYyBzdHJ1Y3QgcmVnbWFwICpnc3cxeHhfcmVnbWFwX2luaXQoc3RydWN0IGdzdzF4eF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTY1Ny1cdFx0LnVubG9jayA9IGdzdzF4eF9tZGlvX3JlZ21hcF91bmxvY2ssXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo2NTg6XHRcdC5sb2NrX2FyZyA9IFx1MDAyNnByaXYtXHUwMDNlbWRpb19kZXYtXHUwMDNlYnVzLVx1MDAzZW1kaW9fbG9jayxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTY1OS1cdH07XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy02NjAtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo2NjE6XHRyZXR1cm4gZGV2bV9yZWdtYXBfaW5pdChcdTAwMjZwcml2LVx1MDAzZW1kaW9fZGV2LVx1MDAzZWRldiwgXHUwMDI2Z3N3MXh4X3JlZ21hcF9idXMsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy02NjItXHRcdFx0XHRwcml2LCBcdTAwMjZjb25maWcpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYz0yNT1zdGF0aWMgaW50IGtzejg4NjNfbWRpb19yZWFkKHZvaWQgKmN0eCwgY29uc3Qgdm9pZCAqcmVnX2J1Ziwgc2l6ZV90IHJlZ19sZW4sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTM5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jOjQwOlx0XHRyZXQgPSBfX21kaW9idXNfcmVhZChtZGV2LVx1MDAzZWJ1cywgKCh0bXAgXHUwMDI2IDB4RTApIFx1MDAzZVx1MDAzZSA1KSB8XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtNDEtXHRcdFx0XHQgICAgIFNNSV9LU1o4OFhYX1JFQURfUEhZLCB0bXApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYz01NT1zdGF0aWMgaW50IGtzejg4NjNfbWRpb193cml0ZSh2b2lkICpjdHgsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBjb3VudClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtNzEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6NzI6XHRcdHJldCA9IF9fbWRpb2J1c193cml0ZShtZGV2LVx1MDAzZWJ1cywgKCh0bXAgXHUwMDI2IDB4RTApIFx1MDAzZVx1MDAzZSA1KSxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy03My1cdFx0XHRcdCAgICAgIHRtcCwgdmFsW2ldKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0zMTU9c3RhdGljIGludCBrc3o5NDc3X3Bjc19jcmVhdGUoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMjItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozMjM6XHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2MoZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMjQtXHRpZiAoIWJ1cylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMjYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozMjc6XHRidXMtXHUwMDNlbmFtZSA9IFwmIzM0O2tzel9wY3NfbWRpb19idXNcJiMzNDs7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMjgtXHRzbnByaW50ZihidXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7JXMtcGNzXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTMzNS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjMzNjpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYtXHUwMDNlZGV2LCBidXMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzM3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMzktXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozNDA6XHRwY3MgPSB4cGNzX2NyZWF0ZV9wY3NfbWRpb2RldihidXMsIDApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQxLVx0aWYgKElTX0VSUihwY3MpKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTIxNzc9c3RhdGljIHZvaWQga3N6X3VwZGF0ZV9wb3J0X21lbWJlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMjU4LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjI1OTppbnQga3N6X3N3X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyNjAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyNjYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMjY3OmludCBrc3pfc3dfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyNjgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyNzUtLyoqXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMjc2OiAqIGtzel9wYXJlbnRfbWRpb19yZWFkIC0gUmVhZCBkYXRhIGZyb20gYSBQSFkgcmVnaXN0ZXIgb24gdGhlIHBhcmVudCBNRElPIGJ1cy5cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyNzctICogQGJ1czogTURJTyBidXMgc3RydWN0dXJlLlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyODctICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMjg4OmludCBrc3pfcGFyZW50X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyODkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyOTEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMjkyOlx0cmV0dXJuIG1kaW9idXNfcmVhZF9uZXN0ZWQoZGV2LVx1MDAzZXBhcmVudF9tZGlvX2J1cywgYWRkciwgcmVnbnVtKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyOTMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyOTUtLyoqXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMjk2OiAqIGtzel9wYXJlbnRfbWRpb193cml0ZSAtIFdyaXRlIGRhdGEgdG8gYSBQSFkgcmVnaXN0ZXIgb24gdGhlIHBhcmVudCBNRElPIGJ1cy5cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyOTctICogQGJ1czogTURJTyBidXMgc3RydWN0dXJlLlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzMDctICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMzA4OmludCBrc3pfcGFyZW50X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzA5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzExLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjMxMjpcdHJldHVybiBtZGlvYnVzX3dyaXRlX25lc3RlZChkZXYtXHUwMDNlcGFyZW50X21kaW9fYnVzLCBhZGRyLCByZWdudW0sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzEzLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yNDE2PWludCBrc3pfcGFyc2VfZHRfcGh5X2NvbmZpZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0NzItLyoqXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDczOiAqIGtzel9tZGlvX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgYW5kIGNvbmZpZ3VyZSB0aGUgTURJTyBidXMgZm9yIHRoZSBLU1ogZGV2aWNlLlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjQ3NC0gKiBAZGV2OiBQb2ludGVyIHRvIHRoZSBLU1ogZGV2aWNlIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNDc4LSAqIHRoZSBmdW5jdGlvbiB3aWxsIGNvbmZpZ3VyZSB0aGUgZXh0ZXJuYWwgTURJTyBjb250cm9sbGVyIHNwZWNpZmllZCBieSB0aGVcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjI0Nzk6ICogXCYjMzQ7bWRpby1wYXJlbnQtYnVzXCYjMzQ7IGRldmljZSB0cmVlIHByb3BlcnR5IHRvIGRpcmVjdGx5IG1hbmFnZSBpbnRlcm5hbCBQSFlzLlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjQ4MC0gKiBPdGhlcndpc2UsIFNQSSBvciBJMkMgYWNjZXNzIGlzIHNldCB1cCBmb3IgUEhZIGFjY2Vzcy5cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yNDg0PWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0OTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDk3Olx0cGFyZW50X2J1c19ub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShtZGlvX25wLCBcJiMzNDttZGlvLXBhcmVudC1idXNcJiMzNDssIDApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjQ5OC1cdGlmIChwYXJlbnRfYnVzX25vZGUgXHUwMDI2XHUwMDI2ICFkZXYtXHUwMDNlaW5mby1cdTAwM2VwaHlfc2lkZV9tZGlvX3N1cHBvcnRlZCkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjQ5OTpcdFx0ZGV2X2VycihkZXYtXHUwMDNlZGV2LCBcJiMzNDtTaWRlIE1ESU8gYnVzIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgSFcsIGlnbm9yaW5nICYjMzk7bWRpby1wYXJlbnQtYnVzJiMzOTsgcHJvcGVydHkuXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1MDAtXHRcdHJldCA9IC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjUwMy1cdH0gZWxzZSBpZiAocGFyZW50X2J1c19ub2RlKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNTA0Olx0XHRwYXJlbnRfYnVzID0gb2ZfbWRpb19maW5kX2J1cyhwYXJlbnRfYnVzX25vZGUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjUwNS1cdFx0aWYgKCFwYXJlbnRfYnVzKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjUxMC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjI1MTE6XHRcdGRldi1cdTAwM2VwYXJlbnRfbWRpb19idXMgPSBwYXJlbnRfYnVzO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjUxMi1cdH1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1MTMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNTE0Olx0YnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jKGRzLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTE1LVx0aWYgKCFidXMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTU1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjU1NjpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTU3LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTE2ND1zdHJ1Y3Qga3N6X2RldmljZSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjE2LVx0LyoqXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDoyMTc6XHQgKiBAcGFyZW50X21kaW9fYnVzOiBQb2ludGVyIHRvIHRoZSBleHRlcm5hbCBNRElPIGJ1cyBjb250cm9sbGVyLlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjE4LVx0ICpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yMjMtXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjIyNDpcdHN0cnVjdCBtaWlfYnVzICpwYXJlbnRfbWRpb19idXM7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yMjUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9NDY0PWludCBrc3pfcGFyc2VfZHRfcGh5X2NvbmZpZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNDY1LVx0XHRcdCAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDY2OmludCBrc3pfc3dfbWRpb19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjQ2NzppbnQga3N6X3N3X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sIHUxNiB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDY4OmludCBrc3pfcGFyZW50X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo0Njk6aW50IGtzel9wYXJlbnRfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC00NzAtaW50IGtzel9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM9MTEwPXN0YXRpYyBpbnQgbGFuOTM3eF9wb3J0X2NmZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IG9mZnNldCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTExOS0gKiBAZGV2OiBQb2ludGVyIHRvIGRldmljZSBzdHJ1Y3R1cmUuXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjEyMDogKiBAc2lkZV9tZGlvOiBCb29sZWFuIGluZGljYXRpbmcgaWYgdGhlIFBIWXMgYXJlIGFjY2Vzc2VkIG92ZXIgYSBzaWRlIE1ESU8gYnVzLlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy0xMjEtICpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTE0Mz1zdGF0aWMgaW50IGxhbjkzN3hfY3JlYXRlX3BoeV9hZGRyX21hcChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBib29sIHNpZGVfbWRpbylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTIxMC0vKipcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6MjExOiAqIGxhbjkzN3hfbWRpb19idXNfcHJlaW5pdCAtIFByZS1pbml0aWFsaXplIE1ESU8gYnVzIGZvciBhY2Nlc3NpbmcgUEhZcy5cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjEyLSAqIEBkZXY6IFBvaW50ZXIgdG8gZGV2aWNlIHN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6MjEzOiAqIEBzaWRlX21kaW86IEJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgUEhZcyBhcmUgYWNjZXNzZWQgb3ZlciBhIHNpZGUgTURJTyBidXMuXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTIxNC0gKlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjI2LSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzoyMjc6c3RhdGljIGludCBsYW45Mzd4X21kaW9fYnVzX3ByZWluaXQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgYm9vbCBzaWRlX21kaW8pXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTIyOC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02NjY9c3RhdGljIGludCBsYW45Mzd4X3N3aXRjaF9pbml0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy02NzMtLyoqXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjY3NDogKiBsYW45Mzd4X21kaW9fcmVnaXN0ZXIgLSBSZWdpc3RlciBhbmQgY29uZmlndXJlIHRoZSBNRElPIGJ1cyBmb3IgdGhlIExBTjkzN3guXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTY3NS0gKiBAZGV2OiBQb2ludGVyIHRvIHRoZSBLU1ogZGV2aWNlIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTY3OS0gKiB0aGUgZnVuY3Rpb24gd2lsbCBjb25maWd1cmUgdGhlIGV4dGVybmFsIE1ESU8gY29udHJvbGxlciBzcGVjaWZpZWQgYnkgdGhlXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjY4MDogKiBcJiMzNDttZGlvLXBhcmVudC1idXNcJiMzNDsgZGV2aWNlIHRyZWUgcHJvcGVydHkgdG8gZGlyZWN0bHkgbWFuYWdlIGludGVybmFsIFBIWXMuXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTY4MS0gKiBPdGhlcndpc2UsIFNQSSBvciBJMkMgYWNjZXNzIGlzIHNldCB1cCBmb3IgUEhZIGFjY2Vzcy5cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTY4NT1zdGF0aWMgaW50IGxhbjkzN3hfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNjk3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo2OTg6XHRwYXJlbnRfYnVzX25vZGUgPSBvZl9wYXJzZV9waGFuZGxlKG1kaW9fbnAsIFwmIzM0O21kaW8tcGFyZW50LWJ1c1wmIzM0OywgMCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTY5OS1cdGlmIChwYXJlbnRfYnVzX25vZGUgXHUwMDI2XHUwMDI2ICFkZXYtXHUwMDNlaW5mby1cdTAwM2VwaHlfc2lkZV9tZGlvX3N1cHBvcnRlZCkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3MDA6XHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldiwgXCYjMzQ7U2lkZSBNRElPIGJ1cyBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIEhXLCBpZ25vcmluZyAmIzM5O21kaW8tcGFyZW50LWJ1cyYjMzk7IHByb3BlcnR5LlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcwMS1cdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcwNC1cdH0gZWxzZSBpZiAocGFyZW50X2J1c19ub2RlKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjcwNTpcdFx0cGFyZW50X2J1cyA9IG9mX21kaW9fZmluZF9idXMocGFyZW50X2J1c19ub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzA2LVx0XHRpZiAoIXBhcmVudF9idXMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcxMS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzEyOlx0XHRkZXYtXHUwMDNlcGFyZW50X21kaW9fYnVzID0gcGFyZW50X2J1cztcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzEzLVx0fVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MTQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjcxNTpcdGJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhkcy1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MTYtXHRpZiAoIWJ1cykge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzIwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3MjE6XHRyZXQgPSBsYW45Mzd4X21kaW9fYnVzX3ByZWluaXQoZGV2LCAhIXBhcmVudF9idXMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MjItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3NTY6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE0OD1tdDc1MzBfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1OS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE2MDpcdHByaXYtXHUwMDNlYnVzID0gbWRpb2Rldi1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNjEtXHRwcml2LVx1MDAzZWRldiA9IFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01MjU9c3RhdGljIGludCBtdDc1MzBfcGh5X3JlYWRfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI2LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mjc6XHRyZXR1cm4gbWRpb2J1c19yZWFkX25lc3RlZChwcml2LVx1MDAzZWJ1cywgcG9ydCwgcmVnbnVtKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01MzA9c3RhdGljIGludCBtdDc1MzBfcGh5X3dyaXRlX2MyMihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzIte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzMzpcdHJldHVybiBtZGlvYnVzX3dyaXRlX25lc3RlZChwcml2LVx1MDAzZWJ1cywgcG9ydCwgcmVnbnVtLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzNC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTUzNj1zdGF0aWMgaW50IG10NzUzMF9waHlfcmVhZF9jNDUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM4LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mzk6XHRyZXR1cm4gbWRpb2J1c19jNDVfcmVhZF9uZXN0ZWQocHJpdi1cdTAwM2VidXMsIHBvcnQsIGRldmFkLCByZWdudW0pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0MC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTU0Mj1zdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTQ0LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NDU6XHRyZXR1cm4gbWRpb2J1c19jNDVfd3JpdGVfbmVzdGVkKHByaXYtXHUwMDNlYnVzLCBwb3J0LCBkZXZhZCwgcmVnbnVtLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0Ni19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzNzE9bXQ3NTMwX3NldHVwX21kaW8oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzg0LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzODU6XHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2MoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzg2LVx0aWYgKCFidXMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDA3Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MDgtXHRpZiAocmV0KSB7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTY0OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDEzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBEZXZpY2UgUmVnaXN0cmF0aW9uIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGZ1bmN0aW9ucyBsaWtlIGBtZGlvYnVzX2FsbG9jYCwgYG1kaW9idXNfcmVnaXN0ZXJgLCBgbWRpb19kZXZpY2VfY3JlYXRlYCwgdGhlIHN0YW5kYXJkIE1ESU8gYnVzIHN0dWZmLiBJIGFsc28gc3BvdCBgZHNhX2xvb3BgLCB3aGljaCBpcyBzcGVjaWZpY2FsbHkgY3JlYXRpbmcgYSBzd2l0Y2ggTURJTyBkZXZpY2UuIEJ1dCBob2xkIG9uLCB0aGUgZGVzY3JpcHRpb24gaXNuJiMzOTt0IGp1c3QgYWJvdXQgTURJTyBkZXZpY2VzLCBpdCYjMzk7cyBhYm91dCBQSFkgZGV2aWNlcywgdG9vLCBpc24mIzM5O3QgaXQ/IFJpZ2h0LgoKQWxyaWdodCwgc28gZGlnZ2luZyBhIGJpdCBkZWVwZXIsIEkgc2VlIGBwaHlfZGV2aWNlX3JlZ2lzdGVyYCBnZXRzIGNhbGxlZCBmcm9tIGBwaHlfZGV2aWNlX2NyZWF0ZWAsIGFuZCB0aGF0JiMzOTtzIHVsdGltYXRlbHkgY2FsbGVkIGJ5IGBnZXRfcGh5X2RldmljZWAuIEkgYWxzbyBzZWUgdGhhdCBgc2ZwLmNgIGlzIGNhbGxpbmcgYHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuCgpUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkaW5nIHN1cHBvcnQgZm9yIFBTRSBjb250cm9sbGVycy4gTGV0IG1lIHF1aWNrbHkgc2NhbiB0aHJvdWdoIHRoZSBjb2RlIGJhc2UgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIGFueSBleGlzdGluZyBQU0UgY29udHJvbGxlciBpbXBsZW1lbnRhdGlvbnMuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpcyBzdWJzeXN0ZW0gYmVmb3JlIEkgY2FuIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHNlLXBkL3BkNjkyeDAuYz0xNzU2PXN0YXRpYyBpbnQgcGQ2OTJ4MF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcGQ2OTJ4MC5jLTE4MzgtXHRwcml2LVx1MDAzZXBjZGV2LnBpc19wcmlvX21heCA9IDI7XG5kcml2ZXJzL25ldC9wc2UtcGQvcGQ2OTJ4MC5jOjE4Mzk6XHRyZXQgPSBkZXZtX3BzZV9jb250cm9sbGVyX3JlZ2lzdGVyKGRldiwgXHUwMDI2cHJpdi1cdTAwM2VwY2Rldik7XG5kcml2ZXJzL25ldC9wc2UtcGQvcGQ2OTJ4MC5jLTE4NDAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jPTI3PXN0YXRpYyBCTE9DS0lOR19OT1RJRklFUl9IRUFEKHBzZV9jb250cm9sbGVyX25vdGlmaWVyKTtcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0zNi0gKiBzbyBhIFBTRSBjb250cm9sbGVyIGRyaXZlciYjMzk7cyBwcm9iZS91bmJpbmQgcGF0aCBtdXN0IG5vdCBob2xkIGFueVxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6Mzc6ICogc3VjaCBsb2NrIHdoZW4gY2FsbGluZyBwc2VfY29udHJvbGxlcl9yZWdpc3RlcigpIG9yXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0zOC0gKiBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKCkuXG4tLVxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM9MTA0Nj1zdGF0aWMgdm9pZCBwc2Vfc2VuZF9udGZfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMDY3LS8qKlxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTA2ODogKiBwc2VfY29udHJvbGxlcl9yZWdpc3RlciAtIHJlZ2lzdGVyIGEgUFNFIGNvbnRyb2xsZXIgZGV2aWNlXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMDY5LSAqIEBwY2RldjogYSBwb2ludGVyIHRvIHRoZSBpbml0aWFsaXplZCBQU0UgY29udHJvbGxlciBkZXZpY2Vcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMDcyLSAqL1xuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTA3MzppbnQgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMDc0LXtcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTQ1LX1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExNDY6RVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE0Ny1cbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYz0xMTY5PXN0YXRpYyB2b2lkIGRldm1fcHNlX2NvbnRyb2xsZXJfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJlcylcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTc0LS8qKlxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTE3NTogKiBkZXZtX3BzZV9jb250cm9sbGVyX3JlZ2lzdGVyIC0gcmVzb3VyY2UgbWFuYWdlZCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcigpXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTc2LSAqIEBkZXY6IGRldmljZSB0aGF0IGlzIHJlZ2lzdGVyaW5nIHRoaXMgUFNFIGNvbnRyb2xsZXJcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTc4LSAqXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYzoxMTc5OiAqIE1hbmFnZWQgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoKS4gRm9yIFBTRSBjb250cm9sbGVycyByZWdpc3RlcmVkIGJ5XG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTgwLSAqIHRoaXMgZnVuY3Rpb24sIHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIoKSBpcyBhdXRvbWF0aWNhbGx5IGNhbGxlZCBvblxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTE4MTogKiBkcml2ZXIgZGV0YWNoLiBTZWUgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExODItICpcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTg0LSAqL1xuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTE4NTppbnQgZGV2bV9wc2VfY29udHJvbGxlcl9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTg2LVx0XHRcdFx0IHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExOTUtXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYzoxMTk2Olx0cmV0ID0gcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIocGNkZXYpO1xuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE5Ny1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMjA2LX1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjEyMDc6RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9wc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMjA4LVxuLS1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfcmVndWxhdG9yLmM9OTQ9cHNlX3JlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfcmVndWxhdG9yLmMtMTI2LVx0cHJpdi1cdTAwM2VwY2Rldi50eXBlcyA9IEVUSFRPT0xfUFNFX1BPREw7XG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX3JlZ3VsYXRvci5jOjEyNzpcdHJldCA9IGRldm1fcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoZGV2LCBcdTAwMjZwcml2LVx1MDAzZXBjZGV2KTtcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfcmVndWxhdG9yLmMtMTI4LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3BzZS1wZC9zaTM0NzQuYz00NzM9c3RhdGljIGludCBzaTM0NzRfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9uZXQvcHNlLXBkL3NpMzQ3NC5jLTU0Mi1cbmRyaXZlcnMvbmV0L3BzZS1wZC9zaTM0NzQuYzo1NDM6XHRyZXQgPSBkZXZtX3BzZV9jb250cm9sbGVyX3JlZ2lzdGVyKGRldiwgXHUwMDI2cHJpdi1cdTAwM2VwY2Rldik7XG5kcml2ZXJzL25ldC9wc2UtcGQvc2kzNDc0LmMtNTQ0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jPTE0MzA9c3RhdGljIGludCB0cHMyMzg4MV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuYy0xNTE2LVx0cHJpdi1cdTAwM2VwY2Rldi5zdXBwX2J1ZGdldF9ldmFsX3N0cmF0ZWdpZXMgPSBQU0VfQlVER0VUX0VWQUxfU1RSQVRfU1RBVElDO1xuZHJpdmVycy9uZXQvcHNlLXBkL3RwczIzODgxLmM6MTUxNzpcdHJldCA9IGRldm1fcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoZGV2LCBcdTAwMjZwcml2LVx1MDAzZXBjZGV2KTtcbmRyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jLTE1MTgtXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM1OTgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA1MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IFBIWSBhbmQgUFNFIENvbnRyb2xsZXIgSW50ZWdyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UgaGF2ZSBgcHNlX3JlZ3VsYXRvci5jYCwgYSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZWdpc3RlcnMgYSBQU0UgY29udHJvbGxlciB1c2luZyBgZGV2bV9wc2VfY29udHJvbGxlcl9yZWdpc3RlcmAuIEl0IHNlZW1zIGRldmljZSB0cmVlIGluc3RhbnRpYXRlcyBpdCwgd2hpY2ggbWVhbnMgc3l6a2FsbGVyICpjYW4qIGdldCB0byBpdCB2aWEgZGV2aWNlIHRyZWUgaW5qZWN0aW9uIG9yIHBsYXRmb3JtIGRldmljZXMuIE5vLCBzeXprYWxsZXIgZG9lcyAqbm90KiBuZWVkIHN5el9kZXZsaW5rX25ldG5zLCBpdCBoYXMgaXRzIG93biBtZXRob2RzIHRvIGNyZWF0ZSB2aXJ0dWFsIGRldmljZXMuCgpCdXQsIHRoZSByZWFsIGNydXggb2YgdGhpcyBpcyB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBjb2RlLCBzcGVjaWZpY2FsbHkgYHBoeV9kZXZpY2UuY2AuIFRoYXQmIzM5O3MgcmVhY2hhYmxlISBXZSBjYW4gaGl0IHRoYXQgY29kZSB0aHJvdWdoIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzLCBsaWtlIGBtYWNzZWNgLCBgdmV0aGAsIG9yIGB0dW5gLiBXYWl0LCBkbyB0aG9zZSBldmVuIHVzZSBQSFlzPyBObywgYHZldGhgIGNlcnRhaW5seSBkb2VzbiYjMzk7dC4gYG1hYzgwMjExX2h3c2ltYD8gTm9wZS4gQWgsIGJ1dCBgZHNhX2xvb3BgICpkb2VzKi4gSXQgY3JlYXRlcyBhbiBNRElPIGJ1cyBhbmQgUEhZcyEgQW5kIFVTQiBuZXR3b3JrIGFkYXB0ZXJzIGxpa2UgYGFzaXhgIGFuZCBgc21zYzk1eHhgIGRvIHRvbywgY3JlYXRpbmcgTURJTyBidXNlcyBhbmQgUEhZcy4gU3l6a2FsbGVyIGZ1enplZCBVU0IgdmlhIGBkdW1teV9oY2RgICh2aGNpKSwgc28gdGhvc2UgUEhZcyBhcmUgZGVmaW5pdGVseSBmdXp6ZWQuCgpTbywgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGlzIHJlYWNoYWJsZSBhbmQgYWxyZWFkeSBoZWF2aWx5IGZ1enplZCwgd2hpY2ggbWVhbnMgdGhlIG1vZGlmaWNhdGlvbiB0aGlzIHBhdGNoIG1ha2VzLCBjYWxsaW5nIGBwaHlfdHJ5X2F0dGFjaF9wc2UocGh5ZGV2KWAsIGlzIGFsc28gZnV6emVkLiBQbHVzLCB0aGUgcGF0Y2ggYWRkcyBgcGh5X3BzZV9ub3RpZmllcl9ldmVudGAgd2hlbiBhIFBTRSBjb250cm9sbGVyIGlzIHJlZ2lzdGVyZWQgb3IgdW5yZWdpc3RlcmVkLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMhIFNvLCAqV29ydGhGdXp6aW5nPXRydWUqLgoKTm93LCB0aGUgdGFyZ2V0IGZ1bmN0aW9ucy4uLkkgc2hvdWxkIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbjoKCiogICBgcGh5X3RyeV9hdHRhY2hfcHNlYAoqICAgYHBoeV9wc2VfYXR0YWNoX29uZWAKKiAgIGBwaHlfcHNlX2RldGFjaF9vbmVgCiogICBgcGh5X3BzZV9ub3RpZmllcl9ldmVudGAKKiAgIGBfX3BoeV9kZXZpY2VfcmVnaXN0ZXJgCiogICBgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWRgCiogICBgcHNlX3JlZ2lzdGVyX25vdGlmaWVyYAoqICAgYHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyYAoqICAgYHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXZgCgpMYXN0bHksIEkgbmVlZCB0byB2ZXJpZnkgd2hldGhlciBgQ09ORklHX1BTRV9DT05UUk9MTEVSYCBpcyBuZWVkZWQuIExvb2tzIGxpa2UgaXQmIzM5O3MgZGVmaW5lZCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jYCBhbmQgaXMgbmVlZGVkIHRvIGNvbXBpbGUgdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBTRV9DT05UUk9MTEVSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BzZS1wZC9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC9wc2UtcGQvS2NvbmZpZzo2Om1lbnVjb25maWcgUFNFX0NPTlRST0xMRVJcbmRyaXZlcnMvbmV0L3BzZS1wZC9LY29uZmlnLTctXHRib29sIFwmIzM0O0V0aGVybmV0IFBvd2VyIFNvdXJjaW5nIEVxdWlwbWVudCBTdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ3NjAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUFNFIENvbnRyb2xsZXIgQXR0YWNobWVudCBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgcGF0Y2ggcmVsYXRlZCB0byBQU0UgY29udHJvbGxlciBhdHRhY2htZW50IGZvciBQSFkgZGV2aWNlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGNvbmZpcm1lZDogYFBTRV9DT05UUk9MTEVSYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIEkgc2VlIHRoYXQgYHBoeV9kZXZpY2UuY2AgaXMgY29tcGlsZWQgdW5kZXIgYENPTkZJR19QSFlMSUJgLCBhbmQgdGhlIGNoYW5nZXMgd2l0aGluIGl0IGxldmVyYWdlIGBvZl9wc2VfY29udHJvbF9nZXRgLCB3aGljaCBpcyBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaGAuIFRoZSBjcml0aWNhbCBwb2ludCwgaG93ZXZlciwgaXMgdGhhdCBpZiBgQ09ORklHX1BTRV9DT05UUk9MTEVSYCBpcyAqZGlzYWJsZWQqLCBgb2ZfcHNlX2NvbnRyb2xfZ2V0YCByZXR1cm5zIGBOVUxMYC4gVGhpcyBtZWFucyB0aGF0IHRvIHJlYWxseSB0ZXN0IHRoZSBhdHRhY2htZW50IGxvZ2ljLCB3ZSAqbmVlZCogYFBTRV9DT05UUk9MTEVSYCBlbmFibGVkLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSB0aGlzLiBBIHF1aWNrIGNoZWNrIG9mIGBpbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaGAgc29saWRpZmllcyB0aGlzLiBXaGVuIGBDT05GSUdfUFNFX0NPTlRST0xMRVJgIGlzIGVuYWJsZWQsIHdlIGdldCB0aGUgcmVhbCBkZWFsIOKAkyBmdW5jdGlvbnMgbGlrZSBgcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldmAsIGBwc2VfcmVnaXN0ZXJfbm90aWZpZXJgLCBhbmQgYHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyYCBhcmUgYWN0dWFsbHkgZGVmaW5lZC4gSWYgaXQmIzM5O3MgZGlzYWJsZWQsIHRoZXNlIGZ1bmN0aW9ucyBhcmUganVzdCBzdHVicyB0aGF0IHJldHVybiBlaXRoZXIgMCBvciBmYWxzZSwgZWZmZWN0aXZlbHkgc2hvcnQtY2lyY3VpdGluZyB0aGUgcmVsZXZhbnQgY29kZS4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGJyb2FkZXIgcGljdHVyZS4gYENPTkZJR19QSFlMSUJgIGlzIHByZXR0eSBtdWNoIGVuYWJsZWQgZXZlcnl3aGVyZS4gYENPTkZJR19PRmAgaXMgcmVxdWlyZWQgZm9yIGBvZl9wc2VfY29udHJvbF9nZXRgLCB3aGljaCBpcyBhbHNvIHR5cGljYWwgb2YgbW9zdCBjb25maWd1cmF0aW9ucy4KCkkmIzM5O3ZlIGlkZW50aWZpZWQgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb246IGBwaHlfdHJ5X2F0dGFjaF9wc2VgLCBgcGh5X3BzZV9hdHRhY2hfb25lYCwgYHBoeV9wc2VfZGV0YWNoX29uZWAsIGBwaHlfcHNlX25vdGlmaWVyX2V2ZW50YCwgYHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkYCwgYHBzZV9yZWdpc3Rlcl9ub3RpZmllcmAsIGBwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcmAsIGFuZCBgcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldmAuCgpJJiMzOTt2ZSBjaGVja2VkIHdoZXRoZXIgdGhleSBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBgcGh5X3RyeV9hdHRhY2hfcHNlYCwgYHBoeV9wc2VfYXR0YWNoX29uZWAsIGBwaHlfcHNlX2RldGFjaF9vbmVgLCBhbmQgYHBoeV9wc2Vfbm90aWZpZXJfZXZlbnRgIGFyZSBzdGF0aWMgd2l0aGluIGBwaHlfZGV2aWNlLmNgLiBUaGF0IG1lYW5zIHRoZXkmIzM5O3JlIGludGVybmFsIHRvIHRoZSBQSFkgZGV2aWNlIGxvZ2ljLiBDb252ZXJzZWx5LCBgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWRgLCBgcHNlX3JlZ2lzdGVyX25vdGlmaWVyYCwgYHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyYCwgYW5kIGBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2YCAqYXJlKiBleHBvcnRlZC4KCkkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhhdCBJJiMzOTt2ZSBnb3R0ZW4gZXZlcnl0aGluZy4gQWZ0ZXIgYSBxdWljayBzY2FuIG9mIHRoZSBwYXRjaCBkaWZmLCBJIGNhbiBjb25maXJtIHRoZXNlIGFyZSB0aGUgY3JpdGljYWwgc3ltYm9scy4gSSYjMzk7bSBhZGRpbmcgdGhlc2UgZnVuY3Rpb25zIHRvIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LiBUaGUgY2hhbmdlIHRvIGBwaHlfZGV2aWNlX3JlZ2lzdGVyYCBpdHNlbGYgaXMgbm90ZXdvcnRoeSwgYnV0IGl0IGlzIG9mdGVuIGNhbGxlZCwgc28gSSBjYW4gaW5jbHVkZSBpdCwgYnV0IHRoZSBuZXcgbG9naWMgaXMgbW9yZSBpbXBvcnRhbnQuIEl0IGlzIHdvcnRoIG5vdGluZyBpdCBpcyBhIGhvdCBwYXRoIG9uIGluaXRpYWxpemF0aW9uLgoKSGVyZSYjMzk7cyBteSBsaW5lIG9mIHJlYXNvbmluZzogVGhpcyBwYXRjaCBtb2RpZmllcyBob3cgUEhZIGRldmljZXMgcmVnaXN0ZXIgYW5kIGF0dGFjaCB0byBQU0UgY29udHJvbGxlcnMuIEl0IGlzIG1vdmluZyBhd2F5IGZyb20gdGhlIGBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHlgIG1ldGhvZCBhbmQgbm93IHJlbGllcyBvbiBhIG5vdGlmaWVyLWJhc2VkIG1lY2hhbmlzbS4gVGhlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIG1hbmFnZSBQU0UgYXR0YWNobWVudCBhbmQgZGV0YWNobWVudCwgYXMgd2VsbCBhcyBoYW5kbGluZyBub3RpZmllciBldmVudHMuIFRoaXMgaXMgY29yZSBuZXR3b3JraW5nIGxvZ2ljLCBwb3RlbnRpYWxseSByZWFjaGVkIHRocm91Z2ggdmlydHVhbCBNRElPIGJ1c2VzIChsaWtlIHRob3NlIGZvciBVU0IgbmV0d29yayBhZGFwdGVycyBvciBEU0EgbG9vcGJhY2spIGFuZCB2aXJ0dWFsIFBTRSBjb250cm9sbGVycy4gQ29uc2VxdWVudGx5LCBmdXp6aW5nIGVmZm9ydHMgc2hvdWxkIHByaW9yaXRpemUgdGhlIG5ldyBhdHRhY2htZW50IGxvZ2ljIGFuZCB0aGUgYXNzb2NpYXRlZCBub3RpZmllciBjYWxsYmFja3MuCgpTbywgdGhlIGNyaXRpY2FsIGNvbmZpZyBpcyBgUFNFX0NPTlRST0xMRVJgLiBJJiMzOTt2ZSBkZXRlcm1pbmVkIHRoYXQgYFBTRV9DT05UUk9MTEVSYCBpcyBhIG1lbnVjb25maWcgb3B0aW9uLgoKVG8gc3VtIHVwOgoKQ29uZmlnczoKYFBTRV9DT05UUk9MTEVSYAoKRm9jdXNTeW1ib2xzOgpgcGh5X3RyeV9hdHRhY2hfcHNlYApgcGh5X3BzZV9hdHRhY2hfb25lYApgcGh5X3BzZV9kZXRhY2hfb25lYApgcGh5X3BzZV9ub3RpZmllcl9ldmVudGAKYHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkYApgcHNlX3JlZ2lzdGVyX25vdGlmaWVyYApgcHNlX3VucmVnaXN0ZXJfbm90aWZpZXJgCmBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2YAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFNFX0NPTlRST0xMRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wc2UtcGQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BzZS1wZC9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC9wc2UtcGQvS2NvbmZpZzo2Om1lbnVjb25maWcgUFNFX0NPTlRST0xMRVJcbmRyaXZlcnMvbmV0L3BzZS1wZC9LY29uZmlnLTctXHRib29sIFwmIzM0O0V0aGVybmV0IFBvd2VyIFNvdXJjaW5nIEVxdWlwbWVudCBTdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDExOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTA4CgkJCQkJCQlvdXRwdXQ6IDIwMAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgU2ltcGxlc3QgRGF0YSBQb2ludCoqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGUgbWF0dGVyIHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCBhIGJvb2xlYW4uIFRoYXQmIzM5O3MgaXQuIFNpbXBsZSB0cnV0aCB2YWx1ZTsgYSBiaW5hcnkgc3RhdGUuIE5vIGZhbmN5IHN0cnVjdHVyZXMsIG5vIGNvbXBsZXggY2FsY3VsYXRpb25zLi4uIGp1c3QgYSBgYm9vbGAuIEkgaW1tZWRpYXRlbHkgYmVnaW4gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGhhbmRsZSB0aGlzIHBpZWNlIG9mIGRhdGEuCgpHaXZlbiBpdHMgc2ltcGxpY2l0eSwgbGV0JiMzOTtzIGVzdGFibGlzaCBhIGNsZWFyIGFuZCBjb25jaXNlIG5hbWUgZm9yIHRoZSBwcm9jZXNzIG9mIHNldHRpbmcgdGhlIHZhcmlhYmxlLCB0aGUgdmFsdWUgb2YgdGhlIGJvb2xlYW4uIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgaG93IEkmIzM5O20gaGFuZGxpbmcgdGhlIHByb2Nlc3MsIGlmIEkmIzM5O20gcmV0dXJuaW5nIGFueXRoaW5nIGFuZCBhbGwgb3RoZXIgdmFyaWFibGVzIHRoYXQgYXJlIGJlaW5nIGFmZmVjdGVkLiBUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8gYWRvcHQgdGhlIG5hbWUgYHNldC1yZXN1bHRzYC4gSXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLCByZWZsZWN0cyB0aGUgYWN0aW9uIGJlaW5nIHBlcmZvcm1lZCwgYW5kIGhvcGVmdWxseSwga2VlcHMgYW55IHN1YnNlcXVlbnQgaW50ZXJhY3Rpb25zIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBib29sZWFuIGNsZWFyIGFuZCBjb25jaXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFNFX0NPTlRST0xMRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfdHJ5X2F0dGFjaF9wc2UmIzM0OywKICAgICYjMzQ7cGh5X3BzZV9hdHRhY2hfb25lJiMzNDssCiAgICAmIzM0O3BoeV9wc2VfZGV0YWNoX29uZSYjMzQ7LAogICAgJiMzNDtwaHlfcHNlX25vdGlmaWVyX2V2ZW50JiMzNDssCiAgICAmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkJiMzNDssCiAgICAmIzM0O3BzZV9yZWdpc3Rlcl9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtwc2VfdW5yZWdpc3Rlcl9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBQSFkgZGV2aWNlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHRvIGF0dGFjaCBQb3dlciBTb3VyY2luZyBFcXVpcG1lbnQgKFBTRSkgY29udHJvbGxlcnMgdXNpbmcgYSBub3RpZmllci1iYXNlZCBtZWNoYW5pc20uIEl0IGludHJvZHVjZXMgbmV3IGZ1bmN0aW9ucyB0byBoYW5kbGUgUFNFIGF0dGFjaG1lbnQvZGV0YWNobWVudCBhbmQgbm90aWZpZXIgZXZlbnRzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgTURJTyBidXNlcyAoZS5nLiwgVVNCIG5ldHdvcmsgYWRhcHRlcnMsIERTQSBsb29wYmFjaykgYW5kIHZpcnR1YWwgUFNFIGNvbnRyb2xsZXJzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV3IGF0dGFjaG1lbnQgbG9naWMgYW5kIG5vdGlmaWVyIGNhbGxiYWNrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFNFX0NPTlRST0xMRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfdHJ5X2F0dGFjaF9wc2UmIzM0OywKICAgICYjMzQ7cGh5X3BzZV9hdHRhY2hfb25lJiMzNDssCiAgICAmIzM0O3BoeV9wc2VfZGV0YWNoX29uZSYjMzQ7LAogICAgJiMzNDtwaHlfcHNlX25vdGlmaWVyX2V2ZW50JiMzNDssCiAgICAmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkJiMzNDssCiAgICAmIzM0O3BzZV9yZWdpc3Rlcl9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtwc2VfdW5yZWdpc3Rlcl9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBQSFkgZGV2aWNlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHRvIGF0dGFjaCBQb3dlciBTb3VyY2luZyBFcXVpcG1lbnQgKFBTRSkgY29udHJvbGxlcnMgdXNpbmcgYSBub3RpZmllci1iYXNlZCBtZWNoYW5pc20uIEl0IGludHJvZHVjZXMgbmV3IGZ1bmN0aW9ucyB0byBoYW5kbGUgUFNFIGF0dGFjaG1lbnQvZGV0YWNobWVudCBhbmQgbm90aWZpZXIgZXZlbnRzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgTURJTyBidXNlcyAoZS5nLiwgVVNCIG5ldHdvcmsgYWRhcHRlcnMsIERTQSBsb29wYmFjaykgYW5kIHZpcnR1YWwgUFNFIGNvbnRyb2xsZXJzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV3IGF0dGFjaG1lbnQgbG9naWMgYW5kIG5vdGlmaWVyIGNhbGxiYWNrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDExOjI1OjM0Ljg0NjQ4NTM5NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDA5MjE5ODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBTRV9DT05UUk9MTEVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X3RyeV9hdHRhY2hfcHNlXCIsXG4gICAgXCJwaHlfcHNlX2F0dGFjaF9vbmVcIixcbiAgICBcInBoeV9wc2VfZGV0YWNoX29uZVwiLFxuICAgIFwicGh5X3BzZV9ub3RpZmllcl9ldmVudFwiLFxuICAgIFwicGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWRcIixcbiAgICBcInBzZV9yZWdpc3Rlcl9ub3RpZmllclwiLFxuICAgIFwicHNlX3VucmVnaXN0ZXJfbm90aWZpZXJcIixcbiAgICBcInBzZV9jb250cm9sX21hdGNoZXNfcGNkZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUEhZIGRldmljZSByZWdpc3RyYXRpb24gcHJvY2VzcyB0byBhdHRhY2ggUG93ZXIgU291cmNpbmcgRXF1aXBtZW50IChQU0UpIGNvbnRyb2xsZXJzIHVzaW5nIGEgbm90aWZpZXItYmFzZWQgbWVjaGFuaXNtLiBJdCBpbnRyb2R1Y2VzIG5ldyBmdW5jdGlvbnMgdG8gaGFuZGxlIFBTRSBhdHRhY2htZW50L2RldGFjaG1lbnQgYW5kIG5vdGlmaWVyIGV2ZW50cy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB2aXJ0dWFsIE1ESU8gYnVzZXMgKGUuZy4sIFVTQiBuZXR3b3JrIGFkYXB0ZXJzLCBEU0EgbG9vcGJhY2spIGFuZCB2aXJ0dWFsIFBTRSBjb250cm9sbGVycy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyBhdHRhY2htZW50IGxvZ2ljIGFuZCBub3RpZmllciBjYWxsYmFja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDExOjI1OjM0Ljg0NjQ5MjUwNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEyMDQ5OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzhiMWVhOTBiMGMyNGEzZjE0N2ZiYWYxMjVjMjNiZWVkMDkyNmFlNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAxMToyNTozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMgYi9kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmNcXG5pbmRleCBiYTcwOTE1MTgyNjU0MC4uN2JkOTc5YjU5ZjQ5NjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jXFxuKysrIGIvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jXFxuQEAgLTExLDMzICsxMSwxMSBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZndub2RlX21kaW8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4tI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BzZS1wZC9wc2UuaFxcdTAwM2VcXG4gXFxuIE1PRFVMRV9BVVRIT1IoXFxcIkNhbHZpbiBKb2huc29uIFxcdTAwM2NjYWx2aW4uam9obnNvbkBvc3MubnhwLmNvbVxcdTAwM2VcXFwiKTtcXG4gTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbiBNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkZXTk9ERSBNRElPIGJ1cyAoRXRoZXJuZXQgUEhZKSBhY2Nlc3NvcnNcXFwiKTtcXG4gXFxuLXN0YXRpYyBzdHJ1Y3QgcHNlX2NvbnRyb2wgKlxcbi1md25vZGVfZmluZF9wc2VfY29udHJvbChzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi1cXHRcXHRcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi17XFxuLVxcdHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYztcXG4tXFx0c3RydWN0IGRldmljZV9ub2RlICpucDtcXG4tXFxuLVxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfUFNFX0NPTlRST0xMRVIpKVxcbi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tXFxuLVxcdG5wID0gdG9fb2Zfbm9kZShmd25vZGUpO1xcbi1cXHRpZiAoIW5wKVxcbi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tXFxuLVxcdHBzZWMgPSBvZl9wc2VfY29udHJvbF9nZXQobnAsIHBoeWRldik7XFxuLVxcdGlmIChQVFJfRVJSKHBzZWMpID09IC1FTk9FTlQpXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbi1cXG4tXFx0cmV0dXJuIHBzZWM7XFxuLX1cXG4tXFxuIHN0YXRpYyBzdHJ1Y3QgbWlpX3RpbWVzdGFtcGVyICpcXG4gZndub2RlX2ZpbmRfbWlpX3RpbWVzdGFtcGVyKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpXFxuIHtcXG5AQCAtMTE4LDcgKzk2LDYgQEAgaW50IGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqY2hpbGQsIHUzMiBhZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cyA9IE5VTEw7XFxuLVxcdHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyA9IE5VTEw7XFxuIFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHk7XFxuIFxcdGJvb2wgaXNfYzQ1O1xcbiBcXHR1MzIgcGh5X2lkO1xcbkBAIC0xNTksMTQgKzEzNiw2IEBAIGludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcXG4gXFx0XFx0XFx0Z290byBjbGVhbl9waHk7XFxuIFxcdH1cXG4gXFxuLVxcdHBzZWMgPSBmd25vZGVfZmluZF9wc2VfY29udHJvbChjaGlsZCwgcGh5KTtcXG4tXFx0aWYgKElTX0VSUihwc2VjKSkge1xcbi1cXHRcXHRyYyA9IFBUUl9FUlIocHNlYyk7XFxuLVxcdFxcdGdvdG8gdW5yZWdpc3Rlcl9waHk7XFxuLVxcdH1cXG4tXFxuLVxcdHBoeS1cXHUwMDNlcHNlYyA9IHBzZWM7XFxuLVxcbiBcXHQvKiBwaHktXFx1MDAzZW1paV90cyBtYXkgYWxyZWFkeSBiZSBkZWZpbmVkIGJ5IHRoZSBQSFkgZHJpdmVyLiBBXFxuIFxcdCAqIG1paV90aW1lc3RhbXBlciBwcm9iZWQgdmlhIHRoZSBkZXZpY2UgdHJlZSB3aWxsIHN0aWxsIGhhdmVcXG4gXFx0ICogcHJlY2VkZW5jZS5cXG5AQCAtMTc2LDkgKzE0NSw2IEBAIGludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcXG4gXFxuIFxcdHJldHVybiAwO1xcbiBcXG4tdW5yZWdpc3Rlcl9waHk6XFxuLVxcdGlmIChpc19hY3BpX25vZGUoY2hpbGQpIHx8IGlzX29mX25vZGUoY2hpbGQpKVxcbi1cXHRcXHRwaHlfZGV2aWNlX3JlbW92ZShwaHkpO1xcbiBjbGVhbl9waHk6XFxuIFxcdHBoeV9kZXZpY2VfZnJlZShwaHkpO1xcbiBjbGVhbl9taWlfdHM6XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuaW5kZXggMDYxNTIyODQ1OWVmNDIuLmY1ZmViZmY0YjAwYjhlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuQEAgLTIyMyw4ICsyMjMsMTkgQEAgc3RhdGljIHZvaWQgcGh5X21kaW9fZGV2aWNlX2ZyZWUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbiBcXG4gc3RhdGljIHZvaWQgcGh5X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4ge1xcbitcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdG9fcGh5X2RldmljZShkZXYpO1xcbitcXG4rXFx0LyogYnVzX2Zvcl9lYWNoX2RldigpIGhvbGRzIGdldF9kZXZpY2UoKSBhY3Jvc3MgZWFjaCBpdGVyYXRpb25cXG4rXFx0ICogc3RlcCwgZGVmZXJyaW5nIHRoaXMgcmVsZWFzZSBjYWxsYmFjayB1bnRpbCBhbnkgaW4tZmxpZ2h0IFBTRVxcbitcXHQgKiBub3RpZmllciB3YWxrIGhhcyBhZHZhbmNlZCBwYXN0IHRoaXMgcGh5LiBwc2VfY29udHJvbF9wdXQoKVxcbitcXHQgKiB0YWtlcyBwc2VfbGlzdF9tdXRleCwgc28gdGhpcyBwYXRoIG11c3QgcnVuIGluIHNsZWVwYWJsZVxcbitcXHQgKiBjb250ZXh0LlxcbitcXHQgKi9cXG4rXFx0bWlnaHRfc2xlZXAoKTtcXG4rXFx0cHNlX2NvbnRyb2xfcHV0KHBoeWRldi1cXHUwMDNlcHNlYyk7XFxuK1xcbiBcXHRmd25vZGVfaGFuZGxlX3B1dChkZXYtXFx1MDAzZWZ3bm9kZSk7XFxuLVxcdGtmcmVlKHRvX3BoeV9kZXZpY2UoZGV2KSk7XFxuK1xcdGtmcmVlKHBoeWRldik7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHBoeV9tZGlvX2RldmljZV9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbkBAIC0xMTAyLDExICsxMTEzLDEwMyBAQCBzdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxcbiB9XFxuIEVYUE9SVF9TWU1CT0woZ2V0X3BoeV9kZXZpY2UpO1xcbiBcXG4tLyoqXFxuLSAqIHBoeV9kZXZpY2VfcmVnaXN0ZXIgLSBSZWdpc3RlciB0aGUgcGh5IGRldmljZSBvbiB0aGUgTURJTyBidXNcXG4tICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzXFxuKy8qIEJlc3QtZWZmb3J0IGF0dGFjaCBvZiBwaHlkZXYtXFx1MDAzZXBzZWMgZnJvbSBhIERUIGBwc2VzID0gXFx1MDAzY1xcdTAwMjYuLi5cXHUwMDNlYCBwaGFuZGxlLlxcbisgKiBDYWxsZXIgbXVzdCBob2xkIHJ0bmwuIEEgbWlzc2luZyBwaGFuZGxlICgtRU5PRU5UKSBvciBhIG5vdC15ZXQtcmVnaXN0ZXJlZFxcbisgKiBjb250cm9sbGVyICgtRVBST0JFX0RFRkVSKSBpcyBzaWxlbnQ7IHRoZSBub3RpZmllciByZXRyaWVzIHRoZSBsYXR0ZXIgYXRcXG4rICogUFNFX1JFR0lTVEVSRUQgdGltZS4gQW55IG90aGVyIGVycm9yIG1lYW5zIGEgYnJva2VuIGJpbmRpbmcgYW5kIGlzIHdhcm5lZFxcbisgKiBhYm91dCwgYnV0IGxlZnQgbm9uLWZhdGFsIHNvIHRoZSBwaHkgc3RpbGwgcmVnaXN0ZXJzLlxcbiAgKi9cXG4taW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4rc3RhdGljIHZvaWQgcGh5X3RyeV9hdHRhY2hfcHNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0c3RydWN0IHBzZV9jb250cm9sICpwc2VjO1xcbitcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xcbitcXG4rXFx0QVNTRVJUX1JUTkwoKTtcXG4rXFxuK1xcdG5wID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5vZl9ub2RlO1xcbitcXHRpZiAoIW5wKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRpZiAocGh5ZGV2LVxcdTAwM2Vwc2VjKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRwc2VjID0gb2ZfcHNlX2NvbnRyb2xfZ2V0KG5wLCBwaHlkZXYpO1xcbitcXHRpZiAoSVNfRVJSKHBzZWMpKSB7XFxuK1xcdFxcdGlmIChQVFJfRVJSKHBzZWMpICE9IC1FUFJPQkVfREVGRVIgXFx1MDAyNlxcdTAwMjYgUFRSX0VSUihwc2VjKSAhPSAtRU5PRU5UKVxcbitcXHRcXHRcXHRwaHlkZXZfd2FybihwaHlkZXYsIFxcXCJmYWlsZWQgdG8gZ2V0IFBTRSBjb250cm9sOiAlcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgICBwc2VjKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRwaHlkZXYtXFx1MDAzZXBzZWMgPSBwc2VjO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHBoeV9wc2VfYXR0YWNoX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEgX19tYXliZV91bnVzZWQpXFxuK3tcXG4rXFx0QVNTRVJUX1JUTkwoKTtcXG4rXFxuK1xcdGlmIChkZXYtXFx1MDAzZXR5cGUgIT0gXFx1MDAyNm1kaW9fYnVzX3BoeV90eXBlKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHBoeV90cnlfYXR0YWNoX3BzZSh0b19waHlfZGV2aWNlKGRldikpO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGludCBwaHlfcHNlX2RldGFjaF9vbmUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2ID0gZGF0YTtcXG4rXFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcXG4rXFx0c3RydWN0IHBzZV9jb250cm9sICpwc2VjO1xcbitcXG4rXFx0QVNTRVJUX1JUTkwoKTtcXG4rXFxuK1xcdGlmIChkZXYtXFx1MDAzZXR5cGUgIT0gXFx1MDAyNm1kaW9fYnVzX3BoeV90eXBlKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTtcXG4rXFx0cHNlYyA9IHBoeWRldi1cXHUwMDNlcHNlYztcXG4rXFx0aWYgKCFwc2VjIHx8ICFwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2KHBzZWMsIHBjZGV2KSlcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRwaHlkZXYtXFx1MDAzZXBzZWMgPSBOVUxMO1xcbitcXHRwc2VfY29udHJvbF9wdXQocHNlYyk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHBoeV9wc2Vfbm90aWZpZXJfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4rXFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN3aXRjaCAoZXZlbnQpIHtcXG4rXFx0Y2FzZSBQU0VfUkVHSVNURVJFRDpcXG4rXFx0XFx0cnRubF9sb2NrKCk7XFxuK1xcdFxcdGJ1c19mb3JfZWFjaF9kZXYoXFx1MDAyNm1kaW9fYnVzX3R5cGUsIE5VTEwsIE5VTEwsXFxuK1xcdFxcdFxcdFxcdCBwaHlfcHNlX2F0dGFjaF9vbmUpO1xcbitcXHRcXHRydG5sX3VubG9jaygpO1xcbitcXHRcXHRyZXR1cm4gTk9USUZZX09LO1xcbitcXHRjYXNlIFBTRV9VTlJFR0lTVEVSRUQ6XFxuK1xcdFxcdHJ0bmxfbG9jaygpO1xcbitcXHRcXHRidXNfZm9yX2VhY2hfZGV2KFxcdTAwMjZtZGlvX2J1c190eXBlLCBOVUxMLCBkYXRhLFxcbitcXHRcXHRcXHRcXHQgcGh5X3BzZV9kZXRhY2hfb25lKTtcXG4rXFx0XFx0cnRubF91bmxvY2soKTtcXG4rXFx0XFx0cmV0dXJuIE5PVElGWV9PSztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIE5PVElGWV9ET05FO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgcGh5X3BzZV9ub3RpZmllciBfX3JlYWRfbW9zdGx5ID0ge1xcbitcXHQubm90aWZpZXJfY2FsbCA9IHBoeV9wc2Vfbm90aWZpZXJfZXZlbnQsXFxuK307XFxuK1xcbisvKiBDb3JlIHJlZ2lzdHJhdGlvbjogYWRkIHRoZSBwaHkgdG8gdGhlIE1ESU8gYnVzLiBEb2VzIG5vdCB0b3VjaCBydG5sIG9yXFxuKyAqIFBTRS4gcGh5ZGV2LVxcdTAwM2Vwc2VjIGlzIGF0dGFjaGVkIGJ5IHRoZSBjYWxsZXJzIGJlbG93LCBhZnRlciBkZXZpY2VfYWRkKClcXG4rICogaGFzIG1hZGUgdGhlIHBoeSB2aXNpYmxlIG9uIG1kaW9fYnVzX3R5cGUsIHNvIHRoYXQgYSBjb25jdXJyZW50IFBTRVxcbisgKiBub3RpZmllciB3YWxrIGFuZCB0aGUgYXR0YWNoIGNhbiBuZXZlciBsZWF2ZSB0aGUgcGh5IHVuYXR0YWNoZWQuIEtlZXBpbmdcXG4rICogZGV2aWNlX2FkZCgpIG91dCBvZiBydG5sIGFsc28gYXZvaWRzIGRlYWRsb2NraW5nIHdoZW4gYmluZGluZyBhIHBoeSB0aGF0XFxuKyAqIGl0c2VsZiBwcm92aWRlcyBhbiBTRlAgY2FnZSAocGh5X3Byb2JlKCkgLVxcdTAwM2UgcGh5X3NmcF9wcm9iZSgpIC1cXHUwMDNlXFxuKyAqIHNmcF9idXNfYWRkX3Vwc3RyZWFtKCkgdGFrZXMgcnRubCkuXFxuKyAqL1xcbitzdGF0aWMgaW50IF9fcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdGludCBlcnI7XFxuIFxcbkBAIC0xMTM1LDEwICsxMjM4LDU0IEBAIGludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuICBvdXQ6XFxuIFxcdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXFxuIFxcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcXG4tXFxuIFxcdG1kaW9idXNfdW5yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpbyk7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4rXFxuKy8qKlxcbisgKiBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZCAtIFJlZ2lzdGVyIHRoZSBwaHkgZGV2aWNlIG9uIHRoZSBNRElPIGJ1c1xcbisgKiBAcGh5ZGV2OiBwaHlfZGV2aWNlIHN0cnVjdHVyZSB0byBiZSBhZGRlZCB0byB0aGUgTURJTyBidXNcXG4rICpcXG4rICogU2FtZSBhcyBwaHlfZGV2aWNlX3JlZ2lzdGVyKCkgYnV0IGNhbGxlciBtdXN0IGFscmVhZHkgaG9sZCBydG5sX2xvY2soKS5cXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cXG4rICovXFxuK2ludCBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbit7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRBU1NFUlRfUlROTCgpO1xcbitcXG4rXFx0ZXJyID0gX19waHlfZGV2aWNlX3JlZ2lzdGVyKHBoeWRldik7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRwaHlfdHJ5X2F0dGFjaF9wc2UocGh5ZGV2KTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK0VYUE9SVF9TWU1CT0wocGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWQpO1xcbitcXG4rLyoqXFxuKyAqIHBoeV9kZXZpY2VfcmVnaXN0ZXIgLSBSZWdpc3RlciB0aGUgcGh5IGRldmljZSBvbiB0aGUgTURJTyBidXNcXG4rICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzXFxuKyAqXFxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXFxuKyAqL1xcbitpbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbit7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRlcnIgPSBfX3BoeV9kZXZpY2VfcmVnaXN0ZXIocGh5ZGV2KTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFxuK1xcdHJ0bmxfbG9jaygpO1xcbitcXHRwaHlfdHJ5X2F0dGFjaF9wc2UocGh5ZGV2KTtcXG4rXFx0cnRubF91bmxvY2soKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuIEVYUE9SVF9TWU1CT0wocGh5X2RldmljZV9yZWdpc3Rlcik7XFxuIFxcbiAvKipcXG5AQCAtMTE1Miw4ICsxMjk5LDYgQEAgRVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyKTtcXG4gdm9pZCBwaHlfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdHVucmVnaXN0ZXJfbWlpX3RpbWVzdGFtcGVyKHBoeWRldi1cXHUwMDNlbWlpX3RzKTtcXG4tXFx0cHNlX2NvbnRyb2xfcHV0KHBoeWRldi1cXHUwMDNlcHNlYyk7XFxuLVxcbiBcXHRkZXZpY2VfZGVsKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2KTtcXG4gXFxuIFxcdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXFxuQEAgLTM5ODEsOCArNDEyNiwxNCBAQCBzdGF0aWMgaW50IF9faW5pdCBwaHlfaW5pdCh2b2lkKVxcbiBcXHRpZiAocmMpXFxuIFxcdFxcdGdvdG8gZXJyX2M0NTtcXG4gXFxuK1xcdHJjID0gcHNlX3JlZ2lzdGVyX25vdGlmaWVyKFxcdTAwMjZwaHlfcHNlX25vdGlmaWVyKTtcXG4rXFx0aWYgKHJjKVxcbitcXHRcXHRnb3RvIGVycl9nZW5waHk7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuK2Vycl9nZW5waHk6XFxuK1xcdHBoeV9kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2Z2VucGh5X2RyaXZlcik7XFxuIGVycl9jNDU6XFxuIFxcdHBoeV9kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2Z2VucGh5X2M0NV9kcml2ZXIpO1xcbiBlcnJfZXRodG9vbF9waHlfb3BzOlxcbkBAIC0zOTk5LDYgKzQxNTAsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBwaHlfaW5pdCh2b2lkKVxcbiBcXG4gc3RhdGljIHZvaWQgX19leGl0IHBoeV9leGl0KHZvaWQpXFxuIHtcXG4rXFx0cHNlX3VucmVnaXN0ZXJfbm90aWZpZXIoXFx1MDAyNnBoeV9wc2Vfbm90aWZpZXIpO1xcbiBcXHRwaHlfZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmdlbnBoeV9jNDVfZHJpdmVyKTtcXG4gXFx0cGh5X2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZnZW5waHlfZHJpdmVyKTtcXG4gXFx0cnRubF9sb2NrKCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9zZnAuYyBiL2RyaXZlcnMvbmV0L3BoeS9zZnAuY1xcbmluZGV4IDAzYmZkODY0MGRiOTYzLi4xODg2OGJkZDY0ODUyYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvc2ZwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvc2ZwLmNcXG5AQCAtMjA4Myw3ICsyMDgzLDcgQEAgc3RhdGljIGludCBzZnBfc21fcHJvYmVfcGh5KHN0cnVjdCBzZnAgKnNmcCwgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxcbiBcXHQvKiBNYXJrIHRoaXMgUEhZIGFzIGJlaW5nIG9uIGEgU0ZQIG1vZHVsZSAqL1xcbiBcXHRwaHktXFx1MDAzZWlzX29uX3NmcF9tb2R1bGUgPSB0cnVlO1xcbiBcXG4tXFx0ZXJyID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpO1xcbitcXHRlcnIgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZChwaHkpO1xcbiBcXHRpZiAoZXJyKSB7XFxuIFxcdFxcdHBoeV9kZXZpY2VfZnJlZShwaHkpO1xcbiBcXHRcXHRkZXZfZXJyKHNmcC1cXHUwMDNlZGV2LCBcXFwicGh5X2RldmljZV9yZWdpc3RlciBmYWlsZWQ6ICVwZVxcXFxuXFxcIixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMgYi9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY1xcbmluZGV4IDY5ZGJkYmRlOWQ3MWE3Li42MTE1NDBkZjQzYmIxYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jXFxuQEAgLTgsNiArOCw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aHRvb2wuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aHRvb2xfbmV0bGluay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbm90aWZpZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BzZS1wZC9wc2UuaFxcdTAwM2VcXG5AQCAtMjMsNiArMjQsMzkgQEAgc3RhdGljIExJU1RfSEVBRChwc2VfY29udHJvbGxlcl9saXN0KTtcXG4gc3RhdGljIERFRklORV9YQVJSQVlfQUxMT0MocHNlX3B3X2RfbWFwKTtcXG4gc3RhdGljIERFRklORV9NVVRFWChwc2VfcHdfZF9tdXRleCk7XFxuIFxcbitzdGF0aWMgQkxPQ0tJTkdfTk9USUZJRVJfSEVBRChwc2VfY29udHJvbGxlcl9ub3RpZmllcik7XFxuK1xcbisvKipcXG4rICogcHNlX3JlZ2lzdGVyX25vdGlmaWVyIC0gcmVnaXN0ZXIgYSBjYWxsYmFjayBmb3IgUFNFIGNvbnRyb2xsZXIgZXZlbnRzXFxuKyAqIEBuYjogbm90aWZpZXIgYmxvY2sgdG8gcmVnaXN0ZXJcXG4rICpcXG4rICogU2VlIGVudW0gcHNlX2NvbnRyb2xsZXJfZXZlbnQgZm9yIGV2ZW50cyBmaXJlZCBhbmQgdGhlaXIgc3Vic2NyaWJlclxcbisgKiBjb250cmFjdC4gQ2FsbGJhY2tzIHJ1biBpbiBwcm9jZXNzIGNvbnRleHQ7IHRoZXkgbWF5IHNsZWVwLCB0YWtlXFxuKyAqIHJ0bmwsIGFuZCBjYWxsIG9mX3BzZV9jb250cm9sX2dldCgpLiBUaGUgY2hhaW4gZmlyZXMgc3luY2hyb25vdXNseSxcXG4rICogc28gYSBQU0UgY29udHJvbGxlciBkcml2ZXIncyBwcm9iZS91bmJpbmQgcGF0aCBtdXN0IG5vdCBob2xkIGFueVxcbisgKiBzdWNoIGxvY2sgd2hlbiBjYWxsaW5nIHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKCkgb3JcXG4rICogcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcigpLlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXFxuKyAqL1xcbitpbnQgcHNlX3JlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpXFxuK3tcXG4rXFx0cmV0dXJuIGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKFxcdTAwMjZwc2VfY29udHJvbGxlcl9ub3RpZmllciwgbmIpO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKHBzZV9yZWdpc3Rlcl9ub3RpZmllcik7XFxuK1xcbisvKipcXG4rICogcHNlX3VucmVnaXN0ZXJfbm90aWZpZXIgLSB1bnJlZ2lzdGVyIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIGNhbGxiYWNrXFxuKyAqIEBuYjogbm90aWZpZXIgYmxvY2sgcHJldmlvdXNseSBwYXNzZWQgdG8gcHNlX3JlZ2lzdGVyX25vdGlmaWVyKClcXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxcbisgKi9cXG4raW50IHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpXFxuK3tcXG4rXFx0cmV0dXJuIGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoXFx1MDAyNnBzZV9jb250cm9sbGVyX25vdGlmaWVyLCBuYik7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwocHNlX3VucmVnaXN0ZXJfbm90aWZpZXIpO1xcbitcXG4gLyoqXFxuICAqIHN0cnVjdCBwc2VfY29udHJvbCAtIGEgUFNFIGNvbnRyb2xcXG4gICogQHBjZGV2OiBhIHBvaW50ZXIgdG8gdGhlIFBTRSBjb250cm9sbGVyIGRldmljZVxcbkBAIC0xMTA0LDYgKzExMzgsOSBAQCBpbnQgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpXFxuIFxcdGxpc3RfYWRkKFxcdTAwMjZwY2Rldi1cXHUwMDNlbGlzdCwgXFx1MDAyNnBzZV9jb250cm9sbGVyX2xpc3QpO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNnBzZV9saXN0X211dGV4KTtcXG4gXFxuK1xcdGJsb2NraW5nX25vdGlmaWVyX2NhbGxfY2hhaW4oXFx1MDAyNnBzZV9jb250cm9sbGVyX25vdGlmaWVyLFxcbitcXHRcXHRcXHRcXHQgICAgIFBTRV9SRUdJU1RFUkVELCBwY2Rldik7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XFxuQEAgLTExMTQsNiArMTE1MSw5IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKTtcXG4gICovXFxuIHZvaWQgcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcihzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldilcXG4ge1xcbitcXHRibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKFxcdTAwMjZwc2VfY29udHJvbGxlcl9ub3RpZmllcixcXG4rXFx0XFx0XFx0XFx0ICAgICBQU0VfVU5SRUdJU1RFUkVELCBwY2Rldik7XFxuK1xcbiBcXHRwc2VfZmx1c2hfcHdfZHMocGNkZXYpO1xcbiBcXHRwc2VfcmVsZWFzZV9waXMocGNkZXYpO1xcbiBcXHRpZiAocGNkZXYtXFx1MDAzZWlycSlcXG5AQCAtMTk4MSwzICsyMDIxLDE3IEBAIGJvb2wgcHNlX2hhc19jMzMoc3RydWN0IHBzZV9jb250cm9sICpwc2VjKVxcbiBcXHRyZXR1cm4gcHNlYy1cXHUwMDNlcGNkZXYtXFx1MDAzZXR5cGVzIFxcdTAwMjYgRVRIVE9PTF9QU0VfQzMzO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9oYXNfYzMzKTtcXG4rXFxuKy8qKlxcbisgKiBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2IC0gVGVzdCB3aGV0aGVyIGEgcHNlX2NvbnRyb2wgdGFyZ2V0cyBhIGNvbnRyb2xsZXJcXG4rICogQHBzZWM6IHBzZV9jb250cm9sIG9idGFpbmVkIGZyb20gb2ZfcHNlX2NvbnRyb2xfZ2V0KClcXG4rICogQHBjZGV2OiBQU0UgY29udHJvbGxlciB0byBjb21wYXJlIGFnYWluc3RcXG4rICpcXG4rICogUmV0dXJuOiAldHJ1ZSBpZiBAcHNlYyB3YXMgb2J0YWluZWQgZnJvbSBAcGNkZXYsICVmYWxzZSBvdGhlcndpc2UuXFxuKyAqL1xcbitib29sIHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYoc3RydWN0IHBzZV9jb250cm9sICpwc2VjLFxcbitcXHRcXHRcXHQgICAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpXFxuK3tcXG4rXFx0cmV0dXJuIHBzZWMtXFx1MDAzZXBjZGV2ID09IHBjZGV2O1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaFxcbmluZGV4IDE5OWE3YWFhMzQxYmZkLi44NjViOWJhZGRiODVmYSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9waHkuaFxcbkBAIC0yMTU4LDYgKzIxNTgsOCBAQCBzdHJ1Y3QgcGh5X2RldmljZSAqZndub2RlX3BoeV9maW5kX2RldmljZShzdHJ1Y3QgZndub2RlX2hhbmRsZSAqcGh5X2Z3bm9kZSk7XFxuIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGVfZ2V0X3BoeV9ub2RlKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpO1xcbiBzdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KTtcXG4gaW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSk7XFxuKy8qIENhbGxlciBtdXN0IGhvbGQgcnRubF9sb2NrKCk7IHNlZSBwaHlfZGV2aWNlX3JlZ2lzdGVyKCkgZm9yIHRoZSBwdWJsaWMgZm9ybS4gKi9cXG4raW50IHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpO1xcbiB2b2lkIHBoeV9kZXZpY2VfZnJlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4gdm9pZCBwaHlfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4gaW50IHBoeV9nZXRfYzQ1X2lkcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wc2UtcGQvcHNlLmggYi9pbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaFxcbmluZGV4IDRlNTY5NmNmYWRlN2NjLi5kNDMxMGNhNzFhM2UwOCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcHNlLXBkL3BzZS5oXFxuQEAgLTIxLDYgKzIxLDcgQEAgc3RydWN0IG5ldF9kZXZpY2U7XFxuIHN0cnVjdCBwaHlfZGV2aWNlO1xcbiBzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2O1xcbiBzdHJ1Y3QgbmV0bGlua19leHRfYWNrO1xcbitzdHJ1Y3Qgbm90aWZpZXJfYmxvY2s7XFxuIFxcbiAvKiBDMzMgUFNFIGV4dGVuZGVkIHN0YXRlIGFuZCBzdWJzdGF0ZS4gKi9cXG4gc3RydWN0IGV0aHRvb2xfYzMzX3BzZV9leHRfc3RhdGVfaW5mbyB7XFxuQEAgLTMzNyw2ICszMzgsMjQgQEAgZW51bSBwc2VfYnVkZ2V0X2V2YWxfc3RyYXRlZ2llcyB7XFxuIFxcdFBTRV9CVURHRVRfRVZBTF9TVFJBVF9EWU5BTUlDXFx0PSAxIFxcdTAwM2NcXHUwMDNjIDIsXFxuIH07XFxuIFxcbisvKipcXG4rICogZW51bSBwc2VfY29udHJvbGxlcl9ldmVudCAtIFBTRSBjb250cm9sbGVyIGxpZmVjeWNsZSBldmVudHNcXG4rICpcXG4rICogRXZlbnQgZGF0YSBpbiBjYWxsYmFja3MgaXMgYWx3YXlzIGEgcG9pbnRlciB0byB0aGUgc3RydWN0XFxuKyAqIHBzZV9jb250cm9sbGVyX2RldiBmaXJpbmcgdGhlIGV2ZW50LlxcbisgKlxcbisgKiBAUFNFX1JFR0lTVEVSRUQ6IGNvbnRyb2xsZXIgYWRkZWQgdG8gcHNlX2NvbnRyb2xsZXJfbGlzdCBhbmRcXG4rICpcXHRyZXNvbHZhYmxlIGJ5IG9mX3BzZV9jb250cm9sX2dldCgpLlxcbisgKiBAUFNFX1VOUkVHSVNURVJFRDogY29udHJvbGxlciBhYm91dCB0byBiZSByZW1vdmVkIGZyb21cXG4rICpcXHRwc2VfY29udHJvbGxlcl9saXN0LiBTdWJzY3JpYmVycyBob2xkaW5nIHBzZV9jb250cm9sIHJlZmVyZW5jZXNcXG4rICpcXHR0YXJnZXRpbmcgaXQgbXVzdCBkcm9wIHRoZW0gYmVmb3JlIHJldHVybmluZyBhbmQgbXVzdCBub3RcXG4rICpcXHRhY3F1aXJlIG5ldyByZWZlcmVuY2VzIGZvciBpdC5cXG4rICovXFxuK2VudW0gcHNlX2NvbnRyb2xsZXJfZXZlbnQge1xcbitcXHRQU0VfUkVHSVNURVJFRCxcXG4rXFx0UFNFX1VOUkVHSVNURVJFRCxcXG4rfTtcXG4rXFxuICNpZiBJU19FTkFCTEVEKENPTkZJR19QU0VfQ09OVFJPTExFUilcXG4gaW50IHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KTtcXG4gdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KTtcXG5AQCAtMzY2LDYgKzM4NSwxMiBAQCBpbnQgcHNlX2V0aHRvb2xfc2V0X3ByaW8oc3RydWN0IHBzZV9jb250cm9sICpwc2VjLFxcbiBib29sIHBzZV9oYXNfcG9kbChzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMpO1xcbiBib29sIHBzZV9oYXNfYzMzKHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyk7XFxuIFxcbitib29sIHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYoc3RydWN0IHBzZV9jb250cm9sICpwc2VjLFxcbitcXHRcXHRcXHQgICAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpO1xcbitcXG4raW50IHBzZV9yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTtcXG4raW50IHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpO1xcbitcXG4gI2Vsc2VcXG4gXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBzZV9jb250cm9sICpvZl9wc2VfY29udHJvbF9nZXQoc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxcbkBAIC00MTYsNiArNDQxLDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwc2VfaGFzX2MzMyhzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMpXFxuIFxcdHJldHVybiBmYWxzZTtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSBib29sIHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYoc3RydWN0IHBzZV9jb250cm9sICpwc2VjLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxcbit7XFxuK1xcdHJldHVybiBmYWxzZTtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSBpbnQgcHNlX3JlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmUgaW50IHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuICNlbmRpZlxcbiBcXG4gI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDExOjI1OjM1LjU1OTM1MjAxNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI2OTYzMzgwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFNFX0NPTlRST0xMRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlfdHJ5X2F0dGFjaF9wc2VcIixcbiAgICBcInBoeV9wc2VfYXR0YWNoX29uZVwiLFxuICAgIFwicGh5X3BzZV9kZXRhY2hfb25lXCIsXG4gICAgXCJwaHlfcHNlX25vdGlmaWVyX2V2ZW50XCIsXG4gICAgXCJwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZFwiLFxuICAgIFwicHNlX3JlZ2lzdGVyX25vdGlmaWVyXCIsXG4gICAgXCJwc2VfdW5yZWdpc3Rlcl9ub3RpZmllclwiLFxuICAgIFwicHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBQSFkgZGV2aWNlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHRvIGF0dGFjaCBQb3dlciBTb3VyY2luZyBFcXVpcG1lbnQgKFBTRSkgY29udHJvbGxlcnMgdXNpbmcgYSBub3RpZmllci1iYXNlZCBtZWNoYW5pc20uIEl0IGludHJvZHVjZXMgbmV3IGZ1bmN0aW9ucyB0byBoYW5kbGUgUFNFIGF0dGFjaG1lbnQvZGV0YWNobWVudCBhbmQgbm90aWZpZXIgZXZlbnRzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgTURJTyBidXNlcyAoZS5nLiwgVVNCIG5ldHdvcmsgYWRhcHRlcnMsIERTQSBsb29wYmFjaykgYW5kIHZpcnR1YWwgUFNFIGNvbnRyb2xsZXJzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV3IGF0dGFjaG1lbnQgbG9naWMgYW5kIG5vdGlmaWVyIGNhbGxiYWNrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjOGIxZWE5MGIwYzI0YTNmMTQ3ZmJhZjEyNWMyM2JlZWQwOTI2YWU2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTE6MjU6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMgYi9kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmNcbmluZGV4IGJhNzA5MTUxODI2NTQwLi43YmQ5NzliNTlmNDk2OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uY1xuKysrIGIvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jXG5AQCAtMTEsMzMgKzExLDExIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZndub2RlX21kaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BzZS1wZC9wc2UuaFx1MDAzZVxuIFxuIE1PRFVMRV9BVVRIT1IoXCJDYWx2aW4gSm9obnNvbiBcdTAwM2NjYWx2aW4uam9obnNvbkBvc3MubnhwLmNvbVx1MDAzZVwiKTtcbiBNT0RVTEVfTElDRU5TRShcIkdQTFwiKTtcbiBNT0RVTEVfREVTQ1JJUFRJT04oXCJGV05PREUgTURJTyBidXMgKEV0aGVybmV0IFBIWSkgYWNjZXNzb3JzXCIpO1xuIFxuLXN0YXRpYyBzdHJ1Y3QgcHNlX2NvbnRyb2wgKlxuLWZ3bm9kZV9maW5kX3BzZV9jb250cm9sKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tXHRcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi17XG4tXHRzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWM7XG4tXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xuLVxuLVx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19QU0VfQ09OVFJPTExFUikpXG4tXHRcdHJldHVybiBOVUxMO1xuLVxuLVx0bnAgPSB0b19vZl9ub2RlKGZ3bm9kZSk7XG4tXHRpZiAoIW5wKVxuLVx0XHRyZXR1cm4gTlVMTDtcbi1cbi1cdHBzZWMgPSBvZl9wc2VfY29udHJvbF9nZXQobnAsIHBoeWRldik7XG4tXHRpZiAoUFRSX0VSUihwc2VjKSA9PSAtRU5PRU5UKVxuLVx0XHRyZXR1cm4gTlVMTDtcbi1cbi1cdHJldHVybiBwc2VjO1xuLX1cbi1cbiBzdGF0aWMgc3RydWN0IG1paV90aW1lc3RhbXBlciAqXG4gZndub2RlX2ZpbmRfbWlpX3RpbWVzdGFtcGVyKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpXG4ge1xuQEAgLTExOCw3ICs5Niw2IEBAIGludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcbiBcdFx0XHRcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpjaGlsZCwgdTMyIGFkZHIpXG4ge1xuIFx0c3RydWN0IG1paV90aW1lc3RhbXBlciAqbWlpX3RzID0gTlVMTDtcbi1cdHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyA9IE5VTEw7XG4gXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5O1xuIFx0Ym9vbCBpc19jNDU7XG4gXHR1MzIgcGh5X2lkO1xuQEAgLTE1OSwxNCArMTM2LDYgQEAgaW50IGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuIFx0XHRcdGdvdG8gY2xlYW5fcGh5O1xuIFx0fVxuIFxuLVx0cHNlYyA9IGZ3bm9kZV9maW5kX3BzZV9jb250cm9sKGNoaWxkLCBwaHkpO1xuLVx0aWYgKElTX0VSUihwc2VjKSkge1xuLVx0XHRyYyA9IFBUUl9FUlIocHNlYyk7XG4tXHRcdGdvdG8gdW5yZWdpc3Rlcl9waHk7XG4tXHR9XG4tXG4tXHRwaHktXHUwMDNlcHNlYyA9IHBzZWM7XG4tXG4gXHQvKiBwaHktXHUwMDNlbWlpX3RzIG1heSBhbHJlYWR5IGJlIGRlZmluZWQgYnkgdGhlIFBIWSBkcml2ZXIuIEFcbiBcdCAqIG1paV90aW1lc3RhbXBlciBwcm9iZWQgdmlhIHRoZSBkZXZpY2UgdHJlZSB3aWxsIHN0aWxsIGhhdmVcbiBcdCAqIHByZWNlZGVuY2UuXG5AQCAtMTc2LDkgKzE0NSw2IEBAIGludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcbiBcbiBcdHJldHVybiAwO1xuIFxuLXVucmVnaXN0ZXJfcGh5OlxuLVx0aWYgKGlzX2FjcGlfbm9kZShjaGlsZCkgfHwgaXNfb2Zfbm9kZShjaGlsZCkpXG4tXHRcdHBoeV9kZXZpY2VfcmVtb3ZlKHBoeSk7XG4gY2xlYW5fcGh5OlxuIFx0cGh5X2RldmljZV9mcmVlKHBoeSk7XG4gY2xlYW5fbWlpX3RzOlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCAwNjE1MjI4NDU5ZWY0Mi4uZjVmZWJmZjRiMDBiOGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5AQCAtMjIzLDggKzIyMywxOSBAQCBzdGF0aWMgdm9pZCBwaHlfbWRpb19kZXZpY2VfZnJlZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gXG4gc3RhdGljIHZvaWQgcGh5X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbiB7XG4rXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdG9fcGh5X2RldmljZShkZXYpO1xuK1xuK1x0LyogYnVzX2Zvcl9lYWNoX2RldigpIGhvbGRzIGdldF9kZXZpY2UoKSBhY3Jvc3MgZWFjaCBpdGVyYXRpb25cbitcdCAqIHN0ZXAsIGRlZmVycmluZyB0aGlzIHJlbGVhc2UgY2FsbGJhY2sgdW50aWwgYW55IGluLWZsaWdodCBQU0VcbitcdCAqIG5vdGlmaWVyIHdhbGsgaGFzIGFkdmFuY2VkIHBhc3QgdGhpcyBwaHkuIHBzZV9jb250cm9sX3B1dCgpXG4rXHQgKiB0YWtlcyBwc2VfbGlzdF9tdXRleCwgc28gdGhpcyBwYXRoIG11c3QgcnVuIGluIHNsZWVwYWJsZVxuK1x0ICogY29udGV4dC5cbitcdCAqL1xuK1x0bWlnaHRfc2xlZXAoKTtcbitcdHBzZV9jb250cm9sX3B1dChwaHlkZXYtXHUwMDNlcHNlYyk7XG4rXG4gXHRmd25vZGVfaGFuZGxlX3B1dChkZXYtXHUwMDNlZndub2RlKTtcbi1cdGtmcmVlKHRvX3BoeV9kZXZpY2UoZGV2KSk7XG4rXHRrZnJlZShwaHlkZXYpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbkBAIC0xMTAyLDExICsxMTEzLDEwMyBAQCBzdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxuIH1cbiBFWFBPUlRfU1lNQk9MKGdldF9waHlfZGV2aWNlKTtcbiBcbi0vKipcbi0gKiBwaHlfZGV2aWNlX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgdGhlIHBoeSBkZXZpY2Ugb24gdGhlIE1ESU8gYnVzXG4tICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzXG4rLyogQmVzdC1lZmZvcnQgYXR0YWNoIG9mIHBoeWRldi1cdTAwM2Vwc2VjIGZyb20gYSBEVCBgcHNlcyA9IFx1MDAzY1x1MDAyNi4uLlx1MDAzZWAgcGhhbmRsZS5cbisgKiBDYWxsZXIgbXVzdCBob2xkIHJ0bmwuIEEgbWlzc2luZyBwaGFuZGxlICgtRU5PRU5UKSBvciBhIG5vdC15ZXQtcmVnaXN0ZXJlZFxuKyAqIGNvbnRyb2xsZXIgKC1FUFJPQkVfREVGRVIpIGlzIHNpbGVudDsgdGhlIG5vdGlmaWVyIHJldHJpZXMgdGhlIGxhdHRlciBhdFxuKyAqIFBTRV9SRUdJU1RFUkVEIHRpbWUuIEFueSBvdGhlciBlcnJvciBtZWFucyBhIGJyb2tlbiBiaW5kaW5nIGFuZCBpcyB3YXJuZWRcbisgKiBhYm91dCwgYnV0IGxlZnQgbm9uLWZhdGFsIHNvIHRoZSBwaHkgc3RpbGwgcmVnaXN0ZXJzLlxuICAqL1xuLWludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4rc3RhdGljIHZvaWQgcGh5X3RyeV9hdHRhY2hfcHNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0c3RydWN0IHBzZV9jb250cm9sICpwc2VjO1xuK1x0c3RydWN0IGRldmljZV9ub2RlICpucDtcbitcbitcdEFTU0VSVF9SVE5MKCk7XG4rXG4rXHRucCA9IHBoeWRldi1cdTAwM2VtZGlvLmRldi5vZl9ub2RlO1xuK1x0aWYgKCFucClcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWYgKHBoeWRldi1cdTAwM2Vwc2VjKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRwc2VjID0gb2ZfcHNlX2NvbnRyb2xfZ2V0KG5wLCBwaHlkZXYpO1xuK1x0aWYgKElTX0VSUihwc2VjKSkge1xuK1x0XHRpZiAoUFRSX0VSUihwc2VjKSAhPSAtRVBST0JFX0RFRkVSIFx1MDAyNlx1MDAyNiBQVFJfRVJSKHBzZWMpICE9IC1FTk9FTlQpXG4rXHRcdFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcImZhaWxlZCB0byBnZXQgUFNFIGNvbnRyb2w6ICVwZVxcblwiLFxuK1x0XHRcdFx0ICAgIHBzZWMpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRwaHlkZXYtXHUwMDNlcHNlYyA9IHBzZWM7XG4rfVxuK1xuK3N0YXRpYyBpbnQgcGh5X3BzZV9hdHRhY2hfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSBfX21heWJlX3VudXNlZClcbit7XG4rXHRBU1NFUlRfUlROTCgpO1xuK1xuK1x0aWYgKGRldi1cdTAwM2V0eXBlICE9IFx1MDAyNm1kaW9fYnVzX3BoeV90eXBlKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHBoeV90cnlfYXR0YWNoX3BzZSh0b19waHlfZGV2aWNlKGRldikpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBpbnQgcGh5X3BzZV9kZXRhY2hfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcbit7XG4rXHRzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldiA9IGRhdGE7XG4rXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xuK1x0c3RydWN0IHBzZV9jb250cm9sICpwc2VjO1xuK1xuK1x0QVNTRVJUX1JUTkwoKTtcbitcbitcdGlmIChkZXYtXHUwMDNldHlwZSAhPSBcdTAwMjZtZGlvX2J1c19waHlfdHlwZSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRwaHlkZXYgPSB0b19waHlfZGV2aWNlKGRldik7XG4rXHRwc2VjID0gcGh5ZGV2LVx1MDAzZXBzZWM7XG4rXHRpZiAoIXBzZWMgfHwgIXBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYocHNlYywgcGNkZXYpKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHBoeWRldi1cdTAwM2Vwc2VjID0gTlVMTDtcbitcdHBzZV9jb250cm9sX3B1dChwc2VjKTtcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50IHBoeV9wc2Vfbm90aWZpZXJfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbitcdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqZGF0YSlcbit7XG4rXHRzd2l0Y2ggKGV2ZW50KSB7XG4rXHRjYXNlIFBTRV9SRUdJU1RFUkVEOlxuK1x0XHRydG5sX2xvY2soKTtcbitcdFx0YnVzX2Zvcl9lYWNoX2RldihcdTAwMjZtZGlvX2J1c190eXBlLCBOVUxMLCBOVUxMLFxuK1x0XHRcdFx0IHBoeV9wc2VfYXR0YWNoX29uZSk7XG4rXHRcdHJ0bmxfdW5sb2NrKCk7XG4rXHRcdHJldHVybiBOT1RJRllfT0s7XG4rXHRjYXNlIFBTRV9VTlJFR0lTVEVSRUQ6XG4rXHRcdHJ0bmxfbG9jaygpO1xuK1x0XHRidXNfZm9yX2VhY2hfZGV2KFx1MDAyNm1kaW9fYnVzX3R5cGUsIE5VTEwsIGRhdGEsXG4rXHRcdFx0XHQgcGh5X3BzZV9kZXRhY2hfb25lKTtcbitcdFx0cnRubF91bmxvY2soKTtcbitcdFx0cmV0dXJuIE5PVElGWV9PSztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiBOT1RJRllfRE9ORTtcbitcdH1cbit9XG4rXG4rc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBwaHlfcHNlX25vdGlmaWVyIF9fcmVhZF9tb3N0bHkgPSB7XG4rXHQubm90aWZpZXJfY2FsbCA9IHBoeV9wc2Vfbm90aWZpZXJfZXZlbnQsXG4rfTtcbitcbisvKiBDb3JlIHJlZ2lzdHJhdGlvbjogYWRkIHRoZSBwaHkgdG8gdGhlIE1ESU8gYnVzLiBEb2VzIG5vdCB0b3VjaCBydG5sIG9yXG4rICogUFNFLiBwaHlkZXYtXHUwMDNlcHNlYyBpcyBhdHRhY2hlZCBieSB0aGUgY2FsbGVycyBiZWxvdywgYWZ0ZXIgZGV2aWNlX2FkZCgpXG4rICogaGFzIG1hZGUgdGhlIHBoeSB2aXNpYmxlIG9uIG1kaW9fYnVzX3R5cGUsIHNvIHRoYXQgYSBjb25jdXJyZW50IFBTRVxuKyAqIG5vdGlmaWVyIHdhbGsgYW5kIHRoZSBhdHRhY2ggY2FuIG5ldmVyIGxlYXZlIHRoZSBwaHkgdW5hdHRhY2hlZC4gS2VlcGluZ1xuKyAqIGRldmljZV9hZGQoKSBvdXQgb2YgcnRubCBhbHNvIGF2b2lkcyBkZWFkbG9ja2luZyB3aGVuIGJpbmRpbmcgYSBwaHkgdGhhdFxuKyAqIGl0c2VsZiBwcm92aWRlcyBhbiBTRlAgY2FnZSAocGh5X3Byb2JlKCkgLVx1MDAzZSBwaHlfc2ZwX3Byb2JlKCkgLVx1MDAzZVxuKyAqIHNmcF9idXNfYWRkX3Vwc3RyZWFtKCkgdGFrZXMgcnRubCkuXG4rICovXG4rc3RhdGljIGludCBfX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRpbnQgZXJyO1xuIFxuQEAgLTExMzUsMTAgKzEyMzgsNTQgQEAgaW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiAgb3V0OlxuIFx0LyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi9cbiBcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcbi1cbiBcdG1kaW9idXNfdW5yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8pO1xuIFx0cmV0dXJuIGVycjtcbiB9XG4rXG4rLyoqXG4rICogcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWQgLSBSZWdpc3RlciB0aGUgcGh5IGRldmljZSBvbiB0aGUgTURJTyBidXNcbisgKiBAcGh5ZGV2OiBwaHlfZGV2aWNlIHN0cnVjdHVyZSB0byBiZSBhZGRlZCB0byB0aGUgTURJTyBidXNcbisgKlxuKyAqIFNhbWUgYXMgcGh5X2RldmljZV9yZWdpc3RlcigpIGJ1dCBjYWxsZXIgbXVzdCBhbHJlYWR5IGhvbGQgcnRubF9sb2NrKCkuXG4rICpcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxuKyAqL1xuK2ludCBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGludCBlcnI7XG4rXG4rXHRBU1NFUlRfUlROTCgpO1xuK1xuK1x0ZXJyID0gX19waHlfZGV2aWNlX3JlZ2lzdGVyKHBoeWRldik7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0cGh5X3RyeV9hdHRhY2hfcHNlKHBoeWRldik7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rRVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZCk7XG4rXG4rLyoqXG4rICogcGh5X2RldmljZV9yZWdpc3RlciAtIFJlZ2lzdGVyIHRoZSBwaHkgZGV2aWNlIG9uIHRoZSBNRElPIGJ1c1xuKyAqIEBwaHlkZXY6IHBoeV9kZXZpY2Ugc3RydWN0dXJlIHRvIGJlIGFkZGVkIHRvIHRoZSBNRElPIGJ1c1xuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cbisgKi9cbitpbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGludCBlcnI7XG4rXG4rXHRlcnIgPSBfX3BoeV9kZXZpY2VfcmVnaXN0ZXIocGh5ZGV2KTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4rXHRydG5sX2xvY2soKTtcbitcdHBoeV90cnlfYXR0YWNoX3BzZShwaHlkZXYpO1xuK1x0cnRubF91bmxvY2soKTtcbitcbitcdHJldHVybiAwO1xuK31cbiBFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfcmVnaXN0ZXIpO1xuIFxuIC8qKlxuQEAgLTExNTIsOCArMTI5OSw2IEBAIEVYUE9SVF9TWU1CT0wocGh5X2RldmljZV9yZWdpc3Rlcik7XG4gdm9pZCBwaHlfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdHVucmVnaXN0ZXJfbWlpX3RpbWVzdGFtcGVyKHBoeWRldi1cdTAwM2VtaWlfdHMpO1xuLVx0cHNlX2NvbnRyb2xfcHV0KHBoeWRldi1cdTAwM2Vwc2VjKTtcbi1cbiBcdGRldmljZV9kZWwoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2KTtcbiBcbiBcdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG5AQCAtMzk4MSw4ICs0MTI2LDE0IEBAIHN0YXRpYyBpbnQgX19pbml0IHBoeV9pbml0KHZvaWQpXG4gXHRpZiAocmMpXG4gXHRcdGdvdG8gZXJyX2M0NTtcbiBcbitcdHJjID0gcHNlX3JlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNnBoeV9wc2Vfbm90aWZpZXIpO1xuK1x0aWYgKHJjKVxuK1x0XHRnb3RvIGVycl9nZW5waHk7XG4rXG4gXHRyZXR1cm4gMDtcbiBcbitlcnJfZ2VucGh5OlxuK1x0cGh5X2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmdlbnBoeV9kcml2ZXIpO1xuIGVycl9jNDU6XG4gXHRwaHlfZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2Z2VucGh5X2M0NV9kcml2ZXIpO1xuIGVycl9ldGh0b29sX3BoeV9vcHM6XG5AQCAtMzk5OSw2ICs0MTUwLDcgQEAgc3RhdGljIGludCBfX2luaXQgcGh5X2luaXQodm9pZClcbiBcbiBzdGF0aWMgdm9pZCBfX2V4aXQgcGh5X2V4aXQodm9pZClcbiB7XG4rXHRwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZwaHlfcHNlX25vdGlmaWVyKTtcbiBcdHBoeV9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZnZW5waHlfYzQ1X2RyaXZlcik7XG4gXHRwaHlfZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2Z2VucGh5X2RyaXZlcik7XG4gXHRydG5sX2xvY2soKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvc2ZwLmMgYi9kcml2ZXJzL25ldC9waHkvc2ZwLmNcbmluZGV4IDAzYmZkODY0MGRiOTYzLi4xODg2OGJkZDY0ODUyYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9zZnAuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3NmcC5jXG5AQCAtMjA4Myw3ICsyMDgzLDcgQEAgc3RhdGljIGludCBzZnBfc21fcHJvYmVfcGh5KHN0cnVjdCBzZnAgKnNmcCwgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxuIFx0LyogTWFyayB0aGlzIFBIWSBhcyBiZWluZyBvbiBhIFNGUCBtb2R1bGUgKi9cbiBcdHBoeS1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlID0gdHJ1ZTtcbiBcbi1cdGVyciA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcbitcdGVyciA9IHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkKHBoeSk7XG4gXHRpZiAoZXJyKSB7XG4gXHRcdHBoeV9kZXZpY2VfZnJlZShwaHkpO1xuIFx0XHRkZXZfZXJyKHNmcC1cdTAwM2VkZXYsIFwicGh5X2RldmljZV9yZWdpc3RlciBmYWlsZWQ6ICVwZVxcblwiLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jIGIvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmNcbmluZGV4IDY5ZGJkYmRlOWQ3MWE3Li42MTE1NDBkZjQzYmIxYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY1xuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sX25ldGxpbmsuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L25vdGlmaWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wc2UtcGQvcHNlLmhcdTAwM2VcbkBAIC0yMyw2ICsyNCwzOSBAQCBzdGF0aWMgTElTVF9IRUFEKHBzZV9jb250cm9sbGVyX2xpc3QpO1xuIHN0YXRpYyBERUZJTkVfWEFSUkFZX0FMTE9DKHBzZV9wd19kX21hcCk7XG4gc3RhdGljIERFRklORV9NVVRFWChwc2VfcHdfZF9tdXRleCk7XG4gXG4rc3RhdGljIEJMT0NLSU5HX05PVElGSUVSX0hFQUQocHNlX2NvbnRyb2xsZXJfbm90aWZpZXIpO1xuK1xuKy8qKlxuKyAqIHBzZV9yZWdpc3Rlcl9ub3RpZmllciAtIHJlZ2lzdGVyIGEgY2FsbGJhY2sgZm9yIFBTRSBjb250cm9sbGVyIGV2ZW50c1xuKyAqIEBuYjogbm90aWZpZXIgYmxvY2sgdG8gcmVnaXN0ZXJcbisgKlxuKyAqIFNlZSBlbnVtIHBzZV9jb250cm9sbGVyX2V2ZW50IGZvciBldmVudHMgZmlyZWQgYW5kIHRoZWlyIHN1YnNjcmliZXJcbisgKiBjb250cmFjdC4gQ2FsbGJhY2tzIHJ1biBpbiBwcm9jZXNzIGNvbnRleHQ7IHRoZXkgbWF5IHNsZWVwLCB0YWtlXG4rICogcnRubCwgYW5kIGNhbGwgb2ZfcHNlX2NvbnRyb2xfZ2V0KCkuIFRoZSBjaGFpbiBmaXJlcyBzeW5jaHJvbm91c2x5LFxuKyAqIHNvIGEgUFNFIGNvbnRyb2xsZXIgZHJpdmVyJ3MgcHJvYmUvdW5iaW5kIHBhdGggbXVzdCBub3QgaG9sZCBhbnlcbisgKiBzdWNoIGxvY2sgd2hlbiBjYWxsaW5nIHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKCkgb3JcbisgKiBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKCkuXG4rICpcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4rICovXG4raW50IHBzZV9yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxuK3tcbitcdHJldHVybiBibG9ja2luZ19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcihcdTAwMjZwc2VfY29udHJvbGxlcl9ub3RpZmllciwgbmIpO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChwc2VfcmVnaXN0ZXJfbm90aWZpZXIpO1xuK1xuKy8qKlxuKyAqIHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyIC0gdW5yZWdpc3RlciBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBjYWxsYmFja1xuKyAqIEBuYjogbm90aWZpZXIgYmxvY2sgcHJldmlvdXNseSBwYXNzZWQgdG8gcHNlX3JlZ2lzdGVyX25vdGlmaWVyKClcbisgKlxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS5cbisgKi9cbitpbnQgcHNlX3VucmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcbit7XG4rXHRyZXR1cm4gYmxvY2tpbmdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihcdTAwMjZwc2VfY29udHJvbGxlcl9ub3RpZmllciwgbmIpO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcik7XG4rXG4gLyoqXG4gICogc3RydWN0IHBzZV9jb250cm9sIC0gYSBQU0UgY29udHJvbFxuICAqIEBwY2RldjogYSBwb2ludGVyIHRvIHRoZSBQU0UgY29udHJvbGxlciBkZXZpY2VcbkBAIC0xMTA0LDYgKzExMzgsOSBAQCBpbnQgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpXG4gXHRsaXN0X2FkZChcdTAwMjZwY2Rldi1cdTAwM2VsaXN0LCBcdTAwMjZwc2VfY29udHJvbGxlcl9saXN0KTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZwc2VfbGlzdF9tdXRleCk7XG4gXG4rXHRibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKFx1MDAyNnBzZV9jb250cm9sbGVyX25vdGlmaWVyLFxuK1x0XHRcdFx0ICAgICBQU0VfUkVHSVNURVJFRCwgcGNkZXYpO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKTtcbkBAIC0xMTE0LDYgKzExNTEsOSBAQCBFWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XG4gICovXG4gdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxuIHtcbitcdGJsb2NraW5nX25vdGlmaWVyX2NhbGxfY2hhaW4oXHUwMDI2cHNlX2NvbnRyb2xsZXJfbm90aWZpZXIsXG4rXHRcdFx0XHQgICAgIFBTRV9VTlJFR0lTVEVSRUQsIHBjZGV2KTtcbitcbiBcdHBzZV9mbHVzaF9wd19kcyhwY2Rldik7XG4gXHRwc2VfcmVsZWFzZV9waXMocGNkZXYpO1xuIFx0aWYgKHBjZGV2LVx1MDAzZWlycSlcbkBAIC0xOTgxLDMgKzIwMjEsMTcgQEAgYm9vbCBwc2VfaGFzX2MzMyhzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMpXG4gXHRyZXR1cm4gcHNlYy1cdTAwM2VwY2Rldi1cdTAwM2V0eXBlcyBcdTAwMjYgRVRIVE9PTF9QU0VfQzMzO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChwc2VfaGFzX2MzMyk7XG4rXG4rLyoqXG4rICogcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldiAtIFRlc3Qgd2hldGhlciBhIHBzZV9jb250cm9sIHRhcmdldHMgYSBjb250cm9sbGVyXG4rICogQHBzZWM6IHBzZV9jb250cm9sIG9idGFpbmVkIGZyb20gb2ZfcHNlX2NvbnRyb2xfZ2V0KClcbisgKiBAcGNkZXY6IFBTRSBjb250cm9sbGVyIHRvIGNvbXBhcmUgYWdhaW5zdFxuKyAqXG4rICogUmV0dXJuOiAldHJ1ZSBpZiBAcHNlYyB3YXMgb2J0YWluZWQgZnJvbSBAcGNkZXYsICVmYWxzZSBvdGhlcndpc2UuXG4rICovXG4rYm9vbCBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2KHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyxcbitcdFx0XHQgICAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpXG4re1xuK1x0cmV0dXJuIHBzZWMtXHUwMDNlcGNkZXYgPT0gcGNkZXY7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5pbmRleCAxOTlhN2FhYTM0MWJmZC4uODY1YjliYWRkYjg1ZmEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtMjE1OCw2ICsyMTU4LDggQEAgc3RydWN0IHBoeV9kZXZpY2UgKmZ3bm9kZV9waHlfZmluZF9kZXZpY2Uoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKnBoeV9md25vZGUpO1xuIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGVfZ2V0X3BoeV9ub2RlKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpO1xuIHN0cnVjdCBwaHlfZGV2aWNlICpnZXRfcGh5X2RldmljZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpO1xuIGludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpO1xuKy8qIENhbGxlciBtdXN0IGhvbGQgcnRubF9sb2NrKCk7IHNlZSBwaHlfZGV2aWNlX3JlZ2lzdGVyKCkgZm9yIHRoZSBwdWJsaWMgZm9ybS4gKi9cbitpbnQgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSk7XG4gdm9pZCBwaHlfZGV2aWNlX2ZyZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gdm9pZCBwaHlfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgcGh5X2dldF9jNDVfaWRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHNlLXBkL3BzZS5oIGIvaW5jbHVkZS9saW51eC9wc2UtcGQvcHNlLmhcbmluZGV4IDRlNTY5NmNmYWRlN2NjLi5kNDMxMGNhNzFhM2UwOCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcHNlLXBkL3BzZS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaFxuQEAgLTIxLDYgKzIxLDcgQEAgc3RydWN0IG5ldF9kZXZpY2U7XG4gc3RydWN0IHBoeV9kZXZpY2U7XG4gc3RydWN0IHBzZV9jb250cm9sbGVyX2RldjtcbiBzdHJ1Y3QgbmV0bGlua19leHRfYWNrO1xuK3N0cnVjdCBub3RpZmllcl9ibG9jaztcbiBcbiAvKiBDMzMgUFNFIGV4dGVuZGVkIHN0YXRlIGFuZCBzdWJzdGF0ZS4gKi9cbiBzdHJ1Y3QgZXRodG9vbF9jMzNfcHNlX2V4dF9zdGF0ZV9pbmZvIHtcbkBAIC0zMzcsNiArMzM4LDI0IEBAIGVudW0gcHNlX2J1ZGdldF9ldmFsX3N0cmF0ZWdpZXMge1xuIFx0UFNFX0JVREdFVF9FVkFMX1NUUkFUX0RZTkFNSUNcdD0gMSBcdTAwM2NcdTAwM2MgMixcbiB9O1xuIFxuKy8qKlxuKyAqIGVudW0gcHNlX2NvbnRyb2xsZXJfZXZlbnQgLSBQU0UgY29udHJvbGxlciBsaWZlY3ljbGUgZXZlbnRzXG4rICpcbisgKiBFdmVudCBkYXRhIGluIGNhbGxiYWNrcyBpcyBhbHdheXMgYSBwb2ludGVyIHRvIHRoZSBzdHJ1Y3RcbisgKiBwc2VfY29udHJvbGxlcl9kZXYgZmlyaW5nIHRoZSBldmVudC5cbisgKlxuKyAqIEBQU0VfUkVHSVNURVJFRDogY29udHJvbGxlciBhZGRlZCB0byBwc2VfY29udHJvbGxlcl9saXN0IGFuZFxuKyAqXHRyZXNvbHZhYmxlIGJ5IG9mX3BzZV9jb250cm9sX2dldCgpLlxuKyAqIEBQU0VfVU5SRUdJU1RFUkVEOiBjb250cm9sbGVyIGFib3V0IHRvIGJlIHJlbW92ZWQgZnJvbVxuKyAqXHRwc2VfY29udHJvbGxlcl9saXN0LiBTdWJzY3JpYmVycyBob2xkaW5nIHBzZV9jb250cm9sIHJlZmVyZW5jZXNcbisgKlx0dGFyZ2V0aW5nIGl0IG11c3QgZHJvcCB0aGVtIGJlZm9yZSByZXR1cm5pbmcgYW5kIG11c3Qgbm90XG4rICpcdGFjcXVpcmUgbmV3IHJlZmVyZW5jZXMgZm9yIGl0LlxuKyAqL1xuK2VudW0gcHNlX2NvbnRyb2xsZXJfZXZlbnQge1xuK1x0UFNFX1JFR0lTVEVSRUQsXG4rXHRQU0VfVU5SRUdJU1RFUkVELFxuK307XG4rXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX1BTRV9DT05UUk9MTEVSKVxuIGludCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcihzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2Rldik7XG4gdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KTtcbkBAIC0zNjYsNiArMzg1LDEyIEBAIGludCBwc2VfZXRodG9vbF9zZXRfcHJpbyhzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMsXG4gYm9vbCBwc2VfaGFzX3BvZGwoc3RydWN0IHBzZV9jb250cm9sICpwc2VjKTtcbiBib29sIHBzZV9oYXNfYzMzKHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyk7XG4gXG4rYm9vbCBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2KHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyxcbitcdFx0XHQgICAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpO1xuK1xuK2ludCBwc2VfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XG4raW50IHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpO1xuK1xuICNlbHNlXG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgcHNlX2NvbnRyb2wgKm9mX3BzZV9jb250cm9sX2dldChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5AQCAtNDE2LDYgKzQ0MSwyMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcHNlX2hhc19jMzMoc3RydWN0IHBzZV9jb250cm9sICpwc2VjKVxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbitzdGF0aWMgaW5saW5lIGJvb2wgcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldihzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMsXG4rXHRcdFx0XHRcdCAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpXG4re1xuK1x0cmV0dXJuIGZhbHNlO1xuK31cbitcbitzdGF0aWMgaW5saW5lIGludCBwc2VfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGlubGluZSBpbnQgcHNlX3VucmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gI2VuZGlmXG4gXG4gI2VuZGlmXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMToyNTozNS41NTkzNTUwNDVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjY3Nzg1ODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBQU0UvUEhZIEF0dGFjaG1lbnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgcmVmYWN0b3IsIG1vdmluZyB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIFBvd2VyIFNvdXJjaW5nIEVxdWlwbWVudCAoUFNFKSBjb250cm9sbGVycyBhbmQgUEhZIGRldmljZXMgYXdheSBmcm9tIHRoZSBgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5YCBmdW5jdGlvbiB0byBhIG5vdGlmaWVyLWJhc2VkIHN5c3RlbSB3aXRoaW4gYHBoeV9kZXZpY2UuY2AuIFRoYXQncyBhIHJlYXNvbmFibGUgYXJjaGl0ZWN0dXJhbCBjaG9pY2UsIEkgY2FuIHNlZSB0aGUgYWR2YW50YWdlcyBvZiBkZWNvdXBsaW5nIHRoZSBhdHRhY2htZW50IHByb2Nlc3MuIFRoZXkndmUgaW50cm9kdWNlZCBgcGh5X3BzZV9ub3RpZmllcl9ldmVudGAgdG8gbGlzdGVuIGZvciBgUFNFX1JFR0lTVEVSRURgIGFuZCBgUFNFX1VOUkVHSVNURVJFRGAgZXZlbnRzLCB3aGljaCBpcyB0aGUgY29yZSBvZiB0aGUgbmV3IG1lY2hhbmlzbS4gSXQgYWxzbyBpbnRyb2R1Y2VzIGZ1bmN0aW9ucyBsaWtlIGBwaHlfdHJ5X2F0dGFjaF9wc2VgLCBgcGh5X3BzZV9hdHRhY2hfb25lYCwgYW5kIGBwaHlfcHNlX2RldGFjaF9vbmVgIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGF0dGFjaG1lbnQgYW5kIGRldGFjaG1lbnQgbG9naWMuIE1vZGlmeWluZyB0aGUgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGZ1bmN0aW9uIHRvIHRyaWdnZXIgUFNFIGF0dGFjaG1lbnQgaXMgYWxzbyBhIGxvZ2ljYWwgc3RlcCwgYWxvbmcgd2l0aCB0aGUgYWRkaXRpb24gb2YgYHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkYCB0byBtYW5hZ2UgY29uY3VycmVuY3kuIEZpbmFsbHksIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYHBzZV9yZWdpc3Rlcl9ub3RpZmllcmAgYW5kIGBwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcmAgaW4gYHBzZV9jb3JlLmNgIHNvbGlkaWZpZXMgdGhlIG5vdGlmaWVyLWJhc2VkIGFyY2hpdGVjdHVyZS5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBjYW4gdGhpcyBjb2RlIGJlIHJlYWNoZWQgYW5kIGZ1enplZD8gTGV0J3Mgc2VlLi4uIHRoZSBjb2RlIGlzIGluIGBwaHlfZGV2aWNlLmNgIGFuZCBgcHNlX2NvcmUuY2AsIGJvdGggZmlybWx5IHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBQSFkgYW5kIFBTRS4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFdlIGNvdWxkIHJlZ2lzdGVyIHZpcnR1YWwgUEhZcywgb3IgdXNlIGR1bW15IG5ldHdvcmsgZGV2aWNlcyB0aGF0IG1pZ2h0IGhhdmUgYXNzb2NpYXRlZCBQSFlzLiBUaGF0IGxvb2tzIGZlYXNpYmxlLiBOb3csIHRoZSBgbWRpb19idXNgIGlzIGNyZWF0ZWQgYnkgYG1hY2JgLCBgZmVjYCwgYW5kIG90aGVyIGRyaXZlcnMuIEJ1dCB3aGF0IGFib3V0IHZpcnR1YWwgZHJpdmVycz8gSSBuZWVkIHRvIGNoZWNrIGBtZGlvX2J1cy5jYCBpbiB0aGUgcGh5IGRpcmVjdG9yeSwgdGhhdCdzIHdoZXJlIE1ESU8gYnVzZXMgYXJlIG1hbmFnZWQuXG5cblRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gd2UgY3JlYXRlIGFuIE1ESU8gYnVzIGFuZCBQSFkgZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgb3IgdmlhIGEgdmlydHVhbCBkcml2ZXI/IEkgbmVlZCB0byBkaWcgZGVlcGVyIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHZpcnR1YWwgTURJTyBkcml2ZXJzIG9yIFBTRSBjb250cm9sbGVycyBhdmFpbGFibGUgaW4gdGhlIGtlcm5lbC4gVGhhdCdzIHRoZSBrZXkgdG8gbWFraW5nIHRoaXMgZnV6emFibGUgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LiBOZWVkIHRvIGlkZW50aWZ5IGhvdyB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3Mgd29ya3MgZm9yIHRoZXNlIHBpZWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE4OSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDExOjI1OjQzLjIyNzE0NTE2OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTQxNDU3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qYnVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDk3NzAgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTExMjg9c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICpiNTNfZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTExMzctXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTEzODpcXHRyZXR1cm4gbWRpb2J1c19nZXRfcGh5KGRzLVxcdTAwM2V1c2VyX21paV9idXMsIHBvcnQpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTExMzktfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTQyPXN0YXRpYyBpbnQgYjUzX21kaW9fb3Aoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgdTggcGFnZSwgdTggcmVnLCB1MTYgb3ApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtNTEtXFx0XFx0diA9IChwYWdlIFxcdTAwM2NcXHUwMDNjIDgpIHwgUkVHX01JSV9QQUdFX0VOQUJMRTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6NTI6XFx0XFx0cmV0ID0gbWRpb2J1c193cml0ZV9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtNTMtXFx0XFx0XFx0XFx0XFx0ICAgUkVHX01JSV9QQUdFLCB2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy02MC1cXHR2ID0gKHJlZyBcXHUwMDNjXFx1MDAzYyA4KSB8IG9wO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzo2MTpcXHRyZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLCBSRUdfTUlJX0FERFIsIHYpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy02Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTY2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyA1OyArK2kpIHtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6Njc6XFx0XFx0diA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtNjgtXFx0XFx0XFx0XFx0XFx0UkVHX01JSV9BRERSKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz04MD1zdGF0aWMgaW50IGI1M19tZGlvX3JlYWQ4KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZywgdTggKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy04OC1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6ODk6XFx0KnZhbCA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtOTAtXFx0XFx0XFx0XFx0ICAgUkVHX01JSV9EQVRBMCkgXFx1MDAyNiAweGZmO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTk1PXN0YXRpYyBpbnQgYjUzX21kaW9fcmVhZDE2KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZywgdTE2ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMTAzLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoxMDQ6XFx0KnZhbCA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUiwgUkVHX01JSV9EQVRBMCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTEwNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0xMDk9c3RhdGljIGludCBiNTNfbWRpb19yZWFkMzIoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgdTggcGFnZSwgdTggcmVnLCB1MzIgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0xMTctXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjExODpcXHQqdmFsID0gbWRpb2J1c19yZWFkX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLCBSRUdfTUlJX0RBVEEwKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MTE5OlxcdCp2YWwgfD0gbWRpb2J1c19yZWFkX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0xMjAtXFx0XFx0XFx0XFx0ICAgIFJFR19NSUlfREFUQTEpIFxcdTAwM2NcXHUwMDNjIDE2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTEyNT1zdGF0aWMgaW50IGI1M19tZGlvX3JlYWQ0OChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTEzNy1cXHRcXHR0ZW1wIFxcdTAwM2NcXHUwMDNjPSAxNjtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MTM4OlxcdFxcdHRlbXAgfD0gbWRpb2J1c19yZWFkX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0xMzktXFx0XFx0XFx0XFx0ICAgICBSRUdfTUlJX0RBVEEwICsgaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MTQ3PXN0YXRpYyBpbnQgYjUzX21kaW9fcmVhZDY0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZywgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMTU5LVxcdFxcdHRlbXAgXFx1MDAzY1xcdTAwM2M9IDE2O1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoxNjA6XFx0XFx0dGVtcCB8PSBtZGlvYnVzX3JlYWRfbmVzdGVkKGJ1cywgQlJDTV9QU0VVRE9fUEhZX0FERFIsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE2MS1cXHRcXHRcXHRcXHRcXHQgICAgUkVHX01JSV9EQVRBMCArIGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTE2OT1zdGF0aWMgaW50IGI1M19tZGlvX3dyaXRlOChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsIHU4IHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE3My1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MTc0OlxcdHJldCA9IG1kaW9idXNfd3JpdGVfbmVzdGVkKGJ1cywgQlJDTV9QU0VVRE9fUEhZX0FERFIsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE3NS1cXHRcXHRcXHRcXHQgICBSRUdfTUlJX0RBVEEwLCB2YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MTgyPXN0YXRpYyBpbnQgYjUzX21kaW9fd3JpdGUxNihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMTg3LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoxODg6XFx0cmV0ID0gbWRpb2J1c193cml0ZV9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMTg5LVxcdFxcdFxcdFxcdCAgIFJFR19NSUlfREFUQTAsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0xOTY9c3RhdGljIGludCBiNTNfbWRpb193cml0ZTMyKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0yMDMtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDI7IGkrKykge1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoyMDQ6XFx0XFx0aW50IHJldCA9IG1kaW9idXNfd3JpdGVfbmVzdGVkKGJ1cywgQlJDTV9QU0VVRE9fUEhZX0FERFIsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTIwNS1cXHRcXHRcXHRcXHRcXHQgICAgICAgUkVHX01JSV9EQVRBMCArIGksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MjE1PXN0YXRpYyBpbnQgYjUzX21kaW9fd3JpdGU0OChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMjIyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAzOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MjIzOlxcdFxcdGludCByZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0yMjQtXFx0XFx0XFx0XFx0XFx0ICAgICAgIFJFR19NSUlfREFUQTAgKyBpLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTIzND1zdGF0aWMgaW50IGI1M19tZGlvX3dyaXRlNjQoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgdTggcGFnZSwgdTggcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTI0MS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgNDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjI0MjpcXHRcXHRpbnQgcmV0ID0gbWRpb2J1c193cml0ZV9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMjQzLVxcdFxcdFxcdFxcdFxcdCAgICAgICBSRUdfTUlJX0RBVEEwICsgaSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0yNTM9c3RhdGljIGludCBiNTNfbWRpb19waHlfcmVhZDE2KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBhZGRyLCBpbnQgcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTI1Ny1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MjU4OlxcdCp2YWx1ZSA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBhZGRyLCByZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0yNTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MjYzPXN0YXRpYyBpbnQgYjUzX21kaW9fcGh5X3dyaXRlMTYoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IGFkZHIsIGludCByZWcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMjY3LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoyNjg6XFx0cmV0dXJuIG1kaW9idXNfd3JpdGVfbmVzdGVkKGJ1cywgYWRkciwgcmVnLCB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTI2OS19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MjkyPXN0YXRpYyBpbnQgYjUzX21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTMwNy1cXHQvKiByZWFkIHRoZSBmaXJzdCBwb3J0J3MgaWQgKi9cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MzA4OlxcdHBoeV9pZCA9IG1kaW9idXNfcmVhZChtZGlvZGV2LVxcdTAwM2VidXMsIDAsIDIpIFxcdTAwM2NcXHUwMDNjIDE2O1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzozMDk6XFx0cGh5X2lkIHw9IG1kaW9idXNfcmVhZChtZGlvZGV2LVxcdTAwM2VidXMsIDAsIDMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zMTAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMzMxLVxcdGlmIChvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXFxcImJyY20sYmNtNzQ0NWQwXFxcIikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MzMyOlxcdCAgICBzdHJjbXAobWRpb2Rldi1cXHUwMDNlYnVzLVxcdTAwM2VuYW1lLCBcXFwic2YyIHVzZXIgbWlpXFxcIikpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTMzMy1cXHRcXHRyZXR1cm4gLUVQUk9CRV9ERUZFUjtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMzM0LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzozMzU6XFx0ZGV2ID0gYjUzX3N3aXRjaF9hbGxvYyhcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2LCBcXHUwMDI2YjUzX21kaW9fb3BzLCBtZGlvZGV2LVxcdTAwM2VidXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zMzYtXFx0aWYgKCFkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMzQwLVxcdGRldi1cXHUwMDNlY3VycmVudF9wYWdlID0gMHhmZjtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MzQxOlxcdGRldi1cXHUwMDNlYnVzID0gbWRpb2Rldi1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zNDItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTM4MT1zdGF0aWMgaW50IGJjbV9zZjJfc3dfaW5kaXJfcncoc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdiwgaW50IG9wLCBpbnQgYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDExLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDEyOnN0YXRpYyBpbnQgYmNtX3NmMl9zd19tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00MTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00MjEtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDIyOlxcdFxcdHJldHVybiBtZGlvYnVzX3JlYWRfbmVzdGVkKHByaXYtXFx1MDAzZW1hc3Rlcl9taWlfYnVzLCBhZGRyLCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDIzLX1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQyNC1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjQyNTpzdGF0aWMgaW50IGJjbV9zZjJfc3dfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSxcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQyNi1cXHRcXHRcXHRcXHQgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDM1LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjQzNjpcXHRcXHRyZXR1cm4gbWRpb2J1c193cml0ZV9uZXN0ZWQocHJpdi1cXHUwMDNlbWFzdGVyX21paV9idXMsIGFkZHIsXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00MzctXFx0XFx0XFx0XFx0cmVnbnVtLCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02MTctXFx0ZG4gPSBvZl9maW5kX2NvbXBhdGlibGVfbm9kZShOVUxMLCBOVUxMLCBcXFwiYnJjbSx1bmltYWMtbWRpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NjE4OlxcdHByaXYtXFx1MDAzZW1hc3Rlcl9taWlfYnVzID0gb2ZfbWRpb19maW5kX2J1cyhkbik7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02MTktXFx0aWYgKCFwcml2LVxcdTAwM2VtYXN0ZXJfbWlpX2J1cykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02MjMtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2MjQ6XFx0cHJpdi1cXHUwMDNldXNlcl9taWlfYnVzID0gbWRpb2J1c19hbGxvYygpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjI1LVxcdGlmICghcHJpdi1cXHUwMDNldXNlcl9taWlfYnVzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4My1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjY4NDpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZXVzZXJfbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02ODUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjkyLWVycl9mcmVlX3VzZXJfbWlpX2J1czpcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjY5MzpcXHRtZGlvYnVzX2ZyZWUocHJpdi1cXHUwMDNldXNlcl9taWlfYnVzKTtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY5NC1lcnJfcHV0X21hc3Rlcl9taWlfYnVzX2RldjpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NzAxPXN0YXRpYyB2b2lkIGJjbV9zZjJfbWRpb191bnJlZ2lzdGVyKHN0cnVjdCBiY21fc2YyX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03MDIte1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NzAzOlxcdG1kaW9idXNfdW5yZWdpc3Rlcihwcml2LVxcdTAwM2V1c2VyX21paV9idXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NzA0OlxcdG1kaW9idXNfZnJlZShwcml2LVxcdTAwM2V1c2VyX21paV9idXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzA1LVxcdHB1dF9kZXZpY2UoXFx1MDAyNnByaXYtXFx1MDAzZW1hc3Rlcl9taWlfYnVzLVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MTg0PXN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3JlYWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4OS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxOTA6XFx0cmV0ID0gbWRpb2J1c19yZWFkX25lc3RlZChidXMsIHBzLVxcdTAwM2Vwb3J0X2Jhc2UgKyBwb3J0LCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5MS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTE5OT1zdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjA1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwNjpcXHRyZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIHBzLVxcdTAwM2Vwb3J0X2Jhc2UgKyBwb3J0LCByZWdudW0sIHZhbHVlKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDctXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0yNTA9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNjMtXFx0LyogSnVzdCBkbyBhIHNsZWVwaW5nIG9wZXJhdGlvbiB0byBtYWtlIGxvY2tkZXAgY2hlY2tzIGVmZmVjdGl2ZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI2NDpcXHRtZGlvYnVzX3JlYWQoYnVzLCBwcy1cXHUwMDNlcG9ydF9iYXNlICsgcG9ydCwgTUlJX0JNU1IpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTI4Mz1zdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5Mi1cXHQvKiBKdXN0IGRvIGEgc2xlZXBpbmcgb3BlcmF0aW9uIHRvIG1ha2UgbG9ja2RlcCBjaGVja3MgZWZmZWN0aXZlICovXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkzOlxcdG1kaW9idXNfcmVhZChidXMsIHBzLVxcdTAwM2Vwb3J0X2Jhc2UgKyBwb3J0LCBNSUlfQk1TUik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjk0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzU1PXN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cXHRkcy1cXHUwMDNlcHJpdiA9IHBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4NTpcXHRwcy1cXHUwMDNlYnVzID0gbWRpb2Rldi1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ0Nj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NjM6XFx0YnVzID0gbWRpb19maW5kX2J1cyhcXFwiZml4ZWQtMFxcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2NC1cXHRpZiAoV0FSTl9PTighYnVzKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Njc6XFx0c3dpdGNoX21kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCAzMSk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDY4LVxcdGlmIChJU19FUlIoc3dpdGNoX21kaW9kZXYpKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDcwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3Mi1cXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmM9MjU9c3RhdGljIHZvaWQgbGFuOTMwM19tZGlvX3JlYWxfd3JpdGUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvLCBpbnQgcmVnLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy0yNi17XFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jOjI3OlxcdG1kaW8tXFx1MDAzZWJ1cy1cXHUwMDNld3JpdGUobWRpby1cXHUwMDNlYnVzLCBQSFlfQUREUihyZWcpLCBQSFlfUkVHKHJlZyksIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jLTI4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYz00Mz1zdGF0aWMgdTE2IGxhbjkzMDNfbWRpb19yZWFsX3JlYWQoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvLCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy00NC17XFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jOjQ1OlxcdHJldHVybiBtZGlvLVxcdTAwM2VidXMtXFx1MDAzZXJlYWQobWRpby1cXHUwMDNlYnVzLCBQSFlfQUREUihyZWcpLCBQSFlfUkVHKHJlZykpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy00Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmM9NjE9c3RhdGljIGludCBsYW45MzAzX21kaW9fcGh5X3dyaXRlKHN0cnVjdCBsYW45MzAzICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy02NS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmM6NjY6XFx0cmV0dXJuIG1kaW9idXNfd3JpdGVfbmVzdGVkKHN3X2Rldi1cXHUwMDNlZGV2aWNlLVxcdTAwM2VidXMsIGFkZHIsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmMtNjctfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jPTY5PXN0YXRpYyBpbnQgbGFuOTMwM19tZGlvX3BoeV9yZWFkKHN0cnVjdCBsYW45MzAzICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy03Mi1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmM6NzM6XFx0cmV0dXJuIG1kaW9idXNfcmVhZF9uZXN0ZWQoc3dfZGV2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZWJ1cywgYWRkciwgcmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmMtNzQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYz0zNDE9c3RhdGljIGludCBnc3dpcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00MDgtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo0MDk6XFx0LyogYnJpbmcgdXAgdGhlIG1kaW8gYnVzICovXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00MTAtXFx0Z3BoeV9md19ucCA9IG9mX2dldF9jb21wYXRpYmxlX2NoaWxkKGRldi1cXHUwMDNlb2Zfbm9kZSwgXFxcImxhbnRpcSxncGh5LWZ3XFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xMjk9c3RhdGljIGludCBnc3dpcF9tZGlvX3BvbGwoc3RydWN0IGdzd2lwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMzYtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTM3OnN0YXRpYyBpbnQgZ3N3aXBfbWRpb193cihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU2LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE1NzpzdGF0aWMgaW50IGdzd2lwX21kaW9fcmQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWcpXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE4Nz1zdGF0aWMgaW50IGdzd2lwX21kaW8oc3RydWN0IGdzd2lwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMDAtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MjAxOlxcdGJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIwMi1cXHRpZiAoIWJ1cykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjEzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTY0Mz1zdGF0aWMgaW50IGdzd2lwX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTY5NC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzo2OTU6XFx0LyogYnJpbmcgdXAgdGhlIG1kaW8gYnVzICovXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtNjk2LVxcdGVyciA9IGdzd2lwX21kaW8ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtNjk3LVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzo2OTg6XFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJtZGlvIGJ1cyBzZXR1cCBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTY5OS1cXHRcXHRyZXR1cm4gZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9NDE9c3RhdGljIGludCBnc3cxeHhfY29uZmlnX3NtZGlvX2JhZHIoc3RydWN0IGdzdzF4eF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNDMte1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjQ0OlxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VtZGlvX2Rldi1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTQ1LVxcdGludCBzd19hZGRyID0gcHJpdi1cXHUwMDNlbWRpb19kZXYtXFx1MDAzZWFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy01My1cXHRcXHRzbWRpb19iYWRyID0gcmVnIFxcdTAwMjYgfkdFTk1BU0soMywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6NTQ6XFx0XFx0cmVzID0gX19tZGlvYnVzX3dyaXRlKGJ1cywgc3dfYWRkciwgR1NXMVhYX1NNRElPX0JBRFIsIHNtZGlvX2JhZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTU1LVxcdFxcdGlmIChyZXMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYz02Nz1zdGF0aWMgaW50IGdzdzF4eF9yZWdtYXBfcmVhZCh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNzAtXFx0c3RydWN0IGdzdzF4eF9wcml2ICpwcml2ID0gY29udGV4dDtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo3MTpcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi1cXHUwMDNlbWRpb19kZXYtXFx1MDAzZWJ1cztcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy03Mi1cXHRpbnQgc3dfYWRkciA9IHByaXYtXFx1MDAzZW1kaW9fZGV2LVxcdTAwM2VhZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNzktXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6ODA6XFx0cmVzID0gX19tZGlvYnVzX3JlYWQoYnVzLCBzd19hZGRyLCByZWcgLSBzbWRpb19iYWRyKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy04MS1cXHRpZiAocmVzIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9OTI9c3RhdGljIGludCBnc3cxeHhfcmVnbWFwX3dyaXRlKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy05NS1cXHRzdHJ1Y3QgZ3N3MXh4X3ByaXYgKnByaXYgPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjk2OlxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VtZGlvX2Rldi1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTk3LVxcdGludCBzd19hZGRyID0gcHJpdi1cXHUwMDNlbWRpb19kZXYtXFx1MDAzZWFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMDQtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTA1OlxcdHJlcyA9IF9fbWRpb2J1c193cml0ZShidXMsIHN3X2FkZHIsIHJlZyAtIHNtZGlvX2JhZHIsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTA2LVxcdGlmIChyZXMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9NjQ1PXN0YXRpYyBzdHJ1Y3QgcmVnbWFwICpnc3cxeHhfcmVnbWFwX2luaXQoc3RydWN0IGdzdzF4eF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNjU3LVxcdFxcdC51bmxvY2sgPSBnc3cxeHhfbWRpb19yZWdtYXBfdW5sb2NrLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjY1ODpcXHRcXHQubG9ja19hcmcgPSBcXHUwMDI2cHJpdi1cXHUwMDNlbWRpb19kZXYtXFx1MDAzZWJ1cy1cXHUwMDNlbWRpb19sb2NrLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTY1OS1cXHR9O1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTY2MC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo2NjE6XFx0cmV0dXJuIGRldm1fcmVnbWFwX2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZW1kaW9fZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZnc3cxeHhfcmVnbWFwX2J1cyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy02NjItXFx0XFx0XFx0XFx0cHJpdiwgXFx1MDAyNmNvbmZpZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM9MjU9c3RhdGljIGludCBrc3o4ODYzX21kaW9fcmVhZCh2b2lkICpjdHgsIGNvbnN0IHZvaWQgKnJlZ19idWYsIHNpemVfdCByZWdfbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTM5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYzo0MDpcXHRcXHRyZXQgPSBfX21kaW9idXNfcmVhZChtZGV2LVxcdTAwM2VidXMsICgodG1wIFxcdTAwMjYgMHhFMCkgXFx1MDAzZVxcdTAwM2UgNSkgfFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy00MS1cXHRcXHRcXHRcXHQgICAgIFNNSV9LU1o4OFhYX1JFQURfUEhZLCB0bXApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jPTU1PXN0YXRpYyBpbnQga3N6ODg2M19tZGlvX3dyaXRlKHZvaWQgKmN0eCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTcxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYzo3MjpcXHRcXHRyZXQgPSBfX21kaW9idXNfd3JpdGUobWRldi1cXHUwMDNlYnVzLCAoKHRtcCBcXHUwMDI2IDB4RTApIFxcdTAwM2VcXHUwMDNlIDUpLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy03My1cXHRcXHRcXHRcXHQgICAgICB0bXAsIHZhbFtpXSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0zMTU9c3RhdGljIGludCBrc3o5NDc3X3Bjc19jcmVhdGUoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTMyMi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozMjM6XFx0YnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jKGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMjQtXFx0aWYgKCFidXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMjYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MzI3OlxcdGJ1cy1cXHUwMDNlbmFtZSA9IFxcXCJrc3pfcGNzX21kaW9fYnVzXFxcIjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMjgtXFx0c25wcmludGYoYnVzLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcXFwiJXMtcGNzXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTMzNS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozMzY6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cXHUwMDNlZGV2LCBidXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTMzNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzM5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MDpcXHRwY3MgPSB4cGNzX2NyZWF0ZV9wY3NfbWRpb2RldihidXMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTM0MS1cXHRpZiAoSVNfRVJSKHBjcykpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMTc3PXN0YXRpYyB2b2lkIGtzel91cGRhdGVfcG9ydF9tZW1iZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMjU4LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIyNTk6aW50IGtzel9zd19tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjI2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMjY2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIyNjc6aW50IGtzel9zd19tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjI3NS0vKipcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMjc2OiAqIGtzel9wYXJlbnRfbWRpb19yZWFkIC0gUmVhZCBkYXRhIGZyb20gYSBQSFkgcmVnaXN0ZXIgb24gdGhlIHBhcmVudCBNRElPIGJ1cy5cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMjc3LSAqIEBidXM6IE1ESU8gYnVzIHN0cnVjdHVyZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyODctICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjI4ODppbnQga3N6X3BhcmVudF9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjI4OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMjkxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIyOTI6XFx0cmV0dXJuIG1kaW9idXNfcmVhZF9uZXN0ZWQoZGV2LVxcdTAwM2VwYXJlbnRfbWRpb19idXMsIGFkZHIsIHJlZ251bSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjI5My19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMjk1LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIyOTY6ICoga3N6X3BhcmVudF9tZGlvX3dyaXRlIC0gV3JpdGUgZGF0YSB0byBhIFBIWSByZWdpc3RlciBvbiB0aGUgcGFyZW50IE1ESU8gYnVzLlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyOTctICogQGJ1czogTURJTyBidXMgc3RydWN0dXJlLlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjMwNy0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMzA4OmludCBrc3pfcGFyZW50X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjMwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzExLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIzMTI6XFx0cmV0dXJuIG1kaW9idXNfd3JpdGVfbmVzdGVkKGRldi1cXHUwMDNlcGFyZW50X21kaW9fYnVzLCBhZGRyLCByZWdudW0sIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjMxMy19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yNDE2PWludCBrc3pfcGFyc2VfZHRfcGh5X2NvbmZpZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjQ3Mi0vKipcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDczOiAqIGtzel9tZGlvX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgYW5kIGNvbmZpZ3VyZSB0aGUgTURJTyBidXMgZm9yIHRoZSBLU1ogZGV2aWNlLlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0NzQtICogQGRldjogUG9pbnRlciB0byB0aGUgS1NaIGRldmljZSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNDc4LSAqIHRoZSBmdW5jdGlvbiB3aWxsIGNvbmZpZ3VyZSB0aGUgZXh0ZXJuYWwgTURJTyBjb250cm9sbGVyIHNwZWNpZmllZCBieSB0aGVcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDc5OiAqIFxcXCJtZGlvLXBhcmVudC1idXNcXFwiIGRldmljZSB0cmVlIHByb3BlcnR5IHRvIGRpcmVjdGx5IG1hbmFnZSBpbnRlcm5hbCBQSFlzLlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0ODAtICogT3RoZXJ3aXNlLCBTUEkgb3IgSTJDIGFjY2VzcyBpcyBzZXQgdXAgZm9yIFBIWSBhY2Nlc3MuXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yNDg0PWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjQ5Ni1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDk3OlxcdHBhcmVudF9idXNfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUobWRpb19ucCwgXFxcIm1kaW8tcGFyZW50LWJ1c1xcXCIsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0OTgtXFx0aWYgKHBhcmVudF9idXNfbm9kZSBcXHUwMDI2XFx1MDAyNiAhZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VwaHlfc2lkZV9tZGlvX3N1cHBvcnRlZCkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjI0OTk6XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZWRldiwgXFxcIlNpZGUgTURJTyBidXMgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBIVywgaWdub3JpbmcgJ21kaW8tcGFyZW50LWJ1cycgcHJvcGVydHkuXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTAwLVxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTAzLVxcdH0gZWxzZSBpZiAocGFyZW50X2J1c19ub2RlKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjUwNDpcXHRcXHRwYXJlbnRfYnVzID0gb2ZfbWRpb19maW5kX2J1cyhwYXJlbnRfYnVzX25vZGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1MDUtXFx0XFx0aWYgKCFwYXJlbnRfYnVzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTEwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjI1MTE6XFx0XFx0ZGV2LVxcdTAwM2VwYXJlbnRfbWRpb19idXMgPSBwYXJlbnRfYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1MTItXFx0fVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1MTMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjUxNDpcXHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2MoZHMtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjUxNS1cXHRpZiAoIWJ1cykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjU1NS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNTU2OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1NTctXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9MTY0PXN0cnVjdCBrc3pfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTIxNi1cXHQvKipcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDoyMTc6XFx0ICogQHBhcmVudF9tZGlvX2J1czogUG9pbnRlciB0byB0aGUgZXh0ZXJuYWwgTURJTyBidXMgY29udHJvbGxlci5cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yMTgtXFx0ICpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTIyMy1cXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDoyMjQ6XFx0c3RydWN0IG1paV9idXMgKnBhcmVudF9tZGlvX2J1cztcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yMjUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD00NjQ9aW50IGtzel9wYXJzZV9kdF9waHlfY29uZmlnKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHN0cnVjdCBtaWlfYnVzICpidXMsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNDY1LVxcdFxcdFxcdCAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjQ2NjppbnQga3N6X3N3X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDY3OmludCBrc3pfc3dfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDY4OmludCBrc3pfcGFyZW50X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDY5OmludCBrc3pfcGFyZW50X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sIHUxNiB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQ3MC1pbnQga3N6X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTExMD1zdGF0aWMgaW50IGxhbjkzN3hfcG9ydF9jZmcoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGludCBvZmZzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTExOS0gKiBAZGV2OiBQb2ludGVyIHRvIGRldmljZSBzdHJ1Y3R1cmUuXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzoxMjA6ICogQHNpZGVfbWRpbzogQm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBQSFlzIGFyZSBhY2Nlc3NlZCBvdmVyIGEgc2lkZSBNRElPIGJ1cy5cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTEyMS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz0xNDM9c3RhdGljIGludCBsYW45Mzd4X2NyZWF0ZV9waHlfYWRkcl9tYXAoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgYm9vbCBzaWRlX21kaW8pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTIxMC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjIxMTogKiBsYW45Mzd4X21kaW9fYnVzX3ByZWluaXQgLSBQcmUtaW5pdGlhbGl6ZSBNRElPIGJ1cyBmb3IgYWNjZXNzaW5nIFBIWXMuXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy0yMTItICogQGRldjogUG9pbnRlciB0byBkZXZpY2Ugc3RydWN0dXJlLlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6MjEzOiAqIEBzaWRlX21kaW86IEJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgUEhZcyBhcmUgYWNjZXNzZWQgb3ZlciBhIHNpZGUgTURJTyBidXMuXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy0yMTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjI2LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6MjI3OnN0YXRpYyBpbnQgbGFuOTM3eF9tZGlvX2J1c19wcmVpbml0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGJvb2wgc2lkZV9tZGlvKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM9NjY2PXN0YXRpYyBpbnQgbGFuOTM3eF9zd2l0Y2hfaW5pdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy02NzMtLyoqXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo2NzQ6ICogbGFuOTM3eF9tZGlvX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgYW5kIGNvbmZpZ3VyZSB0aGUgTURJTyBidXMgZm9yIHRoZSBMQU45Mzd4LlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNjc1LSAqIEBkZXY6IFBvaW50ZXIgdG8gdGhlIEtTWiBkZXZpY2Ugc3RydWN0dXJlLlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy02NzktICogdGhlIGZ1bmN0aW9uIHdpbGwgY29uZmlndXJlIHRoZSBleHRlcm5hbCBNRElPIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5IHRoZVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NjgwOiAqIFxcXCJtZGlvLXBhcmVudC1idXNcXFwiIGRldmljZSB0cmVlIHByb3BlcnR5IHRvIGRpcmVjdGx5IG1hbmFnZSBpbnRlcm5hbCBQSFlzLlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNjgxLSAqIE90aGVyd2lzZSwgU1BJIG9yIEkyQyBhY2Nlc3MgaXMgc2V0IHVwIGZvciBQSFkgYWNjZXNzLlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNjk3LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6Njk4OlxcdHBhcmVudF9idXNfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUobWRpb19ucCwgXFxcIm1kaW8tcGFyZW50LWJ1c1xcXCIsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNjk5LVxcdGlmIChwYXJlbnRfYnVzX25vZGUgXFx1MDAyNlxcdTAwMjYgIWRldi1cXHUwMDNlaW5mby1cXHUwMDNlcGh5X3NpZGVfbWRpb19zdXBwb3J0ZWQpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjcwMDpcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlZGV2LCBcXFwiU2lkZSBNRElPIGJ1cyBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIEhXLCBpZ25vcmluZyAnbWRpby1wYXJlbnQtYnVzJyBwcm9wZXJ0eS5cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzAxLVxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcwNC1cXHR9IGVsc2UgaWYgKHBhcmVudF9idXNfbm9kZSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzA1OlxcdFxcdHBhcmVudF9idXMgPSBvZl9tZGlvX2ZpbmRfYnVzKHBhcmVudF9idXNfbm9kZSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MDYtXFx0XFx0aWYgKCFwYXJlbnRfYnVzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcxMS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjcxMjpcXHRcXHRkZXYtXFx1MDAzZXBhcmVudF9tZGlvX2J1cyA9IHBhcmVudF9idXM7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MTMtXFx0fVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzE0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzE1OlxcdGJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhkcy1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcxNi1cXHRpZiAoIWJ1cykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MjAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3MjE6XFx0cmV0ID0gbGFuOTM3eF9tZGlvX2J1c19wcmVpbml0KGRldiwgISFwYXJlbnRfYnVzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcyMi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3NTY6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVxcdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE0OD1tdDc1MzBfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTU5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE2MDpcXHRwcml2LVxcdTAwM2VidXMgPSBtZGlvZGV2LVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTYxLVxcdHByaXYtXFx1MDAzZWRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTI1PXN0YXRpYyBpbnQgbXQ3NTMwX3BoeV9yZWFkX2MyMihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mjc6XFx0cmV0dXJuIG1kaW9idXNfcmVhZF9uZXN0ZWQocHJpdi1cXHUwMDNlYnVzLCBwb3J0LCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTUzMD1zdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTMyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTMzOlxcdHJldHVybiBtZGlvYnVzX3dyaXRlX25lc3RlZChwcml2LVxcdTAwM2VidXMsIHBvcnQsIHJlZ251bSwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01MzY9c3RhdGljIGludCBtdDc1MzBfcGh5X3JlYWRfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM4LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTM5OlxcdHJldHVybiBtZGlvYnVzX2M0NV9yZWFkX25lc3RlZChwcml2LVxcdTAwM2VidXMsIHBvcnQsIGRldmFkLCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTU0Mj1zdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDQte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NDU6XFx0cmV0dXJuIG1kaW9idXNfYzQ1X3dyaXRlX25lc3RlZChwcml2LVxcdTAwM2VidXMsIHBvcnQsIGRldmFkLCByZWdudW0sIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjM3MT1tdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM4NC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM4NTpcXHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2MoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM4Ni1cXHRpZiAoIWJ1cykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MDYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0MDc6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDA4LVxcdGlmIChyZXQpIHtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTE6MjU6NDMuNjQxMzAyNzc5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyNjE4NDM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBIWSBEZXZpY2UgUmVnaXN0cmF0aW9uIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBmdW5jdGlvbnMgbGlrZSBgbWRpb2J1c19hbGxvY2AsIGBtZGlvYnVzX3JlZ2lzdGVyYCwgYG1kaW9fZGV2aWNlX2NyZWF0ZWAsIHRoZSBzdGFuZGFyZCBNRElPIGJ1cyBzdHVmZi4gSSBhbHNvIHNwb3QgYGRzYV9sb29wYCwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGNyZWF0aW5nIGEgc3dpdGNoIE1ESU8gZGV2aWNlLiBCdXQgaG9sZCBvbiwgdGhlIGRlc2NyaXB0aW9uIGlzbid0IGp1c3QgYWJvdXQgTURJTyBkZXZpY2VzLCBpdCdzIGFib3V0IFBIWSBkZXZpY2VzLCB0b28sIGlzbid0IGl0PyBSaWdodC5cblxuQWxyaWdodCwgc28gZGlnZ2luZyBhIGJpdCBkZWVwZXIsIEkgc2VlIGBwaHlfZGV2aWNlX3JlZ2lzdGVyYCBnZXRzIGNhbGxlZCBmcm9tIGBwaHlfZGV2aWNlX2NyZWF0ZWAsIGFuZCB0aGF0J3MgdWx0aW1hdGVseSBjYWxsZWQgYnkgYGdldF9waHlfZGV2aWNlYC4gSSBhbHNvIHNlZSB0aGF0IGBzZnAuY2AgaXMgY2FsbGluZyBgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWRgLCB3aGljaCBpcyBpbnRlcmVzdGluZy5cblxuVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFkZGluZyBzdXBwb3J0IGZvciBQU0UgY29udHJvbGxlcnMuIExldCBtZSBxdWlja2x5IHNjYW4gdGhyb3VnaCB0aGUgY29kZSBiYXNlIGFuZCBzZWUgaWYgSSBjYW4gZmluZCBhbnkgZXhpc3RpbmcgUFNFIGNvbnRyb2xsZXIgaW1wbGVtZW50YXRpb25zLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoaXMgc3Vic3lzdGVtIGJlZm9yZSBJIGNhbiBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTY0OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMToyNTo0OC40Njc0OTQ4MzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ0NjgzNTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBzZV9jb250cm9sbGVyX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wc2UtcGQvcGQ2OTJ4MC5jPTE3NTY9c3RhdGljIGludCBwZDY5MngwX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BkNjkyeDAuYy0xODM4LVxcdHByaXYtXFx1MDAzZXBjZGV2LnBpc19wcmlvX21heCA9IDI7XFxuZHJpdmVycy9uZXQvcHNlLXBkL3BkNjkyeDAuYzoxODM5OlxcdHJldCA9IGRldm1fcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoZGV2LCBcXHUwMDI2cHJpdi1cXHUwMDNlcGNkZXYpO1xcbmRyaXZlcnMvbmV0L3BzZS1wZC9wZDY5MngwLmMtMTg0MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM9Mjc9c3RhdGljIEJMT0NLSU5HX05PVElGSUVSX0hFQUQocHNlX2NvbnRyb2xsZXJfbm90aWZpZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMzYtICogc28gYSBQU0UgY29udHJvbGxlciBkcml2ZXIncyBwcm9iZS91bmJpbmQgcGF0aCBtdXN0IG5vdCBob2xkIGFueVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjM3OiAqIHN1Y2ggbG9jayB3aGVuIGNhbGxpbmcgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoKSBvclxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTM4LSAqIHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIoKS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jPTEwNDY9c3RhdGljIHZvaWQgcHNlX3NlbmRfbnRmX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMDY3LS8qKlxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjEwNjg6ICogcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIgLSByZWdpc3RlciBhIFBTRSBjb250cm9sbGVyIGRldmljZVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTEwNjktICogQHBjZGV2OiBhIHBvaW50ZXIgdG8gdGhlIGluaXRpYWxpemVkIFBTRSBjb250cm9sbGVyIGRldmljZVxcbi0tXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTA3Mi0gKi9cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYzoxMDczOmludCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcihzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldilcXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMDc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNDUtfVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExNDY6RVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNDctXFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYz0xMTY5PXN0YXRpYyB2b2lkIGRldm1fcHNlX2NvbnRyb2xsZXJfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNzQtLyoqXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTE3NTogKiBkZXZtX3BzZV9jb250cm9sbGVyX3JlZ2lzdGVyIC0gcmVzb3VyY2UgbWFuYWdlZCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcigpXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE3Ni0gKiBAZGV2OiBkZXZpY2UgdGhhdCBpcyByZWdpc3RlcmluZyB0aGlzIFBTRSBjb250cm9sbGVyXFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTc4LSAqXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTE3OTogKiBNYW5hZ2VkIHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKCkuIEZvciBQU0UgY29udHJvbGxlcnMgcmVnaXN0ZXJlZCBieVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExODAtICogdGhpcyBmdW5jdGlvbiwgcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcigpIGlzIGF1dG9tYXRpY2FsbHkgY2FsbGVkIG9uXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTE4MTogKiBkcml2ZXIgZGV0YWNoLiBTZWUgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTgyLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTg0LSAqL1xcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExODU6aW50IGRldm1fcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExODYtXFx0XFx0XFx0XFx0IHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE5NS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYzoxMTk2OlxcdHJldCA9IHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKHBjZGV2KTtcXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTk3LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTEyMDYtfVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjEyMDc6RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9wc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTIwOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfcmVndWxhdG9yLmM9OTQ9cHNlX3JlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9yZWd1bGF0b3IuYy0xMjYtXFx0cHJpdi1cXHUwMDNlcGNkZXYudHlwZXMgPSBFVEhUT09MX1BTRV9QT0RMO1xcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfcmVndWxhdG9yLmM6MTI3OlxcdHJldCA9IGRldm1fcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoZGV2LCBcXHUwMDI2cHJpdi1cXHUwMDNlcGNkZXYpO1xcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfcmVndWxhdG9yLmMtMTI4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9zaTM0NzQuYz00NzM9c3RhdGljIGludCBzaTM0NzRfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvc2kzNDc0LmMtNTQyLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9zaTM0NzQuYzo1NDM6XFx0cmV0ID0gZGV2bV9wc2VfY29udHJvbGxlcl9yZWdpc3RlcihkZXYsIFxcdTAwMjZwcml2LVxcdTAwM2VwY2Rldik7XFxuZHJpdmVycy9uZXQvcHNlLXBkL3NpMzQ3NC5jLTU0NC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuYz0xNDMwPXN0YXRpYyBpbnQgdHBzMjM4ODFfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuYy0xNTE2LVxcdHByaXYtXFx1MDAzZXBjZGV2LnN1cHBfYnVkZ2V0X2V2YWxfc3RyYXRlZ2llcyA9IFBTRV9CVURHRVRfRVZBTF9TVFJBVF9TVEFUSUM7XFxuZHJpdmVycy9uZXQvcHNlLXBkL3RwczIzODgxLmM6MTUxNzpcXHRyZXQgPSBkZXZtX3BzZV9jb250cm9sbGVyX3JlZ2lzdGVyKGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZXBjZGV2KTtcXG5kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuYy0xNTE4LVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTE6MjU6NDguODEyMTg4ODk1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODc5MzU1MDI3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogUEhZIGFuZCBQU0UgQ29udHJvbGxlciBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UgaGF2ZSBgcHNlX3JlZ3VsYXRvci5jYCwgYSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZWdpc3RlcnMgYSBQU0UgY29udHJvbGxlciB1c2luZyBgZGV2bV9wc2VfY29udHJvbGxlcl9yZWdpc3RlcmAuIEl0IHNlZW1zIGRldmljZSB0cmVlIGluc3RhbnRpYXRlcyBpdCwgd2hpY2ggbWVhbnMgc3l6a2FsbGVyICpjYW4qIGdldCB0byBpdCB2aWEgZGV2aWNlIHRyZWUgaW5qZWN0aW9uIG9yIHBsYXRmb3JtIGRldmljZXMuIE5vLCBzeXprYWxsZXIgZG9lcyAqbm90KiBuZWVkIHN5el9kZXZsaW5rX25ldG5zLCBpdCBoYXMgaXRzIG93biBtZXRob2RzIHRvIGNyZWF0ZSB2aXJ0dWFsIGRldmljZXMuXG5cbkJ1dCwgdGhlIHJlYWwgY3J1eCBvZiB0aGlzIGlzIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgUEhZIGNvZGUsIHNwZWNpZmljYWxseSBgcGh5X2RldmljZS5jYC4gVGhhdCdzIHJlYWNoYWJsZSEgV2UgY2FuIGhpdCB0aGF0IGNvZGUgdGhyb3VnaCB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlcywgbGlrZSBgbWFjc2VjYCwgYHZldGhgLCBvciBgdHVuYC4gV2FpdCwgZG8gdGhvc2UgZXZlbiB1c2UgUEhZcz8gTm8sIGB2ZXRoYCBjZXJ0YWlubHkgZG9lc24ndC4gYG1hYzgwMjExX2h3c2ltYD8gTm9wZS4gQWgsIGJ1dCBgZHNhX2xvb3BgICpkb2VzKi4gSXQgY3JlYXRlcyBhbiBNRElPIGJ1cyBhbmQgUEhZcyEgQW5kIFVTQiBuZXR3b3JrIGFkYXB0ZXJzIGxpa2UgYGFzaXhgIGFuZCBgc21zYzk1eHhgIGRvIHRvbywgY3JlYXRpbmcgTURJTyBidXNlcyBhbmQgUEhZcy4gU3l6a2FsbGVyIGZ1enplZCBVU0IgdmlhIGBkdW1teV9oY2RgICh2aGNpKSwgc28gdGhvc2UgUEhZcyBhcmUgZGVmaW5pdGVseSBmdXp6ZWQuXG5cblNvLCBgcGh5X2RldmljZV9yZWdpc3RlcmAgaXMgcmVhY2hhYmxlIGFuZCBhbHJlYWR5IGhlYXZpbHkgZnV6emVkLCB3aGljaCBtZWFucyB0aGUgbW9kaWZpY2F0aW9uIHRoaXMgcGF0Y2ggbWFrZXMsIGNhbGxpbmcgYHBoeV90cnlfYXR0YWNoX3BzZShwaHlkZXYpYCwgaXMgYWxzbyBmdXp6ZWQuIFBsdXMsIHRoZSBwYXRjaCBhZGRzIGBwaHlfcHNlX25vdGlmaWVyX2V2ZW50YCB3aGVuIGEgUFNFIGNvbnRyb2xsZXIgaXMgcmVnaXN0ZXJlZCBvciB1bnJlZ2lzdGVyZWQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyEgU28sICpXb3J0aEZ1enppbmc9dHJ1ZSouXG5cbk5vdywgdGhlIHRhcmdldCBmdW5jdGlvbnMuLi5JIHNob3VsZCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb246XG5cbiogICBgcGh5X3RyeV9hdHRhY2hfcHNlYFxuKiAgIGBwaHlfcHNlX2F0dGFjaF9vbmVgXG4qICAgYHBoeV9wc2VfZGV0YWNoX29uZWBcbiogICBgcGh5X3BzZV9ub3RpZmllcl9ldmVudGBcbiogICBgX19waHlfZGV2aWNlX3JlZ2lzdGVyYFxuKiAgIGBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZGBcbiogICBgcHNlX3JlZ2lzdGVyX25vdGlmaWVyYFxuKiAgIGBwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcmBcbiogICBgcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldmBcblxuTGFzdGx5LCBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgYENPTkZJR19QU0VfQ09OVFJPTExFUmAgaXMgbmVlZGVkLiBMb29rcyBsaWtlIGl0J3MgZGVmaW5lZCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jYCBhbmQgaXMgbmVlZGVkIHRvIGNvbXBpbGUgdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTk4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDExOjI1OjU3LjYwNTc0Mzc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NzA0NzQzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFNFX0NPTlRST0xMRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BzZS1wZC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvcHNlLXBkL0tjb25maWc6NjptZW51Y29uZmlnIFBTRV9DT05UUk9MTEVSXFxuZHJpdmVycy9uZXQvcHNlLXBkL0tjb25maWctNy1cXHRib29sIFxcXCJFdGhlcm5ldCBQb3dlciBTb3VyY2luZyBFcXVpcG1lbnQgU3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTE6MjU6NTcuOTYyNzk4Njg1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUyMjM5ODA1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQU0UgQ29udHJvbGxlciBBdHRhY2htZW50IExvZ2ljKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgcGF0Y2ggcmVsYXRlZCB0byBQU0UgY29udHJvbGxlciBhdHRhY2htZW50IGZvciBQSFkgZGV2aWNlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGNvbmZpcm1lZDogYFBTRV9DT05UUk9MTEVSYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIEkgc2VlIHRoYXQgYHBoeV9kZXZpY2UuY2AgaXMgY29tcGlsZWQgdW5kZXIgYENPTkZJR19QSFlMSUJgLCBhbmQgdGhlIGNoYW5nZXMgd2l0aGluIGl0IGxldmVyYWdlIGBvZl9wc2VfY29udHJvbF9nZXRgLCB3aGljaCBpcyBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaGAuIFRoZSBjcml0aWNhbCBwb2ludCwgaG93ZXZlciwgaXMgdGhhdCBpZiBgQ09ORklHX1BTRV9DT05UUk9MTEVSYCBpcyAqZGlzYWJsZWQqLCBgb2ZfcHNlX2NvbnRyb2xfZ2V0YCByZXR1cm5zIGBOVUxMYC4gVGhpcyBtZWFucyB0aGF0IHRvIHJlYWxseSB0ZXN0IHRoZSBhdHRhY2htZW50IGxvZ2ljLCB3ZSAqbmVlZCogYFBTRV9DT05UUk9MTEVSYCBlbmFibGVkLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0gdGhpcy4gQSBxdWljayBjaGVjayBvZiBgaW5jbHVkZS9saW51eC9wc2UtcGQvcHNlLmhgIHNvbGlkaWZpZXMgdGhpcy4gV2hlbiBgQ09ORklHX1BTRV9DT05UUk9MTEVSYCBpcyBlbmFibGVkLCB3ZSBnZXQgdGhlIHJlYWwgZGVhbCDigJMgZnVuY3Rpb25zIGxpa2UgYHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXZgLCBgcHNlX3JlZ2lzdGVyX25vdGlmaWVyYCwgYW5kIGBwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcmAgYXJlIGFjdHVhbGx5IGRlZmluZWQuIElmIGl0J3MgZGlzYWJsZWQsIHRoZXNlIGZ1bmN0aW9ucyBhcmUganVzdCBzdHVicyB0aGF0IHJldHVybiBlaXRoZXIgMCBvciBmYWxzZSwgZWZmZWN0aXZlbHkgc2hvcnQtY2lyY3VpdGluZyB0aGUgcmVsZXZhbnQgY29kZS5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBicm9hZGVyIHBpY3R1cmUuIGBDT05GSUdfUEhZTElCYCBpcyBwcmV0dHkgbXVjaCBlbmFibGVkIGV2ZXJ5d2hlcmUuIGBDT05GSUdfT0ZgIGlzIHJlcXVpcmVkIGZvciBgb2ZfcHNlX2NvbnRyb2xfZ2V0YCwgd2hpY2ggaXMgYWxzbyB0eXBpY2FsIG9mIG1vc3QgY29uZmlndXJhdGlvbnMuXG5cbkkndmUgaWRlbnRpZmllZCB0aGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbjogYHBoeV90cnlfYXR0YWNoX3BzZWAsIGBwaHlfcHNlX2F0dGFjaF9vbmVgLCBgcGh5X3BzZV9kZXRhY2hfb25lYCwgYHBoeV9wc2Vfbm90aWZpZXJfZXZlbnRgLCBgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWRgLCBgcHNlX3JlZ2lzdGVyX25vdGlmaWVyYCwgYHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyYCwgYW5kIGBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2YC5cblxuSSd2ZSBjaGVja2VkIHdoZXRoZXIgdGhleSBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBgcGh5X3RyeV9hdHRhY2hfcHNlYCwgYHBoeV9wc2VfYXR0YWNoX29uZWAsIGBwaHlfcHNlX2RldGFjaF9vbmVgLCBhbmQgYHBoeV9wc2Vfbm90aWZpZXJfZXZlbnRgIGFyZSBzdGF0aWMgd2l0aGluIGBwaHlfZGV2aWNlLmNgLiBUaGF0IG1lYW5zIHRoZXkncmUgaW50ZXJuYWwgdG8gdGhlIFBIWSBkZXZpY2UgbG9naWMuIENvbnZlcnNlbHksIGBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZGAsIGBwc2VfcmVnaXN0ZXJfbm90aWZpZXJgLCBgcHNlX3VucmVnaXN0ZXJfbm90aWZpZXJgLCBhbmQgYHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXZgICphcmUqIGV4cG9ydGVkLlxuXG5JIHdhbnQgdG8gZG91YmxlLWNoZWNrIHRoYXQgSSd2ZSBnb3R0ZW4gZXZlcnl0aGluZy4gQWZ0ZXIgYSBxdWljayBzY2FuIG9mIHRoZSBwYXRjaCBkaWZmLCBJIGNhbiBjb25maXJtIHRoZXNlIGFyZSB0aGUgY3JpdGljYWwgc3ltYm9scy4gSSdtIGFkZGluZyB0aGVzZSBmdW5jdGlvbnMgdG8gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QuIFRoZSBjaGFuZ2UgdG8gYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGl0c2VsZiBpcyBub3Rld29ydGh5LCBidXQgaXQgaXMgb2Z0ZW4gY2FsbGVkLCBzbyBJIGNhbiBpbmNsdWRlIGl0LCBidXQgdGhlIG5ldyBsb2dpYyBpcyBtb3JlIGltcG9ydGFudC4gSXQgaXMgd29ydGggbm90aW5nIGl0IGlzIGEgaG90IHBhdGggb24gaW5pdGlhbGl6YXRpb24uXG5cbkhlcmUncyBteSBsaW5lIG9mIHJlYXNvbmluZzogVGhpcyBwYXRjaCBtb2RpZmllcyBob3cgUEhZIGRldmljZXMgcmVnaXN0ZXIgYW5kIGF0dGFjaCB0byBQU0UgY29udHJvbGxlcnMuIEl0IGlzIG1vdmluZyBhd2F5IGZyb20gdGhlIGBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHlgIG1ldGhvZCBhbmQgbm93IHJlbGllcyBvbiBhIG5vdGlmaWVyLWJhc2VkIG1lY2hhbmlzbS4gVGhlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIG1hbmFnZSBQU0UgYXR0YWNobWVudCBhbmQgZGV0YWNobWVudCwgYXMgd2VsbCBhcyBoYW5kbGluZyBub3RpZmllciBldmVudHMuIFRoaXMgaXMgY29yZSBuZXR3b3JraW5nIGxvZ2ljLCBwb3RlbnRpYWxseSByZWFjaGVkIHRocm91Z2ggdmlydHVhbCBNRElPIGJ1c2VzIChsaWtlIHRob3NlIGZvciBVU0IgbmV0d29yayBhZGFwdGVycyBvciBEU0EgbG9vcGJhY2spIGFuZCB2aXJ0dWFsIFBTRSBjb250cm9sbGVycy4gQ29uc2VxdWVudGx5LCBmdXp6aW5nIGVmZm9ydHMgc2hvdWxkIHByaW9yaXRpemUgdGhlIG5ldyBhdHRhY2htZW50IGxvZ2ljIGFuZCB0aGUgYXNzb2NpYXRlZCBub3RpZmllciBjYWxsYmFja3MuXG5cblNvLCB0aGUgY3JpdGljYWwgY29uZmlnIGlzIGBQU0VfQ09OVFJPTExFUmAuIEkndmUgZGV0ZXJtaW5lZCB0aGF0IGBQU0VfQ09OVFJPTExFUmAgaXMgYSBtZW51Y29uZmlnIG9wdGlvbi5cblxuVG8gc3VtIHVwOlxuXG5Db25maWdzOlxuYFBTRV9DT05UUk9MTEVSYFxuXG5Gb2N1c1N5bWJvbHM6XG5gcGh5X3RyeV9hdHRhY2hfcHNlYFxuYHBoeV9wc2VfYXR0YWNoX29uZWBcbmBwaHlfcHNlX2RldGFjaF9vbmVgXG5gcGh5X3BzZV9ub3RpZmllcl9ldmVudGBcbmBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZGBcbmBwc2VfcmVnaXN0ZXJfbm90aWZpZXJgXG5gcHNlX3VucmVnaXN0ZXJfbm90aWZpZXJgXG5gcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldmBcblxuXG4iLCJJbnB1dFRva2VucyI6MjQ3NjAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDExOjI2OjEzLjE4Njc4Mjc1NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg0OTUwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBTRV9DT05UUk9MTEVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BzZS1wZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHNlLXBkL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvS2NvbmZpZzo2Om1lbnVjb25maWcgUFNFX0NPTlRST0xMRVJcXG5kcml2ZXJzL25ldC9wc2UtcGQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIkV0aGVybmV0IFBvd2VyIFNvdXJjaW5nIEVxdWlwbWVudCBTdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMToyNjoxMy4yODUyODYzNDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc0Mjc4OTE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBTaW1wbGVzdCBEYXRhIFBvaW50KipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhlIG1hdHRlciBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgYSBib29sZWFuLiBUaGF0J3MgaXQuIFNpbXBsZSB0cnV0aCB2YWx1ZTsgYSBiaW5hcnkgc3RhdGUuIE5vIGZhbmN5IHN0cnVjdHVyZXMsIG5vIGNvbXBsZXggY2FsY3VsYXRpb25zLi4uIGp1c3QgYSBgYm9vbGAuIEkgaW1tZWRpYXRlbHkgYmVnaW4gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGhhbmRsZSB0aGlzIHBpZWNlIG9mIGRhdGEuXG5cbkdpdmVuIGl0cyBzaW1wbGljaXR5LCBsZXQncyBlc3RhYmxpc2ggYSBjbGVhciBhbmQgY29uY2lzZSBuYW1lIGZvciB0aGUgcHJvY2VzcyBvZiBzZXR0aW5nIHRoZSB2YXJpYWJsZSwgdGhlIHZhbHVlIG9mIHRoZSBib29sZWFuLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgaG93IEknbSBoYW5kbGluZyB0aGUgcHJvY2VzcywgaWYgSSdtIHJldHVybmluZyBhbnl0aGluZyBhbmQgYWxsIG90aGVyIHZhcmlhYmxlcyB0aGF0IGFyZSBiZWluZyBhZmZlY3RlZC4gVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gYWRvcHQgdGhlIG5hbWUgYHNldC1yZXN1bHRzYC4gSXQncyBzdHJhaWdodGZvcndhcmQsIHJlZmxlY3RzIHRoZSBhY3Rpb24gYmVpbmcgcGVyZm9ybWVkLCBhbmQgaG9wZWZ1bGx5LCBrZWVwcyBhbnkgc3Vic2VxdWVudCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIGJvb2xlYW4gY2xlYXIgYW5kIGNvbmNpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTA4LCJPdXRwdXRUb2tlbnMiOjIwMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDExOjI2OjE4LjAyODA4NTkzM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzU5Nzk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFNFX0NPTlRST0xMRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlfdHJ5X2F0dGFjaF9wc2VcIixcbiAgICBcInBoeV9wc2VfYXR0YWNoX29uZVwiLFxuICAgIFwicGh5X3BzZV9kZXRhY2hfb25lXCIsXG4gICAgXCJwaHlfcHNlX25vdGlmaWVyX2V2ZW50XCIsXG4gICAgXCJwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZFwiLFxuICAgIFwicHNlX3JlZ2lzdGVyX25vdGlmaWVyXCIsXG4gICAgXCJwc2VfdW5yZWdpc3Rlcl9ub3RpZmllclwiLFxuICAgIFwicHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBQSFkgZGV2aWNlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHRvIGF0dGFjaCBQb3dlciBTb3VyY2luZyBFcXVpcG1lbnQgKFBTRSkgY29udHJvbGxlcnMgdXNpbmcgYSBub3RpZmllci1iYXNlZCBtZWNoYW5pc20uIEl0IGludHJvZHVjZXMgbmV3IGZ1bmN0aW9ucyB0byBoYW5kbGUgUFNFIGF0dGFjaG1lbnQvZGV0YWNobWVudCBhbmQgbm90aWZpZXIgZXZlbnRzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgTURJTyBidXNlcyAoZS5nLiwgVVNCIG5ldHdvcmsgYWRhcHRlcnMsIERTQSBsb29wYmFjaykgYW5kIHZpcnR1YWwgUFNFIGNvbnRyb2xsZXJzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV3IGF0dGFjaG1lbnQgbG9naWMgYW5kIG5vdGlmaWVyIGNhbGxiYWNrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQU0VfQ09OVFJPTExFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV90cnlfYXR0YWNoX3BzZVwiLFxuICAgIFwicGh5X3BzZV9hdHRhY2hfb25lXCIsXG4gICAgXCJwaHlfcHNlX2RldGFjaF9vbmVcIixcbiAgICBcInBoeV9wc2Vfbm90aWZpZXJfZXZlbnRcIixcbiAgICBcInBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkXCIsXG4gICAgXCJwc2VfcmVnaXN0ZXJfbm90aWZpZXJcIixcbiAgICBcInBzZV91bnJlZ2lzdGVyX25vdGlmaWVyXCIsXG4gICAgXCJwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFBIWSBkZXZpY2UgcmVnaXN0cmF0aW9uIHByb2Nlc3MgdG8gYXR0YWNoIFBvd2VyIFNvdXJjaW5nIEVxdWlwbWVudCAoUFNFKSBjb250cm9sbGVycyB1c2luZyBhIG5vdGlmaWVyLWJhc2VkIG1lY2hhbmlzbS4gSXQgaW50cm9kdWNlcyBuZXcgZnVuY3Rpb25zIHRvIGhhbmRsZSBQU0UgYXR0YWNobWVudC9kZXRhY2htZW50IGFuZCBub3RpZmllciBldmVudHMuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgdmlydHVhbCBNRElPIGJ1c2VzIChlLmcuLCBVU0IgbmV0d29yayBhZGFwdGVycywgRFNBIGxvb3BiYWNrKSBhbmQgdmlydHVhbCBQU0UgY29udHJvbGxlcnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXcgYXR0YWNobWVudCBsb2dpYyBhbmQgbm90aWZpZXIgY2FsbGJhY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowh4fhm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 11:18:15 +0000 UTC FinishedAt: 2026-06-30 11:26:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cef9d6804030793cf8b8796fd6936197d065dd3e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PSE_CONTROLLER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cef9d6804030793cf8b8796fd6936197d065dd3e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PSE_CONTROLLER" ], "series_id": "ce052446-a7f4-4573-bbb4-b3f43e7409cb" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phy_try_attach_pse", "phy_pse_attach_one", "phy_pse_detach_one", "phy_pse_notifier_event", "phy_device_register_locked", "pse_register_notifier", "pse_unregister_notifier", "pse_control_matches_pcdev" ], "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+CgkJCTx0ZD4yMDI2LzA2LzMwIDExOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BTRV9DT05UUk9MTEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X3RyeV9hdHRhY2hfcHNlJiMzNDssCiAgICAmIzM0O3BoeV9wc2VfYXR0YWNoX29uZSYjMzQ7LAogICAgJiMzNDtwaHlfcHNlX2RldGFjaF9vbmUmIzM0OywKICAgICYjMzQ7cGh5X3BzZV9ub3RpZmllcl9ldmVudCYjMzQ7LAogICAgJiMzNDtwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZCYjMzQ7LAogICAgJiMzNDtwc2VfcmVnaXN0ZXJfbm90aWZpZXImIzM0OywKICAgICYjMzQ7cHNlX3VucmVnaXN0ZXJfbm90aWZpZXImIzM0OywKICAgICYjMzQ7cHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUEhZIGRldmljZSByZWdpc3RyYXRpb24gcHJvY2VzcyB0byBhdHRhY2ggUG93ZXIgU291cmNpbmcgRXF1aXBtZW50IChQU0UpIGNvbnRyb2xsZXJzIHVzaW5nIGEgbm90aWZpZXItYmFzZWQgbWVjaGFuaXNtLiBJdCBpbnRyb2R1Y2VzIG5ldyBmdW5jdGlvbnMgdG8gaGFuZGxlIFBTRSBhdHRhY2htZW50L2RldGFjaG1lbnQgYW5kIG5vdGlmaWVyIGV2ZW50cy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB2aXJ0dWFsIE1ESU8gYnVzZXMgKGUuZy4sIFVTQiBuZXR3b3JrIGFkYXB0ZXJzLCBEU0EgbG9vcGJhY2spIGFuZCB2aXJ0dWFsIFBTRSBjb250cm9sbGVycy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyBhdHRhY2htZW50IGxvZ2ljIGFuZCBub3RpZmllciBjYWxsYmFja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTE6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjOGIxZWE5MGIwYzI0YTNmMTQ3ZmJhZjEyNWMyM2JlZWQwOTI2YWU2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTE6MjU6MzMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jIGIvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jXG5pbmRleCBiYTcwOTE1MTgyNjU0MC4uN2JkOTc5YjU5ZjQ5NjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uY1xuQEAgLTExLDMzICYjNDM7MTEsMTEgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9md25vZGVfbWRpby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvcHNlLXBkL3BzZS5oXHUwMDNlXG4gXG4gTU9EVUxFX0FVVEhPUihcJiMzNDtDYWx2aW4gSm9obnNvbiBcdTAwM2NjYWx2aW4uam9obnNvbkBvc3MubnhwLmNvbVx1MDAzZVwmIzM0Oyk7XG4gTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiBNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7RldOT0RFIE1ESU8gYnVzIChFdGhlcm5ldCBQSFkpIGFjY2Vzc29yc1wmIzM0Oyk7XG4gXG4tc3RhdGljIHN0cnVjdCBwc2VfY29udHJvbCAqXG4tZndub2RlX2ZpbmRfcHNlX2NvbnRyb2woc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbi1cdFx0XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYztcbi1cdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7XG4tXG4tXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1BTRV9DT05UUk9MTEVSKSlcbi1cdFx0cmV0dXJuIE5VTEw7XG4tXG4tXHRucCA9IHRvX29mX25vZGUoZndub2RlKTtcbi1cdGlmICghbnApXG4tXHRcdHJldHVybiBOVUxMO1xuLVxuLVx0cHNlYyA9IG9mX3BzZV9jb250cm9sX2dldChucCwgcGh5ZGV2KTtcbi1cdGlmIChQVFJfRVJSKHBzZWMpID09IC1FTk9FTlQpXG4tXHRcdHJldHVybiBOVUxMO1xuLVxuLVx0cmV0dXJuIHBzZWM7XG4tfVxuLVxuIHN0YXRpYyBzdHJ1Y3QgbWlpX3RpbWVzdGFtcGVyICpcbiBmd25vZGVfZmluZF9taWlfdGltZXN0YW1wZXIoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSlcbiB7XG5AQCAtMTE4LDcgJiM0Mzs5Niw2IEBAIGludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcbiBcdFx0XHRcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpjaGlsZCwgdTMyIGFkZHIpXG4ge1xuIFx0c3RydWN0IG1paV90aW1lc3RhbXBlciAqbWlpX3RzID0gTlVMTDtcbi1cdHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyA9IE5VTEw7XG4gXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5O1xuIFx0Ym9vbCBpc19jNDU7XG4gXHR1MzIgcGh5X2lkO1xuQEAgLTE1OSwxNCAmIzQzOzEzNiw2IEBAIGludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcbiBcdFx0XHRnb3RvIGNsZWFuX3BoeTtcbiBcdH1cbiBcbi1cdHBzZWMgPSBmd25vZGVfZmluZF9wc2VfY29udHJvbChjaGlsZCwgcGh5KTtcbi1cdGlmIChJU19FUlIocHNlYykpIHtcbi1cdFx0cmMgPSBQVFJfRVJSKHBzZWMpO1xuLVx0XHRnb3RvIHVucmVnaXN0ZXJfcGh5O1xuLVx0fVxuLVxuLVx0cGh5LVx1MDAzZXBzZWMgPSBwc2VjO1xuLVxuIFx0LyogcGh5LVx1MDAzZW1paV90cyBtYXkgYWxyZWFkeSBiZSBkZWZpbmVkIGJ5IHRoZSBQSFkgZHJpdmVyLiBBXG4gXHQgKiBtaWlfdGltZXN0YW1wZXIgcHJvYmVkIHZpYSB0aGUgZGV2aWNlIHRyZWUgd2lsbCBzdGlsbCBoYXZlXG4gXHQgKiBwcmVjZWRlbmNlLlxuQEAgLTE3Niw5ICYjNDM7MTQ1LDYgQEAgaW50IGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuIFxuIFx0cmV0dXJuIDA7XG4gXG4tdW5yZWdpc3Rlcl9waHk6XG4tXHRpZiAoaXNfYWNwaV9ub2RlKGNoaWxkKSB8fCBpc19vZl9ub2RlKGNoaWxkKSlcbi1cdFx0cGh5X2RldmljZV9yZW1vdmUocGh5KTtcbiBjbGVhbl9waHk6XG4gXHRwaHlfZGV2aWNlX2ZyZWUocGh5KTtcbiBjbGVhbl9taWlfdHM6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbmluZGV4IDA2MTUyMjg0NTllZjQyLi5mNWZlYmZmNGIwMGI4ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0yMjMsOCAmIzQzOzIyMywxOSBAQCBzdGF0aWMgdm9pZCBwaHlfbWRpb19kZXZpY2VfZnJlZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gXG4gc3RhdGljIHZvaWQgcGh5X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbiB7XG4mIzQzO1x0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTtcbiYjNDM7XG4mIzQzO1x0LyogYnVzX2Zvcl9lYWNoX2RldigpIGhvbGRzIGdldF9kZXZpY2UoKSBhY3Jvc3MgZWFjaCBpdGVyYXRpb25cbiYjNDM7XHQgKiBzdGVwLCBkZWZlcnJpbmcgdGhpcyByZWxlYXNlIGNhbGxiYWNrIHVudGlsIGFueSBpbi1mbGlnaHQgUFNFXG4mIzQzO1x0ICogbm90aWZpZXIgd2FsayBoYXMgYWR2YW5jZWQgcGFzdCB0aGlzIHBoeS4gcHNlX2NvbnRyb2xfcHV0KClcbiYjNDM7XHQgKiB0YWtlcyBwc2VfbGlzdF9tdXRleCwgc28gdGhpcyBwYXRoIG11c3QgcnVuIGluIHNsZWVwYWJsZVxuJiM0MztcdCAqIGNvbnRleHQuXG4mIzQzO1x0ICovXG4mIzQzO1x0bWlnaHRfc2xlZXAoKTtcbiYjNDM7XHRwc2VfY29udHJvbF9wdXQocGh5ZGV2LVx1MDAzZXBzZWMpO1xuJiM0MztcbiBcdGZ3bm9kZV9oYW5kbGVfcHV0KGRldi1cdTAwM2Vmd25vZGUpO1xuLVx0a2ZyZWUodG9fcGh5X2RldmljZShkZXYpKTtcbiYjNDM7XHRrZnJlZShwaHlkZXYpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbkBAIC0xMTAyLDExICYjNDM7MTExMywxMDMgQEAgc3RydWN0IHBoeV9kZXZpY2UgKmdldF9waHlfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGlzX2M0NSlcbiB9XG4gRVhQT1JUX1NZTUJPTChnZXRfcGh5X2RldmljZSk7XG4gXG4tLyoqXG4tICogcGh5X2RldmljZV9yZWdpc3RlciAtIFJlZ2lzdGVyIHRoZSBwaHkgZGV2aWNlIG9uIHRoZSBNRElPIGJ1c1xuLSAqIEBwaHlkZXY6IHBoeV9kZXZpY2Ugc3RydWN0dXJlIHRvIGJlIGFkZGVkIHRvIHRoZSBNRElPIGJ1c1xuJiM0MzsvKiBCZXN0LWVmZm9ydCBhdHRhY2ggb2YgcGh5ZGV2LVx1MDAzZXBzZWMgZnJvbSBhIERUIGBwc2VzID0gXHUwMDNjXHUwMDI2Li4uXHUwMDNlYCBwaGFuZGxlLlxuJiM0MzsgKiBDYWxsZXIgbXVzdCBob2xkIHJ0bmwuIEEgbWlzc2luZyBwaGFuZGxlICgtRU5PRU5UKSBvciBhIG5vdC15ZXQtcmVnaXN0ZXJlZFxuJiM0MzsgKiBjb250cm9sbGVyICgtRVBST0JFX0RFRkVSKSBpcyBzaWxlbnQ7IHRoZSBub3RpZmllciByZXRyaWVzIHRoZSBsYXR0ZXIgYXRcbiYjNDM7ICogUFNFX1JFR0lTVEVSRUQgdGltZS4gQW55IG90aGVyIGVycm9yIG1lYW5zIGEgYnJva2VuIGJpbmRpbmcgYW5kIGlzIHdhcm5lZFxuJiM0MzsgKiBhYm91dCwgYnV0IGxlZnQgbm9uLWZhdGFsIHNvIHRoZSBwaHkgc3RpbGwgcmVnaXN0ZXJzLlxuICAqL1xuLWludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3N0YXRpYyB2b2lkIHBoeV90cnlfYXR0YWNoX3BzZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBzZV9jb250cm9sICpwc2VjO1xuJiM0MztcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7XG4mIzQzO1xuJiM0MztcdEFTU0VSVF9SVE5MKCk7XG4mIzQzO1xuJiM0MztcdG5wID0gcGh5ZGV2LVx1MDAzZW1kaW8uZGV2Lm9mX25vZGU7XG4mIzQzO1x0aWYgKCFucClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2Vwc2VjKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRwc2VjID0gb2ZfcHNlX2NvbnRyb2xfZ2V0KG5wLCBwaHlkZXYpO1xuJiM0MztcdGlmIChJU19FUlIocHNlYykpIHtcbiYjNDM7XHRcdGlmIChQVFJfRVJSKHBzZWMpICE9IC1FUFJPQkVfREVGRVIgXHUwMDI2XHUwMDI2IFBUUl9FUlIocHNlYykgIT0gLUVOT0VOVClcbiYjNDM7XHRcdFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcJiMzNDtmYWlsZWQgdG8gZ2V0IFBTRSBjb250cm9sOiAlcGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgIHBzZWMpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cGh5ZGV2LVx1MDAzZXBzZWMgPSBwc2VjO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHBoeV9wc2VfYXR0YWNoX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEgX19tYXliZV91bnVzZWQpXG4mIzQzO3tcbiYjNDM7XHRBU1NFUlRfUlROTCgpO1xuJiM0MztcbiYjNDM7XHRpZiAoZGV2LVx1MDAzZXR5cGUgIT0gXHUwMDI2bWRpb19idXNfcGh5X3R5cGUpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cGh5X3RyeV9hdHRhY2hfcHNlKHRvX3BoeV9kZXZpY2UoZGV2KSk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcGh5X3BzZV9kZXRhY2hfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2ID0gZGF0YTtcbiYjNDM7XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xuJiM0MztcdHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYztcbiYjNDM7XG4mIzQzO1x0QVNTRVJUX1JUTkwoKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGRldi1cdTAwM2V0eXBlICE9IFx1MDAyNm1kaW9fYnVzX3BoeV90eXBlKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTtcbiYjNDM7XHRwc2VjID0gcGh5ZGV2LVx1MDAzZXBzZWM7XG4mIzQzO1x0aWYgKCFwc2VjIHx8ICFwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2KHBzZWMsIHBjZGV2KSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRwaHlkZXYtXHUwMDNlcHNlYyA9IE5VTEw7XG4mIzQzO1x0cHNlX2NvbnRyb2xfcHV0KHBzZWMpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHBoeV9wc2Vfbm90aWZpZXJfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbiYjNDM7XHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKmRhdGEpXG4mIzQzO3tcbiYjNDM7XHRzd2l0Y2ggKGV2ZW50KSB7XG4mIzQzO1x0Y2FzZSBQU0VfUkVHSVNURVJFRDpcbiYjNDM7XHRcdHJ0bmxfbG9jaygpO1xuJiM0MztcdFx0YnVzX2Zvcl9lYWNoX2RldihcdTAwMjZtZGlvX2J1c190eXBlLCBOVUxMLCBOVUxMLFxuJiM0MztcdFx0XHRcdCBwaHlfcHNlX2F0dGFjaF9vbmUpO1xuJiM0MztcdFx0cnRubF91bmxvY2soKTtcbiYjNDM7XHRcdHJldHVybiBOT1RJRllfT0s7XG4mIzQzO1x0Y2FzZSBQU0VfVU5SRUdJU1RFUkVEOlxuJiM0MztcdFx0cnRubF9sb2NrKCk7XG4mIzQzO1x0XHRidXNfZm9yX2VhY2hfZGV2KFx1MDAyNm1kaW9fYnVzX3R5cGUsIE5VTEwsIGRhdGEsXG4mIzQzO1x0XHRcdFx0IHBoeV9wc2VfZGV0YWNoX29uZSk7XG4mIzQzO1x0XHRydG5sX3VubG9jaygpO1xuJiM0MztcdFx0cmV0dXJuIE5PVElGWV9PSztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIE5PVElGWV9ET05FO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBwaHlfcHNlX25vdGlmaWVyIF9fcmVhZF9tb3N0bHkgPSB7XG4mIzQzO1x0Lm5vdGlmaWVyX2NhbGwgPSBwaHlfcHNlX25vdGlmaWVyX2V2ZW50LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7LyogQ29yZSByZWdpc3RyYXRpb246IGFkZCB0aGUgcGh5IHRvIHRoZSBNRElPIGJ1cy4gRG9lcyBub3QgdG91Y2ggcnRubCBvclxuJiM0MzsgKiBQU0UuIHBoeWRldi1cdTAwM2Vwc2VjIGlzIGF0dGFjaGVkIGJ5IHRoZSBjYWxsZXJzIGJlbG93LCBhZnRlciBkZXZpY2VfYWRkKClcbiYjNDM7ICogaGFzIG1hZGUgdGhlIHBoeSB2aXNpYmxlIG9uIG1kaW9fYnVzX3R5cGUsIHNvIHRoYXQgYSBjb25jdXJyZW50IFBTRVxuJiM0MzsgKiBub3RpZmllciB3YWxrIGFuZCB0aGUgYXR0YWNoIGNhbiBuZXZlciBsZWF2ZSB0aGUgcGh5IHVuYXR0YWNoZWQuIEtlZXBpbmdcbiYjNDM7ICogZGV2aWNlX2FkZCgpIG91dCBvZiBydG5sIGFsc28gYXZvaWRzIGRlYWRsb2NraW5nIHdoZW4gYmluZGluZyBhIHBoeSB0aGF0XG4mIzQzOyAqIGl0c2VsZiBwcm92aWRlcyBhbiBTRlAgY2FnZSAocGh5X3Byb2JlKCkgLVx1MDAzZSBwaHlfc2ZwX3Byb2JlKCkgLVx1MDAzZVxuJiM0MzsgKiBzZnBfYnVzX2FkZF91cHN0cmVhbSgpIHRha2VzIHJ0bmwpLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBfX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRpbnQgZXJyO1xuIFxuQEAgLTExMzUsMTAgJiM0MzsxMjM4LDU0IEBAIGludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gIG91dDpcbiBcdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4tXG4gXHRtZGlvYnVzX3VucmVnaXN0ZXJfZGV2aWNlKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvKTtcbiBcdHJldHVybiBlcnI7XG4gfVxuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkIC0gUmVnaXN0ZXIgdGhlIHBoeSBkZXZpY2Ugb24gdGhlIE1ESU8gYnVzXG4mIzQzOyAqIEBwaHlkZXY6IHBoeV9kZXZpY2Ugc3RydWN0dXJlIHRvIGJlIGFkZGVkIHRvIHRoZSBNRElPIGJ1c1xuJiM0MzsgKlxuJiM0MzsgKiBTYW1lIGFzIHBoeV9kZXZpY2VfcmVnaXN0ZXIoKSBidXQgY2FsbGVyIG11c3QgYWxyZWFkeSBob2xkIHJ0bmxfbG9jaygpLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxuJiM0MzsgKi9cbiYjNDM7aW50IHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRBU1NFUlRfUlROTCgpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBfX3BoeV9kZXZpY2VfcmVnaXN0ZXIocGh5ZGV2KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4mIzQzO1x0cGh5X3RyeV9hdHRhY2hfcHNlKHBoeWRldik7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0wocGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWQpO1xuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHBoeV9kZXZpY2VfcmVnaXN0ZXIgLSBSZWdpc3RlciB0aGUgcGh5IGRldmljZSBvbiB0aGUgTURJTyBidXNcbiYjNDM7ICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXG4mIzQzOyAqL1xuJiM0MztpbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gX19waHlfZGV2aWNlX3JlZ2lzdGVyKHBoeWRldik7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1xuJiM0MztcdHJ0bmxfbG9jaygpO1xuJiM0MztcdHBoeV90cnlfYXR0YWNoX3BzZShwaHlkZXYpO1xuJiM0MztcdHJ0bmxfdW5sb2NrKCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4gRVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyKTtcbiBcbiAvKipcbkBAIC0xMTUyLDggJiM0MzsxMjk5LDYgQEAgRVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyKTtcbiB2b2lkIHBoeV9kZXZpY2VfcmVtb3ZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0dW5yZWdpc3Rlcl9taWlfdGltZXN0YW1wZXIocGh5ZGV2LVx1MDAzZW1paV90cyk7XG4tXHRwc2VfY29udHJvbF9wdXQocGh5ZGV2LVx1MDAzZXBzZWMpO1xuLVxuIFx0ZGV2aWNlX2RlbChcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuIFxuIFx0LyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi9cbkBAIC0zOTgxLDggJiM0Mzs0MTI2LDE0IEBAIHN0YXRpYyBpbnQgX19pbml0IHBoeV9pbml0KHZvaWQpXG4gXHRpZiAocmMpXG4gXHRcdGdvdG8gZXJyX2M0NTtcbiBcbiYjNDM7XHRyYyA9IHBzZV9yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZwaHlfcHNlX25vdGlmaWVyKTtcbiYjNDM7XHRpZiAocmMpXG4mIzQzO1x0XHRnb3RvIGVycl9nZW5waHk7XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gXG4mIzQzO2Vycl9nZW5waHk6XG4mIzQzO1x0cGh5X2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmdlbnBoeV9kcml2ZXIpO1xuIGVycl9jNDU6XG4gXHRwaHlfZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2Z2VucGh5X2M0NV9kcml2ZXIpO1xuIGVycl9ldGh0b29sX3BoeV9vcHM6XG5AQCAtMzk5OSw2ICYjNDM7NDE1MCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHBoeV9pbml0KHZvaWQpXG4gXG4gc3RhdGljIHZvaWQgX19leGl0IHBoeV9leGl0KHZvaWQpXG4ge1xuJiM0MztcdHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNnBoeV9wc2Vfbm90aWZpZXIpO1xuIFx0cGh5X2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmdlbnBoeV9jNDVfZHJpdmVyKTtcbiBcdHBoeV9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZnZW5waHlfZHJpdmVyKTtcbiBcdHJ0bmxfbG9jaygpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9zZnAuYyBiL2RyaXZlcnMvbmV0L3BoeS9zZnAuY1xuaW5kZXggMDNiZmQ4NjQwZGI5NjMuLjE4ODY4YmRkNjQ4NTJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3NmcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvc2ZwLmNcbkBAIC0yMDgzLDcgJiM0MzsyMDgzLDcgQEAgc3RhdGljIGludCBzZnBfc21fcHJvYmVfcGh5KHN0cnVjdCBzZnAgKnNmcCwgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxuIFx0LyogTWFyayB0aGlzIFBIWSBhcyBiZWluZyBvbiBhIFNGUCBtb2R1bGUgKi9cbiBcdHBoeS1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlID0gdHJ1ZTtcbiBcbi1cdGVyciA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcbiYjNDM7XHRlcnIgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZChwaHkpO1xuIFx0aWYgKGVycikge1xuIFx0XHRwaHlfZGV2aWNlX2ZyZWUocGh5KTtcbiBcdFx0ZGV2X2VycihzZnAtXHUwMDNlZGV2LCBcJiMzNDtwaHlfZGV2aWNlX3JlZ2lzdGVyIGZhaWxlZDogJXBlXFxuXCYjMzQ7LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jIGIvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmNcbmluZGV4IDY5ZGJkYmRlOWQ3MWE3Li42MTE1NDBkZjQzYmIxYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY1xuQEAgLTgsNiAmIzQzOzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbF9uZXRsaW5rLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbm90aWZpZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BzZS1wZC9wc2UuaFx1MDAzZVxuQEAgLTIzLDYgJiM0MzsyNCwzOSBAQCBzdGF0aWMgTElTVF9IRUFEKHBzZV9jb250cm9sbGVyX2xpc3QpO1xuIHN0YXRpYyBERUZJTkVfWEFSUkFZX0FMTE9DKHBzZV9wd19kX21hcCk7XG4gc3RhdGljIERFRklORV9NVVRFWChwc2VfcHdfZF9tdXRleCk7XG4gXG4mIzQzO3N0YXRpYyBCTE9DS0lOR19OT1RJRklFUl9IRUFEKHBzZV9jb250cm9sbGVyX25vdGlmaWVyKTtcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBwc2VfcmVnaXN0ZXJfbm90aWZpZXIgLSByZWdpc3RlciBhIGNhbGxiYWNrIGZvciBQU0UgY29udHJvbGxlciBldmVudHNcbiYjNDM7ICogQG5iOiBub3RpZmllciBibG9jayB0byByZWdpc3RlclxuJiM0MzsgKlxuJiM0MzsgKiBTZWUgZW51bSBwc2VfY29udHJvbGxlcl9ldmVudCBmb3IgZXZlbnRzIGZpcmVkIGFuZCB0aGVpciBzdWJzY3JpYmVyXG4mIzQzOyAqIGNvbnRyYWN0LiBDYWxsYmFja3MgcnVuIGluIHByb2Nlc3MgY29udGV4dDsgdGhleSBtYXkgc2xlZXAsIHRha2VcbiYjNDM7ICogcnRubCwgYW5kIGNhbGwgb2ZfcHNlX2NvbnRyb2xfZ2V0KCkuIFRoZSBjaGFpbiBmaXJlcyBzeW5jaHJvbm91c2x5LFxuJiM0MzsgKiBzbyBhIFBTRSBjb250cm9sbGVyIGRyaXZlciYjMzk7cyBwcm9iZS91bmJpbmQgcGF0aCBtdXN0IG5vdCBob2xkIGFueVxuJiM0MzsgKiBzdWNoIGxvY2sgd2hlbiBjYWxsaW5nIHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKCkgb3JcbiYjNDM7ICogcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcigpLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4mIzQzOyAqL1xuJiM0MztpbnQgcHNlX3JlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gYmxvY2tpbmdfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoXHUwMDI2cHNlX2NvbnRyb2xsZXJfbm90aWZpZXIsIG5iKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwc2VfcmVnaXN0ZXJfbm90aWZpZXIpO1xuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyIC0gdW5yZWdpc3RlciBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBjYWxsYmFja1xuJiM0MzsgKiBAbmI6IG5vdGlmaWVyIGJsb2NrIHByZXZpb3VzbHkgcGFzc2VkIHRvIHBzZV9yZWdpc3Rlcl9ub3RpZmllcigpXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS5cbiYjNDM7ICovXG4mIzQzO2ludCBwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoXHUwMDI2cHNlX2NvbnRyb2xsZXJfbm90aWZpZXIsIG5iKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcik7XG4mIzQzO1xuIC8qKlxuICAqIHN0cnVjdCBwc2VfY29udHJvbCAtIGEgUFNFIGNvbnRyb2xcbiAgKiBAcGNkZXY6IGEgcG9pbnRlciB0byB0aGUgUFNFIGNvbnRyb2xsZXIgZGV2aWNlXG5AQCAtMTEwNCw2ICYjNDM7MTEzOCw5IEBAIGludCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcihzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldilcbiBcdGxpc3RfYWRkKFx1MDAyNnBjZGV2LVx1MDAzZWxpc3QsIFx1MDAyNnBzZV9jb250cm9sbGVyX2xpc3QpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBzZV9saXN0X211dGV4KTtcbiBcbiYjNDM7XHRibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKFx1MDAyNnBzZV9jb250cm9sbGVyX25vdGlmaWVyLFxuJiM0MztcdFx0XHRcdCAgICAgUFNFX1JFR0lTVEVSRUQsIHBjZGV2KTtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIpO1xuQEAgLTExMTQsNiAmIzQzOzExNTEsOSBAQCBFWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XG4gICovXG4gdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxuIHtcbiYjNDM7XHRibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKFx1MDAyNnBzZV9jb250cm9sbGVyX25vdGlmaWVyLFxuJiM0MztcdFx0XHRcdCAgICAgUFNFX1VOUkVHSVNURVJFRCwgcGNkZXYpO1xuJiM0MztcbiBcdHBzZV9mbHVzaF9wd19kcyhwY2Rldik7XG4gXHRwc2VfcmVsZWFzZV9waXMocGNkZXYpO1xuIFx0aWYgKHBjZGV2LVx1MDAzZWlycSlcbkBAIC0xOTgxLDMgJiM0MzsyMDIxLDE3IEBAIGJvb2wgcHNlX2hhc19jMzMoc3RydWN0IHBzZV9jb250cm9sICpwc2VjKVxuIFx0cmV0dXJuIHBzZWMtXHUwMDNlcGNkZXYtXHUwMDNldHlwZXMgXHUwMDI2IEVUSFRPT0xfUFNFX0MzMztcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocHNlX2hhc19jMzMpO1xuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYgLSBUZXN0IHdoZXRoZXIgYSBwc2VfY29udHJvbCB0YXJnZXRzIGEgY29udHJvbGxlclxuJiM0MzsgKiBAcHNlYzogcHNlX2NvbnRyb2wgb2J0YWluZWQgZnJvbSBvZl9wc2VfY29udHJvbF9nZXQoKVxuJiM0MzsgKiBAcGNkZXY6IFBTRSBjb250cm9sbGVyIHRvIGNvbXBhcmUgYWdhaW5zdFxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46ICV0cnVlIGlmIEBwc2VjIHdhcyBvYnRhaW5lZCBmcm9tIEBwY2RldiwgJWZhbHNlIG90aGVyd2lzZS5cbiYjNDM7ICovXG4mIzQzO2Jvb2wgcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldihzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMsXG4mIzQzO1x0XHRcdCAgICAgICBzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldilcbiYjNDM7e1xuJiM0MztcdHJldHVybiBwc2VjLVx1MDAzZXBjZGV2ID09IHBjZGV2O1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5pbmRleCAxOTlhN2FhYTM0MWJmZC4uODY1YjliYWRkYjg1ZmEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtMjE1OCw2ICYjNDM7MjE1OCw4IEBAIHN0cnVjdCBwaHlfZGV2aWNlICpmd25vZGVfcGh5X2ZpbmRfZGV2aWNlKHN0cnVjdCBmd25vZGVfaGFuZGxlICpwaHlfZndub2RlKTtcbiBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlX2dldF9waHlfbm9kZShjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKTtcbiBzdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KTtcbiBpbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KTtcbiYjNDM7LyogQ2FsbGVyIG11c3QgaG9sZCBydG5sX2xvY2soKTsgc2VlIHBoeV9kZXZpY2VfcmVnaXN0ZXIoKSBmb3IgdGhlIHB1YmxpYyBmb3JtLiAqL1xuJiM0MztpbnQgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSk7XG4gdm9pZCBwaHlfZGV2aWNlX2ZyZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gdm9pZCBwaHlfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgcGh5X2dldF9jNDVfaWRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHNlLXBkL3BzZS5oIGIvaW5jbHVkZS9saW51eC9wc2UtcGQvcHNlLmhcbmluZGV4IDRlNTY5NmNmYWRlN2NjLi5kNDMxMGNhNzFhM2UwOCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcHNlLXBkL3BzZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaFxuQEAgLTIxLDYgJiM0MzsyMSw3IEBAIHN0cnVjdCBuZXRfZGV2aWNlO1xuIHN0cnVjdCBwaHlfZGV2aWNlO1xuIHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXY7XG4gc3RydWN0IG5ldGxpbmtfZXh0X2FjaztcbiYjNDM7c3RydWN0IG5vdGlmaWVyX2Jsb2NrO1xuIFxuIC8qIEMzMyBQU0UgZXh0ZW5kZWQgc3RhdGUgYW5kIHN1YnN0YXRlLiAqL1xuIHN0cnVjdCBldGh0b29sX2MzM19wc2VfZXh0X3N0YXRlX2luZm8ge1xuQEAgLTMzNyw2ICYjNDM7MzM4LDI0IEBAIGVudW0gcHNlX2J1ZGdldF9ldmFsX3N0cmF0ZWdpZXMge1xuIFx0UFNFX0JVREdFVF9FVkFMX1NUUkFUX0RZTkFNSUNcdD0gMSBcdTAwM2NcdTAwM2MgMixcbiB9O1xuIFxuJiM0MzsvKipcbiYjNDM7ICogZW51bSBwc2VfY29udHJvbGxlcl9ldmVudCAtIFBTRSBjb250cm9sbGVyIGxpZmVjeWNsZSBldmVudHNcbiYjNDM7ICpcbiYjNDM7ICogRXZlbnQgZGF0YSBpbiBjYWxsYmFja3MgaXMgYWx3YXlzIGEgcG9pbnRlciB0byB0aGUgc3RydWN0XG4mIzQzOyAqIHBzZV9jb250cm9sbGVyX2RldiBmaXJpbmcgdGhlIGV2ZW50LlxuJiM0MzsgKlxuJiM0MzsgKiBAUFNFX1JFR0lTVEVSRUQ6IGNvbnRyb2xsZXIgYWRkZWQgdG8gcHNlX2NvbnRyb2xsZXJfbGlzdCBhbmRcbiYjNDM7ICpcdHJlc29sdmFibGUgYnkgb2ZfcHNlX2NvbnRyb2xfZ2V0KCkuXG4mIzQzOyAqIEBQU0VfVU5SRUdJU1RFUkVEOiBjb250cm9sbGVyIGFib3V0IHRvIGJlIHJlbW92ZWQgZnJvbVxuJiM0MzsgKlx0cHNlX2NvbnRyb2xsZXJfbGlzdC4gU3Vic2NyaWJlcnMgaG9sZGluZyBwc2VfY29udHJvbCByZWZlcmVuY2VzXG4mIzQzOyAqXHR0YXJnZXRpbmcgaXQgbXVzdCBkcm9wIHRoZW0gYmVmb3JlIHJldHVybmluZyBhbmQgbXVzdCBub3RcbiYjNDM7ICpcdGFjcXVpcmUgbmV3IHJlZmVyZW5jZXMgZm9yIGl0LlxuJiM0MzsgKi9cbiYjNDM7ZW51bSBwc2VfY29udHJvbGxlcl9ldmVudCB7XG4mIzQzO1x0UFNFX1JFR0lTVEVSRUQsXG4mIzQzO1x0UFNFX1VOUkVHSVNURVJFRCxcbiYjNDM7fTtcbiYjNDM7XG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX1BTRV9DT05UUk9MTEVSKVxuIGludCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcihzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2Rldik7XG4gdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KTtcbkBAIC0zNjYsNiAmIzQzOzM4NSwxMiBAQCBpbnQgcHNlX2V0aHRvb2xfc2V0X3ByaW8oc3RydWN0IHBzZV9jb250cm9sICpwc2VjLFxuIGJvb2wgcHNlX2hhc19wb2RsKHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyk7XG4gYm9vbCBwc2VfaGFzX2MzMyhzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMpO1xuIFxuJiM0Mztib29sIHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYoc3RydWN0IHBzZV9jb250cm9sICpwc2VjLFxuJiM0MztcdFx0XHQgICAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpO1xuJiM0MztcbiYjNDM7aW50IHBzZV9yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTtcbiYjNDM7aW50IHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpO1xuJiM0MztcbiAjZWxzZVxuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBzZV9jb250cm9sICpvZl9wc2VfY29udHJvbF9nZXQoc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuQEAgLTQxNiw2ICYjNDM7NDQxLDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwc2VfaGFzX2MzMyhzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMpXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldihzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMsXG4mIzQzO1x0XHRcdFx0XHQgICAgIHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGZhbHNlO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGludCBwc2VfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGludCBwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gI2VuZGlmXG4gXG4gI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTE6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFNFX0NPTlRST0xMRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfdHJ5X2F0dGFjaF9wc2UmIzM0OywKICAgICYjMzQ7cGh5X3BzZV9hdHRhY2hfb25lJiMzNDssCiAgICAmIzM0O3BoeV9wc2VfZGV0YWNoX29uZSYjMzQ7LAogICAgJiMzNDtwaHlfcHNlX25vdGlmaWVyX2V2ZW50JiMzNDssCiAgICAmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkJiMzNDssCiAgICAmIzM0O3BzZV9yZWdpc3Rlcl9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtwc2VfdW5yZWdpc3Rlcl9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBQSFkgZGV2aWNlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHRvIGF0dGFjaCBQb3dlciBTb3VyY2luZyBFcXVpcG1lbnQgKFBTRSkgY29udHJvbGxlcnMgdXNpbmcgYSBub3RpZmllci1iYXNlZCBtZWNoYW5pc20uIEl0IGludHJvZHVjZXMgbmV3IGZ1bmN0aW9ucyB0byBoYW5kbGUgUFNFIGF0dGFjaG1lbnQvZGV0YWNobWVudCBhbmQgbm90aWZpZXIgZXZlbnRzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgTURJTyBidXNlcyAoZS5nLiwgVVNCIG5ldHdvcmsgYWRhcHRlcnMsIERTQSBsb29wYmFjaykgYW5kIHZpcnR1YWwgUFNFIGNvbnRyb2xsZXJzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV3IGF0dGFjaG1lbnQgbG9naWMgYW5kIG5vdGlmaWVyIGNhbGxiYWNrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzhiMWVhOTBiMGMyNGEzZjE0N2ZiYWYxMjVjMjNiZWVkMDkyNmFlNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDExOjI1OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jIGIvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jCmluZGV4IGJhNzA5MTUxODI2NTQwLi43YmQ5NzliNTlmNDk2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYwpAQCAtMTEsMzMgJiM0MzsxMSwxMSBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2Z3bm9kZV9tZGlvLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9waHkuaCZndDsKLSNpbmNsdWRlICZsdDtsaW51eC9wc2UtcGQvcHNlLmgmZ3Q7CiAKIE1PRFVMRV9BVVRIT1IoJiMzNDtDYWx2aW4gSm9obnNvbiAmbHQ7Y2FsdmluLmpvaG5zb25Ab3NzLm54cC5jb20mZ3Q7JiMzNDspOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CiBNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtGV05PREUgTURJTyBidXMgKEV0aGVybmV0IFBIWSkgYWNjZXNzb3JzJiMzNDspOwogCi1zdGF0aWMgc3RydWN0IHBzZV9jb250cm9sICoKLWZ3bm9kZV9maW5kX3BzZV9jb250cm9sKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsCi0JCQlzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQotewotCXN0cnVjdCBwc2VfY29udHJvbCAqcHNlYzsKLQlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOwotCi0JaWYgKCFJU19FTkFCTEVEKENPTkZJR19QU0VfQ09OVFJPTExFUikpCi0JCXJldHVybiBOVUxMOwotCi0JbnAgPSB0b19vZl9ub2RlKGZ3bm9kZSk7Ci0JaWYgKCFucCkKLQkJcmV0dXJuIE5VTEw7Ci0KLQlwc2VjID0gb2ZfcHNlX2NvbnRyb2xfZ2V0KG5wLCBwaHlkZXYpOwotCWlmIChQVFJfRVJSKHBzZWMpID09IC1FTk9FTlQpCi0JCXJldHVybiBOVUxMOwotCi0JcmV0dXJuIHBzZWM7Ci19Ci0KIHN0YXRpYyBzdHJ1Y3QgbWlpX3RpbWVzdGFtcGVyICoKIGZ3bm9kZV9maW5kX21paV90aW1lc3RhbXBlcihzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKQogewpAQCAtMTE4LDcgJiM0Mzs5Niw2IEBAIGludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cywKIAkJCQlzdHJ1Y3QgZndub2RlX2hhbmRsZSAqY2hpbGQsIHUzMiBhZGRyKQogewogCXN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cyA9IE5VTEw7Ci0Jc3RydWN0IHBzZV9jb250cm9sICpwc2VjID0gTlVMTDsKIAlzdHJ1Y3QgcGh5X2RldmljZSAqcGh5OwogCWJvb2wgaXNfYzQ1OwogCXUzMiBwaHlfaWQ7CkBAIC0xNTksMTQgJiM0MzsxMzYsNiBAQCBpbnQgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICpidXMsCiAJCQlnb3RvIGNsZWFuX3BoeTsKIAl9CiAKLQlwc2VjID0gZndub2RlX2ZpbmRfcHNlX2NvbnRyb2woY2hpbGQsIHBoeSk7Ci0JaWYgKElTX0VSUihwc2VjKSkgewotCQlyYyA9IFBUUl9FUlIocHNlYyk7Ci0JCWdvdG8gdW5yZWdpc3Rlcl9waHk7Ci0JfQotCi0JcGh5LSZndDtwc2VjID0gcHNlYzsKLQogCS8qIHBoeS0mZ3Q7bWlpX3RzIG1heSBhbHJlYWR5IGJlIGRlZmluZWQgYnkgdGhlIFBIWSBkcml2ZXIuIEEKIAkgKiBtaWlfdGltZXN0YW1wZXIgcHJvYmVkIHZpYSB0aGUgZGV2aWNlIHRyZWUgd2lsbCBzdGlsbCBoYXZlCiAJICogcHJlY2VkZW5jZS4KQEAgLTE3Niw5ICYjNDM7MTQ1LDYgQEAgaW50IGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLAogCiAJcmV0dXJuIDA7CiAKLXVucmVnaXN0ZXJfcGh5OgotCWlmIChpc19hY3BpX25vZGUoY2hpbGQpIHx8IGlzX29mX25vZGUoY2hpbGQpKQotCQlwaHlfZGV2aWNlX3JlbW92ZShwaHkpOwogY2xlYW5fcGh5OgogCXBoeV9kZXZpY2VfZnJlZShwaHkpOwogY2xlYW5fbWlpX3RzOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKaW5kZXggMDYxNTIyODQ1OWVmNDIuLmY1ZmViZmY0YjAwYjhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKQEAgLTIyMyw4ICYjNDM7MjIzLDE5IEBAIHN0YXRpYyB2b2lkIHBoeV9tZGlvX2RldmljZV9mcmVlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldikKIAogc3RhdGljIHZvaWQgcGh5X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldikKIHsKJiM0MzsJc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTsKJiM0MzsKJiM0MzsJLyogYnVzX2Zvcl9lYWNoX2RldigpIGhvbGRzIGdldF9kZXZpY2UoKSBhY3Jvc3MgZWFjaCBpdGVyYXRpb24KJiM0MzsJICogc3RlcCwgZGVmZXJyaW5nIHRoaXMgcmVsZWFzZSBjYWxsYmFjayB1bnRpbCBhbnkgaW4tZmxpZ2h0IFBTRQomIzQzOwkgKiBub3RpZmllciB3YWxrIGhhcyBhZHZhbmNlZCBwYXN0IHRoaXMgcGh5LiBwc2VfY29udHJvbF9wdXQoKQomIzQzOwkgKiB0YWtlcyBwc2VfbGlzdF9tdXRleCwgc28gdGhpcyBwYXRoIG11c3QgcnVuIGluIHNsZWVwYWJsZQomIzQzOwkgKiBjb250ZXh0LgomIzQzOwkgKi8KJiM0MzsJbWlnaHRfc2xlZXAoKTsKJiM0MzsJcHNlX2NvbnRyb2xfcHV0KHBoeWRldi0mZ3Q7cHNlYyk7CiYjNDM7CiAJZndub2RlX2hhbmRsZV9wdXQoZGV2LSZndDtmd25vZGUpOwotCWtmcmVlKHRvX3BoeV9kZXZpY2UoZGV2KSk7CiYjNDM7CWtmcmVlKHBoeWRldik7CiB9CiAKIHN0YXRpYyB2b2lkIHBoeV9tZGlvX2RldmljZV9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KQpAQCAtMTEwMiwxMSAmIzQzOzExMTMsMTAzIEBAIHN0cnVjdCBwaHlfZGV2aWNlICpnZXRfcGh5X2RldmljZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpCiB9CiBFWFBPUlRfU1lNQk9MKGdldF9waHlfZGV2aWNlKTsKIAotLyoqCi0gKiBwaHlfZGV2aWNlX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgdGhlIHBoeSBkZXZpY2Ugb24gdGhlIE1ESU8gYnVzCi0gKiBAcGh5ZGV2OiBwaHlfZGV2aWNlIHN0cnVjdHVyZSB0byBiZSBhZGRlZCB0byB0aGUgTURJTyBidXMKJiM0MzsvKiBCZXN0LWVmZm9ydCBhdHRhY2ggb2YgcGh5ZGV2LSZndDtwc2VjIGZyb20gYSBEVCBgcHNlcyA9ICZsdDsmYW1wOy4uLiZndDtgIHBoYW5kbGUuCiYjNDM7ICogQ2FsbGVyIG11c3QgaG9sZCBydG5sLiBBIG1pc3NpbmcgcGhhbmRsZSAoLUVOT0VOVCkgb3IgYSBub3QteWV0LXJlZ2lzdGVyZWQKJiM0MzsgKiBjb250cm9sbGVyICgtRVBST0JFX0RFRkVSKSBpcyBzaWxlbnQ7IHRoZSBub3RpZmllciByZXRyaWVzIHRoZSBsYXR0ZXIgYXQKJiM0MzsgKiBQU0VfUkVHSVNURVJFRCB0aW1lLiBBbnkgb3RoZXIgZXJyb3IgbWVhbnMgYSBicm9rZW4gYmluZGluZyBhbmQgaXMgd2FybmVkCiYjNDM7ICogYWJvdXQsIGJ1dCBsZWZ0IG5vbi1mYXRhbCBzbyB0aGUgcGh5IHN0aWxsIHJlZ2lzdGVycy4KICAqLwotaW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0MztzdGF0aWMgdm9pZCBwaHlfdHJ5X2F0dGFjaF9wc2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwc2VfY29udHJvbCAqcHNlYzsKJiM0MzsJc3RydWN0IGRldmljZV9ub2RlICpucDsKJiM0MzsKJiM0MzsJQVNTRVJUX1JUTkwoKTsKJiM0MzsKJiM0MzsJbnAgPSBwaHlkZXYtJmd0O21kaW8uZGV2Lm9mX25vZGU7CiYjNDM7CWlmICghbnApCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWlmIChwaHlkZXYtJmd0O3BzZWMpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXBzZWMgPSBvZl9wc2VfY29udHJvbF9nZXQobnAsIHBoeWRldik7CiYjNDM7CWlmIChJU19FUlIocHNlYykpIHsKJiM0MzsJCWlmIChQVFJfRVJSKHBzZWMpICE9IC1FUFJPQkVfREVGRVIgJmFtcDsmYW1wOyBQVFJfRVJSKHBzZWMpICE9IC1FTk9FTlQpCiYjNDM7CQkJcGh5ZGV2X3dhcm4ocGh5ZGV2LCAmIzM0O2ZhaWxlZCB0byBnZXQgUFNFIGNvbnRyb2w6ICVwZVxuJiMzNDssCiYjNDM7CQkJCSAgICBwc2VjKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlwaHlkZXYtJmd0O3BzZWMgPSBwc2VjOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHBoeV9wc2VfYXR0YWNoX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEgX19tYXliZV91bnVzZWQpCiYjNDM7ewomIzQzOwlBU1NFUlRfUlROTCgpOwomIzQzOwomIzQzOwlpZiAoZGV2LSZndDt0eXBlICE9ICZhbXA7bWRpb19idXNfcGh5X3R5cGUpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJcGh5X3RyeV9hdHRhY2hfcHNlKHRvX3BoeV9kZXZpY2UoZGV2KSk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHBoeV9wc2VfZGV0YWNoX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldiA9IGRhdGE7CiYjNDM7CXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7CiYjNDM7CXN0cnVjdCBwc2VfY29udHJvbCAqcHNlYzsKJiM0MzsKJiM0MzsJQVNTRVJUX1JUTkwoKTsKJiM0MzsKJiM0MzsJaWYgKGRldi0mZ3Q7dHlwZSAhPSAmYW1wO21kaW9fYnVzX3BoeV90eXBlKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTsKJiM0MzsJcHNlYyA9IHBoeWRldi0mZ3Q7cHNlYzsKJiM0MzsJaWYgKCFwc2VjIHx8ICFwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2KHBzZWMsIHBjZGV2KSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlwaHlkZXYtJmd0O3BzZWMgPSBOVUxMOwomIzQzOwlwc2VfY29udHJvbF9wdXQocHNlYyk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHBoeV9wc2Vfbm90aWZpZXJfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKJiM0MzsJCQkJICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpkYXRhKQomIzQzO3sKJiM0MzsJc3dpdGNoIChldmVudCkgewomIzQzOwljYXNlIFBTRV9SRUdJU1RFUkVEOgomIzQzOwkJcnRubF9sb2NrKCk7CiYjNDM7CQlidXNfZm9yX2VhY2hfZGV2KCZhbXA7bWRpb19idXNfdHlwZSwgTlVMTCwgTlVMTCwKJiM0MzsJCQkJIHBoeV9wc2VfYXR0YWNoX29uZSk7CiYjNDM7CQlydG5sX3VubG9jaygpOwomIzQzOwkJcmV0dXJuIE5PVElGWV9PSzsKJiM0MzsJY2FzZSBQU0VfVU5SRUdJU1RFUkVEOgomIzQzOwkJcnRubF9sb2NrKCk7CiYjNDM7CQlidXNfZm9yX2VhY2hfZGV2KCZhbXA7bWRpb19idXNfdHlwZSwgTlVMTCwgZGF0YSwKJiM0MzsJCQkJIHBoeV9wc2VfZGV0YWNoX29uZSk7CiYjNDM7CQlydG5sX3VubG9jaygpOwomIzQzOwkJcmV0dXJuIE5PVElGWV9PSzsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiBOT1RJRllfRE9ORTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHBoeV9wc2Vfbm90aWZpZXIgX19yZWFkX21vc3RseSA9IHsKJiM0MzsJLm5vdGlmaWVyX2NhbGwgPSBwaHlfcHNlX25vdGlmaWVyX2V2ZW50LAomIzQzO307CiYjNDM7CiYjNDM7LyogQ29yZSByZWdpc3RyYXRpb246IGFkZCB0aGUgcGh5IHRvIHRoZSBNRElPIGJ1cy4gRG9lcyBub3QgdG91Y2ggcnRubCBvcgomIzQzOyAqIFBTRS4gcGh5ZGV2LSZndDtwc2VjIGlzIGF0dGFjaGVkIGJ5IHRoZSBjYWxsZXJzIGJlbG93LCBhZnRlciBkZXZpY2VfYWRkKCkKJiM0MzsgKiBoYXMgbWFkZSB0aGUgcGh5IHZpc2libGUgb24gbWRpb19idXNfdHlwZSwgc28gdGhhdCBhIGNvbmN1cnJlbnQgUFNFCiYjNDM7ICogbm90aWZpZXIgd2FsayBhbmQgdGhlIGF0dGFjaCBjYW4gbmV2ZXIgbGVhdmUgdGhlIHBoeSB1bmF0dGFjaGVkLiBLZWVwaW5nCiYjNDM7ICogZGV2aWNlX2FkZCgpIG91dCBvZiBydG5sIGFsc28gYXZvaWRzIGRlYWRsb2NraW5nIHdoZW4gYmluZGluZyBhIHBoeSB0aGF0CiYjNDM7ICogaXRzZWxmIHByb3ZpZGVzIGFuIFNGUCBjYWdlIChwaHlfcHJvYmUoKSAtJmd0OyBwaHlfc2ZwX3Byb2JlKCkgLSZndDsKJiM0MzsgKiBzZnBfYnVzX2FkZF91cHN0cmVhbSgpIHRha2VzIHJ0bmwpLgomIzQzOyAqLwomIzQzO3N0YXRpYyBpbnQgX19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJaW50IGVycjsKIApAQCAtMTEzNSwxMCAmIzQzOzEyMzgsNTQgQEAgaW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKICBvdXQ6CiAJLyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi8KIAlwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7Ci0KIAltZGlvYnVzX3VucmVnaXN0ZXJfZGV2aWNlKCZhbXA7cGh5ZGV2LSZndDttZGlvKTsKIAlyZXR1cm4gZXJyOwogfQomIzQzOwomIzQzOy8qKgomIzQzOyAqIHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkIC0gUmVnaXN0ZXIgdGhlIHBoeSBkZXZpY2Ugb24gdGhlIE1ESU8gYnVzCiYjNDM7ICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzCiYjNDM7ICoKJiM0MzsgKiBTYW1lIGFzIHBoeV9kZXZpY2VfcmVnaXN0ZXIoKSBidXQgY2FsbGVyIG11c3QgYWxyZWFkeSBob2xkIHJ0bmxfbG9jaygpLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KJiM0MzsgKi8KJiM0MztpbnQgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CUFTU0VSVF9SVE5MKCk7CiYjNDM7CiYjNDM7CWVyciA9IF9fcGh5X2RldmljZV9yZWdpc3RlcihwaHlkZXYpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJcGh5X3RyeV9hdHRhY2hfcHNlKHBoeWRldik7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkKTsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBwaHlfZGV2aWNlX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgdGhlIHBoeSBkZXZpY2Ugb24gdGhlIE1ESU8gYnVzCiYjNDM7ICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgomIzQzOyAqLwomIzQzO2ludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwllcnIgPSBfX3BoeV9kZXZpY2VfcmVnaXN0ZXIocGh5ZGV2KTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiYjNDM7CXJ0bmxfbG9jaygpOwomIzQzOwlwaHlfdHJ5X2F0dGFjaF9wc2UocGh5ZGV2KTsKJiM0MzsJcnRubF91bmxvY2soKTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQogRVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyKTsKIAogLyoqCkBAIC0xMTUyLDggJiM0MzsxMjk5LDYgQEAgRVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyKTsKIHZvaWQgcGh5X2RldmljZV9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKIAl1bnJlZ2lzdGVyX21paV90aW1lc3RhbXBlcihwaHlkZXYtJmd0O21paV90cyk7Ci0JcHNlX2NvbnRyb2xfcHV0KHBoeWRldi0mZ3Q7cHNlYyk7Ci0KIAlkZXZpY2VfZGVsKCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldik7CiAKIAkvKiBBc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqLwpAQCAtMzk4MSw4ICYjNDM7NDEyNiwxNCBAQCBzdGF0aWMgaW50IF9faW5pdCBwaHlfaW5pdCh2b2lkKQogCWlmIChyYykKIAkJZ290byBlcnJfYzQ1OwogCiYjNDM7CXJjID0gcHNlX3JlZ2lzdGVyX25vdGlmaWVyKCZhbXA7cGh5X3BzZV9ub3RpZmllcik7CiYjNDM7CWlmIChyYykKJiM0MzsJCWdvdG8gZXJyX2dlbnBoeTsKJiM0MzsKIAlyZXR1cm4gMDsKIAomIzQzO2Vycl9nZW5waHk6CiYjNDM7CXBoeV9kcml2ZXJfdW5yZWdpc3RlcigmYW1wO2dlbnBoeV9kcml2ZXIpOwogZXJyX2M0NToKIAlwaHlfZHJpdmVyX3VucmVnaXN0ZXIoJmFtcDtnZW5waHlfYzQ1X2RyaXZlcik7CiBlcnJfZXRodG9vbF9waHlfb3BzOgpAQCAtMzk5OSw2ICYjNDM7NDE1MCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHBoeV9pbml0KHZvaWQpCiAKIHN0YXRpYyB2b2lkIF9fZXhpdCBwaHlfZXhpdCh2b2lkKQogewomIzQzOwlwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcigmYW1wO3BoeV9wc2Vfbm90aWZpZXIpOwogCXBoeV9kcml2ZXJfdW5yZWdpc3RlcigmYW1wO2dlbnBoeV9jNDVfZHJpdmVyKTsKIAlwaHlfZHJpdmVyX3VucmVnaXN0ZXIoJmFtcDtnZW5waHlfZHJpdmVyKTsKIAlydG5sX2xvY2soKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9zZnAuYyBiL2RyaXZlcnMvbmV0L3BoeS9zZnAuYwppbmRleCAwM2JmZDg2NDBkYjk2My4uMTg4NjhiZGQ2NDg1MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9zZnAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvc2ZwLmMKQEAgLTIwODMsNyAmIzQzOzIwODMsNyBAQCBzdGF0aWMgaW50IHNmcF9zbV9wcm9iZV9waHkoc3RydWN0IHNmcCAqc2ZwLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpCiAJLyogTWFyayB0aGlzIFBIWSBhcyBiZWluZyBvbiBhIFNGUCBtb2R1bGUgKi8KIAlwaHktJmd0O2lzX29uX3NmcF9tb2R1bGUgPSB0cnVlOwogCi0JZXJyID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpOwomIzQzOwllcnIgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZChwaHkpOwogCWlmIChlcnIpIHsKIAkJcGh5X2RldmljZV9mcmVlKHBoeSk7CiAJCWRldl9lcnIoc2ZwLSZndDtkZXYsICYjMzQ7cGh5X2RldmljZV9yZWdpc3RlciBmYWlsZWQ6ICVwZVxuJiMzNDssCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jCmluZGV4IDY5ZGJkYmRlOWQ3MWE3Li42MTE1NDBkZjQzYmIxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMKQEAgLTgsNiAmIzQzOzgsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2RldmljZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V0aHRvb2wuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9ldGh0b29sX25ldGxpbmsuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbm90aWZpZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BzZS1wZC9wc2UuaCZndDsKQEAgLTIzLDYgJiM0MzsyNCwzOSBAQCBzdGF0aWMgTElTVF9IRUFEKHBzZV9jb250cm9sbGVyX2xpc3QpOwogc3RhdGljIERFRklORV9YQVJSQVlfQUxMT0MocHNlX3B3X2RfbWFwKTsKIHN0YXRpYyBERUZJTkVfTVVURVgocHNlX3B3X2RfbXV0ZXgpOwogCiYjNDM7c3RhdGljIEJMT0NLSU5HX05PVElGSUVSX0hFQUQocHNlX2NvbnRyb2xsZXJfbm90aWZpZXIpOwomIzQzOwomIzQzOy8qKgomIzQzOyAqIHBzZV9yZWdpc3Rlcl9ub3RpZmllciAtIHJlZ2lzdGVyIGEgY2FsbGJhY2sgZm9yIFBTRSBjb250cm9sbGVyIGV2ZW50cwomIzQzOyAqIEBuYjogbm90aWZpZXIgYmxvY2sgdG8gcmVnaXN0ZXIKJiM0MzsgKgomIzQzOyAqIFNlZSBlbnVtIHBzZV9jb250cm9sbGVyX2V2ZW50IGZvciBldmVudHMgZmlyZWQgYW5kIHRoZWlyIHN1YnNjcmliZXIKJiM0MzsgKiBjb250cmFjdC4gQ2FsbGJhY2tzIHJ1biBpbiBwcm9jZXNzIGNvbnRleHQ7IHRoZXkgbWF5IHNsZWVwLCB0YWtlCiYjNDM7ICogcnRubCwgYW5kIGNhbGwgb2ZfcHNlX2NvbnRyb2xfZ2V0KCkuIFRoZSBjaGFpbiBmaXJlcyBzeW5jaHJvbm91c2x5LAomIzQzOyAqIHNvIGEgUFNFIGNvbnRyb2xsZXIgZHJpdmVyJiMzOTtzIHByb2JlL3VuYmluZCBwYXRoIG11c3Qgbm90IGhvbGQgYW55CiYjNDM7ICogc3VjaCBsb2NrIHdoZW4gY2FsbGluZyBwc2VfY29udHJvbGxlcl9yZWdpc3RlcigpIG9yCiYjNDM7ICogcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcigpLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgomIzQzOyAqLwomIzQzO2ludCBwc2VfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKJiM0Mzt7CiYjNDM7CXJldHVybiBibG9ja2luZ19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcigmYW1wO3BzZV9jb250cm9sbGVyX25vdGlmaWVyLCBuYik7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHBzZV9yZWdpc3Rlcl9ub3RpZmllcik7CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogcHNlX3VucmVnaXN0ZXJfbm90aWZpZXIgLSB1bnJlZ2lzdGVyIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIGNhbGxiYWNrCiYjNDM7ICogQG5iOiBub3RpZmllciBibG9jayBwcmV2aW91c2x5IHBhc3NlZCB0byBwc2VfcmVnaXN0ZXJfbm90aWZpZXIoKQomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgomIzQzOyAqLwomIzQzO2ludCBwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKQomIzQzO3sKJiM0MzsJcmV0dXJuIGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoJmFtcDtwc2VfY29udHJvbGxlcl9ub3RpZmllciwgbmIpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcik7CiYjNDM7CiAvKioKICAqIHN0cnVjdCBwc2VfY29udHJvbCAtIGEgUFNFIGNvbnRyb2wKICAqIEBwY2RldjogYSBwb2ludGVyIHRvIHRoZSBQU0UgY29udHJvbGxlciBkZXZpY2UKQEAgLTExMDQsNiAmIzQzOzExMzgsOSBAQCBpbnQgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpCiAJbGlzdF9hZGQoJmFtcDtwY2Rldi0mZ3Q7bGlzdCwgJmFtcDtwc2VfY29udHJvbGxlcl9saXN0KTsKIAltdXRleF91bmxvY2soJmFtcDtwc2VfbGlzdF9tdXRleCk7CiAKJiM0MzsJYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFpbigmYW1wO3BzZV9jb250cm9sbGVyX25vdGlmaWVyLAomIzQzOwkJCQkgICAgIFBTRV9SRUdJU1RFUkVELCBwY2Rldik7CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7CkBAIC0xMTE0LDYgJiM0MzsxMTUxLDkgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIpOwogICovCiB2b2lkIHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpCiB7CiYjNDM7CWJsb2NraW5nX25vdGlmaWVyX2NhbGxfY2hhaW4oJmFtcDtwc2VfY29udHJvbGxlcl9ub3RpZmllciwKJiM0MzsJCQkJICAgICBQU0VfVU5SRUdJU1RFUkVELCBwY2Rldik7CiYjNDM7CiAJcHNlX2ZsdXNoX3B3X2RzKHBjZGV2KTsKIAlwc2VfcmVsZWFzZV9waXMocGNkZXYpOwogCWlmIChwY2Rldi0mZ3Q7aXJxKQpAQCAtMTk4MSwzICYjNDM7MjAyMSwxNyBAQCBib29sIHBzZV9oYXNfYzMzKHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYykKIAlyZXR1cm4gcHNlYy0mZ3Q7cGNkZXYtJmd0O3R5cGVzICZhbXA7IEVUSFRPT0xfUFNFX0MzMzsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9oYXNfYzMzKTsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2IC0gVGVzdCB3aGV0aGVyIGEgcHNlX2NvbnRyb2wgdGFyZ2V0cyBhIGNvbnRyb2xsZXIKJiM0MzsgKiBAcHNlYzogcHNlX2NvbnRyb2wgb2J0YWluZWQgZnJvbSBvZl9wc2VfY29udHJvbF9nZXQoKQomIzQzOyAqIEBwY2RldjogUFNFIGNvbnRyb2xsZXIgdG8gY29tcGFyZSBhZ2FpbnN0CiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46ICV0cnVlIGlmIEBwc2VjIHdhcyBvYnRhaW5lZCBmcm9tIEBwY2RldiwgJWZhbHNlIG90aGVyd2lzZS4KJiM0MzsgKi8KJiM0Mztib29sIHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYoc3RydWN0IHBzZV9jb250cm9sICpwc2VjLAomIzQzOwkJCSAgICAgICBzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldikKJiM0Mzt7CiYjNDM7CXJldHVybiBwc2VjLSZndDtwY2RldiA9PSBwY2RldjsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xfbWF0Y2hlc19wY2Rldik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaAppbmRleCAxOTlhN2FhYTM0MWJmZC4uODY1YjliYWRkYjg1ZmEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9waHkuaApAQCAtMjE1OCw2ICYjNDM7MjE1OCw4IEBAIHN0cnVjdCBwaHlfZGV2aWNlICpmd25vZGVfcGh5X2ZpbmRfZGV2aWNlKHN0cnVjdCBmd25vZGVfaGFuZGxlICpwaHlfZndub2RlKTsKIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGVfZ2V0X3BoeV9ub2RlKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpOwogc3RydWN0IHBoeV9kZXZpY2UgKmdldF9waHlfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGlzX2M0NSk7CiBpbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KTsKJiM0MzsvKiBDYWxsZXIgbXVzdCBob2xkIHJ0bmxfbG9jaygpOyBzZWUgcGh5X2RldmljZV9yZWdpc3RlcigpIGZvciB0aGUgcHVibGljIGZvcm0uICovCiYjNDM7aW50IHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpOwogdm9pZCBwaHlfZGV2aWNlX2ZyZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiB2b2lkIHBoeV9kZXZpY2VfcmVtb3ZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwogaW50IHBoeV9nZXRfYzQ1X2lkcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHNlLXBkL3BzZS5oIGIvaW5jbHVkZS9saW51eC9wc2UtcGQvcHNlLmgKaW5kZXggNGU1Njk2Y2ZhZGU3Y2MuLmQ0MzEwY2E3MWEzZTA4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaApAQCAtMjEsNiAmIzQzOzIxLDcgQEAgc3RydWN0IG5ldF9kZXZpY2U7CiBzdHJ1Y3QgcGh5X2RldmljZTsKIHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXY7CiBzdHJ1Y3QgbmV0bGlua19leHRfYWNrOwomIzQzO3N0cnVjdCBub3RpZmllcl9ibG9jazsKIAogLyogQzMzIFBTRSBleHRlbmRlZCBzdGF0ZSBhbmQgc3Vic3RhdGUuICovCiBzdHJ1Y3QgZXRodG9vbF9jMzNfcHNlX2V4dF9zdGF0ZV9pbmZvIHsKQEAgLTMzNyw2ICYjNDM7MzM4LDI0IEBAIGVudW0gcHNlX2J1ZGdldF9ldmFsX3N0cmF0ZWdpZXMgewogCVBTRV9CVURHRVRfRVZBTF9TVFJBVF9EWU5BTUlDCT0gMSAmbHQ7Jmx0OyAyLAogfTsKIAomIzQzOy8qKgomIzQzOyAqIGVudW0gcHNlX2NvbnRyb2xsZXJfZXZlbnQgLSBQU0UgY29udHJvbGxlciBsaWZlY3ljbGUgZXZlbnRzCiYjNDM7ICoKJiM0MzsgKiBFdmVudCBkYXRhIGluIGNhbGxiYWNrcyBpcyBhbHdheXMgYSBwb2ludGVyIHRvIHRoZSBzdHJ1Y3QKJiM0MzsgKiBwc2VfY29udHJvbGxlcl9kZXYgZmlyaW5nIHRoZSBldmVudC4KJiM0MzsgKgomIzQzOyAqIEBQU0VfUkVHSVNURVJFRDogY29udHJvbGxlciBhZGRlZCB0byBwc2VfY29udHJvbGxlcl9saXN0IGFuZAomIzQzOyAqCXJlc29sdmFibGUgYnkgb2ZfcHNlX2NvbnRyb2xfZ2V0KCkuCiYjNDM7ICogQFBTRV9VTlJFR0lTVEVSRUQ6IGNvbnRyb2xsZXIgYWJvdXQgdG8gYmUgcmVtb3ZlZCBmcm9tCiYjNDM7ICoJcHNlX2NvbnRyb2xsZXJfbGlzdC4gU3Vic2NyaWJlcnMgaG9sZGluZyBwc2VfY29udHJvbCByZWZlcmVuY2VzCiYjNDM7ICoJdGFyZ2V0aW5nIGl0IG11c3QgZHJvcCB0aGVtIGJlZm9yZSByZXR1cm5pbmcgYW5kIG11c3Qgbm90CiYjNDM7ICoJYWNxdWlyZSBuZXcgcmVmZXJlbmNlcyBmb3IgaXQuCiYjNDM7ICovCiYjNDM7ZW51bSBwc2VfY29udHJvbGxlcl9ldmVudCB7CiYjNDM7CVBTRV9SRUdJU1RFUkVELAomIzQzOwlQU0VfVU5SRUdJU1RFUkVELAomIzQzO307CiYjNDM7CiAjaWYgSVNfRU5BQkxFRChDT05GSUdfUFNFX0NPTlRST0xMRVIpCiBpbnQgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpOwogdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KTsKQEAgLTM2Niw2ICYjNDM7Mzg1LDEyIEBAIGludCBwc2VfZXRodG9vbF9zZXRfcHJpbyhzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMsCiBib29sIHBzZV9oYXNfcG9kbChzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMpOwogYm9vbCBwc2VfaGFzX2MzMyhzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMpOwogCiYjNDM7Ym9vbCBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2KHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYywKJiM0MzsJCQkgICAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpOwomIzQzOwomIzQzO2ludCBwc2VfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CiYjNDM7aW50IHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwomIzQzOwogI2Vsc2UKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgcHNlX2NvbnRyb2wgKm9mX3BzZV9jb250cm9sX2dldChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsCkBAIC00MTYsNiAmIzQzOzQ0MSwyMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcHNlX2hhc19jMzMoc3RydWN0IHBzZV9jb250cm9sICpwc2VjKQogCXJldHVybiBmYWxzZTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2KHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYywKJiM0MzsJCQkJCSAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpCiYjNDM7ewomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgaW50IHBzZV9yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKQomIzQzO3sKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgaW50IHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiAjZW5kaWYKIAogI2VuZGlmCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDExOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxODkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBTRS9QSFkgQXR0YWNobWVudCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgcmVmYWN0b3IsIG1vdmluZyB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIFBvd2VyIFNvdXJjaW5nIEVxdWlwbWVudCAoUFNFKSBjb250cm9sbGVycyBhbmQgUEhZIGRldmljZXMgYXdheSBmcm9tIHRoZSBgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5YCBmdW5jdGlvbiB0byBhIG5vdGlmaWVyLWJhc2VkIHN5c3RlbSB3aXRoaW4gYHBoeV9kZXZpY2UuY2AuIFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIGFyY2hpdGVjdHVyYWwgY2hvaWNlLCBJIGNhbiBzZWUgdGhlIGFkdmFudGFnZXMgb2YgZGVjb3VwbGluZyB0aGUgYXR0YWNobWVudCBwcm9jZXNzLiBUaGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGBwaHlfcHNlX25vdGlmaWVyX2V2ZW50YCB0byBsaXN0ZW4gZm9yIGBQU0VfUkVHSVNURVJFRGAgYW5kIGBQU0VfVU5SRUdJU1RFUkVEYCBldmVudHMsIHdoaWNoIGlzIHRoZSBjb3JlIG9mIHRoZSBuZXcgbWVjaGFuaXNtLiBJdCBhbHNvIGludHJvZHVjZXMgZnVuY3Rpb25zIGxpa2UgYHBoeV90cnlfYXR0YWNoX3BzZWAsIGBwaHlfcHNlX2F0dGFjaF9vbmVgLCBhbmQgYHBoeV9wc2VfZGV0YWNoX29uZWAgdG8gaGFuZGxlIHRoZSBhY3R1YWwgYXR0YWNobWVudCBhbmQgZGV0YWNobWVudCBsb2dpYy4gTW9kaWZ5aW5nIHRoZSBgcGh5X2RldmljZV9yZWdpc3RlcmAgZnVuY3Rpb24gdG8gdHJpZ2dlciBQU0UgYXR0YWNobWVudCBpcyBhbHNvIGEgbG9naWNhbCBzdGVwLCBhbG9uZyB3aXRoIHRoZSBhZGRpdGlvbiBvZiBgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWRgIHRvIG1hbmFnZSBjb25jdXJyZW5jeS4gRmluYWxseSwgdGhlIGludHJvZHVjdGlvbiBvZiBgcHNlX3JlZ2lzdGVyX25vdGlmaWVyYCBhbmQgYHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyYCBpbiBgcHNlX2NvcmUuY2Agc29saWRpZmllcyB0aGUgbm90aWZpZXItYmFzZWQgYXJjaGl0ZWN0dXJlLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBjYW4gdGhpcyBjb2RlIGJlIHJlYWNoZWQgYW5kIGZ1enplZD8gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29kZSBpcyBpbiBgcGh5X2RldmljZS5jYCBhbmQgYHBzZV9jb3JlLmNgLCBib3RoIGZpcm1seSB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgUEhZIGFuZCBQU0UuIFdlIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXZSBjb3VsZCByZWdpc3RlciB2aXJ0dWFsIFBIWXMsIG9yIHVzZSBkdW1teSBuZXR3b3JrIGRldmljZXMgdGhhdCBtaWdodCBoYXZlIGFzc29jaWF0ZWQgUEhZcy4gVGhhdCBsb29rcyBmZWFzaWJsZS4gTm93LCB0aGUgYG1kaW9fYnVzYCBpcyBjcmVhdGVkIGJ5IGBtYWNiYCwgYGZlY2AsIGFuZCBvdGhlciBkcml2ZXJzLiBCdXQgd2hhdCBhYm91dCB2aXJ0dWFsIGRyaXZlcnM/IEkgbmVlZCB0byBjaGVjayBgbWRpb19idXMuY2AgaW4gdGhlIHBoeSBkaXJlY3RvcnksIHRoYXQmIzM5O3Mgd2hlcmUgTURJTyBidXNlcyBhcmUgbWFuYWdlZC4KClRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gd2UgY3JlYXRlIGFuIE1ESU8gYnVzIGFuZCBQSFkgZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgb3IgdmlhIGEgdmlydHVhbCBkcml2ZXI/IEkgbmVlZCB0byBkaWcgZGVlcGVyIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHZpcnR1YWwgTURJTyBkcml2ZXJzIG9yIFBTRSBjb250cm9sbGVycyBhdmFpbGFibGUgaW4gdGhlIGtlcm5lbC4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIG1ha2luZyB0aGlzIGZ1enphYmxlIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudC4gTmVlZCB0byBpZGVudGlmeSBob3cgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHdvcmtzIGZvciB0aGVzZSBwaWVjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpby4qYnVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5NzcwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0xMTI4PXN0YXRpYyBzdHJ1Y3QgcGh5X2RldmljZSAqYjUzX2dldF9waHlfZGV2aWNlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTEzNy1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjExMzg6XHRyZXR1cm4gbWRpb2J1c19nZXRfcGh5KGRzLVx1MDAzZXVzZXJfbWlpX2J1cywgcG9ydCk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xMTM5LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9NDI9c3RhdGljIGludCBiNTNfbWRpb19vcChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsIHUxNiBvcClcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtNTEtXHRcdHYgPSAocGFnZSBcdTAwM2NcdTAwM2MgOCkgfCBSRUdfTUlJX1BBR0VfRU5BQkxFO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjUyOlx0XHRyZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTUzLVx0XHRcdFx0XHQgICBSRUdfTUlJX1BBR0UsIHYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy02MC1cdHYgPSAocmVnIFx1MDAzY1x1MDAzYyA4KSB8IG9wO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjYxOlx0cmV0ID0gbWRpb2J1c193cml0ZV9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUiwgUkVHX01JSV9BRERSLCB2KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy02Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTY2LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgNTsgJiM0MzsmIzQzO2kpIHtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzo2NzpcdFx0diA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy02OC1cdFx0XHRcdFx0UkVHX01JSV9BRERSKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9ODA9c3RhdGljIGludCBiNTNfbWRpb19yZWFkOChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsIHU4ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTg4LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjg5Olx0KnZhbCA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy05MC1cdFx0XHRcdCAgIFJFR19NSUlfREFUQTApIFx1MDAyNiAweGZmO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz05NT1zdGF0aWMgaW50IGI1M19tZGlvX3JlYWQxNihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsIHUxNiAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0xMDMtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MTA0Olx0KnZhbCA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUiwgUkVHX01JSV9EQVRBMCk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMTA1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0xMDk9c3RhdGljIGludCBiNTNfbWRpb19yZWFkMzIoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgdTggcGFnZSwgdTggcmVnLCB1MzIgKnZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMTE3LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjExODpcdCp2YWwgPSBtZGlvYnVzX3JlYWRfbmVzdGVkKGJ1cywgQlJDTV9QU0VVRE9fUEhZX0FERFIsIFJFR19NSUlfREFUQTApO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjExOTpcdCp2YWwgfD0gbWRpb2J1c19yZWFkX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTEyMC1cdFx0XHRcdCAgICBSRUdfTUlJX0RBVEExKSBcdTAwM2NcdTAwM2MgMTY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTEyNT1zdGF0aWMgaW50IGI1M19tZGlvX3JlYWQ0OChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsIHU2NCAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0xMzctXHRcdHRlbXAgXHUwMDNjXHUwMDNjPSAxNjtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoxMzg6XHRcdHRlbXAgfD0gbWRpb2J1c19yZWFkX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTEzOS1cdFx0XHRcdCAgICAgUkVHX01JSV9EQVRBMCAmIzQzOyBpKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MTQ3PXN0YXRpYyBpbnQgYjUzX21kaW9fcmVhZDY0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZywgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE1OS1cdFx0dGVtcCBcdTAwM2NcdTAwM2M9IDE2O1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjE2MDpcdFx0dGVtcCB8PSBtZGlvYnVzX3JlYWRfbmVzdGVkKGJ1cywgQlJDTV9QU0VVRE9fUEhZX0FERFIsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMTYxLVx0XHRcdFx0XHQgICAgUkVHX01JSV9EQVRBMCAmIzQzOyBpKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MTY5PXN0YXRpYyBpbnQgYjUzX21kaW9fd3JpdGU4KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZywgdTggdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE3My1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoxNzQ6XHRyZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE3NS1cdFx0XHRcdCAgIFJFR19NSUlfREFUQTAsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MTgyPXN0YXRpYyBpbnQgYjUzX21kaW9fd3JpdGUxNihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE4Ny1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoxODg6XHRyZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE4OS1cdFx0XHRcdCAgIFJFR19NSUlfREFUQTAsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MTk2PXN0YXRpYyBpbnQgYjUzX21kaW9fd3JpdGUzMihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTIwMy1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDI7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MjA0Olx0XHRpbnQgcmV0ID0gbWRpb2J1c193cml0ZV9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0yMDUtXHRcdFx0XHRcdCAgICAgICBSRUdfTUlJX0RBVEEwICYjNDM7IGksXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTIxNT1zdGF0aWMgaW50IGI1M19tZGlvX3dyaXRlNDgoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgdTggcGFnZSwgdTggcmVnLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0yMjItXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjIyMzpcdFx0aW50IHJldCA9IG1kaW9idXNfd3JpdGVfbmVzdGVkKGJ1cywgQlJDTV9QU0VVRE9fUEhZX0FERFIsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMjI0LVx0XHRcdFx0XHQgICAgICAgUkVHX01JSV9EQVRBMCAmIzQzOyBpLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0yMzQ9c3RhdGljIGludCBiNTNfbWRpb193cml0ZTY0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMjQxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgNDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoyNDI6XHRcdGludCByZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTI0My1cdFx0XHRcdFx0ICAgICAgIFJFR19NSUlfREFUQTAgJiM0MzsgaSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MjUzPXN0YXRpYyBpbnQgYjUzX21kaW9fcGh5X3JlYWQxNihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgYWRkciwgaW50IHJlZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMjU3LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjI1ODpcdCp2YWx1ZSA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBhZGRyLCByZWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTI1OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MjYzPXN0YXRpYyBpbnQgYjUzX21kaW9fcGh5X3dyaXRlMTYoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IGFkZHIsIGludCByZWcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTI2Ny1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoyNjg6XHRyZXR1cm4gbWRpb2J1c193cml0ZV9uZXN0ZWQoYnVzLCBhZGRyLCByZWcsIHZhbHVlKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0yNjktfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0yOTI9c3RhdGljIGludCBiNTNfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTMwNy1cdC8qIHJlYWQgdGhlIGZpcnN0IHBvcnQmIzM5O3MgaWQgKi9cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzozMDg6XHRwaHlfaWQgPSBtZGlvYnVzX3JlYWQobWRpb2Rldi1cdTAwM2VidXMsIDAsIDIpIFx1MDAzY1x1MDAzYyAxNjtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzozMDk6XHRwaHlfaWQgfD0gbWRpb2J1c19yZWFkKG1kaW9kZXYtXHUwMDNlYnVzLCAwLCAzKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zMTAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTMzMS1cdGlmIChvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXCYjMzQ7YnJjbSxiY203NDQ1ZDBcJiMzNDspIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjMzMjpcdCAgICBzdHJjbXAobWRpb2Rldi1cdTAwM2VidXMtXHUwMDNlbmFtZSwgXCYjMzQ7c2YyIHVzZXIgbWlpXCYjMzQ7KSlcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zMzMtXHRcdHJldHVybiAtRVBST0JFX0RFRkVSO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTMzNC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzozMzU6XHRkZXYgPSBiNTNfc3dpdGNoX2FsbG9jKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2LCBcdTAwMjZiNTNfbWRpb19vcHMsIG1kaW9kZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zMzYtXHRpZiAoIWRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMzQwLVx0ZGV2LVx1MDAzZWN1cnJlbnRfcGFnZSA9IDB4ZmY7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MzQxOlx0ZGV2LVx1MDAzZWJ1cyA9IG1kaW9kZXYtXHUwMDNlYnVzO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTM0Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTM4MT1zdGF0aWMgaW50IGJjbV9zZjJfc3dfaW5kaXJfcncoc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdiwgaW50IG9wLCBpbnQgYWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQxMS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDEyOnN0YXRpYyBpbnQgYmNtX3NmMl9zd19tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQxMy17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00MjEtXHRlbHNlXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjQyMjpcdFx0cmV0dXJuIG1kaW9idXNfcmVhZF9uZXN0ZWQocHJpdi1cdTAwM2VtYXN0ZXJfbWlpX2J1cywgYWRkciwgcmVnbnVtKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDIzLX1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDI0LVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo0MjU6c3RhdGljIGludCBiY21fc2YyX3N3X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQyNi1cdFx0XHRcdCB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDM1LVx0ZWxzZVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo0MzY6XHRcdHJldHVybiBtZGlvYnVzX3dyaXRlX25lc3RlZChwcml2LVx1MDAzZW1hc3Rlcl9taWlfYnVzLCBhZGRyLFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00MzctXHRcdFx0XHRyZWdudW0sIHZhbCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjE3LVx0ZG4gPSBvZl9maW5kX2NvbXBhdGlibGVfbm9kZShOVUxMLCBOVUxMLCBcJiMzNDticmNtLHVuaW1hYy1tZGlvXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NjE4Olx0cHJpdi1cdTAwM2VtYXN0ZXJfbWlpX2J1cyA9IG9mX21kaW9fZmluZF9idXMoZG4pO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02MTktXHRpZiAoIXByaXYtXHUwMDNlbWFzdGVyX21paV9idXMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTYyMy1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NjI0Olx0cHJpdi1cdTAwM2V1c2VyX21paV9idXMgPSBtZGlvYnVzX2FsbG9jKCk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTYyNS1cdGlmICghcHJpdi1cdTAwM2V1c2VyX21paV9idXMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4My1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6Njg0Olx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02OTItZXJyX2ZyZWVfdXNlcl9taWlfYnVzOlxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2OTM6XHRtZGlvYnVzX2ZyZWUocHJpdi1cdTAwM2V1c2VyX21paV9idXMpO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02OTQtZXJyX3B1dF9tYXN0ZXJfbWlpX2J1c19kZXY6XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz03MDE9c3RhdGljIHZvaWQgYmNtX3NmMl9tZGlvX3VucmVnaXN0ZXIoc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzAyLXtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NzAzOlx0bWRpb2J1c191bnJlZ2lzdGVyKHByaXYtXHUwMDNldXNlcl9taWlfYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NzA0Olx0bWRpb2J1c19mcmVlKHByaXYtXHUwMDNldXNlcl9taWlfYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzA1LVx0cHV0X2RldmljZShcdTAwMjZwcml2LVx1MDAzZW1hc3Rlcl9taWlfYnVzLVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MTg0PXN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3JlYWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxOTA6XHRyZXQgPSBtZGlvYnVzX3JlYWRfbmVzdGVkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIHJlZ251bSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xOTEtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTE5OT1zdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwNjpcdHJldCA9IG1kaW9idXNfd3JpdGVfbmVzdGVkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIHJlZ251bSwgdmFsdWUpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjA3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0yNTA9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjYzLVx0LyogSnVzdCBkbyBhIHNsZWVwaW5nIG9wZXJhdGlvbiB0byBtYWtlIGxvY2tkZXAgY2hlY2tzIGVmZmVjdGl2ZSAqL1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjY0Olx0bWRpb2J1c19yZWFkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIE1JSV9CTVNSKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2NS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0yODM9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkyLVx0LyogSnVzdCBkbyBhIHNsZWVwaW5nIG9wZXJhdGlvbiB0byBtYWtlIGxvY2tkZXAgY2hlY2tzIGVmZmVjdGl2ZSAqL1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkzOlx0bWRpb2J1c19yZWFkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIE1JSV9CTVNSKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zNTU9c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cdGRzLVx1MDAzZXByaXYgPSBwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4NTpcdHBzLVx1MDAzZWJ1cyA9IG1kaW9kZXYtXHUwMDNlYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ0Nj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYodm9pZClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NjM6XHRidXMgPSBtZGlvX2ZpbmRfYnVzKFwmIzM0O2ZpeGVkLTBcJiMzNDspO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDY0LVx0aWYgKFdBUk5fT04oIWJ1cykpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDY2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDY3Olx0c3dpdGNoX21kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCAzMSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjgtXHRpZiAoSVNfRVJSKHN3aXRjaF9tZGlvZGV2KSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzItXHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYz0yNT1zdGF0aWMgdm9pZCBsYW45MzAzX21kaW9fcmVhbF93cml0ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW8sIGludCByZWcsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmMtMjYte1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jOjI3Olx0bWRpby1cdTAwM2VidXMtXHUwMDNld3JpdGUobWRpby1cdTAwM2VidXMsIFBIWV9BRERSKHJlZyksIFBIWV9SRUcocmVnKSwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy0yOC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jPTQzPXN0YXRpYyB1MTYgbGFuOTMwM19tZGlvX3JlYWxfcmVhZChzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW8sIGludCByZWcpXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmMtNDQte1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jOjQ1Olx0cmV0dXJuIG1kaW8tXHUwMDNlYnVzLVx1MDAzZXJlYWQobWRpby1cdTAwM2VidXMsIFBIWV9BRERSKHJlZyksIFBIWV9SRUcocmVnKSk7XG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmMtNDYtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYz02MT1zdGF0aWMgaW50IGxhbjkzMDNfbWRpb19waHlfd3JpdGUoc3RydWN0IGxhbjkzMDMgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy02NS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYzo2NjpcdHJldHVybiBtZGlvYnVzX3dyaXRlX25lc3RlZChzd19kZXYtXHUwMDNlZGV2aWNlLVx1MDAzZWJ1cywgYWRkciwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jLTY3LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmM9Njk9c3RhdGljIGludCBsYW45MzAzX21kaW9fcGh5X3JlYWQoc3RydWN0IGxhbjkzMDMgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy03Mi1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYzo3MzpcdHJldHVybiBtZGlvYnVzX3JlYWRfbmVzdGVkKHN3X2Rldi1cdTAwM2VkZXZpY2UtXHUwMDNlYnVzLCBhZGRyLCByZWcpO1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jLTc0LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jPTM0MT1zdGF0aWMgaW50IGdzd2lwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00MDgtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjQwOTpcdC8qIGJyaW5nIHVwIHRoZSBtZGlvIGJ1cyAqL1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00MTAtXHRncGh5X2Z3X25wID0gb2ZfZ2V0X2NvbXBhdGlibGVfY2hpbGQoZGV2LVx1MDAzZW9mX25vZGUsIFwmIzM0O2xhbnRpcSxncGh5LWZ3XCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xMjk9c3RhdGljIGludCBnc3dpcF9tZGlvX3BvbGwoc3RydWN0IGdzd2lwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTM2LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTM3OnN0YXRpYyBpbnQgZ3N3aXBfbWRpb193cihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTEzOC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU2LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTU3OnN0YXRpYyBpbnQgZ3N3aXBfbWRpb19yZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZylcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTg3PXN0YXRpYyBpbnQgZ3N3aXBfbWRpbyhzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMDAtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoyMDE6XHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2MoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIwMi1cdGlmICghYnVzKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjEzLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MjE0Olx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxNS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz02NDM9c3RhdGljIGludCBnc3dpcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtNjk0LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6Njk1Olx0LyogYnJpbmcgdXAgdGhlIG1kaW8gYnVzICovXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy02OTYtXHRlcnIgPSBnc3dpcF9tZGlvKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtNjk3LVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6Njk4Olx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDttZGlvIGJ1cyBzZXR1cCBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtNjk5LVx0XHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jPTQxPXN0YXRpYyBpbnQgZ3N3MXh4X2NvbmZpZ19zbWRpb19iYWRyKHN0cnVjdCBnc3cxeHhfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy00My17XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo0NDpcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZW1kaW9fZGV2LVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTQ1LVx0aW50IHN3X2FkZHIgPSBwcml2LVx1MDAzZW1kaW9fZGV2LVx1MDAzZWFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNTMtXHRcdHNtZGlvX2JhZHIgPSByZWcgXHUwMDI2IH5HRU5NQVNLKDMsIDApO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6NTQ6XHRcdHJlcyA9IF9fbWRpb2J1c193cml0ZShidXMsIHN3X2FkZHIsIEdTVzFYWF9TTURJT19CQURSLCBzbWRpb19iYWRyKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTU1LVx0XHRpZiAocmVzIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9Njc9c3RhdGljIGludCBnc3cxeHhfcmVnbWFwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy03MC1cdHN0cnVjdCBnc3cxeHhfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo3MTpcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZW1kaW9fZGV2LVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTcyLVx0aW50IHN3X2FkZHIgPSBwcml2LVx1MDAzZW1kaW9fZGV2LVx1MDAzZWFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNzktXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo4MDpcdHJlcyA9IF9fbWRpb2J1c19yZWFkKGJ1cywgc3dfYWRkciwgcmVnIC0gc21kaW9fYmFkcik7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy04MS1cdGlmIChyZXMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYz05Mj1zdGF0aWMgaW50IGdzdzF4eF9yZWdtYXBfd3JpdGUodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy05NS1cdHN0cnVjdCBnc3cxeHhfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo5NjpcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZW1kaW9fZGV2LVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTk3LVx0aW50IHN3X2FkZHIgPSBwcml2LVx1MDAzZW1kaW9fZGV2LVx1MDAzZWFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTA0LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTA1Olx0cmVzID0gX19tZGlvYnVzX3dyaXRlKGJ1cywgc3dfYWRkciwgcmVnIC0gc21kaW9fYmFkciwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEwNi1cdGlmIChyZXMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9NjQ1PXN0YXRpYyBzdHJ1Y3QgcmVnbWFwICpnc3cxeHhfcmVnbWFwX2luaXQoc3RydWN0IGdzdzF4eF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTY1Ny1cdFx0LnVubG9jayA9IGdzdzF4eF9tZGlvX3JlZ21hcF91bmxvY2ssXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo2NTg6XHRcdC5sb2NrX2FyZyA9IFx1MDAyNnByaXYtXHUwMDNlbWRpb19kZXYtXHUwMDNlYnVzLVx1MDAzZW1kaW9fbG9jayxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTY1OS1cdH07XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy02NjAtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo2NjE6XHRyZXR1cm4gZGV2bV9yZWdtYXBfaW5pdChcdTAwMjZwcml2LVx1MDAzZW1kaW9fZGV2LVx1MDAzZWRldiwgXHUwMDI2Z3N3MXh4X3JlZ21hcF9idXMsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy02NjItXHRcdFx0XHRwcml2LCBcdTAwMjZjb25maWcpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYz0yNT1zdGF0aWMgaW50IGtzejg4NjNfbWRpb19yZWFkKHZvaWQgKmN0eCwgY29uc3Qgdm9pZCAqcmVnX2J1Ziwgc2l6ZV90IHJlZ19sZW4sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTM5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jOjQwOlx0XHRyZXQgPSBfX21kaW9idXNfcmVhZChtZGV2LVx1MDAzZWJ1cywgKCh0bXAgXHUwMDI2IDB4RTApIFx1MDAzZVx1MDAzZSA1KSB8XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtNDEtXHRcdFx0XHQgICAgIFNNSV9LU1o4OFhYX1JFQURfUEhZLCB0bXApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYz01NT1zdGF0aWMgaW50IGtzejg4NjNfbWRpb193cml0ZSh2b2lkICpjdHgsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBjb3VudClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtNzEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6NzI6XHRcdHJldCA9IF9fbWRpb2J1c193cml0ZShtZGV2LVx1MDAzZWJ1cywgKCh0bXAgXHUwMDI2IDB4RTApIFx1MDAzZVx1MDAzZSA1KSxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy03My1cdFx0XHRcdCAgICAgIHRtcCwgdmFsW2ldKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0zMTU9c3RhdGljIGludCBrc3o5NDc3X3Bjc19jcmVhdGUoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMjItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozMjM6XHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2MoZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMjQtXHRpZiAoIWJ1cylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMjYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozMjc6XHRidXMtXHUwMDNlbmFtZSA9IFwmIzM0O2tzel9wY3NfbWRpb19idXNcJiMzNDs7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMjgtXHRzbnByaW50ZihidXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7JXMtcGNzXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTMzNS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjMzNjpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYtXHUwMDNlZGV2LCBidXMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzM3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMzktXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozNDA6XHRwY3MgPSB4cGNzX2NyZWF0ZV9wY3NfbWRpb2RldihidXMsIDApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQxLVx0aWYgKElTX0VSUihwY3MpKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTIxNzc9c3RhdGljIHZvaWQga3N6X3VwZGF0ZV9wb3J0X21lbWJlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMjU4LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjI1OTppbnQga3N6X3N3X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyNjAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyNjYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMjY3OmludCBrc3pfc3dfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyNjgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyNzUtLyoqXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMjc2OiAqIGtzel9wYXJlbnRfbWRpb19yZWFkIC0gUmVhZCBkYXRhIGZyb20gYSBQSFkgcmVnaXN0ZXIgb24gdGhlIHBhcmVudCBNRElPIGJ1cy5cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyNzctICogQGJ1czogTURJTyBidXMgc3RydWN0dXJlLlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyODctICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMjg4OmludCBrc3pfcGFyZW50X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyODkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyOTEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMjkyOlx0cmV0dXJuIG1kaW9idXNfcmVhZF9uZXN0ZWQoZGV2LVx1MDAzZXBhcmVudF9tZGlvX2J1cywgYWRkciwgcmVnbnVtKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyOTMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyOTUtLyoqXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMjk2OiAqIGtzel9wYXJlbnRfbWRpb193cml0ZSAtIFdyaXRlIGRhdGEgdG8gYSBQSFkgcmVnaXN0ZXIgb24gdGhlIHBhcmVudCBNRElPIGJ1cy5cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyOTctICogQGJ1czogTURJTyBidXMgc3RydWN0dXJlLlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzMDctICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMzA4OmludCBrc3pfcGFyZW50X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzA5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzExLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjMxMjpcdHJldHVybiBtZGlvYnVzX3dyaXRlX25lc3RlZChkZXYtXHUwMDNlcGFyZW50X21kaW9fYnVzLCBhZGRyLCByZWdudW0sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzEzLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yNDE2PWludCBrc3pfcGFyc2VfZHRfcGh5X2NvbmZpZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0NzItLyoqXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDczOiAqIGtzel9tZGlvX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgYW5kIGNvbmZpZ3VyZSB0aGUgTURJTyBidXMgZm9yIHRoZSBLU1ogZGV2aWNlLlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjQ3NC0gKiBAZGV2OiBQb2ludGVyIHRvIHRoZSBLU1ogZGV2aWNlIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNDc4LSAqIHRoZSBmdW5jdGlvbiB3aWxsIGNvbmZpZ3VyZSB0aGUgZXh0ZXJuYWwgTURJTyBjb250cm9sbGVyIHNwZWNpZmllZCBieSB0aGVcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjI0Nzk6ICogXCYjMzQ7bWRpby1wYXJlbnQtYnVzXCYjMzQ7IGRldmljZSB0cmVlIHByb3BlcnR5IHRvIGRpcmVjdGx5IG1hbmFnZSBpbnRlcm5hbCBQSFlzLlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjQ4MC0gKiBPdGhlcndpc2UsIFNQSSBvciBJMkMgYWNjZXNzIGlzIHNldCB1cCBmb3IgUEhZIGFjY2Vzcy5cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yNDg0PWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0OTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDk3Olx0cGFyZW50X2J1c19ub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShtZGlvX25wLCBcJiMzNDttZGlvLXBhcmVudC1idXNcJiMzNDssIDApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjQ5OC1cdGlmIChwYXJlbnRfYnVzX25vZGUgXHUwMDI2XHUwMDI2ICFkZXYtXHUwMDNlaW5mby1cdTAwM2VwaHlfc2lkZV9tZGlvX3N1cHBvcnRlZCkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjQ5OTpcdFx0ZGV2X2VycihkZXYtXHUwMDNlZGV2LCBcJiMzNDtTaWRlIE1ESU8gYnVzIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgSFcsIGlnbm9yaW5nICYjMzk7bWRpby1wYXJlbnQtYnVzJiMzOTsgcHJvcGVydHkuXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1MDAtXHRcdHJldCA9IC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjUwMy1cdH0gZWxzZSBpZiAocGFyZW50X2J1c19ub2RlKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNTA0Olx0XHRwYXJlbnRfYnVzID0gb2ZfbWRpb19maW5kX2J1cyhwYXJlbnRfYnVzX25vZGUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjUwNS1cdFx0aWYgKCFwYXJlbnRfYnVzKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjUxMC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjI1MTE6XHRcdGRldi1cdTAwM2VwYXJlbnRfbWRpb19idXMgPSBwYXJlbnRfYnVzO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjUxMi1cdH1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1MTMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNTE0Olx0YnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jKGRzLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTE1LVx0aWYgKCFidXMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTU1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjU1NjpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTU3LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTE2ND1zdHJ1Y3Qga3N6X2RldmljZSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjE2LVx0LyoqXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDoyMTc6XHQgKiBAcGFyZW50X21kaW9fYnVzOiBQb2ludGVyIHRvIHRoZSBleHRlcm5hbCBNRElPIGJ1cyBjb250cm9sbGVyLlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjE4LVx0ICpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yMjMtXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjIyNDpcdHN0cnVjdCBtaWlfYnVzICpwYXJlbnRfbWRpb19idXM7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yMjUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9NDY0PWludCBrc3pfcGFyc2VfZHRfcGh5X2NvbmZpZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNDY1LVx0XHRcdCAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDY2OmludCBrc3pfc3dfbWRpb19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjQ2NzppbnQga3N6X3N3X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sIHUxNiB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDY4OmludCBrc3pfcGFyZW50X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo0Njk6aW50IGtzel9wYXJlbnRfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC00NzAtaW50IGtzel9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM9MTEwPXN0YXRpYyBpbnQgbGFuOTM3eF9wb3J0X2NmZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IG9mZnNldCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTExOS0gKiBAZGV2OiBQb2ludGVyIHRvIGRldmljZSBzdHJ1Y3R1cmUuXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjEyMDogKiBAc2lkZV9tZGlvOiBCb29sZWFuIGluZGljYXRpbmcgaWYgdGhlIFBIWXMgYXJlIGFjY2Vzc2VkIG92ZXIgYSBzaWRlIE1ESU8gYnVzLlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy0xMjEtICpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTE0Mz1zdGF0aWMgaW50IGxhbjkzN3hfY3JlYXRlX3BoeV9hZGRyX21hcChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBib29sIHNpZGVfbWRpbylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTIxMC0vKipcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6MjExOiAqIGxhbjkzN3hfbWRpb19idXNfcHJlaW5pdCAtIFByZS1pbml0aWFsaXplIE1ESU8gYnVzIGZvciBhY2Nlc3NpbmcgUEhZcy5cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjEyLSAqIEBkZXY6IFBvaW50ZXIgdG8gZGV2aWNlIHN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6MjEzOiAqIEBzaWRlX21kaW86IEJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgUEhZcyBhcmUgYWNjZXNzZWQgb3ZlciBhIHNpZGUgTURJTyBidXMuXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTIxNC0gKlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjI2LSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzoyMjc6c3RhdGljIGludCBsYW45Mzd4X21kaW9fYnVzX3ByZWluaXQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgYm9vbCBzaWRlX21kaW8pXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTIyOC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02NjY9c3RhdGljIGludCBsYW45Mzd4X3N3aXRjaF9pbml0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy02NzMtLyoqXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjY3NDogKiBsYW45Mzd4X21kaW9fcmVnaXN0ZXIgLSBSZWdpc3RlciBhbmQgY29uZmlndXJlIHRoZSBNRElPIGJ1cyBmb3IgdGhlIExBTjkzN3guXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTY3NS0gKiBAZGV2OiBQb2ludGVyIHRvIHRoZSBLU1ogZGV2aWNlIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTY3OS0gKiB0aGUgZnVuY3Rpb24gd2lsbCBjb25maWd1cmUgdGhlIGV4dGVybmFsIE1ESU8gY29udHJvbGxlciBzcGVjaWZpZWQgYnkgdGhlXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjY4MDogKiBcJiMzNDttZGlvLXBhcmVudC1idXNcJiMzNDsgZGV2aWNlIHRyZWUgcHJvcGVydHkgdG8gZGlyZWN0bHkgbWFuYWdlIGludGVybmFsIFBIWXMuXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTY4MS0gKiBPdGhlcndpc2UsIFNQSSBvciBJMkMgYWNjZXNzIGlzIHNldCB1cCBmb3IgUEhZIGFjY2Vzcy5cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTY4NT1zdGF0aWMgaW50IGxhbjkzN3hfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNjk3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo2OTg6XHRwYXJlbnRfYnVzX25vZGUgPSBvZl9wYXJzZV9waGFuZGxlKG1kaW9fbnAsIFwmIzM0O21kaW8tcGFyZW50LWJ1c1wmIzM0OywgMCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTY5OS1cdGlmIChwYXJlbnRfYnVzX25vZGUgXHUwMDI2XHUwMDI2ICFkZXYtXHUwMDNlaW5mby1cdTAwM2VwaHlfc2lkZV9tZGlvX3N1cHBvcnRlZCkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3MDA6XHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldiwgXCYjMzQ7U2lkZSBNRElPIGJ1cyBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIEhXLCBpZ25vcmluZyAmIzM5O21kaW8tcGFyZW50LWJ1cyYjMzk7IHByb3BlcnR5LlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcwMS1cdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcwNC1cdH0gZWxzZSBpZiAocGFyZW50X2J1c19ub2RlKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjcwNTpcdFx0cGFyZW50X2J1cyA9IG9mX21kaW9fZmluZF9idXMocGFyZW50X2J1c19ub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzA2LVx0XHRpZiAoIXBhcmVudF9idXMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcxMS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzEyOlx0XHRkZXYtXHUwMDNlcGFyZW50X21kaW9fYnVzID0gcGFyZW50X2J1cztcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzEzLVx0fVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MTQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjcxNTpcdGJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhkcy1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MTYtXHRpZiAoIWJ1cykge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzIwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3MjE6XHRyZXQgPSBsYW45Mzd4X21kaW9fYnVzX3ByZWluaXQoZGV2LCAhIXBhcmVudF9idXMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MjItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3NTY6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE0OD1tdDc1MzBfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1OS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE2MDpcdHByaXYtXHUwMDNlYnVzID0gbWRpb2Rldi1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNjEtXHRwcml2LVx1MDAzZWRldiA9IFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01MjU9c3RhdGljIGludCBtdDc1MzBfcGh5X3JlYWRfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI2LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mjc6XHRyZXR1cm4gbWRpb2J1c19yZWFkX25lc3RlZChwcml2LVx1MDAzZWJ1cywgcG9ydCwgcmVnbnVtKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01MzA9c3RhdGljIGludCBtdDc1MzBfcGh5X3dyaXRlX2MyMihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzIte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzMzpcdHJldHVybiBtZGlvYnVzX3dyaXRlX25lc3RlZChwcml2LVx1MDAzZWJ1cywgcG9ydCwgcmVnbnVtLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzNC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTUzNj1zdGF0aWMgaW50IG10NzUzMF9waHlfcmVhZF9jNDUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM4LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mzk6XHRyZXR1cm4gbWRpb2J1c19jNDVfcmVhZF9uZXN0ZWQocHJpdi1cdTAwM2VidXMsIHBvcnQsIGRldmFkLCByZWdudW0pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0MC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTU0Mj1zdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTQ0LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NDU6XHRyZXR1cm4gbWRpb2J1c19jNDVfd3JpdGVfbmVzdGVkKHByaXYtXHUwMDNlYnVzLCBwb3J0LCBkZXZhZCwgcmVnbnVtLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0Ni19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzNzE9bXQ3NTMwX3NldHVwX21kaW8oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzg0LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzODU6XHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2MoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzg2LVx0aWYgKCFidXMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDA3Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MDgtXHRpZiAocmV0KSB7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTY0OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDEzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBEZXZpY2UgUmVnaXN0cmF0aW9uIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGZ1bmN0aW9ucyBsaWtlIGBtZGlvYnVzX2FsbG9jYCwgYG1kaW9idXNfcmVnaXN0ZXJgLCBgbWRpb19kZXZpY2VfY3JlYXRlYCwgdGhlIHN0YW5kYXJkIE1ESU8gYnVzIHN0dWZmLiBJIGFsc28gc3BvdCBgZHNhX2xvb3BgLCB3aGljaCBpcyBzcGVjaWZpY2FsbHkgY3JlYXRpbmcgYSBzd2l0Y2ggTURJTyBkZXZpY2UuIEJ1dCBob2xkIG9uLCB0aGUgZGVzY3JpcHRpb24gaXNuJiMzOTt0IGp1c3QgYWJvdXQgTURJTyBkZXZpY2VzLCBpdCYjMzk7cyBhYm91dCBQSFkgZGV2aWNlcywgdG9vLCBpc24mIzM5O3QgaXQ/IFJpZ2h0LgoKQWxyaWdodCwgc28gZGlnZ2luZyBhIGJpdCBkZWVwZXIsIEkgc2VlIGBwaHlfZGV2aWNlX3JlZ2lzdGVyYCBnZXRzIGNhbGxlZCBmcm9tIGBwaHlfZGV2aWNlX2NyZWF0ZWAsIGFuZCB0aGF0JiMzOTtzIHVsdGltYXRlbHkgY2FsbGVkIGJ5IGBnZXRfcGh5X2RldmljZWAuIEkgYWxzbyBzZWUgdGhhdCBgc2ZwLmNgIGlzIGNhbGxpbmcgYHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuCgpUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkaW5nIHN1cHBvcnQgZm9yIFBTRSBjb250cm9sbGVycy4gTGV0IG1lIHF1aWNrbHkgc2NhbiB0aHJvdWdoIHRoZSBjb2RlIGJhc2UgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIGFueSBleGlzdGluZyBQU0UgY29udHJvbGxlciBpbXBsZW1lbnRhdGlvbnMuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpcyBzdWJzeXN0ZW0gYmVmb3JlIEkgY2FuIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHNlLXBkL3BkNjkyeDAuYz0xNzU2PXN0YXRpYyBpbnQgcGQ2OTJ4MF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcGQ2OTJ4MC5jLTE4MzgtXHRwcml2LVx1MDAzZXBjZGV2LnBpc19wcmlvX21heCA9IDI7XG5kcml2ZXJzL25ldC9wc2UtcGQvcGQ2OTJ4MC5jOjE4Mzk6XHRyZXQgPSBkZXZtX3BzZV9jb250cm9sbGVyX3JlZ2lzdGVyKGRldiwgXHUwMDI2cHJpdi1cdTAwM2VwY2Rldik7XG5kcml2ZXJzL25ldC9wc2UtcGQvcGQ2OTJ4MC5jLTE4NDAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jPTI3PXN0YXRpYyBCTE9DS0lOR19OT1RJRklFUl9IRUFEKHBzZV9jb250cm9sbGVyX25vdGlmaWVyKTtcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0zNi0gKiBzbyBhIFBTRSBjb250cm9sbGVyIGRyaXZlciYjMzk7cyBwcm9iZS91bmJpbmQgcGF0aCBtdXN0IG5vdCBob2xkIGFueVxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6Mzc6ICogc3VjaCBsb2NrIHdoZW4gY2FsbGluZyBwc2VfY29udHJvbGxlcl9yZWdpc3RlcigpIG9yXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0zOC0gKiBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKCkuXG4tLVxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM9MTA0Nj1zdGF0aWMgdm9pZCBwc2Vfc2VuZF9udGZfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMDY3LS8qKlxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTA2ODogKiBwc2VfY29udHJvbGxlcl9yZWdpc3RlciAtIHJlZ2lzdGVyIGEgUFNFIGNvbnRyb2xsZXIgZGV2aWNlXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMDY5LSAqIEBwY2RldjogYSBwb2ludGVyIHRvIHRoZSBpbml0aWFsaXplZCBQU0UgY29udHJvbGxlciBkZXZpY2Vcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMDcyLSAqL1xuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTA3MzppbnQgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMDc0LXtcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTQ1LX1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExNDY6RVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE0Ny1cbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYz0xMTY5PXN0YXRpYyB2b2lkIGRldm1fcHNlX2NvbnRyb2xsZXJfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJlcylcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTc0LS8qKlxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTE3NTogKiBkZXZtX3BzZV9jb250cm9sbGVyX3JlZ2lzdGVyIC0gcmVzb3VyY2UgbWFuYWdlZCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcigpXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTc2LSAqIEBkZXY6IGRldmljZSB0aGF0IGlzIHJlZ2lzdGVyaW5nIHRoaXMgUFNFIGNvbnRyb2xsZXJcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTc4LSAqXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYzoxMTc5OiAqIE1hbmFnZWQgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoKS4gRm9yIFBTRSBjb250cm9sbGVycyByZWdpc3RlcmVkIGJ5XG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTgwLSAqIHRoaXMgZnVuY3Rpb24sIHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIoKSBpcyBhdXRvbWF0aWNhbGx5IGNhbGxlZCBvblxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTE4MTogKiBkcml2ZXIgZGV0YWNoLiBTZWUgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExODItICpcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTg0LSAqL1xuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTE4NTppbnQgZGV2bV9wc2VfY29udHJvbGxlcl9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTg2LVx0XHRcdFx0IHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExOTUtXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYzoxMTk2Olx0cmV0ID0gcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIocGNkZXYpO1xuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE5Ny1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMjA2LX1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjEyMDc6RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9wc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMjA4LVxuLS1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfcmVndWxhdG9yLmM9OTQ9cHNlX3JlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfcmVndWxhdG9yLmMtMTI2LVx0cHJpdi1cdTAwM2VwY2Rldi50eXBlcyA9IEVUSFRPT0xfUFNFX1BPREw7XG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX3JlZ3VsYXRvci5jOjEyNzpcdHJldCA9IGRldm1fcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoZGV2LCBcdTAwMjZwcml2LVx1MDAzZXBjZGV2KTtcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfcmVndWxhdG9yLmMtMTI4LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3BzZS1wZC9zaTM0NzQuYz00NzM9c3RhdGljIGludCBzaTM0NzRfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9uZXQvcHNlLXBkL3NpMzQ3NC5jLTU0Mi1cbmRyaXZlcnMvbmV0L3BzZS1wZC9zaTM0NzQuYzo1NDM6XHRyZXQgPSBkZXZtX3BzZV9jb250cm9sbGVyX3JlZ2lzdGVyKGRldiwgXHUwMDI2cHJpdi1cdTAwM2VwY2Rldik7XG5kcml2ZXJzL25ldC9wc2UtcGQvc2kzNDc0LmMtNTQ0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jPTE0MzA9c3RhdGljIGludCB0cHMyMzg4MV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuYy0xNTE2LVx0cHJpdi1cdTAwM2VwY2Rldi5zdXBwX2J1ZGdldF9ldmFsX3N0cmF0ZWdpZXMgPSBQU0VfQlVER0VUX0VWQUxfU1RSQVRfU1RBVElDO1xuZHJpdmVycy9uZXQvcHNlLXBkL3RwczIzODgxLmM6MTUxNzpcdHJldCA9IGRldm1fcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoZGV2LCBcdTAwMjZwcml2LVx1MDAzZXBjZGV2KTtcbmRyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jLTE1MTgtXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM1OTgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA1MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IFBIWSBhbmQgUFNFIENvbnRyb2xsZXIgSW50ZWdyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UgaGF2ZSBgcHNlX3JlZ3VsYXRvci5jYCwgYSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZWdpc3RlcnMgYSBQU0UgY29udHJvbGxlciB1c2luZyBgZGV2bV9wc2VfY29udHJvbGxlcl9yZWdpc3RlcmAuIEl0IHNlZW1zIGRldmljZSB0cmVlIGluc3RhbnRpYXRlcyBpdCwgd2hpY2ggbWVhbnMgc3l6a2FsbGVyICpjYW4qIGdldCB0byBpdCB2aWEgZGV2aWNlIHRyZWUgaW5qZWN0aW9uIG9yIHBsYXRmb3JtIGRldmljZXMuIE5vLCBzeXprYWxsZXIgZG9lcyAqbm90KiBuZWVkIHN5el9kZXZsaW5rX25ldG5zLCBpdCBoYXMgaXRzIG93biBtZXRob2RzIHRvIGNyZWF0ZSB2aXJ0dWFsIGRldmljZXMuCgpCdXQsIHRoZSByZWFsIGNydXggb2YgdGhpcyBpcyB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBjb2RlLCBzcGVjaWZpY2FsbHkgYHBoeV9kZXZpY2UuY2AuIFRoYXQmIzM5O3MgcmVhY2hhYmxlISBXZSBjYW4gaGl0IHRoYXQgY29kZSB0aHJvdWdoIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzLCBsaWtlIGBtYWNzZWNgLCBgdmV0aGAsIG9yIGB0dW5gLiBXYWl0LCBkbyB0aG9zZSBldmVuIHVzZSBQSFlzPyBObywgYHZldGhgIGNlcnRhaW5seSBkb2VzbiYjMzk7dC4gYG1hYzgwMjExX2h3c2ltYD8gTm9wZS4gQWgsIGJ1dCBgZHNhX2xvb3BgICpkb2VzKi4gSXQgY3JlYXRlcyBhbiBNRElPIGJ1cyBhbmQgUEhZcyEgQW5kIFVTQiBuZXR3b3JrIGFkYXB0ZXJzIGxpa2UgYGFzaXhgIGFuZCBgc21zYzk1eHhgIGRvIHRvbywgY3JlYXRpbmcgTURJTyBidXNlcyBhbmQgUEhZcy4gU3l6a2FsbGVyIGZ1enplZCBVU0IgdmlhIGBkdW1teV9oY2RgICh2aGNpKSwgc28gdGhvc2UgUEhZcyBhcmUgZGVmaW5pdGVseSBmdXp6ZWQuCgpTbywgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGlzIHJlYWNoYWJsZSBhbmQgYWxyZWFkeSBoZWF2aWx5IGZ1enplZCwgd2hpY2ggbWVhbnMgdGhlIG1vZGlmaWNhdGlvbiB0aGlzIHBhdGNoIG1ha2VzLCBjYWxsaW5nIGBwaHlfdHJ5X2F0dGFjaF9wc2UocGh5ZGV2KWAsIGlzIGFsc28gZnV6emVkLiBQbHVzLCB0aGUgcGF0Y2ggYWRkcyBgcGh5X3BzZV9ub3RpZmllcl9ldmVudGAgd2hlbiBhIFBTRSBjb250cm9sbGVyIGlzIHJlZ2lzdGVyZWQgb3IgdW5yZWdpc3RlcmVkLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMhIFNvLCAqV29ydGhGdXp6aW5nPXRydWUqLgoKTm93LCB0aGUgdGFyZ2V0IGZ1bmN0aW9ucy4uLkkgc2hvdWxkIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbjoKCiogICBgcGh5X3RyeV9hdHRhY2hfcHNlYAoqICAgYHBoeV9wc2VfYXR0YWNoX29uZWAKKiAgIGBwaHlfcHNlX2RldGFjaF9vbmVgCiogICBgcGh5X3BzZV9ub3RpZmllcl9ldmVudGAKKiAgIGBfX3BoeV9kZXZpY2VfcmVnaXN0ZXJgCiogICBgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWRgCiogICBgcHNlX3JlZ2lzdGVyX25vdGlmaWVyYAoqICAgYHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyYAoqICAgYHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXZgCgpMYXN0bHksIEkgbmVlZCB0byB2ZXJpZnkgd2hldGhlciBgQ09ORklHX1BTRV9DT05UUk9MTEVSYCBpcyBuZWVkZWQuIExvb2tzIGxpa2UgaXQmIzM5O3MgZGVmaW5lZCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jYCBhbmQgaXMgbmVlZGVkIHRvIGNvbXBpbGUgdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBTRV9DT05UUk9MTEVSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BzZS1wZC9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC9wc2UtcGQvS2NvbmZpZzo2Om1lbnVjb25maWcgUFNFX0NPTlRST0xMRVJcbmRyaXZlcnMvbmV0L3BzZS1wZC9LY29uZmlnLTctXHRib29sIFwmIzM0O0V0aGVybmV0IFBvd2VyIFNvdXJjaW5nIEVxdWlwbWVudCBTdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ3NjAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUFNFIENvbnRyb2xsZXIgQXR0YWNobWVudCBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgcGF0Y2ggcmVsYXRlZCB0byBQU0UgY29udHJvbGxlciBhdHRhY2htZW50IGZvciBQSFkgZGV2aWNlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGNvbmZpcm1lZDogYFBTRV9DT05UUk9MTEVSYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIEkgc2VlIHRoYXQgYHBoeV9kZXZpY2UuY2AgaXMgY29tcGlsZWQgdW5kZXIgYENPTkZJR19QSFlMSUJgLCBhbmQgdGhlIGNoYW5nZXMgd2l0aGluIGl0IGxldmVyYWdlIGBvZl9wc2VfY29udHJvbF9nZXRgLCB3aGljaCBpcyBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaGAuIFRoZSBjcml0aWNhbCBwb2ludCwgaG93ZXZlciwgaXMgdGhhdCBpZiBgQ09ORklHX1BTRV9DT05UUk9MTEVSYCBpcyAqZGlzYWJsZWQqLCBgb2ZfcHNlX2NvbnRyb2xfZ2V0YCByZXR1cm5zIGBOVUxMYC4gVGhpcyBtZWFucyB0aGF0IHRvIHJlYWxseSB0ZXN0IHRoZSBhdHRhY2htZW50IGxvZ2ljLCB3ZSAqbmVlZCogYFBTRV9DT05UUk9MTEVSYCBlbmFibGVkLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSB0aGlzLiBBIHF1aWNrIGNoZWNrIG9mIGBpbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaGAgc29saWRpZmllcyB0aGlzLiBXaGVuIGBDT05GSUdfUFNFX0NPTlRST0xMRVJgIGlzIGVuYWJsZWQsIHdlIGdldCB0aGUgcmVhbCBkZWFsIOKAkyBmdW5jdGlvbnMgbGlrZSBgcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldmAsIGBwc2VfcmVnaXN0ZXJfbm90aWZpZXJgLCBhbmQgYHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyYCBhcmUgYWN0dWFsbHkgZGVmaW5lZC4gSWYgaXQmIzM5O3MgZGlzYWJsZWQsIHRoZXNlIGZ1bmN0aW9ucyBhcmUganVzdCBzdHVicyB0aGF0IHJldHVybiBlaXRoZXIgMCBvciBmYWxzZSwgZWZmZWN0aXZlbHkgc2hvcnQtY2lyY3VpdGluZyB0aGUgcmVsZXZhbnQgY29kZS4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGJyb2FkZXIgcGljdHVyZS4gYENPTkZJR19QSFlMSUJgIGlzIHByZXR0eSBtdWNoIGVuYWJsZWQgZXZlcnl3aGVyZS4gYENPTkZJR19PRmAgaXMgcmVxdWlyZWQgZm9yIGBvZl9wc2VfY29udHJvbF9nZXRgLCB3aGljaCBpcyBhbHNvIHR5cGljYWwgb2YgbW9zdCBjb25maWd1cmF0aW9ucy4KCkkmIzM5O3ZlIGlkZW50aWZpZWQgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb246IGBwaHlfdHJ5X2F0dGFjaF9wc2VgLCBgcGh5X3BzZV9hdHRhY2hfb25lYCwgYHBoeV9wc2VfZGV0YWNoX29uZWAsIGBwaHlfcHNlX25vdGlmaWVyX2V2ZW50YCwgYHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkYCwgYHBzZV9yZWdpc3Rlcl9ub3RpZmllcmAsIGBwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcmAsIGFuZCBgcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldmAuCgpJJiMzOTt2ZSBjaGVja2VkIHdoZXRoZXIgdGhleSBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBgcGh5X3RyeV9hdHRhY2hfcHNlYCwgYHBoeV9wc2VfYXR0YWNoX29uZWAsIGBwaHlfcHNlX2RldGFjaF9vbmVgLCBhbmQgYHBoeV9wc2Vfbm90aWZpZXJfZXZlbnRgIGFyZSBzdGF0aWMgd2l0aGluIGBwaHlfZGV2aWNlLmNgLiBUaGF0IG1lYW5zIHRoZXkmIzM5O3JlIGludGVybmFsIHRvIHRoZSBQSFkgZGV2aWNlIGxvZ2ljLiBDb252ZXJzZWx5LCBgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWRgLCBgcHNlX3JlZ2lzdGVyX25vdGlmaWVyYCwgYHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyYCwgYW5kIGBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2YCAqYXJlKiBleHBvcnRlZC4KCkkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhhdCBJJiMzOTt2ZSBnb3R0ZW4gZXZlcnl0aGluZy4gQWZ0ZXIgYSBxdWljayBzY2FuIG9mIHRoZSBwYXRjaCBkaWZmLCBJIGNhbiBjb25maXJtIHRoZXNlIGFyZSB0aGUgY3JpdGljYWwgc3ltYm9scy4gSSYjMzk7bSBhZGRpbmcgdGhlc2UgZnVuY3Rpb25zIHRvIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LiBUaGUgY2hhbmdlIHRvIGBwaHlfZGV2aWNlX3JlZ2lzdGVyYCBpdHNlbGYgaXMgbm90ZXdvcnRoeSwgYnV0IGl0IGlzIG9mdGVuIGNhbGxlZCwgc28gSSBjYW4gaW5jbHVkZSBpdCwgYnV0IHRoZSBuZXcgbG9naWMgaXMgbW9yZSBpbXBvcnRhbnQuIEl0IGlzIHdvcnRoIG5vdGluZyBpdCBpcyBhIGhvdCBwYXRoIG9uIGluaXRpYWxpemF0aW9uLgoKSGVyZSYjMzk7cyBteSBsaW5lIG9mIHJlYXNvbmluZzogVGhpcyBwYXRjaCBtb2RpZmllcyBob3cgUEhZIGRldmljZXMgcmVnaXN0ZXIgYW5kIGF0dGFjaCB0byBQU0UgY29udHJvbGxlcnMuIEl0IGlzIG1vdmluZyBhd2F5IGZyb20gdGhlIGBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHlgIG1ldGhvZCBhbmQgbm93IHJlbGllcyBvbiBhIG5vdGlmaWVyLWJhc2VkIG1lY2hhbmlzbS4gVGhlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIG1hbmFnZSBQU0UgYXR0YWNobWVudCBhbmQgZGV0YWNobWVudCwgYXMgd2VsbCBhcyBoYW5kbGluZyBub3RpZmllciBldmVudHMuIFRoaXMgaXMgY29yZSBuZXR3b3JraW5nIGxvZ2ljLCBwb3RlbnRpYWxseSByZWFjaGVkIHRocm91Z2ggdmlydHVhbCBNRElPIGJ1c2VzIChsaWtlIHRob3NlIGZvciBVU0IgbmV0d29yayBhZGFwdGVycyBvciBEU0EgbG9vcGJhY2spIGFuZCB2aXJ0dWFsIFBTRSBjb250cm9sbGVycy4gQ29uc2VxdWVudGx5LCBmdXp6aW5nIGVmZm9ydHMgc2hvdWxkIHByaW9yaXRpemUgdGhlIG5ldyBhdHRhY2htZW50IGxvZ2ljIGFuZCB0aGUgYXNzb2NpYXRlZCBub3RpZmllciBjYWxsYmFja3MuCgpTbywgdGhlIGNyaXRpY2FsIGNvbmZpZyBpcyBgUFNFX0NPTlRST0xMRVJgLiBJJiMzOTt2ZSBkZXRlcm1pbmVkIHRoYXQgYFBTRV9DT05UUk9MTEVSYCBpcyBhIG1lbnVjb25maWcgb3B0aW9uLgoKVG8gc3VtIHVwOgoKQ29uZmlnczoKYFBTRV9DT05UUk9MTEVSYAoKRm9jdXNTeW1ib2xzOgpgcGh5X3RyeV9hdHRhY2hfcHNlYApgcGh5X3BzZV9hdHRhY2hfb25lYApgcGh5X3BzZV9kZXRhY2hfb25lYApgcGh5X3BzZV9ub3RpZmllcl9ldmVudGAKYHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkYApgcHNlX3JlZ2lzdGVyX25vdGlmaWVyYApgcHNlX3VucmVnaXN0ZXJfbm90aWZpZXJgCmBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2YAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFNFX0NPTlRST0xMRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wc2UtcGQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BzZS1wZC9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC9wc2UtcGQvS2NvbmZpZzo2Om1lbnVjb25maWcgUFNFX0NPTlRST0xMRVJcbmRyaXZlcnMvbmV0L3BzZS1wZC9LY29uZmlnLTctXHRib29sIFwmIzM0O0V0aGVybmV0IFBvd2VyIFNvdXJjaW5nIEVxdWlwbWVudCBTdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDExOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTA4CgkJCQkJCQlvdXRwdXQ6IDIwMAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgU2ltcGxlc3QgRGF0YSBQb2ludCoqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGUgbWF0dGVyIHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCBhIGJvb2xlYW4uIFRoYXQmIzM5O3MgaXQuIFNpbXBsZSB0cnV0aCB2YWx1ZTsgYSBiaW5hcnkgc3RhdGUuIE5vIGZhbmN5IHN0cnVjdHVyZXMsIG5vIGNvbXBsZXggY2FsY3VsYXRpb25zLi4uIGp1c3QgYSBgYm9vbGAuIEkgaW1tZWRpYXRlbHkgYmVnaW4gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGhhbmRsZSB0aGlzIHBpZWNlIG9mIGRhdGEuCgpHaXZlbiBpdHMgc2ltcGxpY2l0eSwgbGV0JiMzOTtzIGVzdGFibGlzaCBhIGNsZWFyIGFuZCBjb25jaXNlIG5hbWUgZm9yIHRoZSBwcm9jZXNzIG9mIHNldHRpbmcgdGhlIHZhcmlhYmxlLCB0aGUgdmFsdWUgb2YgdGhlIGJvb2xlYW4uIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgaG93IEkmIzM5O20gaGFuZGxpbmcgdGhlIHByb2Nlc3MsIGlmIEkmIzM5O20gcmV0dXJuaW5nIGFueXRoaW5nIGFuZCBhbGwgb3RoZXIgdmFyaWFibGVzIHRoYXQgYXJlIGJlaW5nIGFmZmVjdGVkLiBUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8gYWRvcHQgdGhlIG5hbWUgYHNldC1yZXN1bHRzYC4gSXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLCByZWZsZWN0cyB0aGUgYWN0aW9uIGJlaW5nIHBlcmZvcm1lZCwgYW5kIGhvcGVmdWxseSwga2VlcHMgYW55IHN1YnNlcXVlbnQgaW50ZXJhY3Rpb25zIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBib29sZWFuIGNsZWFyIGFuZCBjb25jaXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFNFX0NPTlRST0xMRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfdHJ5X2F0dGFjaF9wc2UmIzM0OywKICAgICYjMzQ7cGh5X3BzZV9hdHRhY2hfb25lJiMzNDssCiAgICAmIzM0O3BoeV9wc2VfZGV0YWNoX29uZSYjMzQ7LAogICAgJiMzNDtwaHlfcHNlX25vdGlmaWVyX2V2ZW50JiMzNDssCiAgICAmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkJiMzNDssCiAgICAmIzM0O3BzZV9yZWdpc3Rlcl9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtwc2VfdW5yZWdpc3Rlcl9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBQSFkgZGV2aWNlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHRvIGF0dGFjaCBQb3dlciBTb3VyY2luZyBFcXVpcG1lbnQgKFBTRSkgY29udHJvbGxlcnMgdXNpbmcgYSBub3RpZmllci1iYXNlZCBtZWNoYW5pc20uIEl0IGludHJvZHVjZXMgbmV3IGZ1bmN0aW9ucyB0byBoYW5kbGUgUFNFIGF0dGFjaG1lbnQvZGV0YWNobWVudCBhbmQgbm90aWZpZXIgZXZlbnRzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgTURJTyBidXNlcyAoZS5nLiwgVVNCIG5ldHdvcmsgYWRhcHRlcnMsIERTQSBsb29wYmFjaykgYW5kIHZpcnR1YWwgUFNFIGNvbnRyb2xsZXJzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV3IGF0dGFjaG1lbnQgbG9naWMgYW5kIG5vdGlmaWVyIGNhbGxiYWNrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFNFX0NPTlRST0xMRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfdHJ5X2F0dGFjaF9wc2UmIzM0OywKICAgICYjMzQ7cGh5X3BzZV9hdHRhY2hfb25lJiMzNDssCiAgICAmIzM0O3BoeV9wc2VfZGV0YWNoX29uZSYjMzQ7LAogICAgJiMzNDtwaHlfcHNlX25vdGlmaWVyX2V2ZW50JiMzNDssCiAgICAmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkJiMzNDssCiAgICAmIzM0O3BzZV9yZWdpc3Rlcl9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtwc2VfdW5yZWdpc3Rlcl9ub3RpZmllciYjMzQ7LAogICAgJiMzNDtwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBQSFkgZGV2aWNlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHRvIGF0dGFjaCBQb3dlciBTb3VyY2luZyBFcXVpcG1lbnQgKFBTRSkgY29udHJvbGxlcnMgdXNpbmcgYSBub3RpZmllci1iYXNlZCBtZWNoYW5pc20uIEl0IGludHJvZHVjZXMgbmV3IGZ1bmN0aW9ucyB0byBoYW5kbGUgUFNFIGF0dGFjaG1lbnQvZGV0YWNobWVudCBhbmQgbm90aWZpZXIgZXZlbnRzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgTURJTyBidXNlcyAoZS5nLiwgVVNCIG5ldHdvcmsgYWRhcHRlcnMsIERTQSBsb29wYmFjaykgYW5kIHZpcnR1YWwgUFNFIGNvbnRyb2xsZXJzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV3IGF0dGFjaG1lbnQgbG9naWMgYW5kIG5vdGlmaWVyIGNhbGxiYWNrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDExOjI1OjM0Ljg0NjQ4NTM5NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDA5MjE5ODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBTRV9DT05UUk9MTEVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X3RyeV9hdHRhY2hfcHNlXCIsXG4gICAgXCJwaHlfcHNlX2F0dGFjaF9vbmVcIixcbiAgICBcInBoeV9wc2VfZGV0YWNoX29uZVwiLFxuICAgIFwicGh5X3BzZV9ub3RpZmllcl9ldmVudFwiLFxuICAgIFwicGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWRcIixcbiAgICBcInBzZV9yZWdpc3Rlcl9ub3RpZmllclwiLFxuICAgIFwicHNlX3VucmVnaXN0ZXJfbm90aWZpZXJcIixcbiAgICBcInBzZV9jb250cm9sX21hdGNoZXNfcGNkZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUEhZIGRldmljZSByZWdpc3RyYXRpb24gcHJvY2VzcyB0byBhdHRhY2ggUG93ZXIgU291cmNpbmcgRXF1aXBtZW50IChQU0UpIGNvbnRyb2xsZXJzIHVzaW5nIGEgbm90aWZpZXItYmFzZWQgbWVjaGFuaXNtLiBJdCBpbnRyb2R1Y2VzIG5ldyBmdW5jdGlvbnMgdG8gaGFuZGxlIFBTRSBhdHRhY2htZW50L2RldGFjaG1lbnQgYW5kIG5vdGlmaWVyIGV2ZW50cy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB2aXJ0dWFsIE1ESU8gYnVzZXMgKGUuZy4sIFVTQiBuZXR3b3JrIGFkYXB0ZXJzLCBEU0EgbG9vcGJhY2spIGFuZCB2aXJ0dWFsIFBTRSBjb250cm9sbGVycy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyBhdHRhY2htZW50IGxvZ2ljIGFuZCBub3RpZmllciBjYWxsYmFja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDExOjI1OjM0Ljg0NjQ5MjUwNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEyMDQ5OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzhiMWVhOTBiMGMyNGEzZjE0N2ZiYWYxMjVjMjNiZWVkMDkyNmFlNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAxMToyNTozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMgYi9kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmNcXG5pbmRleCBiYTcwOTE1MTgyNjU0MC4uN2JkOTc5YjU5ZjQ5NjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jXFxuKysrIGIvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jXFxuQEAgLTExLDMzICsxMSwxMSBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZndub2RlX21kaW8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4tI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BzZS1wZC9wc2UuaFxcdTAwM2VcXG4gXFxuIE1PRFVMRV9BVVRIT1IoXFxcIkNhbHZpbiBKb2huc29uIFxcdTAwM2NjYWx2aW4uam9obnNvbkBvc3MubnhwLmNvbVxcdTAwM2VcXFwiKTtcXG4gTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbiBNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkZXTk9ERSBNRElPIGJ1cyAoRXRoZXJuZXQgUEhZKSBhY2Nlc3NvcnNcXFwiKTtcXG4gXFxuLXN0YXRpYyBzdHJ1Y3QgcHNlX2NvbnRyb2wgKlxcbi1md25vZGVfZmluZF9wc2VfY29udHJvbChzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi1cXHRcXHRcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi17XFxuLVxcdHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYztcXG4tXFx0c3RydWN0IGRldmljZV9ub2RlICpucDtcXG4tXFxuLVxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfUFNFX0NPTlRST0xMRVIpKVxcbi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tXFxuLVxcdG5wID0gdG9fb2Zfbm9kZShmd25vZGUpO1xcbi1cXHRpZiAoIW5wKVxcbi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tXFxuLVxcdHBzZWMgPSBvZl9wc2VfY29udHJvbF9nZXQobnAsIHBoeWRldik7XFxuLVxcdGlmIChQVFJfRVJSKHBzZWMpID09IC1FTk9FTlQpXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbi1cXG4tXFx0cmV0dXJuIHBzZWM7XFxuLX1cXG4tXFxuIHN0YXRpYyBzdHJ1Y3QgbWlpX3RpbWVzdGFtcGVyICpcXG4gZndub2RlX2ZpbmRfbWlpX3RpbWVzdGFtcGVyKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpXFxuIHtcXG5AQCAtMTE4LDcgKzk2LDYgQEAgaW50IGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqY2hpbGQsIHUzMiBhZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cyA9IE5VTEw7XFxuLVxcdHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyA9IE5VTEw7XFxuIFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHk7XFxuIFxcdGJvb2wgaXNfYzQ1O1xcbiBcXHR1MzIgcGh5X2lkO1xcbkBAIC0xNTksMTQgKzEzNiw2IEBAIGludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcXG4gXFx0XFx0XFx0Z290byBjbGVhbl9waHk7XFxuIFxcdH1cXG4gXFxuLVxcdHBzZWMgPSBmd25vZGVfZmluZF9wc2VfY29udHJvbChjaGlsZCwgcGh5KTtcXG4tXFx0aWYgKElTX0VSUihwc2VjKSkge1xcbi1cXHRcXHRyYyA9IFBUUl9FUlIocHNlYyk7XFxuLVxcdFxcdGdvdG8gdW5yZWdpc3Rlcl9waHk7XFxuLVxcdH1cXG4tXFxuLVxcdHBoeS1cXHUwMDNlcHNlYyA9IHBzZWM7XFxuLVxcbiBcXHQvKiBwaHktXFx1MDAzZW1paV90cyBtYXkgYWxyZWFkeSBiZSBkZWZpbmVkIGJ5IHRoZSBQSFkgZHJpdmVyLiBBXFxuIFxcdCAqIG1paV90aW1lc3RhbXBlciBwcm9iZWQgdmlhIHRoZSBkZXZpY2UgdHJlZSB3aWxsIHN0aWxsIGhhdmVcXG4gXFx0ICogcHJlY2VkZW5jZS5cXG5AQCAtMTc2LDkgKzE0NSw2IEBAIGludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcXG4gXFxuIFxcdHJldHVybiAwO1xcbiBcXG4tdW5yZWdpc3Rlcl9waHk6XFxuLVxcdGlmIChpc19hY3BpX25vZGUoY2hpbGQpIHx8IGlzX29mX25vZGUoY2hpbGQpKVxcbi1cXHRcXHRwaHlfZGV2aWNlX3JlbW92ZShwaHkpO1xcbiBjbGVhbl9waHk6XFxuIFxcdHBoeV9kZXZpY2VfZnJlZShwaHkpO1xcbiBjbGVhbl9taWlfdHM6XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuaW5kZXggMDYxNTIyODQ1OWVmNDIuLmY1ZmViZmY0YjAwYjhlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuQEAgLTIyMyw4ICsyMjMsMTkgQEAgc3RhdGljIHZvaWQgcGh5X21kaW9fZGV2aWNlX2ZyZWUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbiBcXG4gc3RhdGljIHZvaWQgcGh5X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4ge1xcbitcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdG9fcGh5X2RldmljZShkZXYpO1xcbitcXG4rXFx0LyogYnVzX2Zvcl9lYWNoX2RldigpIGhvbGRzIGdldF9kZXZpY2UoKSBhY3Jvc3MgZWFjaCBpdGVyYXRpb25cXG4rXFx0ICogc3RlcCwgZGVmZXJyaW5nIHRoaXMgcmVsZWFzZSBjYWxsYmFjayB1bnRpbCBhbnkgaW4tZmxpZ2h0IFBTRVxcbitcXHQgKiBub3RpZmllciB3YWxrIGhhcyBhZHZhbmNlZCBwYXN0IHRoaXMgcGh5LiBwc2VfY29udHJvbF9wdXQoKVxcbitcXHQgKiB0YWtlcyBwc2VfbGlzdF9tdXRleCwgc28gdGhpcyBwYXRoIG11c3QgcnVuIGluIHNsZWVwYWJsZVxcbitcXHQgKiBjb250ZXh0LlxcbitcXHQgKi9cXG4rXFx0bWlnaHRfc2xlZXAoKTtcXG4rXFx0cHNlX2NvbnRyb2xfcHV0KHBoeWRldi1cXHUwMDNlcHNlYyk7XFxuK1xcbiBcXHRmd25vZGVfaGFuZGxlX3B1dChkZXYtXFx1MDAzZWZ3bm9kZSk7XFxuLVxcdGtmcmVlKHRvX3BoeV9kZXZpY2UoZGV2KSk7XFxuK1xcdGtmcmVlKHBoeWRldik7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHBoeV9tZGlvX2RldmljZV9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbkBAIC0xMTAyLDExICsxMTEzLDEwMyBAQCBzdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxcbiB9XFxuIEVYUE9SVF9TWU1CT0woZ2V0X3BoeV9kZXZpY2UpO1xcbiBcXG4tLyoqXFxuLSAqIHBoeV9kZXZpY2VfcmVnaXN0ZXIgLSBSZWdpc3RlciB0aGUgcGh5IGRldmljZSBvbiB0aGUgTURJTyBidXNcXG4tICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzXFxuKy8qIEJlc3QtZWZmb3J0IGF0dGFjaCBvZiBwaHlkZXYtXFx1MDAzZXBzZWMgZnJvbSBhIERUIGBwc2VzID0gXFx1MDAzY1xcdTAwMjYuLi5cXHUwMDNlYCBwaGFuZGxlLlxcbisgKiBDYWxsZXIgbXVzdCBob2xkIHJ0bmwuIEEgbWlzc2luZyBwaGFuZGxlICgtRU5PRU5UKSBvciBhIG5vdC15ZXQtcmVnaXN0ZXJlZFxcbisgKiBjb250cm9sbGVyICgtRVBST0JFX0RFRkVSKSBpcyBzaWxlbnQ7IHRoZSBub3RpZmllciByZXRyaWVzIHRoZSBsYXR0ZXIgYXRcXG4rICogUFNFX1JFR0lTVEVSRUQgdGltZS4gQW55IG90aGVyIGVycm9yIG1lYW5zIGEgYnJva2VuIGJpbmRpbmcgYW5kIGlzIHdhcm5lZFxcbisgKiBhYm91dCwgYnV0IGxlZnQgbm9uLWZhdGFsIHNvIHRoZSBwaHkgc3RpbGwgcmVnaXN0ZXJzLlxcbiAgKi9cXG4taW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4rc3RhdGljIHZvaWQgcGh5X3RyeV9hdHRhY2hfcHNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0c3RydWN0IHBzZV9jb250cm9sICpwc2VjO1xcbitcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xcbitcXG4rXFx0QVNTRVJUX1JUTkwoKTtcXG4rXFxuK1xcdG5wID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5vZl9ub2RlO1xcbitcXHRpZiAoIW5wKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRpZiAocGh5ZGV2LVxcdTAwM2Vwc2VjKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRwc2VjID0gb2ZfcHNlX2NvbnRyb2xfZ2V0KG5wLCBwaHlkZXYpO1xcbitcXHRpZiAoSVNfRVJSKHBzZWMpKSB7XFxuK1xcdFxcdGlmIChQVFJfRVJSKHBzZWMpICE9IC1FUFJPQkVfREVGRVIgXFx1MDAyNlxcdTAwMjYgUFRSX0VSUihwc2VjKSAhPSAtRU5PRU5UKVxcbitcXHRcXHRcXHRwaHlkZXZfd2FybihwaHlkZXYsIFxcXCJmYWlsZWQgdG8gZ2V0IFBTRSBjb250cm9sOiAlcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgICBwc2VjKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRwaHlkZXYtXFx1MDAzZXBzZWMgPSBwc2VjO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHBoeV9wc2VfYXR0YWNoX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEgX19tYXliZV91bnVzZWQpXFxuK3tcXG4rXFx0QVNTRVJUX1JUTkwoKTtcXG4rXFxuK1xcdGlmIChkZXYtXFx1MDAzZXR5cGUgIT0gXFx1MDAyNm1kaW9fYnVzX3BoeV90eXBlKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHBoeV90cnlfYXR0YWNoX3BzZSh0b19waHlfZGV2aWNlKGRldikpO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGludCBwaHlfcHNlX2RldGFjaF9vbmUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2ID0gZGF0YTtcXG4rXFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcXG4rXFx0c3RydWN0IHBzZV9jb250cm9sICpwc2VjO1xcbitcXG4rXFx0QVNTRVJUX1JUTkwoKTtcXG4rXFxuK1xcdGlmIChkZXYtXFx1MDAzZXR5cGUgIT0gXFx1MDAyNm1kaW9fYnVzX3BoeV90eXBlKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTtcXG4rXFx0cHNlYyA9IHBoeWRldi1cXHUwMDNlcHNlYztcXG4rXFx0aWYgKCFwc2VjIHx8ICFwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2KHBzZWMsIHBjZGV2KSlcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRwaHlkZXYtXFx1MDAzZXBzZWMgPSBOVUxMO1xcbitcXHRwc2VfY29udHJvbF9wdXQocHNlYyk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHBoeV9wc2Vfbm90aWZpZXJfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4rXFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN3aXRjaCAoZXZlbnQpIHtcXG4rXFx0Y2FzZSBQU0VfUkVHSVNURVJFRDpcXG4rXFx0XFx0cnRubF9sb2NrKCk7XFxuK1xcdFxcdGJ1c19mb3JfZWFjaF9kZXYoXFx1MDAyNm1kaW9fYnVzX3R5cGUsIE5VTEwsIE5VTEwsXFxuK1xcdFxcdFxcdFxcdCBwaHlfcHNlX2F0dGFjaF9vbmUpO1xcbitcXHRcXHRydG5sX3VubG9jaygpO1xcbitcXHRcXHRyZXR1cm4gTk9USUZZX09LO1xcbitcXHRjYXNlIFBTRV9VTlJFR0lTVEVSRUQ6XFxuK1xcdFxcdHJ0bmxfbG9jaygpO1xcbitcXHRcXHRidXNfZm9yX2VhY2hfZGV2KFxcdTAwMjZtZGlvX2J1c190eXBlLCBOVUxMLCBkYXRhLFxcbitcXHRcXHRcXHRcXHQgcGh5X3BzZV9kZXRhY2hfb25lKTtcXG4rXFx0XFx0cnRubF91bmxvY2soKTtcXG4rXFx0XFx0cmV0dXJuIE5PVElGWV9PSztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIE5PVElGWV9ET05FO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgcGh5X3BzZV9ub3RpZmllciBfX3JlYWRfbW9zdGx5ID0ge1xcbitcXHQubm90aWZpZXJfY2FsbCA9IHBoeV9wc2Vfbm90aWZpZXJfZXZlbnQsXFxuK307XFxuK1xcbisvKiBDb3JlIHJlZ2lzdHJhdGlvbjogYWRkIHRoZSBwaHkgdG8gdGhlIE1ESU8gYnVzLiBEb2VzIG5vdCB0b3VjaCBydG5sIG9yXFxuKyAqIFBTRS4gcGh5ZGV2LVxcdTAwM2Vwc2VjIGlzIGF0dGFjaGVkIGJ5IHRoZSBjYWxsZXJzIGJlbG93LCBhZnRlciBkZXZpY2VfYWRkKClcXG4rICogaGFzIG1hZGUgdGhlIHBoeSB2aXNpYmxlIG9uIG1kaW9fYnVzX3R5cGUsIHNvIHRoYXQgYSBjb25jdXJyZW50IFBTRVxcbisgKiBub3RpZmllciB3YWxrIGFuZCB0aGUgYXR0YWNoIGNhbiBuZXZlciBsZWF2ZSB0aGUgcGh5IHVuYXR0YWNoZWQuIEtlZXBpbmdcXG4rICogZGV2aWNlX2FkZCgpIG91dCBvZiBydG5sIGFsc28gYXZvaWRzIGRlYWRsb2NraW5nIHdoZW4gYmluZGluZyBhIHBoeSB0aGF0XFxuKyAqIGl0c2VsZiBwcm92aWRlcyBhbiBTRlAgY2FnZSAocGh5X3Byb2JlKCkgLVxcdTAwM2UgcGh5X3NmcF9wcm9iZSgpIC1cXHUwMDNlXFxuKyAqIHNmcF9idXNfYWRkX3Vwc3RyZWFtKCkgdGFrZXMgcnRubCkuXFxuKyAqL1xcbitzdGF0aWMgaW50IF9fcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdGludCBlcnI7XFxuIFxcbkBAIC0xMTM1LDEwICsxMjM4LDU0IEBAIGludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuICBvdXQ6XFxuIFxcdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXFxuIFxcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcXG4tXFxuIFxcdG1kaW9idXNfdW5yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpbyk7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4rXFxuKy8qKlxcbisgKiBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZCAtIFJlZ2lzdGVyIHRoZSBwaHkgZGV2aWNlIG9uIHRoZSBNRElPIGJ1c1xcbisgKiBAcGh5ZGV2OiBwaHlfZGV2aWNlIHN0cnVjdHVyZSB0byBiZSBhZGRlZCB0byB0aGUgTURJTyBidXNcXG4rICpcXG4rICogU2FtZSBhcyBwaHlfZGV2aWNlX3JlZ2lzdGVyKCkgYnV0IGNhbGxlciBtdXN0IGFscmVhZHkgaG9sZCBydG5sX2xvY2soKS5cXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cXG4rICovXFxuK2ludCBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbit7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRBU1NFUlRfUlROTCgpO1xcbitcXG4rXFx0ZXJyID0gX19waHlfZGV2aWNlX3JlZ2lzdGVyKHBoeWRldik7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRwaHlfdHJ5X2F0dGFjaF9wc2UocGh5ZGV2KTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK0VYUE9SVF9TWU1CT0wocGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWQpO1xcbitcXG4rLyoqXFxuKyAqIHBoeV9kZXZpY2VfcmVnaXN0ZXIgLSBSZWdpc3RlciB0aGUgcGh5IGRldmljZSBvbiB0aGUgTURJTyBidXNcXG4rICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzXFxuKyAqXFxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXFxuKyAqL1xcbitpbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbit7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRlcnIgPSBfX3BoeV9kZXZpY2VfcmVnaXN0ZXIocGh5ZGV2KTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFxuK1xcdHJ0bmxfbG9jaygpO1xcbitcXHRwaHlfdHJ5X2F0dGFjaF9wc2UocGh5ZGV2KTtcXG4rXFx0cnRubF91bmxvY2soKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuIEVYUE9SVF9TWU1CT0wocGh5X2RldmljZV9yZWdpc3Rlcik7XFxuIFxcbiAvKipcXG5AQCAtMTE1Miw4ICsxMjk5LDYgQEAgRVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyKTtcXG4gdm9pZCBwaHlfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdHVucmVnaXN0ZXJfbWlpX3RpbWVzdGFtcGVyKHBoeWRldi1cXHUwMDNlbWlpX3RzKTtcXG4tXFx0cHNlX2NvbnRyb2xfcHV0KHBoeWRldi1cXHUwMDNlcHNlYyk7XFxuLVxcbiBcXHRkZXZpY2VfZGVsKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2KTtcXG4gXFxuIFxcdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXFxuQEAgLTM5ODEsOCArNDEyNiwxNCBAQCBzdGF0aWMgaW50IF9faW5pdCBwaHlfaW5pdCh2b2lkKVxcbiBcXHRpZiAocmMpXFxuIFxcdFxcdGdvdG8gZXJyX2M0NTtcXG4gXFxuK1xcdHJjID0gcHNlX3JlZ2lzdGVyX25vdGlmaWVyKFxcdTAwMjZwaHlfcHNlX25vdGlmaWVyKTtcXG4rXFx0aWYgKHJjKVxcbitcXHRcXHRnb3RvIGVycl9nZW5waHk7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuK2Vycl9nZW5waHk6XFxuK1xcdHBoeV9kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2Z2VucGh5X2RyaXZlcik7XFxuIGVycl9jNDU6XFxuIFxcdHBoeV9kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2Z2VucGh5X2M0NV9kcml2ZXIpO1xcbiBlcnJfZXRodG9vbF9waHlfb3BzOlxcbkBAIC0zOTk5LDYgKzQxNTAsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBwaHlfaW5pdCh2b2lkKVxcbiBcXG4gc3RhdGljIHZvaWQgX19leGl0IHBoeV9leGl0KHZvaWQpXFxuIHtcXG4rXFx0cHNlX3VucmVnaXN0ZXJfbm90aWZpZXIoXFx1MDAyNnBoeV9wc2Vfbm90aWZpZXIpO1xcbiBcXHRwaHlfZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmdlbnBoeV9jNDVfZHJpdmVyKTtcXG4gXFx0cGh5X2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZnZW5waHlfZHJpdmVyKTtcXG4gXFx0cnRubF9sb2NrKCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9zZnAuYyBiL2RyaXZlcnMvbmV0L3BoeS9zZnAuY1xcbmluZGV4IDAzYmZkODY0MGRiOTYzLi4xODg2OGJkZDY0ODUyYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvc2ZwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvc2ZwLmNcXG5AQCAtMjA4Myw3ICsyMDgzLDcgQEAgc3RhdGljIGludCBzZnBfc21fcHJvYmVfcGh5KHN0cnVjdCBzZnAgKnNmcCwgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxcbiBcXHQvKiBNYXJrIHRoaXMgUEhZIGFzIGJlaW5nIG9uIGEgU0ZQIG1vZHVsZSAqL1xcbiBcXHRwaHktXFx1MDAzZWlzX29uX3NmcF9tb2R1bGUgPSB0cnVlO1xcbiBcXG4tXFx0ZXJyID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpO1xcbitcXHRlcnIgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZChwaHkpO1xcbiBcXHRpZiAoZXJyKSB7XFxuIFxcdFxcdHBoeV9kZXZpY2VfZnJlZShwaHkpO1xcbiBcXHRcXHRkZXZfZXJyKHNmcC1cXHUwMDNlZGV2LCBcXFwicGh5X2RldmljZV9yZWdpc3RlciBmYWlsZWQ6ICVwZVxcXFxuXFxcIixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMgYi9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY1xcbmluZGV4IDY5ZGJkYmRlOWQ3MWE3Li42MTE1NDBkZjQzYmIxYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jXFxuQEAgLTgsNiArOCw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aHRvb2wuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aHRvb2xfbmV0bGluay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbm90aWZpZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BzZS1wZC9wc2UuaFxcdTAwM2VcXG5AQCAtMjMsNiArMjQsMzkgQEAgc3RhdGljIExJU1RfSEVBRChwc2VfY29udHJvbGxlcl9saXN0KTtcXG4gc3RhdGljIERFRklORV9YQVJSQVlfQUxMT0MocHNlX3B3X2RfbWFwKTtcXG4gc3RhdGljIERFRklORV9NVVRFWChwc2VfcHdfZF9tdXRleCk7XFxuIFxcbitzdGF0aWMgQkxPQ0tJTkdfTk9USUZJRVJfSEVBRChwc2VfY29udHJvbGxlcl9ub3RpZmllcik7XFxuK1xcbisvKipcXG4rICogcHNlX3JlZ2lzdGVyX25vdGlmaWVyIC0gcmVnaXN0ZXIgYSBjYWxsYmFjayBmb3IgUFNFIGNvbnRyb2xsZXIgZXZlbnRzXFxuKyAqIEBuYjogbm90aWZpZXIgYmxvY2sgdG8gcmVnaXN0ZXJcXG4rICpcXG4rICogU2VlIGVudW0gcHNlX2NvbnRyb2xsZXJfZXZlbnQgZm9yIGV2ZW50cyBmaXJlZCBhbmQgdGhlaXIgc3Vic2NyaWJlclxcbisgKiBjb250cmFjdC4gQ2FsbGJhY2tzIHJ1biBpbiBwcm9jZXNzIGNvbnRleHQ7IHRoZXkgbWF5IHNsZWVwLCB0YWtlXFxuKyAqIHJ0bmwsIGFuZCBjYWxsIG9mX3BzZV9jb250cm9sX2dldCgpLiBUaGUgY2hhaW4gZmlyZXMgc3luY2hyb25vdXNseSxcXG4rICogc28gYSBQU0UgY29udHJvbGxlciBkcml2ZXIncyBwcm9iZS91bmJpbmQgcGF0aCBtdXN0IG5vdCBob2xkIGFueVxcbisgKiBzdWNoIGxvY2sgd2hlbiBjYWxsaW5nIHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKCkgb3JcXG4rICogcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcigpLlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXFxuKyAqL1xcbitpbnQgcHNlX3JlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpXFxuK3tcXG4rXFx0cmV0dXJuIGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKFxcdTAwMjZwc2VfY29udHJvbGxlcl9ub3RpZmllciwgbmIpO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKHBzZV9yZWdpc3Rlcl9ub3RpZmllcik7XFxuK1xcbisvKipcXG4rICogcHNlX3VucmVnaXN0ZXJfbm90aWZpZXIgLSB1bnJlZ2lzdGVyIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIGNhbGxiYWNrXFxuKyAqIEBuYjogbm90aWZpZXIgYmxvY2sgcHJldmlvdXNseSBwYXNzZWQgdG8gcHNlX3JlZ2lzdGVyX25vdGlmaWVyKClcXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxcbisgKi9cXG4raW50IHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpXFxuK3tcXG4rXFx0cmV0dXJuIGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoXFx1MDAyNnBzZV9jb250cm9sbGVyX25vdGlmaWVyLCBuYik7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwocHNlX3VucmVnaXN0ZXJfbm90aWZpZXIpO1xcbitcXG4gLyoqXFxuICAqIHN0cnVjdCBwc2VfY29udHJvbCAtIGEgUFNFIGNvbnRyb2xcXG4gICogQHBjZGV2OiBhIHBvaW50ZXIgdG8gdGhlIFBTRSBjb250cm9sbGVyIGRldmljZVxcbkBAIC0xMTA0LDYgKzExMzgsOSBAQCBpbnQgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpXFxuIFxcdGxpc3RfYWRkKFxcdTAwMjZwY2Rldi1cXHUwMDNlbGlzdCwgXFx1MDAyNnBzZV9jb250cm9sbGVyX2xpc3QpO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNnBzZV9saXN0X211dGV4KTtcXG4gXFxuK1xcdGJsb2NraW5nX25vdGlmaWVyX2NhbGxfY2hhaW4oXFx1MDAyNnBzZV9jb250cm9sbGVyX25vdGlmaWVyLFxcbitcXHRcXHRcXHRcXHQgICAgIFBTRV9SRUdJU1RFUkVELCBwY2Rldik7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XFxuQEAgLTExMTQsNiArMTE1MSw5IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKTtcXG4gICovXFxuIHZvaWQgcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcihzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldilcXG4ge1xcbitcXHRibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKFxcdTAwMjZwc2VfY29udHJvbGxlcl9ub3RpZmllcixcXG4rXFx0XFx0XFx0XFx0ICAgICBQU0VfVU5SRUdJU1RFUkVELCBwY2Rldik7XFxuK1xcbiBcXHRwc2VfZmx1c2hfcHdfZHMocGNkZXYpO1xcbiBcXHRwc2VfcmVsZWFzZV9waXMocGNkZXYpO1xcbiBcXHRpZiAocGNkZXYtXFx1MDAzZWlycSlcXG5AQCAtMTk4MSwzICsyMDIxLDE3IEBAIGJvb2wgcHNlX2hhc19jMzMoc3RydWN0IHBzZV9jb250cm9sICpwc2VjKVxcbiBcXHRyZXR1cm4gcHNlYy1cXHUwMDNlcGNkZXYtXFx1MDAzZXR5cGVzIFxcdTAwMjYgRVRIVE9PTF9QU0VfQzMzO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9oYXNfYzMzKTtcXG4rXFxuKy8qKlxcbisgKiBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2IC0gVGVzdCB3aGV0aGVyIGEgcHNlX2NvbnRyb2wgdGFyZ2V0cyBhIGNvbnRyb2xsZXJcXG4rICogQHBzZWM6IHBzZV9jb250cm9sIG9idGFpbmVkIGZyb20gb2ZfcHNlX2NvbnRyb2xfZ2V0KClcXG4rICogQHBjZGV2OiBQU0UgY29udHJvbGxlciB0byBjb21wYXJlIGFnYWluc3RcXG4rICpcXG4rICogUmV0dXJuOiAldHJ1ZSBpZiBAcHNlYyB3YXMgb2J0YWluZWQgZnJvbSBAcGNkZXYsICVmYWxzZSBvdGhlcndpc2UuXFxuKyAqL1xcbitib29sIHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYoc3RydWN0IHBzZV9jb250cm9sICpwc2VjLFxcbitcXHRcXHRcXHQgICAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpXFxuK3tcXG4rXFx0cmV0dXJuIHBzZWMtXFx1MDAzZXBjZGV2ID09IHBjZGV2O1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaFxcbmluZGV4IDE5OWE3YWFhMzQxYmZkLi44NjViOWJhZGRiODVmYSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9waHkuaFxcbkBAIC0yMTU4LDYgKzIxNTgsOCBAQCBzdHJ1Y3QgcGh5X2RldmljZSAqZndub2RlX3BoeV9maW5kX2RldmljZShzdHJ1Y3QgZndub2RlX2hhbmRsZSAqcGh5X2Z3bm9kZSk7XFxuIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGVfZ2V0X3BoeV9ub2RlKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpO1xcbiBzdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KTtcXG4gaW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSk7XFxuKy8qIENhbGxlciBtdXN0IGhvbGQgcnRubF9sb2NrKCk7IHNlZSBwaHlfZGV2aWNlX3JlZ2lzdGVyKCkgZm9yIHRoZSBwdWJsaWMgZm9ybS4gKi9cXG4raW50IHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpO1xcbiB2b2lkIHBoeV9kZXZpY2VfZnJlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4gdm9pZCBwaHlfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4gaW50IHBoeV9nZXRfYzQ1X2lkcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wc2UtcGQvcHNlLmggYi9pbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaFxcbmluZGV4IDRlNTY5NmNmYWRlN2NjLi5kNDMxMGNhNzFhM2UwOCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcHNlLXBkL3BzZS5oXFxuQEAgLTIxLDYgKzIxLDcgQEAgc3RydWN0IG5ldF9kZXZpY2U7XFxuIHN0cnVjdCBwaHlfZGV2aWNlO1xcbiBzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2O1xcbiBzdHJ1Y3QgbmV0bGlua19leHRfYWNrO1xcbitzdHJ1Y3Qgbm90aWZpZXJfYmxvY2s7XFxuIFxcbiAvKiBDMzMgUFNFIGV4dGVuZGVkIHN0YXRlIGFuZCBzdWJzdGF0ZS4gKi9cXG4gc3RydWN0IGV0aHRvb2xfYzMzX3BzZV9leHRfc3RhdGVfaW5mbyB7XFxuQEAgLTMzNyw2ICszMzgsMjQgQEAgZW51bSBwc2VfYnVkZ2V0X2V2YWxfc3RyYXRlZ2llcyB7XFxuIFxcdFBTRV9CVURHRVRfRVZBTF9TVFJBVF9EWU5BTUlDXFx0PSAxIFxcdTAwM2NcXHUwMDNjIDIsXFxuIH07XFxuIFxcbisvKipcXG4rICogZW51bSBwc2VfY29udHJvbGxlcl9ldmVudCAtIFBTRSBjb250cm9sbGVyIGxpZmVjeWNsZSBldmVudHNcXG4rICpcXG4rICogRXZlbnQgZGF0YSBpbiBjYWxsYmFja3MgaXMgYWx3YXlzIGEgcG9pbnRlciB0byB0aGUgc3RydWN0XFxuKyAqIHBzZV9jb250cm9sbGVyX2RldiBmaXJpbmcgdGhlIGV2ZW50LlxcbisgKlxcbisgKiBAUFNFX1JFR0lTVEVSRUQ6IGNvbnRyb2xsZXIgYWRkZWQgdG8gcHNlX2NvbnRyb2xsZXJfbGlzdCBhbmRcXG4rICpcXHRyZXNvbHZhYmxlIGJ5IG9mX3BzZV9jb250cm9sX2dldCgpLlxcbisgKiBAUFNFX1VOUkVHSVNURVJFRDogY29udHJvbGxlciBhYm91dCB0byBiZSByZW1vdmVkIGZyb21cXG4rICpcXHRwc2VfY29udHJvbGxlcl9saXN0LiBTdWJzY3JpYmVycyBob2xkaW5nIHBzZV9jb250cm9sIHJlZmVyZW5jZXNcXG4rICpcXHR0YXJnZXRpbmcgaXQgbXVzdCBkcm9wIHRoZW0gYmVmb3JlIHJldHVybmluZyBhbmQgbXVzdCBub3RcXG4rICpcXHRhY3F1aXJlIG5ldyByZWZlcmVuY2VzIGZvciBpdC5cXG4rICovXFxuK2VudW0gcHNlX2NvbnRyb2xsZXJfZXZlbnQge1xcbitcXHRQU0VfUkVHSVNURVJFRCxcXG4rXFx0UFNFX1VOUkVHSVNURVJFRCxcXG4rfTtcXG4rXFxuICNpZiBJU19FTkFCTEVEKENPTkZJR19QU0VfQ09OVFJPTExFUilcXG4gaW50IHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KTtcXG4gdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KTtcXG5AQCAtMzY2LDYgKzM4NSwxMiBAQCBpbnQgcHNlX2V0aHRvb2xfc2V0X3ByaW8oc3RydWN0IHBzZV9jb250cm9sICpwc2VjLFxcbiBib29sIHBzZV9oYXNfcG9kbChzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMpO1xcbiBib29sIHBzZV9oYXNfYzMzKHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyk7XFxuIFxcbitib29sIHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYoc3RydWN0IHBzZV9jb250cm9sICpwc2VjLFxcbitcXHRcXHRcXHQgICAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpO1xcbitcXG4raW50IHBzZV9yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTtcXG4raW50IHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpO1xcbitcXG4gI2Vsc2VcXG4gXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBzZV9jb250cm9sICpvZl9wc2VfY29udHJvbF9nZXQoc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxcbkBAIC00MTYsNiArNDQxLDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwc2VfaGFzX2MzMyhzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMpXFxuIFxcdHJldHVybiBmYWxzZTtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSBib29sIHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYoc3RydWN0IHBzZV9jb250cm9sICpwc2VjLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxcbit7XFxuK1xcdHJldHVybiBmYWxzZTtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSBpbnQgcHNlX3JlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmUgaW50IHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuICNlbmRpZlxcbiBcXG4gI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDExOjI1OjM1LjU1OTM1MjAxNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI2OTYzMzgwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFNFX0NPTlRST0xMRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlfdHJ5X2F0dGFjaF9wc2VcIixcbiAgICBcInBoeV9wc2VfYXR0YWNoX29uZVwiLFxuICAgIFwicGh5X3BzZV9kZXRhY2hfb25lXCIsXG4gICAgXCJwaHlfcHNlX25vdGlmaWVyX2V2ZW50XCIsXG4gICAgXCJwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZFwiLFxuICAgIFwicHNlX3JlZ2lzdGVyX25vdGlmaWVyXCIsXG4gICAgXCJwc2VfdW5yZWdpc3Rlcl9ub3RpZmllclwiLFxuICAgIFwicHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBQSFkgZGV2aWNlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHRvIGF0dGFjaCBQb3dlciBTb3VyY2luZyBFcXVpcG1lbnQgKFBTRSkgY29udHJvbGxlcnMgdXNpbmcgYSBub3RpZmllci1iYXNlZCBtZWNoYW5pc20uIEl0IGludHJvZHVjZXMgbmV3IGZ1bmN0aW9ucyB0byBoYW5kbGUgUFNFIGF0dGFjaG1lbnQvZGV0YWNobWVudCBhbmQgbm90aWZpZXIgZXZlbnRzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgTURJTyBidXNlcyAoZS5nLiwgVVNCIG5ldHdvcmsgYWRhcHRlcnMsIERTQSBsb29wYmFjaykgYW5kIHZpcnR1YWwgUFNFIGNvbnRyb2xsZXJzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV3IGF0dGFjaG1lbnQgbG9naWMgYW5kIG5vdGlmaWVyIGNhbGxiYWNrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjOGIxZWE5MGIwYzI0YTNmMTQ3ZmJhZjEyNWMyM2JlZWQwOTI2YWU2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTE6MjU6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMgYi9kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmNcbmluZGV4IGJhNzA5MTUxODI2NTQwLi43YmQ5NzliNTlmNDk2OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uY1xuKysrIGIvZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jXG5AQCAtMTEsMzMgKzExLDExIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZndub2RlX21kaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BzZS1wZC9wc2UuaFx1MDAzZVxuIFxuIE1PRFVMRV9BVVRIT1IoXCJDYWx2aW4gSm9obnNvbiBcdTAwM2NjYWx2aW4uam9obnNvbkBvc3MubnhwLmNvbVx1MDAzZVwiKTtcbiBNT0RVTEVfTElDRU5TRShcIkdQTFwiKTtcbiBNT0RVTEVfREVTQ1JJUFRJT04oXCJGV05PREUgTURJTyBidXMgKEV0aGVybmV0IFBIWSkgYWNjZXNzb3JzXCIpO1xuIFxuLXN0YXRpYyBzdHJ1Y3QgcHNlX2NvbnRyb2wgKlxuLWZ3bm9kZV9maW5kX3BzZV9jb250cm9sKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tXHRcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi17XG4tXHRzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWM7XG4tXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xuLVxuLVx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19QU0VfQ09OVFJPTExFUikpXG4tXHRcdHJldHVybiBOVUxMO1xuLVxuLVx0bnAgPSB0b19vZl9ub2RlKGZ3bm9kZSk7XG4tXHRpZiAoIW5wKVxuLVx0XHRyZXR1cm4gTlVMTDtcbi1cbi1cdHBzZWMgPSBvZl9wc2VfY29udHJvbF9nZXQobnAsIHBoeWRldik7XG4tXHRpZiAoUFRSX0VSUihwc2VjKSA9PSAtRU5PRU5UKVxuLVx0XHRyZXR1cm4gTlVMTDtcbi1cbi1cdHJldHVybiBwc2VjO1xuLX1cbi1cbiBzdGF0aWMgc3RydWN0IG1paV90aW1lc3RhbXBlciAqXG4gZndub2RlX2ZpbmRfbWlpX3RpbWVzdGFtcGVyKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpXG4ge1xuQEAgLTExOCw3ICs5Niw2IEBAIGludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcbiBcdFx0XHRcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpjaGlsZCwgdTMyIGFkZHIpXG4ge1xuIFx0c3RydWN0IG1paV90aW1lc3RhbXBlciAqbWlpX3RzID0gTlVMTDtcbi1cdHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyA9IE5VTEw7XG4gXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5O1xuIFx0Ym9vbCBpc19jNDU7XG4gXHR1MzIgcGh5X2lkO1xuQEAgLTE1OSwxNCArMTM2LDYgQEAgaW50IGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuIFx0XHRcdGdvdG8gY2xlYW5fcGh5O1xuIFx0fVxuIFxuLVx0cHNlYyA9IGZ3bm9kZV9maW5kX3BzZV9jb250cm9sKGNoaWxkLCBwaHkpO1xuLVx0aWYgKElTX0VSUihwc2VjKSkge1xuLVx0XHRyYyA9IFBUUl9FUlIocHNlYyk7XG4tXHRcdGdvdG8gdW5yZWdpc3Rlcl9waHk7XG4tXHR9XG4tXG4tXHRwaHktXHUwMDNlcHNlYyA9IHBzZWM7XG4tXG4gXHQvKiBwaHktXHUwMDNlbWlpX3RzIG1heSBhbHJlYWR5IGJlIGRlZmluZWQgYnkgdGhlIFBIWSBkcml2ZXIuIEFcbiBcdCAqIG1paV90aW1lc3RhbXBlciBwcm9iZWQgdmlhIHRoZSBkZXZpY2UgdHJlZSB3aWxsIHN0aWxsIGhhdmVcbiBcdCAqIHByZWNlZGVuY2UuXG5AQCAtMTc2LDkgKzE0NSw2IEBAIGludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcbiBcbiBcdHJldHVybiAwO1xuIFxuLXVucmVnaXN0ZXJfcGh5OlxuLVx0aWYgKGlzX2FjcGlfbm9kZShjaGlsZCkgfHwgaXNfb2Zfbm9kZShjaGlsZCkpXG4tXHRcdHBoeV9kZXZpY2VfcmVtb3ZlKHBoeSk7XG4gY2xlYW5fcGh5OlxuIFx0cGh5X2RldmljZV9mcmVlKHBoeSk7XG4gY2xlYW5fbWlpX3RzOlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCAwNjE1MjI4NDU5ZWY0Mi4uZjVmZWJmZjRiMDBiOGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5AQCAtMjIzLDggKzIyMywxOSBAQCBzdGF0aWMgdm9pZCBwaHlfbWRpb19kZXZpY2VfZnJlZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gXG4gc3RhdGljIHZvaWQgcGh5X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbiB7XG4rXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdG9fcGh5X2RldmljZShkZXYpO1xuK1xuK1x0LyogYnVzX2Zvcl9lYWNoX2RldigpIGhvbGRzIGdldF9kZXZpY2UoKSBhY3Jvc3MgZWFjaCBpdGVyYXRpb25cbitcdCAqIHN0ZXAsIGRlZmVycmluZyB0aGlzIHJlbGVhc2UgY2FsbGJhY2sgdW50aWwgYW55IGluLWZsaWdodCBQU0VcbitcdCAqIG5vdGlmaWVyIHdhbGsgaGFzIGFkdmFuY2VkIHBhc3QgdGhpcyBwaHkuIHBzZV9jb250cm9sX3B1dCgpXG4rXHQgKiB0YWtlcyBwc2VfbGlzdF9tdXRleCwgc28gdGhpcyBwYXRoIG11c3QgcnVuIGluIHNsZWVwYWJsZVxuK1x0ICogY29udGV4dC5cbitcdCAqL1xuK1x0bWlnaHRfc2xlZXAoKTtcbitcdHBzZV9jb250cm9sX3B1dChwaHlkZXYtXHUwMDNlcHNlYyk7XG4rXG4gXHRmd25vZGVfaGFuZGxlX3B1dChkZXYtXHUwMDNlZndub2RlKTtcbi1cdGtmcmVlKHRvX3BoeV9kZXZpY2UoZGV2KSk7XG4rXHRrZnJlZShwaHlkZXYpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbkBAIC0xMTAyLDExICsxMTEzLDEwMyBAQCBzdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxuIH1cbiBFWFBPUlRfU1lNQk9MKGdldF9waHlfZGV2aWNlKTtcbiBcbi0vKipcbi0gKiBwaHlfZGV2aWNlX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgdGhlIHBoeSBkZXZpY2Ugb24gdGhlIE1ESU8gYnVzXG4tICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzXG4rLyogQmVzdC1lZmZvcnQgYXR0YWNoIG9mIHBoeWRldi1cdTAwM2Vwc2VjIGZyb20gYSBEVCBgcHNlcyA9IFx1MDAzY1x1MDAyNi4uLlx1MDAzZWAgcGhhbmRsZS5cbisgKiBDYWxsZXIgbXVzdCBob2xkIHJ0bmwuIEEgbWlzc2luZyBwaGFuZGxlICgtRU5PRU5UKSBvciBhIG5vdC15ZXQtcmVnaXN0ZXJlZFxuKyAqIGNvbnRyb2xsZXIgKC1FUFJPQkVfREVGRVIpIGlzIHNpbGVudDsgdGhlIG5vdGlmaWVyIHJldHJpZXMgdGhlIGxhdHRlciBhdFxuKyAqIFBTRV9SRUdJU1RFUkVEIHRpbWUuIEFueSBvdGhlciBlcnJvciBtZWFucyBhIGJyb2tlbiBiaW5kaW5nIGFuZCBpcyB3YXJuZWRcbisgKiBhYm91dCwgYnV0IGxlZnQgbm9uLWZhdGFsIHNvIHRoZSBwaHkgc3RpbGwgcmVnaXN0ZXJzLlxuICAqL1xuLWludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4rc3RhdGljIHZvaWQgcGh5X3RyeV9hdHRhY2hfcHNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0c3RydWN0IHBzZV9jb250cm9sICpwc2VjO1xuK1x0c3RydWN0IGRldmljZV9ub2RlICpucDtcbitcbitcdEFTU0VSVF9SVE5MKCk7XG4rXG4rXHRucCA9IHBoeWRldi1cdTAwM2VtZGlvLmRldi5vZl9ub2RlO1xuK1x0aWYgKCFucClcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWYgKHBoeWRldi1cdTAwM2Vwc2VjKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRwc2VjID0gb2ZfcHNlX2NvbnRyb2xfZ2V0KG5wLCBwaHlkZXYpO1xuK1x0aWYgKElTX0VSUihwc2VjKSkge1xuK1x0XHRpZiAoUFRSX0VSUihwc2VjKSAhPSAtRVBST0JFX0RFRkVSIFx1MDAyNlx1MDAyNiBQVFJfRVJSKHBzZWMpICE9IC1FTk9FTlQpXG4rXHRcdFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcImZhaWxlZCB0byBnZXQgUFNFIGNvbnRyb2w6ICVwZVxcblwiLFxuK1x0XHRcdFx0ICAgIHBzZWMpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRwaHlkZXYtXHUwMDNlcHNlYyA9IHBzZWM7XG4rfVxuK1xuK3N0YXRpYyBpbnQgcGh5X3BzZV9hdHRhY2hfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSBfX21heWJlX3VudXNlZClcbit7XG4rXHRBU1NFUlRfUlROTCgpO1xuK1xuK1x0aWYgKGRldi1cdTAwM2V0eXBlICE9IFx1MDAyNm1kaW9fYnVzX3BoeV90eXBlKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHBoeV90cnlfYXR0YWNoX3BzZSh0b19waHlfZGV2aWNlKGRldikpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBpbnQgcGh5X3BzZV9kZXRhY2hfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcbit7XG4rXHRzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldiA9IGRhdGE7XG4rXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xuK1x0c3RydWN0IHBzZV9jb250cm9sICpwc2VjO1xuK1xuK1x0QVNTRVJUX1JUTkwoKTtcbitcbitcdGlmIChkZXYtXHUwMDNldHlwZSAhPSBcdTAwMjZtZGlvX2J1c19waHlfdHlwZSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRwaHlkZXYgPSB0b19waHlfZGV2aWNlKGRldik7XG4rXHRwc2VjID0gcGh5ZGV2LVx1MDAzZXBzZWM7XG4rXHRpZiAoIXBzZWMgfHwgIXBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYocHNlYywgcGNkZXYpKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHBoeWRldi1cdTAwM2Vwc2VjID0gTlVMTDtcbitcdHBzZV9jb250cm9sX3B1dChwc2VjKTtcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50IHBoeV9wc2Vfbm90aWZpZXJfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbitcdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqZGF0YSlcbit7XG4rXHRzd2l0Y2ggKGV2ZW50KSB7XG4rXHRjYXNlIFBTRV9SRUdJU1RFUkVEOlxuK1x0XHRydG5sX2xvY2soKTtcbitcdFx0YnVzX2Zvcl9lYWNoX2RldihcdTAwMjZtZGlvX2J1c190eXBlLCBOVUxMLCBOVUxMLFxuK1x0XHRcdFx0IHBoeV9wc2VfYXR0YWNoX29uZSk7XG4rXHRcdHJ0bmxfdW5sb2NrKCk7XG4rXHRcdHJldHVybiBOT1RJRllfT0s7XG4rXHRjYXNlIFBTRV9VTlJFR0lTVEVSRUQ6XG4rXHRcdHJ0bmxfbG9jaygpO1xuK1x0XHRidXNfZm9yX2VhY2hfZGV2KFx1MDAyNm1kaW9fYnVzX3R5cGUsIE5VTEwsIGRhdGEsXG4rXHRcdFx0XHQgcGh5X3BzZV9kZXRhY2hfb25lKTtcbitcdFx0cnRubF91bmxvY2soKTtcbitcdFx0cmV0dXJuIE5PVElGWV9PSztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiBOT1RJRllfRE9ORTtcbitcdH1cbit9XG4rXG4rc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBwaHlfcHNlX25vdGlmaWVyIF9fcmVhZF9tb3N0bHkgPSB7XG4rXHQubm90aWZpZXJfY2FsbCA9IHBoeV9wc2Vfbm90aWZpZXJfZXZlbnQsXG4rfTtcbitcbisvKiBDb3JlIHJlZ2lzdHJhdGlvbjogYWRkIHRoZSBwaHkgdG8gdGhlIE1ESU8gYnVzLiBEb2VzIG5vdCB0b3VjaCBydG5sIG9yXG4rICogUFNFLiBwaHlkZXYtXHUwMDNlcHNlYyBpcyBhdHRhY2hlZCBieSB0aGUgY2FsbGVycyBiZWxvdywgYWZ0ZXIgZGV2aWNlX2FkZCgpXG4rICogaGFzIG1hZGUgdGhlIHBoeSB2aXNpYmxlIG9uIG1kaW9fYnVzX3R5cGUsIHNvIHRoYXQgYSBjb25jdXJyZW50IFBTRVxuKyAqIG5vdGlmaWVyIHdhbGsgYW5kIHRoZSBhdHRhY2ggY2FuIG5ldmVyIGxlYXZlIHRoZSBwaHkgdW5hdHRhY2hlZC4gS2VlcGluZ1xuKyAqIGRldmljZV9hZGQoKSBvdXQgb2YgcnRubCBhbHNvIGF2b2lkcyBkZWFkbG9ja2luZyB3aGVuIGJpbmRpbmcgYSBwaHkgdGhhdFxuKyAqIGl0c2VsZiBwcm92aWRlcyBhbiBTRlAgY2FnZSAocGh5X3Byb2JlKCkgLVx1MDAzZSBwaHlfc2ZwX3Byb2JlKCkgLVx1MDAzZVxuKyAqIHNmcF9idXNfYWRkX3Vwc3RyZWFtKCkgdGFrZXMgcnRubCkuXG4rICovXG4rc3RhdGljIGludCBfX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRpbnQgZXJyO1xuIFxuQEAgLTExMzUsMTAgKzEyMzgsNTQgQEAgaW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiAgb3V0OlxuIFx0LyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi9cbiBcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcbi1cbiBcdG1kaW9idXNfdW5yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8pO1xuIFx0cmV0dXJuIGVycjtcbiB9XG4rXG4rLyoqXG4rICogcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWQgLSBSZWdpc3RlciB0aGUgcGh5IGRldmljZSBvbiB0aGUgTURJTyBidXNcbisgKiBAcGh5ZGV2OiBwaHlfZGV2aWNlIHN0cnVjdHVyZSB0byBiZSBhZGRlZCB0byB0aGUgTURJTyBidXNcbisgKlxuKyAqIFNhbWUgYXMgcGh5X2RldmljZV9yZWdpc3RlcigpIGJ1dCBjYWxsZXIgbXVzdCBhbHJlYWR5IGhvbGQgcnRubF9sb2NrKCkuXG4rICpcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxuKyAqL1xuK2ludCBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGludCBlcnI7XG4rXG4rXHRBU1NFUlRfUlROTCgpO1xuK1xuK1x0ZXJyID0gX19waHlfZGV2aWNlX3JlZ2lzdGVyKHBoeWRldik7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0cGh5X3RyeV9hdHRhY2hfcHNlKHBoeWRldik7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rRVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZCk7XG4rXG4rLyoqXG4rICogcGh5X2RldmljZV9yZWdpc3RlciAtIFJlZ2lzdGVyIHRoZSBwaHkgZGV2aWNlIG9uIHRoZSBNRElPIGJ1c1xuKyAqIEBwaHlkZXY6IHBoeV9kZXZpY2Ugc3RydWN0dXJlIHRvIGJlIGFkZGVkIHRvIHRoZSBNRElPIGJ1c1xuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cbisgKi9cbitpbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGludCBlcnI7XG4rXG4rXHRlcnIgPSBfX3BoeV9kZXZpY2VfcmVnaXN0ZXIocGh5ZGV2KTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4rXHRydG5sX2xvY2soKTtcbitcdHBoeV90cnlfYXR0YWNoX3BzZShwaHlkZXYpO1xuK1x0cnRubF91bmxvY2soKTtcbitcbitcdHJldHVybiAwO1xuK31cbiBFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfcmVnaXN0ZXIpO1xuIFxuIC8qKlxuQEAgLTExNTIsOCArMTI5OSw2IEBAIEVYUE9SVF9TWU1CT0wocGh5X2RldmljZV9yZWdpc3Rlcik7XG4gdm9pZCBwaHlfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdHVucmVnaXN0ZXJfbWlpX3RpbWVzdGFtcGVyKHBoeWRldi1cdTAwM2VtaWlfdHMpO1xuLVx0cHNlX2NvbnRyb2xfcHV0KHBoeWRldi1cdTAwM2Vwc2VjKTtcbi1cbiBcdGRldmljZV9kZWwoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2KTtcbiBcbiBcdC8qIEFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG5AQCAtMzk4MSw4ICs0MTI2LDE0IEBAIHN0YXRpYyBpbnQgX19pbml0IHBoeV9pbml0KHZvaWQpXG4gXHRpZiAocmMpXG4gXHRcdGdvdG8gZXJyX2M0NTtcbiBcbitcdHJjID0gcHNlX3JlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNnBoeV9wc2Vfbm90aWZpZXIpO1xuK1x0aWYgKHJjKVxuK1x0XHRnb3RvIGVycl9nZW5waHk7XG4rXG4gXHRyZXR1cm4gMDtcbiBcbitlcnJfZ2VucGh5OlxuK1x0cGh5X2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmdlbnBoeV9kcml2ZXIpO1xuIGVycl9jNDU6XG4gXHRwaHlfZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2Z2VucGh5X2M0NV9kcml2ZXIpO1xuIGVycl9ldGh0b29sX3BoeV9vcHM6XG5AQCAtMzk5OSw2ICs0MTUwLDcgQEAgc3RhdGljIGludCBfX2luaXQgcGh5X2luaXQodm9pZClcbiBcbiBzdGF0aWMgdm9pZCBfX2V4aXQgcGh5X2V4aXQodm9pZClcbiB7XG4rXHRwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZwaHlfcHNlX25vdGlmaWVyKTtcbiBcdHBoeV9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZnZW5waHlfYzQ1X2RyaXZlcik7XG4gXHRwaHlfZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2Z2VucGh5X2RyaXZlcik7XG4gXHRydG5sX2xvY2soKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvc2ZwLmMgYi9kcml2ZXJzL25ldC9waHkvc2ZwLmNcbmluZGV4IDAzYmZkODY0MGRiOTYzLi4xODg2OGJkZDY0ODUyYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9zZnAuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3NmcC5jXG5AQCAtMjA4Myw3ICsyMDgzLDcgQEAgc3RhdGljIGludCBzZnBfc21fcHJvYmVfcGh5KHN0cnVjdCBzZnAgKnNmcCwgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxuIFx0LyogTWFyayB0aGlzIFBIWSBhcyBiZWluZyBvbiBhIFNGUCBtb2R1bGUgKi9cbiBcdHBoeS1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlID0gdHJ1ZTtcbiBcbi1cdGVyciA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcbitcdGVyciA9IHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkKHBoeSk7XG4gXHRpZiAoZXJyKSB7XG4gXHRcdHBoeV9kZXZpY2VfZnJlZShwaHkpO1xuIFx0XHRkZXZfZXJyKHNmcC1cdTAwM2VkZXYsIFwicGh5X2RldmljZV9yZWdpc3RlciBmYWlsZWQ6ICVwZVxcblwiLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jIGIvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmNcbmluZGV4IDY5ZGJkYmRlOWQ3MWE3Li42MTE1NDBkZjQzYmIxYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY1xuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sX25ldGxpbmsuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L25vdGlmaWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wc2UtcGQvcHNlLmhcdTAwM2VcbkBAIC0yMyw2ICsyNCwzOSBAQCBzdGF0aWMgTElTVF9IRUFEKHBzZV9jb250cm9sbGVyX2xpc3QpO1xuIHN0YXRpYyBERUZJTkVfWEFSUkFZX0FMTE9DKHBzZV9wd19kX21hcCk7XG4gc3RhdGljIERFRklORV9NVVRFWChwc2VfcHdfZF9tdXRleCk7XG4gXG4rc3RhdGljIEJMT0NLSU5HX05PVElGSUVSX0hFQUQocHNlX2NvbnRyb2xsZXJfbm90aWZpZXIpO1xuK1xuKy8qKlxuKyAqIHBzZV9yZWdpc3Rlcl9ub3RpZmllciAtIHJlZ2lzdGVyIGEgY2FsbGJhY2sgZm9yIFBTRSBjb250cm9sbGVyIGV2ZW50c1xuKyAqIEBuYjogbm90aWZpZXIgYmxvY2sgdG8gcmVnaXN0ZXJcbisgKlxuKyAqIFNlZSBlbnVtIHBzZV9jb250cm9sbGVyX2V2ZW50IGZvciBldmVudHMgZmlyZWQgYW5kIHRoZWlyIHN1YnNjcmliZXJcbisgKiBjb250cmFjdC4gQ2FsbGJhY2tzIHJ1biBpbiBwcm9jZXNzIGNvbnRleHQ7IHRoZXkgbWF5IHNsZWVwLCB0YWtlXG4rICogcnRubCwgYW5kIGNhbGwgb2ZfcHNlX2NvbnRyb2xfZ2V0KCkuIFRoZSBjaGFpbiBmaXJlcyBzeW5jaHJvbm91c2x5LFxuKyAqIHNvIGEgUFNFIGNvbnRyb2xsZXIgZHJpdmVyJ3MgcHJvYmUvdW5iaW5kIHBhdGggbXVzdCBub3QgaG9sZCBhbnlcbisgKiBzdWNoIGxvY2sgd2hlbiBjYWxsaW5nIHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKCkgb3JcbisgKiBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKCkuXG4rICpcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4rICovXG4raW50IHBzZV9yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxuK3tcbitcdHJldHVybiBibG9ja2luZ19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcihcdTAwMjZwc2VfY29udHJvbGxlcl9ub3RpZmllciwgbmIpO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChwc2VfcmVnaXN0ZXJfbm90aWZpZXIpO1xuK1xuKy8qKlxuKyAqIHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyIC0gdW5yZWdpc3RlciBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBjYWxsYmFja1xuKyAqIEBuYjogbm90aWZpZXIgYmxvY2sgcHJldmlvdXNseSBwYXNzZWQgdG8gcHNlX3JlZ2lzdGVyX25vdGlmaWVyKClcbisgKlxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS5cbisgKi9cbitpbnQgcHNlX3VucmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcbit7XG4rXHRyZXR1cm4gYmxvY2tpbmdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihcdTAwMjZwc2VfY29udHJvbGxlcl9ub3RpZmllciwgbmIpO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcik7XG4rXG4gLyoqXG4gICogc3RydWN0IHBzZV9jb250cm9sIC0gYSBQU0UgY29udHJvbFxuICAqIEBwY2RldjogYSBwb2ludGVyIHRvIHRoZSBQU0UgY29udHJvbGxlciBkZXZpY2VcbkBAIC0xMTA0LDYgKzExMzgsOSBAQCBpbnQgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpXG4gXHRsaXN0X2FkZChcdTAwMjZwY2Rldi1cdTAwM2VsaXN0LCBcdTAwMjZwc2VfY29udHJvbGxlcl9saXN0KTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZwc2VfbGlzdF9tdXRleCk7XG4gXG4rXHRibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKFx1MDAyNnBzZV9jb250cm9sbGVyX25vdGlmaWVyLFxuK1x0XHRcdFx0ICAgICBQU0VfUkVHSVNURVJFRCwgcGNkZXYpO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKTtcbkBAIC0xMTE0LDYgKzExNTEsOSBAQCBFWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XG4gICovXG4gdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxuIHtcbitcdGJsb2NraW5nX25vdGlmaWVyX2NhbGxfY2hhaW4oXHUwMDI2cHNlX2NvbnRyb2xsZXJfbm90aWZpZXIsXG4rXHRcdFx0XHQgICAgIFBTRV9VTlJFR0lTVEVSRUQsIHBjZGV2KTtcbitcbiBcdHBzZV9mbHVzaF9wd19kcyhwY2Rldik7XG4gXHRwc2VfcmVsZWFzZV9waXMocGNkZXYpO1xuIFx0aWYgKHBjZGV2LVx1MDAzZWlycSlcbkBAIC0xOTgxLDMgKzIwMjEsMTcgQEAgYm9vbCBwc2VfaGFzX2MzMyhzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMpXG4gXHRyZXR1cm4gcHNlYy1cdTAwM2VwY2Rldi1cdTAwM2V0eXBlcyBcdTAwMjYgRVRIVE9PTF9QU0VfQzMzO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChwc2VfaGFzX2MzMyk7XG4rXG4rLyoqXG4rICogcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldiAtIFRlc3Qgd2hldGhlciBhIHBzZV9jb250cm9sIHRhcmdldHMgYSBjb250cm9sbGVyXG4rICogQHBzZWM6IHBzZV9jb250cm9sIG9idGFpbmVkIGZyb20gb2ZfcHNlX2NvbnRyb2xfZ2V0KClcbisgKiBAcGNkZXY6IFBTRSBjb250cm9sbGVyIHRvIGNvbXBhcmUgYWdhaW5zdFxuKyAqXG4rICogUmV0dXJuOiAldHJ1ZSBpZiBAcHNlYyB3YXMgb2J0YWluZWQgZnJvbSBAcGNkZXYsICVmYWxzZSBvdGhlcndpc2UuXG4rICovXG4rYm9vbCBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2KHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyxcbitcdFx0XHQgICAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpXG4re1xuK1x0cmV0dXJuIHBzZWMtXHUwMDNlcGNkZXYgPT0gcGNkZXY7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5pbmRleCAxOTlhN2FhYTM0MWJmZC4uODY1YjliYWRkYjg1ZmEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtMjE1OCw2ICsyMTU4LDggQEAgc3RydWN0IHBoeV9kZXZpY2UgKmZ3bm9kZV9waHlfZmluZF9kZXZpY2Uoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKnBoeV9md25vZGUpO1xuIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGVfZ2V0X3BoeV9ub2RlKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpO1xuIHN0cnVjdCBwaHlfZGV2aWNlICpnZXRfcGh5X2RldmljZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpO1xuIGludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpO1xuKy8qIENhbGxlciBtdXN0IGhvbGQgcnRubF9sb2NrKCk7IHNlZSBwaHlfZGV2aWNlX3JlZ2lzdGVyKCkgZm9yIHRoZSBwdWJsaWMgZm9ybS4gKi9cbitpbnQgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSk7XG4gdm9pZCBwaHlfZGV2aWNlX2ZyZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gdm9pZCBwaHlfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgcGh5X2dldF9jNDVfaWRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHNlLXBkL3BzZS5oIGIvaW5jbHVkZS9saW51eC9wc2UtcGQvcHNlLmhcbmluZGV4IDRlNTY5NmNmYWRlN2NjLi5kNDMxMGNhNzFhM2UwOCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcHNlLXBkL3BzZS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaFxuQEAgLTIxLDYgKzIxLDcgQEAgc3RydWN0IG5ldF9kZXZpY2U7XG4gc3RydWN0IHBoeV9kZXZpY2U7XG4gc3RydWN0IHBzZV9jb250cm9sbGVyX2RldjtcbiBzdHJ1Y3QgbmV0bGlua19leHRfYWNrO1xuK3N0cnVjdCBub3RpZmllcl9ibG9jaztcbiBcbiAvKiBDMzMgUFNFIGV4dGVuZGVkIHN0YXRlIGFuZCBzdWJzdGF0ZS4gKi9cbiBzdHJ1Y3QgZXRodG9vbF9jMzNfcHNlX2V4dF9zdGF0ZV9pbmZvIHtcbkBAIC0zMzcsNiArMzM4LDI0IEBAIGVudW0gcHNlX2J1ZGdldF9ldmFsX3N0cmF0ZWdpZXMge1xuIFx0UFNFX0JVREdFVF9FVkFMX1NUUkFUX0RZTkFNSUNcdD0gMSBcdTAwM2NcdTAwM2MgMixcbiB9O1xuIFxuKy8qKlxuKyAqIGVudW0gcHNlX2NvbnRyb2xsZXJfZXZlbnQgLSBQU0UgY29udHJvbGxlciBsaWZlY3ljbGUgZXZlbnRzXG4rICpcbisgKiBFdmVudCBkYXRhIGluIGNhbGxiYWNrcyBpcyBhbHdheXMgYSBwb2ludGVyIHRvIHRoZSBzdHJ1Y3RcbisgKiBwc2VfY29udHJvbGxlcl9kZXYgZmlyaW5nIHRoZSBldmVudC5cbisgKlxuKyAqIEBQU0VfUkVHSVNURVJFRDogY29udHJvbGxlciBhZGRlZCB0byBwc2VfY29udHJvbGxlcl9saXN0IGFuZFxuKyAqXHRyZXNvbHZhYmxlIGJ5IG9mX3BzZV9jb250cm9sX2dldCgpLlxuKyAqIEBQU0VfVU5SRUdJU1RFUkVEOiBjb250cm9sbGVyIGFib3V0IHRvIGJlIHJlbW92ZWQgZnJvbVxuKyAqXHRwc2VfY29udHJvbGxlcl9saXN0LiBTdWJzY3JpYmVycyBob2xkaW5nIHBzZV9jb250cm9sIHJlZmVyZW5jZXNcbisgKlx0dGFyZ2V0aW5nIGl0IG11c3QgZHJvcCB0aGVtIGJlZm9yZSByZXR1cm5pbmcgYW5kIG11c3Qgbm90XG4rICpcdGFjcXVpcmUgbmV3IHJlZmVyZW5jZXMgZm9yIGl0LlxuKyAqL1xuK2VudW0gcHNlX2NvbnRyb2xsZXJfZXZlbnQge1xuK1x0UFNFX1JFR0lTVEVSRUQsXG4rXHRQU0VfVU5SRUdJU1RFUkVELFxuK307XG4rXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX1BTRV9DT05UUk9MTEVSKVxuIGludCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcihzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2Rldik7XG4gdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KTtcbkBAIC0zNjYsNiArMzg1LDEyIEBAIGludCBwc2VfZXRodG9vbF9zZXRfcHJpbyhzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMsXG4gYm9vbCBwc2VfaGFzX3BvZGwoc3RydWN0IHBzZV9jb250cm9sICpwc2VjKTtcbiBib29sIHBzZV9oYXNfYzMzKHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyk7XG4gXG4rYm9vbCBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2KHN0cnVjdCBwc2VfY29udHJvbCAqcHNlYyxcbitcdFx0XHQgICAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpO1xuK1xuK2ludCBwc2VfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XG4raW50IHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpO1xuK1xuICNlbHNlXG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgcHNlX2NvbnRyb2wgKm9mX3BzZV9jb250cm9sX2dldChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5AQCAtNDE2LDYgKzQ0MSwyMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcHNlX2hhc19jMzMoc3RydWN0IHBzZV9jb250cm9sICpwc2VjKVxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbitzdGF0aWMgaW5saW5lIGJvb2wgcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldihzdHJ1Y3QgcHNlX2NvbnRyb2wgKnBzZWMsXG4rXHRcdFx0XHRcdCAgICAgc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpXG4re1xuK1x0cmV0dXJuIGZhbHNlO1xuK31cbitcbitzdGF0aWMgaW5saW5lIGludCBwc2VfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGlubGluZSBpbnQgcHNlX3VucmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gI2VuZGlmXG4gXG4gI2VuZGlmXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMToyNTozNS41NTkzNTUwNDVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjY3Nzg1ODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBQU0UvUEhZIEF0dGFjaG1lbnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgcmVmYWN0b3IsIG1vdmluZyB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIFBvd2VyIFNvdXJjaW5nIEVxdWlwbWVudCAoUFNFKSBjb250cm9sbGVycyBhbmQgUEhZIGRldmljZXMgYXdheSBmcm9tIHRoZSBgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5YCBmdW5jdGlvbiB0byBhIG5vdGlmaWVyLWJhc2VkIHN5c3RlbSB3aXRoaW4gYHBoeV9kZXZpY2UuY2AuIFRoYXQncyBhIHJlYXNvbmFibGUgYXJjaGl0ZWN0dXJhbCBjaG9pY2UsIEkgY2FuIHNlZSB0aGUgYWR2YW50YWdlcyBvZiBkZWNvdXBsaW5nIHRoZSBhdHRhY2htZW50IHByb2Nlc3MuIFRoZXkndmUgaW50cm9kdWNlZCBgcGh5X3BzZV9ub3RpZmllcl9ldmVudGAgdG8gbGlzdGVuIGZvciBgUFNFX1JFR0lTVEVSRURgIGFuZCBgUFNFX1VOUkVHSVNURVJFRGAgZXZlbnRzLCB3aGljaCBpcyB0aGUgY29yZSBvZiB0aGUgbmV3IG1lY2hhbmlzbS4gSXQgYWxzbyBpbnRyb2R1Y2VzIGZ1bmN0aW9ucyBsaWtlIGBwaHlfdHJ5X2F0dGFjaF9wc2VgLCBgcGh5X3BzZV9hdHRhY2hfb25lYCwgYW5kIGBwaHlfcHNlX2RldGFjaF9vbmVgIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGF0dGFjaG1lbnQgYW5kIGRldGFjaG1lbnQgbG9naWMuIE1vZGlmeWluZyB0aGUgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGZ1bmN0aW9uIHRvIHRyaWdnZXIgUFNFIGF0dGFjaG1lbnQgaXMgYWxzbyBhIGxvZ2ljYWwgc3RlcCwgYWxvbmcgd2l0aCB0aGUgYWRkaXRpb24gb2YgYHBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkYCB0byBtYW5hZ2UgY29uY3VycmVuY3kuIEZpbmFsbHksIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYHBzZV9yZWdpc3Rlcl9ub3RpZmllcmAgYW5kIGBwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcmAgaW4gYHBzZV9jb3JlLmNgIHNvbGlkaWZpZXMgdGhlIG5vdGlmaWVyLWJhc2VkIGFyY2hpdGVjdHVyZS5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBjYW4gdGhpcyBjb2RlIGJlIHJlYWNoZWQgYW5kIGZ1enplZD8gTGV0J3Mgc2VlLi4uIHRoZSBjb2RlIGlzIGluIGBwaHlfZGV2aWNlLmNgIGFuZCBgcHNlX2NvcmUuY2AsIGJvdGggZmlybWx5IHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBQSFkgYW5kIFBTRS4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFdlIGNvdWxkIHJlZ2lzdGVyIHZpcnR1YWwgUEhZcywgb3IgdXNlIGR1bW15IG5ldHdvcmsgZGV2aWNlcyB0aGF0IG1pZ2h0IGhhdmUgYXNzb2NpYXRlZCBQSFlzLiBUaGF0IGxvb2tzIGZlYXNpYmxlLiBOb3csIHRoZSBgbWRpb19idXNgIGlzIGNyZWF0ZWQgYnkgYG1hY2JgLCBgZmVjYCwgYW5kIG90aGVyIGRyaXZlcnMuIEJ1dCB3aGF0IGFib3V0IHZpcnR1YWwgZHJpdmVycz8gSSBuZWVkIHRvIGNoZWNrIGBtZGlvX2J1cy5jYCBpbiB0aGUgcGh5IGRpcmVjdG9yeSwgdGhhdCdzIHdoZXJlIE1ESU8gYnVzZXMgYXJlIG1hbmFnZWQuXG5cblRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gd2UgY3JlYXRlIGFuIE1ESU8gYnVzIGFuZCBQSFkgZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgb3IgdmlhIGEgdmlydHVhbCBkcml2ZXI/IEkgbmVlZCB0byBkaWcgZGVlcGVyIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHZpcnR1YWwgTURJTyBkcml2ZXJzIG9yIFBTRSBjb250cm9sbGVycyBhdmFpbGFibGUgaW4gdGhlIGtlcm5lbC4gVGhhdCdzIHRoZSBrZXkgdG8gbWFraW5nIHRoaXMgZnV6emFibGUgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LiBOZWVkIHRvIGlkZW50aWZ5IGhvdyB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3Mgd29ya3MgZm9yIHRoZXNlIHBpZWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE4OSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDExOjI1OjQzLjIyNzE0NTE2OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTQxNDU3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qYnVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDk3NzAgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTExMjg9c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICpiNTNfZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTExMzctXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTEzODpcXHRyZXR1cm4gbWRpb2J1c19nZXRfcGh5KGRzLVxcdTAwM2V1c2VyX21paV9idXMsIHBvcnQpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTExMzktfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTQyPXN0YXRpYyBpbnQgYjUzX21kaW9fb3Aoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgdTggcGFnZSwgdTggcmVnLCB1MTYgb3ApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtNTEtXFx0XFx0diA9IChwYWdlIFxcdTAwM2NcXHUwMDNjIDgpIHwgUkVHX01JSV9QQUdFX0VOQUJMRTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6NTI6XFx0XFx0cmV0ID0gbWRpb2J1c193cml0ZV9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtNTMtXFx0XFx0XFx0XFx0XFx0ICAgUkVHX01JSV9QQUdFLCB2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy02MC1cXHR2ID0gKHJlZyBcXHUwMDNjXFx1MDAzYyA4KSB8IG9wO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzo2MTpcXHRyZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLCBSRUdfTUlJX0FERFIsIHYpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy02Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTY2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyA1OyArK2kpIHtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6Njc6XFx0XFx0diA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtNjgtXFx0XFx0XFx0XFx0XFx0UkVHX01JSV9BRERSKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz04MD1zdGF0aWMgaW50IGI1M19tZGlvX3JlYWQ4KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZywgdTggKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy04OC1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6ODk6XFx0KnZhbCA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtOTAtXFx0XFx0XFx0XFx0ICAgUkVHX01JSV9EQVRBMCkgXFx1MDAyNiAweGZmO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTk1PXN0YXRpYyBpbnQgYjUzX21kaW9fcmVhZDE2KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZywgdTE2ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMTAzLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoxMDQ6XFx0KnZhbCA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUiwgUkVHX01JSV9EQVRBMCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTEwNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0xMDk9c3RhdGljIGludCBiNTNfbWRpb19yZWFkMzIoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgdTggcGFnZSwgdTggcmVnLCB1MzIgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0xMTctXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjExODpcXHQqdmFsID0gbWRpb2J1c19yZWFkX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLCBSRUdfTUlJX0RBVEEwKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MTE5OlxcdCp2YWwgfD0gbWRpb2J1c19yZWFkX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0xMjAtXFx0XFx0XFx0XFx0ICAgIFJFR19NSUlfREFUQTEpIFxcdTAwM2NcXHUwMDNjIDE2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTEyNT1zdGF0aWMgaW50IGI1M19tZGlvX3JlYWQ0OChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTEzNy1cXHRcXHR0ZW1wIFxcdTAwM2NcXHUwMDNjPSAxNjtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MTM4OlxcdFxcdHRlbXAgfD0gbWRpb2J1c19yZWFkX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0xMzktXFx0XFx0XFx0XFx0ICAgICBSRUdfTUlJX0RBVEEwICsgaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MTQ3PXN0YXRpYyBpbnQgYjUzX21kaW9fcmVhZDY0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZywgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMTU5LVxcdFxcdHRlbXAgXFx1MDAzY1xcdTAwM2M9IDE2O1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoxNjA6XFx0XFx0dGVtcCB8PSBtZGlvYnVzX3JlYWRfbmVzdGVkKGJ1cywgQlJDTV9QU0VVRE9fUEhZX0FERFIsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE2MS1cXHRcXHRcXHRcXHRcXHQgICAgUkVHX01JSV9EQVRBMCArIGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTE2OT1zdGF0aWMgaW50IGI1M19tZGlvX3dyaXRlOChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsIHU4IHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE3My1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MTc0OlxcdHJldCA9IG1kaW9idXNfd3JpdGVfbmVzdGVkKGJ1cywgQlJDTV9QU0VVRE9fUEhZX0FERFIsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTE3NS1cXHRcXHRcXHRcXHQgICBSRUdfTUlJX0RBVEEwLCB2YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MTgyPXN0YXRpYyBpbnQgYjUzX21kaW9fd3JpdGUxNihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMTg3LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoxODg6XFx0cmV0ID0gbWRpb2J1c193cml0ZV9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMTg5LVxcdFxcdFxcdFxcdCAgIFJFR19NSUlfREFUQTAsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0xOTY9c3RhdGljIGludCBiNTNfbWRpb193cml0ZTMyKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0yMDMtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDI7IGkrKykge1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoyMDQ6XFx0XFx0aW50IHJldCA9IG1kaW9idXNfd3JpdGVfbmVzdGVkKGJ1cywgQlJDTV9QU0VVRE9fUEhZX0FERFIsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTIwNS1cXHRcXHRcXHRcXHRcXHQgICAgICAgUkVHX01JSV9EQVRBMCArIGksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MjE1PXN0YXRpYyBpbnQgYjUzX21kaW9fd3JpdGU0OChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMjIyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAzOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MjIzOlxcdFxcdGludCByZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIEJSQ01fUFNFVURPX1BIWV9BRERSLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0yMjQtXFx0XFx0XFx0XFx0XFx0ICAgICAgIFJFR19NSUlfREFUQTAgKyBpLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTIzND1zdGF0aWMgaW50IGI1M19tZGlvX3dyaXRlNjQoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgdTggcGFnZSwgdTggcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTI0MS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgNDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjI0MjpcXHRcXHRpbnQgcmV0ID0gbWRpb2J1c193cml0ZV9uZXN0ZWQoYnVzLCBCUkNNX1BTRVVET19QSFlfQUREUixcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMjQzLVxcdFxcdFxcdFxcdFxcdCAgICAgICBSRUdfTUlJX0RBVEEwICsgaSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0yNTM9c3RhdGljIGludCBiNTNfbWRpb19waHlfcmVhZDE2KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBhZGRyLCBpbnQgcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTI1Ny1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MjU4OlxcdCp2YWx1ZSA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBhZGRyLCByZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0yNTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MjYzPXN0YXRpYyBpbnQgYjUzX21kaW9fcGh5X3dyaXRlMTYoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IGFkZHIsIGludCByZWcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMjY3LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzoyNjg6XFx0cmV0dXJuIG1kaW9idXNfd3JpdGVfbmVzdGVkKGJ1cywgYWRkciwgcmVnLCB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTI2OS19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MjkyPXN0YXRpYyBpbnQgYjUzX21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTMwNy1cXHQvKiByZWFkIHRoZSBmaXJzdCBwb3J0J3MgaWQgKi9cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MzA4OlxcdHBoeV9pZCA9IG1kaW9idXNfcmVhZChtZGlvZGV2LVxcdTAwM2VidXMsIDAsIDIpIFxcdTAwM2NcXHUwMDNjIDE2O1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzozMDk6XFx0cGh5X2lkIHw9IG1kaW9idXNfcmVhZChtZGlvZGV2LVxcdTAwM2VidXMsIDAsIDMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zMTAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMzMxLVxcdGlmIChvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXFxcImJyY20sYmNtNzQ0NWQwXFxcIikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MzMyOlxcdCAgICBzdHJjbXAobWRpb2Rldi1cXHUwMDNlYnVzLVxcdTAwM2VuYW1lLCBcXFwic2YyIHVzZXIgbWlpXFxcIikpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTMzMy1cXHRcXHRyZXR1cm4gLUVQUk9CRV9ERUZFUjtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMzM0LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzozMzU6XFx0ZGV2ID0gYjUzX3N3aXRjaF9hbGxvYyhcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2LCBcXHUwMDI2YjUzX21kaW9fb3BzLCBtZGlvZGV2LVxcdTAwM2VidXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zMzYtXFx0aWYgKCFkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMzQwLVxcdGRldi1cXHUwMDNlY3VycmVudF9wYWdlID0gMHhmZjtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MzQxOlxcdGRldi1cXHUwMDNlYnVzID0gbWRpb2Rldi1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zNDItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTM4MT1zdGF0aWMgaW50IGJjbV9zZjJfc3dfaW5kaXJfcncoc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdiwgaW50IG9wLCBpbnQgYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDExLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDEyOnN0YXRpYyBpbnQgYmNtX3NmMl9zd19tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00MTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00MjEtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDIyOlxcdFxcdHJldHVybiBtZGlvYnVzX3JlYWRfbmVzdGVkKHByaXYtXFx1MDAzZW1hc3Rlcl9taWlfYnVzLCBhZGRyLCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDIzLX1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQyNC1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjQyNTpzdGF0aWMgaW50IGJjbV9zZjJfc3dfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSxcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQyNi1cXHRcXHRcXHRcXHQgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDM1LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjQzNjpcXHRcXHRyZXR1cm4gbWRpb2J1c193cml0ZV9uZXN0ZWQocHJpdi1cXHUwMDNlbWFzdGVyX21paV9idXMsIGFkZHIsXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00MzctXFx0XFx0XFx0XFx0cmVnbnVtLCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02MTctXFx0ZG4gPSBvZl9maW5kX2NvbXBhdGlibGVfbm9kZShOVUxMLCBOVUxMLCBcXFwiYnJjbSx1bmltYWMtbWRpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NjE4OlxcdHByaXYtXFx1MDAzZW1hc3Rlcl9taWlfYnVzID0gb2ZfbWRpb19maW5kX2J1cyhkbik7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02MTktXFx0aWYgKCFwcml2LVxcdTAwM2VtYXN0ZXJfbWlpX2J1cykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02MjMtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2MjQ6XFx0cHJpdi1cXHUwMDNldXNlcl9taWlfYnVzID0gbWRpb2J1c19hbGxvYygpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjI1LVxcdGlmICghcHJpdi1cXHUwMDNldXNlcl9taWlfYnVzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4My1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjY4NDpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZXVzZXJfbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02ODUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjkyLWVycl9mcmVlX3VzZXJfbWlpX2J1czpcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjY5MzpcXHRtZGlvYnVzX2ZyZWUocHJpdi1cXHUwMDNldXNlcl9taWlfYnVzKTtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY5NC1lcnJfcHV0X21hc3Rlcl9taWlfYnVzX2RldjpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NzAxPXN0YXRpYyB2b2lkIGJjbV9zZjJfbWRpb191bnJlZ2lzdGVyKHN0cnVjdCBiY21fc2YyX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03MDIte1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NzAzOlxcdG1kaW9idXNfdW5yZWdpc3Rlcihwcml2LVxcdTAwM2V1c2VyX21paV9idXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NzA0OlxcdG1kaW9idXNfZnJlZShwcml2LVxcdTAwM2V1c2VyX21paV9idXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzA1LVxcdHB1dF9kZXZpY2UoXFx1MDAyNnByaXYtXFx1MDAzZW1hc3Rlcl9taWlfYnVzLVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MTg0PXN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3JlYWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4OS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxOTA6XFx0cmV0ID0gbWRpb2J1c19yZWFkX25lc3RlZChidXMsIHBzLVxcdTAwM2Vwb3J0X2Jhc2UgKyBwb3J0LCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5MS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTE5OT1zdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjA1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwNjpcXHRyZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIHBzLVxcdTAwM2Vwb3J0X2Jhc2UgKyBwb3J0LCByZWdudW0sIHZhbHVlKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDctXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0yNTA9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNjMtXFx0LyogSnVzdCBkbyBhIHNsZWVwaW5nIG9wZXJhdGlvbiB0byBtYWtlIGxvY2tkZXAgY2hlY2tzIGVmZmVjdGl2ZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI2NDpcXHRtZGlvYnVzX3JlYWQoYnVzLCBwcy1cXHUwMDNlcG9ydF9iYXNlICsgcG9ydCwgTUlJX0JNU1IpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTI4Mz1zdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5Mi1cXHQvKiBKdXN0IGRvIGEgc2xlZXBpbmcgb3BlcmF0aW9uIHRvIG1ha2UgbG9ja2RlcCBjaGVja3MgZWZmZWN0aXZlICovXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkzOlxcdG1kaW9idXNfcmVhZChidXMsIHBzLVxcdTAwM2Vwb3J0X2Jhc2UgKyBwb3J0LCBNSUlfQk1TUik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjk0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzU1PXN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cXHRkcy1cXHUwMDNlcHJpdiA9IHBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4NTpcXHRwcy1cXHUwMDNlYnVzID0gbWRpb2Rldi1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ0Nj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NjM6XFx0YnVzID0gbWRpb19maW5kX2J1cyhcXFwiZml4ZWQtMFxcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2NC1cXHRpZiAoV0FSTl9PTighYnVzKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Njc6XFx0c3dpdGNoX21kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCAzMSk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDY4LVxcdGlmIChJU19FUlIoc3dpdGNoX21kaW9kZXYpKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDcwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3Mi1cXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmM9MjU9c3RhdGljIHZvaWQgbGFuOTMwM19tZGlvX3JlYWxfd3JpdGUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvLCBpbnQgcmVnLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy0yNi17XFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jOjI3OlxcdG1kaW8tXFx1MDAzZWJ1cy1cXHUwMDNld3JpdGUobWRpby1cXHUwMDNlYnVzLCBQSFlfQUREUihyZWcpLCBQSFlfUkVHKHJlZyksIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jLTI4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYz00Mz1zdGF0aWMgdTE2IGxhbjkzMDNfbWRpb19yZWFsX3JlYWQoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvLCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy00NC17XFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jOjQ1OlxcdHJldHVybiBtZGlvLVxcdTAwM2VidXMtXFx1MDAzZXJlYWQobWRpby1cXHUwMDNlYnVzLCBQSFlfQUREUihyZWcpLCBQSFlfUkVHKHJlZykpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy00Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmM9NjE9c3RhdGljIGludCBsYW45MzAzX21kaW9fcGh5X3dyaXRlKHN0cnVjdCBsYW45MzAzICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy02NS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmM6NjY6XFx0cmV0dXJuIG1kaW9idXNfd3JpdGVfbmVzdGVkKHN3X2Rldi1cXHUwMDNlZGV2aWNlLVxcdTAwM2VidXMsIGFkZHIsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmMtNjctfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfbWRpby5jPTY5PXN0YXRpYyBpbnQgbGFuOTMwM19tZGlvX3BoeV9yZWFkKHN0cnVjdCBsYW45MzAzICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzX21kaW8uYy03Mi1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmM6NzM6XFx0cmV0dXJuIG1kaW9idXNfcmVhZF9uZXN0ZWQoc3dfZGV2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZWJ1cywgYWRkciwgcmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwM19tZGlvLmMtNzQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYz0zNDE9c3RhdGljIGludCBnc3dpcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00MDgtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo0MDk6XFx0LyogYnJpbmcgdXAgdGhlIG1kaW8gYnVzICovXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00MTAtXFx0Z3BoeV9md19ucCA9IG9mX2dldF9jb21wYXRpYmxlX2NoaWxkKGRldi1cXHUwMDNlb2Zfbm9kZSwgXFxcImxhbnRpcSxncGh5LWZ3XFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xMjk9c3RhdGljIGludCBnc3dpcF9tZGlvX3BvbGwoc3RydWN0IGdzd2lwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMzYtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTM3OnN0YXRpYyBpbnQgZ3N3aXBfbWRpb193cihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU2LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE1NzpzdGF0aWMgaW50IGdzd2lwX21kaW9fcmQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWcpXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE4Nz1zdGF0aWMgaW50IGdzd2lwX21kaW8oc3RydWN0IGdzd2lwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMDAtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MjAxOlxcdGJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIwMi1cXHRpZiAoIWJ1cykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjEzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTY0Mz1zdGF0aWMgaW50IGdzd2lwX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTY5NC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzo2OTU6XFx0LyogYnJpbmcgdXAgdGhlIG1kaW8gYnVzICovXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtNjk2LVxcdGVyciA9IGdzd2lwX21kaW8ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtNjk3LVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzo2OTg6XFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJtZGlvIGJ1cyBzZXR1cCBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTY5OS1cXHRcXHRyZXR1cm4gZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9NDE9c3RhdGljIGludCBnc3cxeHhfY29uZmlnX3NtZGlvX2JhZHIoc3RydWN0IGdzdzF4eF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNDMte1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjQ0OlxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VtZGlvX2Rldi1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTQ1LVxcdGludCBzd19hZGRyID0gcHJpdi1cXHUwMDNlbWRpb19kZXYtXFx1MDAzZWFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy01My1cXHRcXHRzbWRpb19iYWRyID0gcmVnIFxcdTAwMjYgfkdFTk1BU0soMywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6NTQ6XFx0XFx0cmVzID0gX19tZGlvYnVzX3dyaXRlKGJ1cywgc3dfYWRkciwgR1NXMVhYX1NNRElPX0JBRFIsIHNtZGlvX2JhZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTU1LVxcdFxcdGlmIChyZXMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYz02Nz1zdGF0aWMgaW50IGdzdzF4eF9yZWdtYXBfcmVhZCh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNzAtXFx0c3RydWN0IGdzdzF4eF9wcml2ICpwcml2ID0gY29udGV4dDtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo3MTpcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi1cXHUwMDNlbWRpb19kZXYtXFx1MDAzZWJ1cztcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy03Mi1cXHRpbnQgc3dfYWRkciA9IHByaXYtXFx1MDAzZW1kaW9fZGV2LVxcdTAwM2VhZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNzktXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6ODA6XFx0cmVzID0gX19tZGlvYnVzX3JlYWQoYnVzLCBzd19hZGRyLCByZWcgLSBzbWRpb19iYWRyKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy04MS1cXHRpZiAocmVzIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9OTI9c3RhdGljIGludCBnc3cxeHhfcmVnbWFwX3dyaXRlKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy05NS1cXHRzdHJ1Y3QgZ3N3MXh4X3ByaXYgKnByaXYgPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjk2OlxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VtZGlvX2Rldi1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTk3LVxcdGludCBzd19hZGRyID0gcHJpdi1cXHUwMDNlbWRpb19kZXYtXFx1MDAzZWFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMDQtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTA1OlxcdHJlcyA9IF9fbWRpb2J1c193cml0ZShidXMsIHN3X2FkZHIsIHJlZyAtIHNtZGlvX2JhZHIsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTA2LVxcdGlmIChyZXMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9NjQ1PXN0YXRpYyBzdHJ1Y3QgcmVnbWFwICpnc3cxeHhfcmVnbWFwX2luaXQoc3RydWN0IGdzdzF4eF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNjU3LVxcdFxcdC51bmxvY2sgPSBnc3cxeHhfbWRpb19yZWdtYXBfdW5sb2NrLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjY1ODpcXHRcXHQubG9ja19hcmcgPSBcXHUwMDI2cHJpdi1cXHUwMDNlbWRpb19kZXYtXFx1MDAzZWJ1cy1cXHUwMDNlbWRpb19sb2NrLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTY1OS1cXHR9O1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTY2MC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo2NjE6XFx0cmV0dXJuIGRldm1fcmVnbWFwX2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZW1kaW9fZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZnc3cxeHhfcmVnbWFwX2J1cyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy02NjItXFx0XFx0XFx0XFx0cHJpdiwgXFx1MDAyNmNvbmZpZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM9MjU9c3RhdGljIGludCBrc3o4ODYzX21kaW9fcmVhZCh2b2lkICpjdHgsIGNvbnN0IHZvaWQgKnJlZ19idWYsIHNpemVfdCByZWdfbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTM5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYzo0MDpcXHRcXHRyZXQgPSBfX21kaW9idXNfcmVhZChtZGV2LVxcdTAwM2VidXMsICgodG1wIFxcdTAwMjYgMHhFMCkgXFx1MDAzZVxcdTAwM2UgNSkgfFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy00MS1cXHRcXHRcXHRcXHQgICAgIFNNSV9LU1o4OFhYX1JFQURfUEhZLCB0bXApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jPTU1PXN0YXRpYyBpbnQga3N6ODg2M19tZGlvX3dyaXRlKHZvaWQgKmN0eCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTcxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYzo3MjpcXHRcXHRyZXQgPSBfX21kaW9idXNfd3JpdGUobWRldi1cXHUwMDNlYnVzLCAoKHRtcCBcXHUwMDI2IDB4RTApIFxcdTAwM2VcXHUwMDNlIDUpLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy03My1cXHRcXHRcXHRcXHQgICAgICB0bXAsIHZhbFtpXSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0zMTU9c3RhdGljIGludCBrc3o5NDc3X3Bjc19jcmVhdGUoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTMyMi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozMjM6XFx0YnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jKGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMjQtXFx0aWYgKCFidXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMjYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MzI3OlxcdGJ1cy1cXHUwMDNlbmFtZSA9IFxcXCJrc3pfcGNzX21kaW9fYnVzXFxcIjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMjgtXFx0c25wcmludGYoYnVzLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcXFwiJXMtcGNzXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTMzNS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozMzY6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cXHUwMDNlZGV2LCBidXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTMzNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzM5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MDpcXHRwY3MgPSB4cGNzX2NyZWF0ZV9wY3NfbWRpb2RldihidXMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTM0MS1cXHRpZiAoSVNfRVJSKHBjcykpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMTc3PXN0YXRpYyB2b2lkIGtzel91cGRhdGVfcG9ydF9tZW1iZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMjU4LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIyNTk6aW50IGtzel9zd19tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjI2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMjY2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIyNjc6aW50IGtzel9zd19tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjI3NS0vKipcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMjc2OiAqIGtzel9wYXJlbnRfbWRpb19yZWFkIC0gUmVhZCBkYXRhIGZyb20gYSBQSFkgcmVnaXN0ZXIgb24gdGhlIHBhcmVudCBNRElPIGJ1cy5cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMjc3LSAqIEBidXM6IE1ESU8gYnVzIHN0cnVjdHVyZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyODctICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjI4ODppbnQga3N6X3BhcmVudF9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjI4OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMjkxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIyOTI6XFx0cmV0dXJuIG1kaW9idXNfcmVhZF9uZXN0ZWQoZGV2LVxcdTAwM2VwYXJlbnRfbWRpb19idXMsIGFkZHIsIHJlZ251bSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjI5My19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMjk1LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIyOTY6ICoga3N6X3BhcmVudF9tZGlvX3dyaXRlIC0gV3JpdGUgZGF0YSB0byBhIFBIWSByZWdpc3RlciBvbiB0aGUgcGFyZW50IE1ESU8gYnVzLlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIyOTctICogQGJ1czogTURJTyBidXMgc3RydWN0dXJlLlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjMwNy0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMzA4OmludCBrc3pfcGFyZW50X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjMwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzExLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIzMTI6XFx0cmV0dXJuIG1kaW9idXNfd3JpdGVfbmVzdGVkKGRldi1cXHUwMDNlcGFyZW50X21kaW9fYnVzLCBhZGRyLCByZWdudW0sIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjMxMy19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yNDE2PWludCBrc3pfcGFyc2VfZHRfcGh5X2NvbmZpZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjQ3Mi0vKipcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDczOiAqIGtzel9tZGlvX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgYW5kIGNvbmZpZ3VyZSB0aGUgTURJTyBidXMgZm9yIHRoZSBLU1ogZGV2aWNlLlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0NzQtICogQGRldjogUG9pbnRlciB0byB0aGUgS1NaIGRldmljZSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNDc4LSAqIHRoZSBmdW5jdGlvbiB3aWxsIGNvbmZpZ3VyZSB0aGUgZXh0ZXJuYWwgTURJTyBjb250cm9sbGVyIHNwZWNpZmllZCBieSB0aGVcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDc5OiAqIFxcXCJtZGlvLXBhcmVudC1idXNcXFwiIGRldmljZSB0cmVlIHByb3BlcnR5IHRvIGRpcmVjdGx5IG1hbmFnZSBpbnRlcm5hbCBQSFlzLlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0ODAtICogT3RoZXJ3aXNlLCBTUEkgb3IgSTJDIGFjY2VzcyBpcyBzZXQgdXAgZm9yIFBIWSBhY2Nlc3MuXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yNDg0PWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjQ5Ni1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDk3OlxcdHBhcmVudF9idXNfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUobWRpb19ucCwgXFxcIm1kaW8tcGFyZW50LWJ1c1xcXCIsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0OTgtXFx0aWYgKHBhcmVudF9idXNfbm9kZSBcXHUwMDI2XFx1MDAyNiAhZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VwaHlfc2lkZV9tZGlvX3N1cHBvcnRlZCkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjI0OTk6XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZWRldiwgXFxcIlNpZGUgTURJTyBidXMgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBIVywgaWdub3JpbmcgJ21kaW8tcGFyZW50LWJ1cycgcHJvcGVydHkuXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTAwLVxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTAzLVxcdH0gZWxzZSBpZiAocGFyZW50X2J1c19ub2RlKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjUwNDpcXHRcXHRwYXJlbnRfYnVzID0gb2ZfbWRpb19maW5kX2J1cyhwYXJlbnRfYnVzX25vZGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1MDUtXFx0XFx0aWYgKCFwYXJlbnRfYnVzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTEwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjI1MTE6XFx0XFx0ZGV2LVxcdTAwM2VwYXJlbnRfbWRpb19idXMgPSBwYXJlbnRfYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1MTItXFx0fVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1MTMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjUxNDpcXHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2MoZHMtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjUxNS1cXHRpZiAoIWJ1cykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjU1NS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNTU2OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1NTctXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9MTY0PXN0cnVjdCBrc3pfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTIxNi1cXHQvKipcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDoyMTc6XFx0ICogQHBhcmVudF9tZGlvX2J1czogUG9pbnRlciB0byB0aGUgZXh0ZXJuYWwgTURJTyBidXMgY29udHJvbGxlci5cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yMTgtXFx0ICpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTIyMy1cXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDoyMjQ6XFx0c3RydWN0IG1paV9idXMgKnBhcmVudF9tZGlvX2J1cztcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yMjUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD00NjQ9aW50IGtzel9wYXJzZV9kdF9waHlfY29uZmlnKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHN0cnVjdCBtaWlfYnVzICpidXMsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNDY1LVxcdFxcdFxcdCAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjQ2NjppbnQga3N6X3N3X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDY3OmludCBrc3pfc3dfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDY4OmludCBrc3pfcGFyZW50X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDY5OmludCBrc3pfcGFyZW50X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sIHUxNiB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQ3MC1pbnQga3N6X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTExMD1zdGF0aWMgaW50IGxhbjkzN3hfcG9ydF9jZmcoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGludCBvZmZzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTExOS0gKiBAZGV2OiBQb2ludGVyIHRvIGRldmljZSBzdHJ1Y3R1cmUuXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzoxMjA6ICogQHNpZGVfbWRpbzogQm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBQSFlzIGFyZSBhY2Nlc3NlZCBvdmVyIGEgc2lkZSBNRElPIGJ1cy5cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTEyMS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz0xNDM9c3RhdGljIGludCBsYW45Mzd4X2NyZWF0ZV9waHlfYWRkcl9tYXAoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgYm9vbCBzaWRlX21kaW8pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTIxMC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjIxMTogKiBsYW45Mzd4X21kaW9fYnVzX3ByZWluaXQgLSBQcmUtaW5pdGlhbGl6ZSBNRElPIGJ1cyBmb3IgYWNjZXNzaW5nIFBIWXMuXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy0yMTItICogQGRldjogUG9pbnRlciB0byBkZXZpY2Ugc3RydWN0dXJlLlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6MjEzOiAqIEBzaWRlX21kaW86IEJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgUEhZcyBhcmUgYWNjZXNzZWQgb3ZlciBhIHNpZGUgTURJTyBidXMuXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy0yMTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjI2LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6MjI3OnN0YXRpYyBpbnQgbGFuOTM3eF9tZGlvX2J1c19wcmVpbml0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGJvb2wgc2lkZV9tZGlvKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM9NjY2PXN0YXRpYyBpbnQgbGFuOTM3eF9zd2l0Y2hfaW5pdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy02NzMtLyoqXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo2NzQ6ICogbGFuOTM3eF9tZGlvX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgYW5kIGNvbmZpZ3VyZSB0aGUgTURJTyBidXMgZm9yIHRoZSBMQU45Mzd4LlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNjc1LSAqIEBkZXY6IFBvaW50ZXIgdG8gdGhlIEtTWiBkZXZpY2Ugc3RydWN0dXJlLlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy02NzktICogdGhlIGZ1bmN0aW9uIHdpbGwgY29uZmlndXJlIHRoZSBleHRlcm5hbCBNRElPIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5IHRoZVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NjgwOiAqIFxcXCJtZGlvLXBhcmVudC1idXNcXFwiIGRldmljZSB0cmVlIHByb3BlcnR5IHRvIGRpcmVjdGx5IG1hbmFnZSBpbnRlcm5hbCBQSFlzLlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNjgxLSAqIE90aGVyd2lzZSwgU1BJIG9yIEkyQyBhY2Nlc3MgaXMgc2V0IHVwIGZvciBQSFkgYWNjZXNzLlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNjk3LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6Njk4OlxcdHBhcmVudF9idXNfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUobWRpb19ucCwgXFxcIm1kaW8tcGFyZW50LWJ1c1xcXCIsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNjk5LVxcdGlmIChwYXJlbnRfYnVzX25vZGUgXFx1MDAyNlxcdTAwMjYgIWRldi1cXHUwMDNlaW5mby1cXHUwMDNlcGh5X3NpZGVfbWRpb19zdXBwb3J0ZWQpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjcwMDpcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlZGV2LCBcXFwiU2lkZSBNRElPIGJ1cyBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIEhXLCBpZ25vcmluZyAnbWRpby1wYXJlbnQtYnVzJyBwcm9wZXJ0eS5cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzAxLVxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcwNC1cXHR9IGVsc2UgaWYgKHBhcmVudF9idXNfbm9kZSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzA1OlxcdFxcdHBhcmVudF9idXMgPSBvZl9tZGlvX2ZpbmRfYnVzKHBhcmVudF9idXNfbm9kZSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MDYtXFx0XFx0aWYgKCFwYXJlbnRfYnVzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcxMS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjcxMjpcXHRcXHRkZXYtXFx1MDAzZXBhcmVudF9tZGlvX2J1cyA9IHBhcmVudF9idXM7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MTMtXFx0fVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzE0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzE1OlxcdGJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhkcy1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcxNi1cXHRpZiAoIWJ1cykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MjAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3MjE6XFx0cmV0ID0gbGFuOTM3eF9tZGlvX2J1c19wcmVpbml0KGRldiwgISFwYXJlbnRfYnVzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcyMi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3NTY6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVxcdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE0OD1tdDc1MzBfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTU5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE2MDpcXHRwcml2LVxcdTAwM2VidXMgPSBtZGlvZGV2LVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTYxLVxcdHByaXYtXFx1MDAzZWRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTI1PXN0YXRpYyBpbnQgbXQ3NTMwX3BoeV9yZWFkX2MyMihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mjc6XFx0cmV0dXJuIG1kaW9idXNfcmVhZF9uZXN0ZWQocHJpdi1cXHUwMDNlYnVzLCBwb3J0LCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTUzMD1zdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTMyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTMzOlxcdHJldHVybiBtZGlvYnVzX3dyaXRlX25lc3RlZChwcml2LVxcdTAwM2VidXMsIHBvcnQsIHJlZ251bSwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01MzY9c3RhdGljIGludCBtdDc1MzBfcGh5X3JlYWRfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM4LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTM5OlxcdHJldHVybiBtZGlvYnVzX2M0NV9yZWFkX25lc3RlZChwcml2LVxcdTAwM2VidXMsIHBvcnQsIGRldmFkLCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTU0Mj1zdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDQte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NDU6XFx0cmV0dXJuIG1kaW9idXNfYzQ1X3dyaXRlX25lc3RlZChwcml2LVxcdTAwM2VidXMsIHBvcnQsIGRldmFkLCByZWdudW0sIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjM3MT1tdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM4NC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM4NTpcXHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2MoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM4Ni1cXHRpZiAoIWJ1cykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MDYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0MDc6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDA4LVxcdGlmIChyZXQpIHtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTE6MjU6NDMuNjQxMzAyNzc5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyNjE4NDM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBIWSBEZXZpY2UgUmVnaXN0cmF0aW9uIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBmdW5jdGlvbnMgbGlrZSBgbWRpb2J1c19hbGxvY2AsIGBtZGlvYnVzX3JlZ2lzdGVyYCwgYG1kaW9fZGV2aWNlX2NyZWF0ZWAsIHRoZSBzdGFuZGFyZCBNRElPIGJ1cyBzdHVmZi4gSSBhbHNvIHNwb3QgYGRzYV9sb29wYCwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGNyZWF0aW5nIGEgc3dpdGNoIE1ESU8gZGV2aWNlLiBCdXQgaG9sZCBvbiwgdGhlIGRlc2NyaXB0aW9uIGlzbid0IGp1c3QgYWJvdXQgTURJTyBkZXZpY2VzLCBpdCdzIGFib3V0IFBIWSBkZXZpY2VzLCB0b28sIGlzbid0IGl0PyBSaWdodC5cblxuQWxyaWdodCwgc28gZGlnZ2luZyBhIGJpdCBkZWVwZXIsIEkgc2VlIGBwaHlfZGV2aWNlX3JlZ2lzdGVyYCBnZXRzIGNhbGxlZCBmcm9tIGBwaHlfZGV2aWNlX2NyZWF0ZWAsIGFuZCB0aGF0J3MgdWx0aW1hdGVseSBjYWxsZWQgYnkgYGdldF9waHlfZGV2aWNlYC4gSSBhbHNvIHNlZSB0aGF0IGBzZnAuY2AgaXMgY2FsbGluZyBgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWRgLCB3aGljaCBpcyBpbnRlcmVzdGluZy5cblxuVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFkZGluZyBzdXBwb3J0IGZvciBQU0UgY29udHJvbGxlcnMuIExldCBtZSBxdWlja2x5IHNjYW4gdGhyb3VnaCB0aGUgY29kZSBiYXNlIGFuZCBzZWUgaWYgSSBjYW4gZmluZCBhbnkgZXhpc3RpbmcgUFNFIGNvbnRyb2xsZXIgaW1wbGVtZW50YXRpb25zLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoaXMgc3Vic3lzdGVtIGJlZm9yZSBJIGNhbiBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTY0OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMToyNTo0OC40Njc0OTQ4MzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ0NjgzNTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBzZV9jb250cm9sbGVyX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wc2UtcGQvcGQ2OTJ4MC5jPTE3NTY9c3RhdGljIGludCBwZDY5MngwX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BkNjkyeDAuYy0xODM4LVxcdHByaXYtXFx1MDAzZXBjZGV2LnBpc19wcmlvX21heCA9IDI7XFxuZHJpdmVycy9uZXQvcHNlLXBkL3BkNjkyeDAuYzoxODM5OlxcdHJldCA9IGRldm1fcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoZGV2LCBcXHUwMDI2cHJpdi1cXHUwMDNlcGNkZXYpO1xcbmRyaXZlcnMvbmV0L3BzZS1wZC9wZDY5MngwLmMtMTg0MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM9Mjc9c3RhdGljIEJMT0NLSU5HX05PVElGSUVSX0hFQUQocHNlX2NvbnRyb2xsZXJfbm90aWZpZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMzYtICogc28gYSBQU0UgY29udHJvbGxlciBkcml2ZXIncyBwcm9iZS91bmJpbmQgcGF0aCBtdXN0IG5vdCBob2xkIGFueVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjM3OiAqIHN1Y2ggbG9jayB3aGVuIGNhbGxpbmcgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoKSBvclxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTM4LSAqIHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIoKS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jPTEwNDY9c3RhdGljIHZvaWQgcHNlX3NlbmRfbnRmX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMDY3LS8qKlxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjEwNjg6ICogcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIgLSByZWdpc3RlciBhIFBTRSBjb250cm9sbGVyIGRldmljZVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTEwNjktICogQHBjZGV2OiBhIHBvaW50ZXIgdG8gdGhlIGluaXRpYWxpemVkIFBTRSBjb250cm9sbGVyIGRldmljZVxcbi0tXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTA3Mi0gKi9cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYzoxMDczOmludCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcihzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldilcXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMDc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNDUtfVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExNDY6RVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNDctXFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYz0xMTY5PXN0YXRpYyB2b2lkIGRldm1fcHNlX2NvbnRyb2xsZXJfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNzQtLyoqXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTE3NTogKiBkZXZtX3BzZV9jb250cm9sbGVyX3JlZ2lzdGVyIC0gcmVzb3VyY2UgbWFuYWdlZCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcigpXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE3Ni0gKiBAZGV2OiBkZXZpY2UgdGhhdCBpcyByZWdpc3RlcmluZyB0aGlzIFBTRSBjb250cm9sbGVyXFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTc4LSAqXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTE3OTogKiBNYW5hZ2VkIHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKCkuIEZvciBQU0UgY29udHJvbGxlcnMgcmVnaXN0ZXJlZCBieVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExODAtICogdGhpcyBmdW5jdGlvbiwgcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcigpIGlzIGF1dG9tYXRpY2FsbHkgY2FsbGVkIG9uXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTE4MTogKiBkcml2ZXIgZGV0YWNoLiBTZWUgcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTgyLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTg0LSAqL1xcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExODU6aW50IGRldm1fcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExODYtXFx0XFx0XFx0XFx0IHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE5NS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYzoxMTk2OlxcdHJldCA9IHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKHBjZGV2KTtcXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTk3LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTEyMDYtfVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjEyMDc6RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9wc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTIwOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfcmVndWxhdG9yLmM9OTQ9cHNlX3JlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9yZWd1bGF0b3IuYy0xMjYtXFx0cHJpdi1cXHUwMDNlcGNkZXYudHlwZXMgPSBFVEhUT09MX1BTRV9QT0RMO1xcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfcmVndWxhdG9yLmM6MTI3OlxcdHJldCA9IGRldm1fcHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIoZGV2LCBcXHUwMDI2cHJpdi1cXHUwMDNlcGNkZXYpO1xcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfcmVndWxhdG9yLmMtMTI4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9zaTM0NzQuYz00NzM9c3RhdGljIGludCBzaTM0NzRfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvc2kzNDc0LmMtNTQyLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9zaTM0NzQuYzo1NDM6XFx0cmV0ID0gZGV2bV9wc2VfY29udHJvbGxlcl9yZWdpc3RlcihkZXYsIFxcdTAwMjZwcml2LVxcdTAwM2VwY2Rldik7XFxuZHJpdmVycy9uZXQvcHNlLXBkL3NpMzQ3NC5jLTU0NC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuYz0xNDMwPXN0YXRpYyBpbnQgdHBzMjM4ODFfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuYy0xNTE2LVxcdHByaXYtXFx1MDAzZXBjZGV2LnN1cHBfYnVkZ2V0X2V2YWxfc3RyYXRlZ2llcyA9IFBTRV9CVURHRVRfRVZBTF9TVFJBVF9TVEFUSUM7XFxuZHJpdmVycy9uZXQvcHNlLXBkL3RwczIzODgxLmM6MTUxNzpcXHRyZXQgPSBkZXZtX3BzZV9jb250cm9sbGVyX3JlZ2lzdGVyKGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZXBjZGV2KTtcXG5kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuYy0xNTE4LVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTE6MjU6NDguODEyMTg4ODk1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODc5MzU1MDI3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogUEhZIGFuZCBQU0UgQ29udHJvbGxlciBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UgaGF2ZSBgcHNlX3JlZ3VsYXRvci5jYCwgYSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZWdpc3RlcnMgYSBQU0UgY29udHJvbGxlciB1c2luZyBgZGV2bV9wc2VfY29udHJvbGxlcl9yZWdpc3RlcmAuIEl0IHNlZW1zIGRldmljZSB0cmVlIGluc3RhbnRpYXRlcyBpdCwgd2hpY2ggbWVhbnMgc3l6a2FsbGVyICpjYW4qIGdldCB0byBpdCB2aWEgZGV2aWNlIHRyZWUgaW5qZWN0aW9uIG9yIHBsYXRmb3JtIGRldmljZXMuIE5vLCBzeXprYWxsZXIgZG9lcyAqbm90KiBuZWVkIHN5el9kZXZsaW5rX25ldG5zLCBpdCBoYXMgaXRzIG93biBtZXRob2RzIHRvIGNyZWF0ZSB2aXJ0dWFsIGRldmljZXMuXG5cbkJ1dCwgdGhlIHJlYWwgY3J1eCBvZiB0aGlzIGlzIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgUEhZIGNvZGUsIHNwZWNpZmljYWxseSBgcGh5X2RldmljZS5jYC4gVGhhdCdzIHJlYWNoYWJsZSEgV2UgY2FuIGhpdCB0aGF0IGNvZGUgdGhyb3VnaCB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlcywgbGlrZSBgbWFjc2VjYCwgYHZldGhgLCBvciBgdHVuYC4gV2FpdCwgZG8gdGhvc2UgZXZlbiB1c2UgUEhZcz8gTm8sIGB2ZXRoYCBjZXJ0YWlubHkgZG9lc24ndC4gYG1hYzgwMjExX2h3c2ltYD8gTm9wZS4gQWgsIGJ1dCBgZHNhX2xvb3BgICpkb2VzKi4gSXQgY3JlYXRlcyBhbiBNRElPIGJ1cyBhbmQgUEhZcyEgQW5kIFVTQiBuZXR3b3JrIGFkYXB0ZXJzIGxpa2UgYGFzaXhgIGFuZCBgc21zYzk1eHhgIGRvIHRvbywgY3JlYXRpbmcgTURJTyBidXNlcyBhbmQgUEhZcy4gU3l6a2FsbGVyIGZ1enplZCBVU0IgdmlhIGBkdW1teV9oY2RgICh2aGNpKSwgc28gdGhvc2UgUEhZcyBhcmUgZGVmaW5pdGVseSBmdXp6ZWQuXG5cblNvLCBgcGh5X2RldmljZV9yZWdpc3RlcmAgaXMgcmVhY2hhYmxlIGFuZCBhbHJlYWR5IGhlYXZpbHkgZnV6emVkLCB3aGljaCBtZWFucyB0aGUgbW9kaWZpY2F0aW9uIHRoaXMgcGF0Y2ggbWFrZXMsIGNhbGxpbmcgYHBoeV90cnlfYXR0YWNoX3BzZShwaHlkZXYpYCwgaXMgYWxzbyBmdXp6ZWQuIFBsdXMsIHRoZSBwYXRjaCBhZGRzIGBwaHlfcHNlX25vdGlmaWVyX2V2ZW50YCB3aGVuIGEgUFNFIGNvbnRyb2xsZXIgaXMgcmVnaXN0ZXJlZCBvciB1bnJlZ2lzdGVyZWQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyEgU28sICpXb3J0aEZ1enppbmc9dHJ1ZSouXG5cbk5vdywgdGhlIHRhcmdldCBmdW5jdGlvbnMuLi5JIHNob3VsZCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb246XG5cbiogICBgcGh5X3RyeV9hdHRhY2hfcHNlYFxuKiAgIGBwaHlfcHNlX2F0dGFjaF9vbmVgXG4qICAgYHBoeV9wc2VfZGV0YWNoX29uZWBcbiogICBgcGh5X3BzZV9ub3RpZmllcl9ldmVudGBcbiogICBgX19waHlfZGV2aWNlX3JlZ2lzdGVyYFxuKiAgIGBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZGBcbiogICBgcHNlX3JlZ2lzdGVyX25vdGlmaWVyYFxuKiAgIGBwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcmBcbiogICBgcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldmBcblxuTGFzdGx5LCBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgYENPTkZJR19QU0VfQ09OVFJPTExFUmAgaXMgbmVlZGVkLiBMb29rcyBsaWtlIGl0J3MgZGVmaW5lZCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jYCBhbmQgaXMgbmVlZGVkIHRvIGNvbXBpbGUgdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTk4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDExOjI1OjU3LjYwNTc0Mzc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NzA0NzQzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFNFX0NPTlRST0xMRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BzZS1wZC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvcHNlLXBkL0tjb25maWc6NjptZW51Y29uZmlnIFBTRV9DT05UUk9MTEVSXFxuZHJpdmVycy9uZXQvcHNlLXBkL0tjb25maWctNy1cXHRib29sIFxcXCJFdGhlcm5ldCBQb3dlciBTb3VyY2luZyBFcXVpcG1lbnQgU3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTE6MjU6NTcuOTYyNzk4Njg1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUyMjM5ODA1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQU0UgQ29udHJvbGxlciBBdHRhY2htZW50IExvZ2ljKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgcGF0Y2ggcmVsYXRlZCB0byBQU0UgY29udHJvbGxlciBhdHRhY2htZW50IGZvciBQSFkgZGV2aWNlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGNvbmZpcm1lZDogYFBTRV9DT05UUk9MTEVSYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIEkgc2VlIHRoYXQgYHBoeV9kZXZpY2UuY2AgaXMgY29tcGlsZWQgdW5kZXIgYENPTkZJR19QSFlMSUJgLCBhbmQgdGhlIGNoYW5nZXMgd2l0aGluIGl0IGxldmVyYWdlIGBvZl9wc2VfY29udHJvbF9nZXRgLCB3aGljaCBpcyBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L3BzZS1wZC9wc2UuaGAuIFRoZSBjcml0aWNhbCBwb2ludCwgaG93ZXZlciwgaXMgdGhhdCBpZiBgQ09ORklHX1BTRV9DT05UUk9MTEVSYCBpcyAqZGlzYWJsZWQqLCBgb2ZfcHNlX2NvbnRyb2xfZ2V0YCByZXR1cm5zIGBOVUxMYC4gVGhpcyBtZWFucyB0aGF0IHRvIHJlYWxseSB0ZXN0IHRoZSBhdHRhY2htZW50IGxvZ2ljLCB3ZSAqbmVlZCogYFBTRV9DT05UUk9MTEVSYCBlbmFibGVkLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0gdGhpcy4gQSBxdWljayBjaGVjayBvZiBgaW5jbHVkZS9saW51eC9wc2UtcGQvcHNlLmhgIHNvbGlkaWZpZXMgdGhpcy4gV2hlbiBgQ09ORklHX1BTRV9DT05UUk9MTEVSYCBpcyBlbmFibGVkLCB3ZSBnZXQgdGhlIHJlYWwgZGVhbCDigJMgZnVuY3Rpb25zIGxpa2UgYHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXZgLCBgcHNlX3JlZ2lzdGVyX25vdGlmaWVyYCwgYW5kIGBwc2VfdW5yZWdpc3Rlcl9ub3RpZmllcmAgYXJlIGFjdHVhbGx5IGRlZmluZWQuIElmIGl0J3MgZGlzYWJsZWQsIHRoZXNlIGZ1bmN0aW9ucyBhcmUganVzdCBzdHVicyB0aGF0IHJldHVybiBlaXRoZXIgMCBvciBmYWxzZSwgZWZmZWN0aXZlbHkgc2hvcnQtY2lyY3VpdGluZyB0aGUgcmVsZXZhbnQgY29kZS5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBicm9hZGVyIHBpY3R1cmUuIGBDT05GSUdfUEhZTElCYCBpcyBwcmV0dHkgbXVjaCBlbmFibGVkIGV2ZXJ5d2hlcmUuIGBDT05GSUdfT0ZgIGlzIHJlcXVpcmVkIGZvciBgb2ZfcHNlX2NvbnRyb2xfZ2V0YCwgd2hpY2ggaXMgYWxzbyB0eXBpY2FsIG9mIG1vc3QgY29uZmlndXJhdGlvbnMuXG5cbkkndmUgaWRlbnRpZmllZCB0aGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbjogYHBoeV90cnlfYXR0YWNoX3BzZWAsIGBwaHlfcHNlX2F0dGFjaF9vbmVgLCBgcGh5X3BzZV9kZXRhY2hfb25lYCwgYHBoeV9wc2Vfbm90aWZpZXJfZXZlbnRgLCBgcGh5X2RldmljZV9yZWdpc3Rlcl9sb2NrZWRgLCBgcHNlX3JlZ2lzdGVyX25vdGlmaWVyYCwgYHBzZV91bnJlZ2lzdGVyX25vdGlmaWVyYCwgYW5kIGBwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2YC5cblxuSSd2ZSBjaGVja2VkIHdoZXRoZXIgdGhleSBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBgcGh5X3RyeV9hdHRhY2hfcHNlYCwgYHBoeV9wc2VfYXR0YWNoX29uZWAsIGBwaHlfcHNlX2RldGFjaF9vbmVgLCBhbmQgYHBoeV9wc2Vfbm90aWZpZXJfZXZlbnRgIGFyZSBzdGF0aWMgd2l0aGluIGBwaHlfZGV2aWNlLmNgLiBUaGF0IG1lYW5zIHRoZXkncmUgaW50ZXJuYWwgdG8gdGhlIFBIWSBkZXZpY2UgbG9naWMuIENvbnZlcnNlbHksIGBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZGAsIGBwc2VfcmVnaXN0ZXJfbm90aWZpZXJgLCBgcHNlX3VucmVnaXN0ZXJfbm90aWZpZXJgLCBhbmQgYHBzZV9jb250cm9sX21hdGNoZXNfcGNkZXZgICphcmUqIGV4cG9ydGVkLlxuXG5JIHdhbnQgdG8gZG91YmxlLWNoZWNrIHRoYXQgSSd2ZSBnb3R0ZW4gZXZlcnl0aGluZy4gQWZ0ZXIgYSBxdWljayBzY2FuIG9mIHRoZSBwYXRjaCBkaWZmLCBJIGNhbiBjb25maXJtIHRoZXNlIGFyZSB0aGUgY3JpdGljYWwgc3ltYm9scy4gSSdtIGFkZGluZyB0aGVzZSBmdW5jdGlvbnMgdG8gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QuIFRoZSBjaGFuZ2UgdG8gYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGl0c2VsZiBpcyBub3Rld29ydGh5LCBidXQgaXQgaXMgb2Z0ZW4gY2FsbGVkLCBzbyBJIGNhbiBpbmNsdWRlIGl0LCBidXQgdGhlIG5ldyBsb2dpYyBpcyBtb3JlIGltcG9ydGFudC4gSXQgaXMgd29ydGggbm90aW5nIGl0IGlzIGEgaG90IHBhdGggb24gaW5pdGlhbGl6YXRpb24uXG5cbkhlcmUncyBteSBsaW5lIG9mIHJlYXNvbmluZzogVGhpcyBwYXRjaCBtb2RpZmllcyBob3cgUEhZIGRldmljZXMgcmVnaXN0ZXIgYW5kIGF0dGFjaCB0byBQU0UgY29udHJvbGxlcnMuIEl0IGlzIG1vdmluZyBhd2F5IGZyb20gdGhlIGBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHlgIG1ldGhvZCBhbmQgbm93IHJlbGllcyBvbiBhIG5vdGlmaWVyLWJhc2VkIG1lY2hhbmlzbS4gVGhlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIG1hbmFnZSBQU0UgYXR0YWNobWVudCBhbmQgZGV0YWNobWVudCwgYXMgd2VsbCBhcyBoYW5kbGluZyBub3RpZmllciBldmVudHMuIFRoaXMgaXMgY29yZSBuZXR3b3JraW5nIGxvZ2ljLCBwb3RlbnRpYWxseSByZWFjaGVkIHRocm91Z2ggdmlydHVhbCBNRElPIGJ1c2VzIChsaWtlIHRob3NlIGZvciBVU0IgbmV0d29yayBhZGFwdGVycyBvciBEU0EgbG9vcGJhY2spIGFuZCB2aXJ0dWFsIFBTRSBjb250cm9sbGVycy4gQ29uc2VxdWVudGx5LCBmdXp6aW5nIGVmZm9ydHMgc2hvdWxkIHByaW9yaXRpemUgdGhlIG5ldyBhdHRhY2htZW50IGxvZ2ljIGFuZCB0aGUgYXNzb2NpYXRlZCBub3RpZmllciBjYWxsYmFja3MuXG5cblNvLCB0aGUgY3JpdGljYWwgY29uZmlnIGlzIGBQU0VfQ09OVFJPTExFUmAuIEkndmUgZGV0ZXJtaW5lZCB0aGF0IGBQU0VfQ09OVFJPTExFUmAgaXMgYSBtZW51Y29uZmlnIG9wdGlvbi5cblxuVG8gc3VtIHVwOlxuXG5Db25maWdzOlxuYFBTRV9DT05UUk9MTEVSYFxuXG5Gb2N1c1N5bWJvbHM6XG5gcGh5X3RyeV9hdHRhY2hfcHNlYFxuYHBoeV9wc2VfYXR0YWNoX29uZWBcbmBwaHlfcHNlX2RldGFjaF9vbmVgXG5gcGh5X3BzZV9ub3RpZmllcl9ldmVudGBcbmBwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZGBcbmBwc2VfcmVnaXN0ZXJfbm90aWZpZXJgXG5gcHNlX3VucmVnaXN0ZXJfbm90aWZpZXJgXG5gcHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldmBcblxuXG4iLCJJbnB1dFRva2VucyI6MjQ3NjAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDExOjI2OjEzLjE4Njc4Mjc1NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg0OTUwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBTRV9DT05UUk9MTEVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BzZS1wZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHNlLXBkL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvS2NvbmZpZzo2Om1lbnVjb25maWcgUFNFX0NPTlRST0xMRVJcXG5kcml2ZXJzL25ldC9wc2UtcGQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIkV0aGVybmV0IFBvd2VyIFNvdXJjaW5nIEVxdWlwbWVudCBTdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMToyNjoxMy4yODUyODYzNDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc0Mjc4OTE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBTaW1wbGVzdCBEYXRhIFBvaW50KipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhlIG1hdHRlciBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgYSBib29sZWFuLiBUaGF0J3MgaXQuIFNpbXBsZSB0cnV0aCB2YWx1ZTsgYSBiaW5hcnkgc3RhdGUuIE5vIGZhbmN5IHN0cnVjdHVyZXMsIG5vIGNvbXBsZXggY2FsY3VsYXRpb25zLi4uIGp1c3QgYSBgYm9vbGAuIEkgaW1tZWRpYXRlbHkgYmVnaW4gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGhhbmRsZSB0aGlzIHBpZWNlIG9mIGRhdGEuXG5cbkdpdmVuIGl0cyBzaW1wbGljaXR5LCBsZXQncyBlc3RhYmxpc2ggYSBjbGVhciBhbmQgY29uY2lzZSBuYW1lIGZvciB0aGUgcHJvY2VzcyBvZiBzZXR0aW5nIHRoZSB2YXJpYWJsZSwgdGhlIHZhbHVlIG9mIHRoZSBib29sZWFuLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgaG93IEknbSBoYW5kbGluZyB0aGUgcHJvY2VzcywgaWYgSSdtIHJldHVybmluZyBhbnl0aGluZyBhbmQgYWxsIG90aGVyIHZhcmlhYmxlcyB0aGF0IGFyZSBiZWluZyBhZmZlY3RlZC4gVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gYWRvcHQgdGhlIG5hbWUgYHNldC1yZXN1bHRzYC4gSXQncyBzdHJhaWdodGZvcndhcmQsIHJlZmxlY3RzIHRoZSBhY3Rpb24gYmVpbmcgcGVyZm9ybWVkLCBhbmQgaG9wZWZ1bGx5LCBrZWVwcyBhbnkgc3Vic2VxdWVudCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIGJvb2xlYW4gY2xlYXIgYW5kIGNvbmNpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTA4LCJPdXRwdXRUb2tlbnMiOjIwMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDExOjI2OjE4LjAyODA4NTkzM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzU5Nzk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFNFX0NPTlRST0xMRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlfdHJ5X2F0dGFjaF9wc2VcIixcbiAgICBcInBoeV9wc2VfYXR0YWNoX29uZVwiLFxuICAgIFwicGh5X3BzZV9kZXRhY2hfb25lXCIsXG4gICAgXCJwaHlfcHNlX25vdGlmaWVyX2V2ZW50XCIsXG4gICAgXCJwaHlfZGV2aWNlX3JlZ2lzdGVyX2xvY2tlZFwiLFxuICAgIFwicHNlX3JlZ2lzdGVyX25vdGlmaWVyXCIsXG4gICAgXCJwc2VfdW5yZWdpc3Rlcl9ub3RpZmllclwiLFxuICAgIFwicHNlX2NvbnRyb2xfbWF0Y2hlc19wY2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBQSFkgZGV2aWNlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHRvIGF0dGFjaCBQb3dlciBTb3VyY2luZyBFcXVpcG1lbnQgKFBTRSkgY29udHJvbGxlcnMgdXNpbmcgYSBub3RpZmllci1iYXNlZCBtZWNoYW5pc20uIEl0IGludHJvZHVjZXMgbmV3IGZ1bmN0aW9ucyB0byBoYW5kbGUgUFNFIGF0dGFjaG1lbnQvZGV0YWNobWVudCBhbmQgbm90aWZpZXIgZXZlbnRzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgTURJTyBidXNlcyAoZS5nLiwgVVNCIG5ldHdvcmsgYWRhcHRlcnMsIERTQSBsb29wYmFjaykgYW5kIHZpcnR1YWwgUFNFIGNvbnRyb2xsZXJzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV3IGF0dGFjaG1lbnQgbG9naWMgYW5kIG5vdGlmaWVyIGNhbGxiYWNrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQU0VfQ09OVFJPTExFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV90cnlfYXR0YWNoX3BzZVwiLFxuICAgIFwicGh5X3BzZV9hdHRhY2hfb25lXCIsXG4gICAgXCJwaHlfcHNlX2RldGFjaF9vbmVcIixcbiAgICBcInBoeV9wc2Vfbm90aWZpZXJfZXZlbnRcIixcbiAgICBcInBoeV9kZXZpY2VfcmVnaXN0ZXJfbG9ja2VkXCIsXG4gICAgXCJwc2VfcmVnaXN0ZXJfbm90aWZpZXJcIixcbiAgICBcInBzZV91bnJlZ2lzdGVyX25vdGlmaWVyXCIsXG4gICAgXCJwc2VfY29udHJvbF9tYXRjaGVzX3BjZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFBIWSBkZXZpY2UgcmVnaXN0cmF0aW9uIHByb2Nlc3MgdG8gYXR0YWNoIFBvd2VyIFNvdXJjaW5nIEVxdWlwbWVudCAoUFNFKSBjb250cm9sbGVycyB1c2luZyBhIG5vdGlmaWVyLWJhc2VkIG1lY2hhbmlzbS4gSXQgaW50cm9kdWNlcyBuZXcgZnVuY3Rpb25zIHRvIGhhbmRsZSBQU0UgYXR0YWNobWVudC9kZXRhY2htZW50IGFuZCBub3RpZmllciBldmVudHMuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgdmlydHVhbCBNRElPIGJ1c2VzIChlLmcuLCBVU0IgbmV0d29yayBhZGFwdGVycywgRFNBIGxvb3BiYWNrKSBhbmQgdmlydHVhbCBQU0UgY29udHJvbGxlcnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXcgYXR0YWNobWVudCBsb2dpYyBhbmQgbm90aWZpZXIgY2FsbGJhY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowh4fhm[1] Phase: Succeeded StartedAt: 2026-06-30 11:27:19 +0000 UTC FinishedAt: 2026-06-30 11:27:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-30 11:27:19 +0000 UTC FinishedAt: 2026-06-30 11:27:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2] Phase: Succeeded StartedAt: 2026-06-30 11:27:19 +0000 UTC FinishedAt: 2026-06-30 13:19:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-30 11:27:19 +0000 UTC FinishedAt: 2026-06-30 13:19:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-30 11:27:19 +0000 UTC FinishedAt: 2026-06-30 11:27:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-30 11:27:19 +0000 UTC FinishedAt: 2026-06-30 11:27:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowh4fhm/series-workflowh4fhm-convert-artifact-1896474185/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-30 11:27:40 +0000 UTC FinishedAt: 2026-06-30 11:57:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-30 11:27:40 +0000 UTC FinishedAt: 2026-06-30 11:57:30 +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:*73e6d650-8944-4389-8849-b57675c5a0cd,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-workflowh4fhm/series-workflowh4fhm-convert-artifact-1896474185/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": "9699aadf-2296-48b7-bcf2-b62e763a3267", "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-workflowh4fhm/series-workflowh4fhm-build-action-3490407719/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-30 11:27:40 +0000 UTC FinishedAt: 2026-06-30 11:57:08 +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:*73e6d650-8944-4389-8849-b57675c5a0cd,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-workflowh4fhm/series-workflowh4fhm-convert-artifact-1896474185/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": "9699aadf-2296-48b7-bcf2-b62e763a3267", "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-workflowh4fhm/series-workflowh4fhm-build-action-3490407719/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-30 11:57:30 +0000 UTC FinishedAt: 2026-06-30 11:57:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-30 11:57:30 +0000 UTC FinishedAt: 2026-06-30 11:57:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-30 11:57:30 +0000 UTC FinishedAt: 2026-06-30 11:57:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-30 11:57:30 +0000 UTC FinishedAt: 2026-06-30 11:57:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowh4fhm/series-workflowh4fhm-convert-artifact-4123033180/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-30 11:57:40 +0000 UTC FinishedAt: 2026-06-30 11:59:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-30 11:57:40 +0000 UTC FinishedAt: 2026-06-30 11:59:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9699aadf-2296-48b7-bcf2-b62e763a3267,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-workflowh4fhm/series-workflowh4fhm-build-action-3490407719/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-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-30 11:59:55 +0000 UTC FinishedAt: 2026-06-30 11:59:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-30 11:59:55 +0000 UTC FinishedAt: 2026-06-30 11:59:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-30 11:59:55 +0000 UTC FinishedAt: 2026-06-30 12:24:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-30 11:59:55 +0000 UTC FinishedAt: 2026-06-30 12:24: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:*73e6d650-8944-4389-8849-b57675c5a0cd,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-workflowh4fhm/series-workflowh4fhm-convert-artifact-4123033180/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": "3bc7ce1e-02fa-4c94-944a-413daaa1373f", "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-workflowh4fhm/series-workflowh4fhm-build-action-140985016/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-30 11:59:55 +0000 UTC FinishedAt: 2026-06-30 12:24:04 +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:*73e6d650-8944-4389-8849-b57675c5a0cd,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-workflowh4fhm/series-workflowh4fhm-convert-artifact-4123033180/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": "3bc7ce1e-02fa-4c94-944a-413daaa1373f", "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-workflowh4fhm/series-workflowh4fhm-build-action-140985016/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-30 12:24:14 +0000 UTC FinishedAt: 2026-06-30 12:24:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-30 12:24:14 +0000 UTC FinishedAt: 2026-06-30 12:24:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-30 12:24:14 +0000 UTC FinishedAt: 2026-06-30 12:26:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-30 12:24:14 +0000 UTC FinishedAt: 2026-06-30 12:25:52 +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:*3bc7ce1e-02fa-4c94-944a-413daaa1373f,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-workflowh4fhm/series-workflowh4fhm-build-action-140985016/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-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-30 12:26:02 +0000 UTC FinishedAt: 2026-06-30 13:19:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-30 12:26:02 +0000 UTC FinishedAt: 2026-06-30 13:19:46 +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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"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:*9699aadf-2296-48b7-bcf2-b62e763a3267,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3bc7ce1e-02fa-4c94-944a-413daaa1373f,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-workflowh4fhm/series-workflowh4fhm-build-action-3490407719/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-workflowh4fhm/series-workflowh4fhm-build-action-140985016/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-30 12:26:02 +0000 UTC FinishedAt: 2026-06-30 12:26:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-30 12:26:02 +0000 UTC FinishedAt: 2026-06-30 12:26: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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"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-workflowh4fhm/series-workflowh4fhm-convert-artifact-1877560613/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-30 12:26:02 +0000 UTC FinishedAt: 2026-06-30 12:26:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-30 12:26:02 +0000 UTC FinishedAt: 2026-06-30 12:26:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-30 12:26:02 +0000 UTC FinishedAt: 2026-06-30 12:26:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-30 12:26:12 +0000 UTC FinishedAt: 2026-06-30 13:19:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh4fhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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_try_attach_pse","phy_pse_attach_one","phy_pse_detach_one","phy_pse_notifier_event","phy_device_register_locked","pse_register_notifier","pse_unregister_notifier","pse_control_matches_pcdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["PSE_CONTROLLER"],"series_id":"ce052446-a7f4-4573-bbb4-b3f43e7409cb","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-30 12:26:12 +0000 UTC FinishedAt: 2026-06-30 13:19:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9699aadf-2296-48b7-bcf2-b62e763a3267,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3bc7ce1e-02fa-4c94-944a-413daaa1373f,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-workflowh4fhm/series-workflowh4fhm-build-action-3490407719/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-workflowh4fhm/series-workflowh4fhm-build-action-140985016/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-workflowh4fhm/series-workflowh4fhm-convert-artifact-1877560613/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,}