Name: series-workflowrlczt Phase: Succeeded StartedAt: 2026-07-25 11:39:32 +0000 UTC FinishedAt: 2026-07-25 16:41:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[0] Phase: Succeeded StartedAt: 2026-07-25 11:39:32 +0000 UTC FinishedAt: 2026-07-25 12:10:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 11:39:32 +0000 UTC FinishedAt: 2026-07-25 12:10:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "b95f03f04d475aa6719d15a636ddf32222d55657", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TEST_HMM", "TRANSPARENT_HUGEPAGE", "DEVICE_PRIVATE", "ZONE_DEVICE", "MEMORY_HOTPLUG", "MEMORY_HOTREMOVE", "SPARSEMEM_VMEMMAP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "b95f03f04d475aa6719d15a636ddf32222d55657", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TEST_HMM", "TRANSPARENT_HUGEPAGE", "DEVICE_PRIVATE", "ZONE_DEVICE", "MEMORY_HOTPLUG", "MEMORY_HOTREMOVE", "SPARSEMEM_VMEMMAP" ], "series_id": "f454c585-ed4f-467b-918e-9fba54a7d476" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "migrate_device_pages", "migrate_vma_pages", "migrate_device_coherent_folio" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OywKICAgICYjMzQ7U1BBUlNFTUVNX1ZNRU1NQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttaWdyYXRlX2RldmljZV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX3ZtYV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19taWdyYXRlX2RldmljZV9wYWdlc2Agd2hlcmUgdGhlIGBtYXBwaW5nYCB2YXJpYWJsZSBpcyBub3QgcmVmcmVzaGVkIGFmdGVyIGBmb2xpb19mcmVlX3N3YXAoKWAgcmVtb3ZlcyB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcCBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoZGV2aWNlIG1pZ3JhdGlvbikuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgd2hpY2ggYXJlIHVzZWQgYnkgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBITU0gdGVzdCBkcml2ZXIuIEZ1enppbmcgdGhpcyByZXF1aXJlcyBlbmFibGluZyBgVEVTVF9ITU1gIGFuZCByZWxhdGVkIG1lbW9yeSBob3RwbHVnL2RldmljZSBtZW1vcnkgY29uZmlncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc5YTQ2OWYxMDk3NzljZTA1MjgxZDFlM2ZkNmNiYTE0MWRiZWZmMTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMjowODoyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9taWdyYXRlX2RldmljZS5jIGIvbW0vbWlncmF0ZV9kZXZpY2UuY1xuaW5kZXggNTU0NzU0ZWIyNmZmMmYuLmFlODk1NzU4YjcyY2UxIDEwMDY0NFxuLS0tIGEvbW0vbWlncmF0ZV9kZXZpY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWlncmF0ZV9kZXZpY2UuY1xuQEAgLTEyMDQsNiAmIzQzOzEyMDQsMTIgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbiBcdFx0XHRcdFx0c3JjX3BmbnNbaV0gXHUwMDI2PSB+TUlHUkFURV9QRk5fTUlHUkFURTtcbiBcdFx0XHRcdFx0Z290byBuZXh0O1xuIFx0XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0XHQvKlxuJiM0MztcdFx0XHRcdCAqIGZvbGlvX2ZyZWVfc3dhcCgpIHJlbW92ZWQgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXBcbiYjNDM7XHRcdFx0XHQgKiBjYWNoZS4gUmVmcmVzaCB0aGUgc2F2ZWQgbWFwcGluZyBiZWZvcmUgbWlncmF0aW9uLlxuJiM0MztcdFx0XHRcdCAqL1xuJiM0MztcdFx0XHRcdG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtcbiBcdFx0XHR9XG4gXHRcdH0gZWxzZSBpZiAoZm9saW9faXNfem9uZV9kZXZpY2UobmV3Zm9saW8pKSB7XG4gXHRcdFx0LypcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VEVTVF9ITU0mIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7REVWSUNFX1BSSVZBVEUmIzM0OywKICAgICYjMzQ7Wk9ORV9ERVZJQ0UmIzM0OywKICAgICYjMzQ7TUVNT1JZX0hPVFBMVUcmIzM0OywKICAgICYjMzQ7TUVNT1JZX0hPVFJFTU9WRSYjMzQ7LAogICAgJiMzNDtTUEFSU0VNRU1fVk1FTU1BUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21pZ3JhdGVfZGV2aWNlX3BhZ2VzJiMzNDssCiAgICAmIzM0O21pZ3JhdGVfdm1hX3BhZ2VzJiMzNDssCiAgICAmIzM0O21pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCB3aGVyZSB0aGUgYG1hcHBpbmdgIHZhcmlhYmxlIGlzIG5vdCByZWZyZXNoZWQgYWZ0ZXIgYGZvbGlvX2ZyZWVfc3dhcCgpYCByZW1vdmVzIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIChkZXZpY2UgbWlncmF0aW9uKS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLCB3aGljaCBhcmUgdXNlZCBieSBkZXZpY2UgZHJpdmVycyBhbmQgdGhlIEhNTSB0ZXN0IGRyaXZlci4gRnV6emluZyB0aGlzIHJlcXVpcmVzIGVuYWJsaW5nIGBURVNUX0hNTWAgYW5kIHJlbGF0ZWQgbWVtb3J5IGhvdHBsdWcvZGV2aWNlIG1lbW9yeSBjb25maWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzlhNDY5ZjEwOTc3OWNlMDUyODFkMWUzZmQ2Y2JhMTQxZGJlZmYxMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDI1IDEyOjA4OjIwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZV9kZXZpY2UuYyBiL21tL21pZ3JhdGVfZGV2aWNlLmMKaW5kZXggNTU0NzU0ZWIyNmZmMmYuLmFlODk1NzU4YjcyY2UxIDEwMDY0NAotLS0gYS9tbS9taWdyYXRlX2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL21pZ3JhdGVfZGV2aWNlLmMKQEAgLTEyMDQsNiAmIzQzOzEyMDQsMTIgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywKIAkJCQkJc3JjX3BmbnNbaV0gJmFtcDs9IH5NSUdSQVRFX1BGTl9NSUdSQVRFOwogCQkJCQlnb3RvIG5leHQ7CiAJCQkJfQomIzQzOwomIzQzOwkJCQkvKgomIzQzOwkJCQkgKiBmb2xpb19mcmVlX3N3YXAoKSByZW1vdmVkIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwCiYjNDM7CQkJCSAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uCiYjNDM7CQkJCSAqLwomIzQzOwkJCQltYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7CiAJCQl9CiAJCX0gZWxzZSBpZiAoZm9saW9faXNfem9uZV9kZXZpY2UobmV3Zm9saW8pKSB7CiAJCQkvKgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDYzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyBhIERldmljZSBNaWdyYXRpb24gUGF0Y2gqKgoKQWxyaWdodCwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2gg4oCTIHNlZW1zIGxpa2UgaXQmIzM5O3MgdG91Y2hpbmcgYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiBTcGVjaWZpY2FsbHksIHRoZXJlJiMzOTtzIGEgbmV3IGxpbmUgYmVpbmcgYWRkZWQ6IGBtYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7YCB3aXRoaW4gdGhlIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBmdW5jdGlvbi4gT2theSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBrbm93IHRoYXQgYGZvbGlvX21hcHBpbmdgIHJldHJpZXZlcyB0aGUgYWRkcmVzcyBzcGFjZSBhc3NvY2lhdGVkIHdpdGggYSBmb2xpbywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgbGluZSBpcyBiZWluZyBpbnRyb2R1Y2VkIGhlcmUgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuCgpUbyBwcm9wZXJseSBncmFzcCB0aGUgcmVhc29uaW5nIGJlaGluZCBpdCwgSSBuZWVkIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIGBtbS9taWdyYXRlX2RldmljZS5jYCByaWdodCBub3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbuKAmXMgb3ZlcmFsbCBnb2FsIHdpdGhpbiB0aGUgZGV2aWNlIG1pZ3JhdGlvbiBwcm9jZXNzIGFuZCwgb2YgY291cnNlLCB0aGUgZ2VuZXJhbCBtZW1vcnkgbWlncmF0aW9uIHNjaGVtZS4gSSYjMzk7bGwgZm9jdXMgb24gdGhlIHN1cnJvdW5kaW5nIGNvZGUsIHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCwgYW5kIHRoZSBvdmVyYWxsIGFsZ29yaXRobS4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBuZXcgYGZvbGlvX21hcHBpbmdgIGNhbGwgZml0cyBpbnRvIHRoZSBjdXJyZW50IG1pZ3JhdGlvbiBmbG93LiBJcyBpdCBmb3Igc2VjdXJpdHk/IFRyYWNraW5nPyBPcHRpbWl6YXRpb24/IERlYnVnZ2luZz8gSXQmIzM5O3MgZXNzZW50aWFsIEkgY29tcHJlaGVuZCB0aGUgZnVsbCBjb250ZXh0IHRvIGFzc2VzcyB0aGlzIGNoYW5nZSYjMzk7cyBpbXBhY3QgYW5kIGVmZmljYWN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fbWlncmF0ZV9kZXZpY2VfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9taWdyYXRlX2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21pZ3JhdGVfZGV2aWNlLmM9OTY1PXN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX2luc2VydF9wYWdlKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTctXG5tbS9taWdyYXRlX2RldmljZS5jOjEwOTg6c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5OS1cdFx0XHRcdHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLCB1bnNpZ25lZCBsb25nIG5wYWdlcyxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNTM9dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU1LXtcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1NjpcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMsIE5VTEwpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU3LX1cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNjg9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjkte1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjcwOlx0X19taWdyYXRlX2RldmljZV9wYWdlcyhtaWdyYXRlLVx1MDAzZXNyYywgbWlncmF0ZS1cdTAwM2Vkc3QsIG1pZ3JhdGUtXHUwMDNlbnBhZ2VzLCBtaWdyYXRlKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3MS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyOAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW5uZXIgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBNaWdyYXRpb24gRnVuY3Rpb24mIzM5O3MgSW52b2NhdGlvbioqCgpSaWdodCwgc28gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGlzIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIsIGFuZCB0aGUgY29kZSBleHBsaWNpdGx5IHN0YXRlcyBpdCYjMzk7cyBjYWxsZWQgYnkgYm90aCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gSSYjMzk7bSB0aGlua2luZy4uLiB3aGF0JiMzOTtzIGRyaXZpbmcgdGhpcz8gV2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3Iga2VybmVsIGZlYXR1cmVzIGFyZSAqZW5hYmxpbmcqIHRoaXMgbWlncmF0aW9uIGZ1bmN0aW9uYWxpdHk/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN3aXRjaGVzIHNvIEkgY2FuIHVuZGVyc3RhbmQgdGhlIHNjZW5hcmlvcyB3aGVyZSB0aGlzIGNvZGUgcGF0aCBpcyBhY3R1YWxseSBhY3RpdmUuIE90aGVyd2lzZSwgSSYjMzk7bSBqdXN0IGxvb2tpbmcgYXQgZGVhZCBjb2RlIGFuZCB0aGF0JiMzOTtzIG5vdCB1c2VmdWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWlncmF0ZV9kZXZpY2VfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbWlncmF0ZV9kZXZpY2UuYz05NjU9c3RhdGljIHZvaWQgbWlncmF0ZV92bWFfaW5zZXJ0X3BhZ2Uoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5Ny1cbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTA5ODpzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk5LVx0XHRcdFx0dW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsIHVuc2lnbmVkIGxvbmcgbnBhZ2VzLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI0NC0vKipcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI0NTogKiBtaWdyYXRlX2RldmljZV9wYWdlcygpIC0gbWlncmF0ZSBtZXRhLWRhdGEgZnJvbSBzcmMgcGFnZSB0byBkc3QgcGFnZVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjQ2LSAqIEBzcmNfcGZuczogc3JjX3BmbnMgcmV0dXJuZWQgZnJvbSBtaWdyYXRlX2RldmljZV9yYW5nZSgpXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjUyLSAqL1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjUzOnZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU0LVx0XHRcdHVuc2lnbmVkIGxvbmcgbnBhZ2VzKVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU1LXtcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1NjpcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMsIE5VTEwpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU3LX1cbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1ODpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1OS1cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNjg9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjkte1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjcwOlx0X19taWdyYXRlX2RldmljZV9wYWdlcyhtaWdyYXRlLVx1MDAzZXNyYywgbWlncmF0ZS1cdTAwM2Vkc3QsIG1pZ3JhdGUtXHUwMDNlbnBhZ2VzLCBtaWdyYXRlKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3MS19XG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMzYxPXN0YXRpYyB1bnNpZ25lZCBsb25nIG1pZ3JhdGVfZGV2aWNlX3Bmbl9sb2NrKHVuc2lnbmVkIGxvbmcgcGZuKVxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTM5My0gKiBhbGxvY2F0ZSBkZXN0aW5hdGlvbiBwYWdlcyBhbmQgc3RhcnQgY29weWluZyBkYXRhIGZyb20gdGhlIGRldmljZSB0byBDUFVcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTM5NDogKiBtZW1vcnkgYmVmb3JlIGNhbGxpbmcgbWlncmF0ZV9kZXZpY2VfcGFnZXMoKS5cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTM5NS0gKi9cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTE0NjE9aW50IG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDg1LVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxNDg2Olx0bWlncmF0ZV9kZXZpY2VfcGFnZXMoXHUwMDI2c3JjX3BmbiwgXHUwMDI2ZHN0X3BmbiwgMSk7XG5tbS9taWdyYXRlX2RldmljZS5jLTE0ODctXHRpZiAoc3JjX3BmbiBcdTAwMjYgTUlHUkFURV9QRk5fTUlHUkFURSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKktjb25maWcgRGl2ZSBmb3IgYG1tL21pZ3JhdGVfZGV2aWNlLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gaW1wbGljYXRpb25zIG9mIGBtbS9taWdyYXRlX2RldmljZS5jYC4gVGhhdCBtZWFucyBkaXZpbmcgc3RyYWlnaHQgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIG9yIHJlbGV2YW50IGZlYXR1cmVzIGNvbnRyb2wgdGhlIGluY2x1c2lvbiBvciBiZWhhdmlvciBvZiB0aGF0IHNwZWNpZmljIGZpbGUuIElzIGl0IHRpZWQgdG8gYSBzcGVjaWZpYyBkZXZpY2UgY2xhc3MsIGEgbWVtb3J5IG1hbmFnZW1lbnQgc3RyYXRlZ3ksIG9yIHBlcmhhcHMgZXZlbiBhIGJyb2FkZXIgc3lzdGVtIGNhcGFiaWxpdHk/IEtub3dpbmcgdGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBpdCBpbnRlcmFjdHMgd2l0aGluIHRoZSBrZXJuZWwgYW5kIGl0cyBicm9hZGVyIGNvbnRleHQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGJyZWFkY3J1bWJzIHRoYXQgd2lsbCBsZWFkIG1lIHRvIHRoZSByZWxldmFudCBzeW1ib2xzIGFuZCBhbnkgcG90ZW50aWFsIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWxseSBkaWdnaW5nIGludG8gdGhpcyBwaWVjZSBvZiBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21pZ3JhdGVfZGV2aWNlLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9NYWtlZmlsZT05OT1vYmotJChDT05GSUdfTlVNQSkgJiM0Mzs9IG1lbW9yeS10aWVycy5vXG5tbS9NYWtlZmlsZToxMDA6b2JqLSQoQ09ORklHX0RFVklDRV9NSUdSQVRJT04pICYjNDM7PSBtaWdyYXRlX2RldmljZS5vXG5tbS9NYWtlZmlsZS0xMDEtb2JqLSQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSAmIzQzOz0gaHVnZV9tZW1vcnkubyBraHVnZXBhZ2VkLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTQ0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93biBpbW1lZGlhdGUgcHJvY2Vzc2luZzoKCioqRGV2aWNlIE1pZ3JhdGlvbiBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IG5lZWRpbmcgYENPTkZJR19ERVZJQ0VfTUlHUkFUSU9OYC4gTGV0JiMzOTtzIGp1c3QgYXNzdW1lIHdlIGRvLCBmb3IgdGhlIHNha2Ugb2YgZXhwbG9yaW5nIGhvdyB0aGlzIHN5c3RlbSBoYXMgYmVlbiBkZXNpZ25lZC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBteSBmaXJzdCBpbnN0aW5jdCwgb2YgY291cnNlLCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBhbmQgdmVyaWZ5IHRoZSBuYXR1cmUgYW5kIGRlcGVuZGVuY2llcyBvZiBgQ09ORklHX0RFVklDRV9NSUdSQVRJT05gLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLiBUaGlzIGlzbiYjMzk7dCBhIGNhc3VhbCBkZWNpc2lvbjsgYSBtaWdyYXRpb24gZmVhdHVyZSBhbG1vc3QgYWx3YXlzIHRvdWNoZXMgc29tZSBmdW5kYW1lbnRhbCBwYXJ0cyBvZiB0aGUgc3lzdGVtIGFuZCBoYXMgc2lnbmlmaWNhbnQgZWZmZWN0cyBvbiBpdHMgYXJjaGl0ZWN0dXJlLiBUaW1lIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBkZXNjcmlwdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZSwgYW5kLCBjcnVjaWFsbHksIGFueSBjb25mbGljdGluZyBvcHRpb25zLiBXZSBuZWVkIHRoZSBmdWxsIHBpY3R1cmUgYmVmb3JlIG1vdmluZyBmb3J3YXJkLiBJJiMzOTttIGFmdGVyIHRoZSBsb3ctZG93bi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERFVklDRV9NSUdSQVRJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9Njk2PWNvbmZpZyBNSUdSQVRJT05cbi0tXG5tbS9LY29uZmlnLTY5OS1cbm1tL0tjb25maWc6NzAwOmNvbmZpZyBERVZJQ0VfTUlHUkFUSU9OXG5tbS9LY29uZmlnLTcwMS1cdGRlZl9ib29sIE1JR1JBVElPTiBcdTAwMjZcdTAwMjYgWk9ORV9ERVZJQ0VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI2OQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogQ09ORklHX0RFVklDRV9NSUdSQVRJT04qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBkZXBlbmRlbmN5IGNoYWluLiBUaGUgY29kZSYjMzk7cyBzYXlpbmcgYENPTkZJR19ERVZJQ0VfTUlHUkFUSU9OYCBoaW5nZXMgb24gYm90aCBgTUlHUkFUSU9OYCBhbmQgYFpPTkVfREVWSUNFYC4gRmluZSwgdGhhdCBtYWtlcyBzZW5zZSBjb25jZXB0dWFsbHk7IGRldmljZSBtaWdyYXRpb24gb2Z0ZW4gaW52b2x2ZXMgbW92aW5nIGRhdGEgYmV0d2VlbiB6b25lcy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgWk9ORV9ERVZJQ0VgIGlzIHNldCwgYmVjYXVzZSB0aGF0JiMzOTtzIHRoZSB1bmtub3duIHZhcmlhYmxlIGhlcmUsIHRoZSB0aGluZyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUuIElzIGBaT05FX0RFVklDRWAgZW5hYmxlZD8gTGV0JiMzOTtzIGNoZWNrIHRoYXQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb25hbGl0eSB0aGF0IHpvbmUgZGV2aWNlIGltcGxpZXMuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBgQ09ORklHX0RFVklDRV9NSUdSQVRJT05gIHdpbGwgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFpPTkVfREVWSUNFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTEyMzE9Y29uZmlnIFpPTkVfRE1BMzJcbi0tXG5tbS9LY29uZmlnLTEyMzUtXG5tbS9LY29uZmlnOjEyMzY6Y29uZmlnIFpPTkVfREVWSUNFXG5tbS9LY29uZmlnLTEyMzctXHRib29sIFwmIzM0O0RldmljZSBtZW1vcnkgKHBtZW0sIEhNTSwgZXRjLi4uKSBob3RwbHVnIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU4NAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgQ2FsbGVycyBvZiBQYWdlIE1pZ3JhdGlvbiBGdW5jdGlvbnMqKgoKT2theSwgc28gd2UgbmVlZCB0byB0cmFjayBkb3duIGFsbCB0aGUgY2FsbCBzaXRlcyBvZiBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLiBJIGtub3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBjcnVjaWFsIGZvciBoYW5kbGluZyBwYWdlIG1pZ3JhdGlvbnMgaW4gc3BlY2lmaWMgY29udGV4dHMsIGxpa2VseSByZWxhdGVkIHRvIGRldmljZSBtZW1vcnkgYW5kIHZpcnR1YWwgbWVtb3J5IGFyZWFzLCByZXNwZWN0aXZlbHkuIEl0JiMzOTtzIHRpbWUgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGludm9rZWQgd2l0aGluIHRoZSBrZXJuZWwgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgcGF0aHMgd2lsbCBnaXZlIG1lIGNvbnRleHQgYXJvdW5kIHRoZSBtaWdyYXRpb24gZmxvd3MsIGFuZCBoZWxwIG1lIGluIHVuZGVyc3RhbmRpbmcgdGhlIG1pZ3JhdGlvbiBpbXBsZW1lbnRhdGlvbnMgYmV0dGVyLiBQZXJoYXBzIEkgYW0gbG9va2luZyB0byBmaXggYSBidWcsIG9yIG9wdGltaXplIHRoZXNlIGNhbGxzLiBJIG5lZWQgdG8ga25vdyB3aHkgYW5kIHdoZW4gdGhvc2UgcGFnZXMgYXJlIGJlaW5nIG1vdmVkLiBUaGlzIGludmVzdGlnYXRpb24gaXMgdGhlIGZpcnN0IHN0ZXAgdG93YXJkIHRoYXQgZ29hbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWlncmF0ZV92bWFfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0PTI2ND11c2UgaGFyZHdhcmUgRE1BIG9yIGRldmljZSBzcGVjaWZpYyBsb2FkL3N0b3JlIGluc3RydWN0aW9ucyB0byBtaWdyYXRlIGRhdGEuXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MjY1OlRoZSBtaWdyYXRlX3ZtYV9zZXR1cCgpLCBtaWdyYXRlX3ZtYV9wYWdlcygpLCBhbmQgbWlncmF0ZV92bWFfZmluYWxpemUoKVxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTI2Ni1mdW5jdGlvbnMgYXJlIGRlc2lnbmVkIHRvIG1ha2UgZHJpdmVycyBlYXNpZXIgdG8gd3JpdGUgYW5kIHRvIGNlbnRyYWxpemUgY29tbW9uXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0PTI5Nz1iZXR3ZWVuIGRldmljZSBkcml2ZXIgc3BlY2lmaWMgY29kZSBhbmQgc2hhcmVkIGNvbW1vbiBjb2RlOlxuLS1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0zNjQtXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MzY1OjQuIGBgbWlncmF0ZV92bWFfcGFnZXMoKWBgXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMzY2LVxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q9MjEyPUhNTSDliIfmjaLliLDnm7TmjqXkvb/nlKggc3RydWN0IHBhZ2Ug55So5LqO6K6+5aSH5YaF5a2Y77yM6L+Z5L2/5b6X5aSn5aSa5pWw5YaF5qC45Luj56CB6Lev5b6E5LiN55+l6YGT5beu5byC44CCXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdC0yMTgt55Sx5LqOIENQVSDml6Dms5Xnm7TmjqXorr/pl67orr7lpIflhoXlrZjvvIzlm6DmraTorr7lpIfpqbHliqjnqIvluo/lv4Xpobvkvb/nlKjnoazku7YgRE1BIOaIluiuvuWkh+eJueWumueahOWKoOi9vS/lrZhcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q6MjE5OuWCqOaMh+S7pOadpei/geenu+aVsOaNruOAgm1pZ3JhdGVfdm1hX3NldHVwKCnjgIFtaWdyYXRlX3ZtYV9wYWdlcygpIOWSjFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdC0yMjAtbWlncmF0ZV92bWFfZmluYWxpemUoKSDlh73mlbDml6jlnKjkvb/pqbHliqjnqIvluo/mm7TmmJPkuo7nvJblhpnlubbpm4bkuK3ot6jpqbHliqjnqIvluo/nmoTpgJrnlKjku6PnoIHjgIJcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0PTI0Mz1kZXZtX21lbXVubWFwX3BhZ2VzKCkg5ZKMIGRldm1fcmVsZWFzZV9tZW1fcmVnaW9uKCkg5b2T6LWE5rqQ5Y+v5Lul57uR5a6a5YiwIGBgc3RydWN0IGRldmljZWBgLlxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjk3LVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdDoyOTg6NC4gYGBtaWdyYXRlX3ZtYV9wYWdlcygpYGBcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjk5LVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNDktICogMS4ga3ZtLVx1MDAzZXNyY3UgLSBQcm90ZWN0cyBLVk0gbWVtc2xvdHNcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmM6NTA6ICogMi4ga3ZtLVx1MDAzZW1tLVx1MDAzZW1tYXBfbG9jayAtIGZpbmRfdm1hLCBtaWdyYXRlX3ZtYV9wYWdlcyBhbmQgaGVscGVycywga3NtX21hZHZpc2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNTEtICogMy4ga3ZtLVx1MDAzZWFyY2gudXZtZW1fbG9jayAtIHByb3RlY3RzIHJlYWQvd3JpdGVzIHRvIHV2bWVtIHNsb3RzIHRodXMgYWN0aW5nXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYz01MTM9c3RhdGljIGludCBfX2t2bXBwY19zdm1fcGFnZV9vdXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01NzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jOjU3OTpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTU4MC1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jPTc0MD1zdGF0aWMgaW50IGt2bXBwY19zdm1fcGFnZV9pbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTc4Ny1cdCptaWcuZHN0ID0gbWlncmF0ZV9wZm4ocGFnZV90b19wZm4oZHBhZ2UpKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmM6Nzg4Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlnKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNzg5LW91dF9maW5hbGl6ZTpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jPTM5ND1zdm1fbWlncmF0ZV92bWFfdG9fdnJhbShzdHJ1Y3Qga2ZkX25vZGUgKm5vZGUsIHN0cnVjdCBzdm1fcmFuZ2UgKnByYW5nZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTQ1MS1cdHIgPSBzdm1fbWlncmF0ZV9jb3B5X3RvX3ZyYW0obm9kZSwgcHJhbmdlLCBcdTAwMjZtaWdyYXRlLCBcdTAwMjZtZmVuY2UsIHNjcmF0Y2gsIHR0bV9yZXNfb2Zmc2V0KTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM6NDUyOlx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlncmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTQ1My1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jPTY5Mz1zdm1fbWlncmF0ZV92bWFfdG9fcmFtKHN0cnVjdCBrZmRfbm9kZSAqbm9kZSwgc3RydWN0IHN2bV9yYW5nZSAqcHJhbmdlLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNzU1LVx0XHRcdFx0ICAgIHNjcmF0Y2gsIG5wYWdlcyk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjc1NjpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZ3JhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy03NTctXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9NjE2PWludCBkcm1fcGFnZW1hcF9taWdyYXRlX3RvX2Rldm1lbShzdHJ1Y3QgZHJtX3BhZ2VtYXBfZGV2bWVtICpkZXZtZW1fYWxsb2NhdGlvbixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy04MTItZXJyX2Fib3J0ZWRfbWlncmF0aW9uOlxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6ODEzOlx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlncmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy04MTQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTIxMT1zdGF0aWMgaW50IF9fZHJtX3BhZ2VtYXBfbWlncmF0ZV90b19yYW0oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2YXMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTMwNC1cdFx0ZHJtX3BhZ2VtYXBfbWlncmF0aW9uX3VubG9ja19wdXRfcGFnZXMobnBhZ2VzLCBtaWdyYXRlLmRzdCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzoxMzA1Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlncmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzA2LVx0bWlncmF0ZV92bWFfZmluYWxpemUoXHUwMDI2bWlncmF0ZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM9MTgzPXN0YXRpYyB2bV9mYXVsdF90IG5vdXZlYXVfZG1lbV9taWdyYXRlX3RvX3JhbShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yNjctXHRub3V2ZWF1X2ZlbmNlX25ldyhcdTAwMjZmZW5jZSwgZG1lbS1cdTAwM2VtaWdyYXRlLmNoYW4pO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6MjY4Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yNjktXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcdTAwMjZmZW5jZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM9NzgzPXN0YXRpYyB2b2lkIG5vdXZlYXVfZG1lbV9taWdyYXRlX2NodW5rKHN0cnVjdCBub3V2ZWF1X2RybSAqZHJtLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTgwOS1cdG5vdXZlYXVfZmVuY2VfbmV3KFx1MDAyNmZlbmNlLCBkcm0tXHUwMDNlZG1lbS1cdTAwM2VtaWdyYXRlLmNoYW4pO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6ODEwOlx0bWlncmF0ZV92bWFfcGFnZXMoYXJncyk7XG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy04MTEtXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcdTAwMjZmZW5jZSk7XG4tLVxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9MTU4PXN0cnVjdCBtaWdyYXRlX3ZtYSB7XG4tLVxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTY1LVx0ICogbWlncmF0ZV92bWFfc2V0dXAoKSwgYW5kIG11c3Qgbm90IGNoYW5nZSB0aGUgZHN0IGFycmF5IGFmdGVyXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaDoxNjY6XHQgKiBtaWdyYXRlX3ZtYV9wYWdlcygpIHJldHVybnMuXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xNjctXHQgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaD0xOTM9aW50IG1pZ3JhdGVfdm1hX3NldHVwKHN0cnVjdCBtaWdyYXRlX3ZtYSAqYXJncyk7XG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaDoxOTQ6dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpO1xuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTk1LXZvaWQgbWlncmF0ZV92bWFfZmluYWxpemUoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKTtcbi0tXG5saWIvdGVzdF9obW0uYz0xMDA0PXN0YXRpYyB2bV9mYXVsdF90IGRtaXJyb3JfZGV2bWVtX2ZhdWx0X2FsbG9jX2FuZF9jb3B5KHN0cnVjdCBtaWdyYXRlX3ZtYSAqYXJncyxcbi0tXG5saWIvdGVzdF9obW0uYy0xMDc1LVx0XHRcdFx0XHQvKiBDbGVhciByZW1haW5pbmcgZHN0IGVudHJpZXMgdG8gYXZvaWRcbmxpYi90ZXN0X2htbS5jOjEwNzY6XHRcdFx0XHRcdCAqIG1pZ3JhdGVfdm1hX3BhZ2VzL2ZpbmFsaXplKCkgdXNpbmdcbmxpYi90ZXN0X2htbS5jLTEwNzctXHRcdFx0XHRcdCAqIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxuLS1cbmxpYi90ZXN0X2htbS5jPTExMjA9c3RhdGljIGludCBkbWlycm9yX21pZ3JhdGVfdG9fc3lzdGVtKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxuLS1cbmxpYi90ZXN0X2htbS5jLTExNzUtXG5saWIvdGVzdF9obW0uYzoxMTc2Olx0XHRtaWdyYXRlX3ZtYV9wYWdlcyhcdTAwMjZhcmdzKTtcbmxpYi90ZXN0X2htbS5jLTExNzctXHRcdGNtZC1cdTAwM2VjcGFnZXMgJiM0Mzs9IGRtaXJyb3Jfc3VjY2Vzc2Z1bF9taWdyYXRlZF9wYWdlcyhcdTAwMjZhcmdzKTtcbi0tXG5saWIvdGVzdF9obW0uYz0xMTg5PXN0YXRpYyBpbnQgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcbi0tXG5saWIvdGVzdF9obW0uYy0xMjQ4LVx0XHRkbWlycm9yX21pZ3JhdGVfYWxsb2NfYW5kX2NvcHkoXHUwMDI2YXJncywgZG1pcnJvcik7XG5saWIvdGVzdF9obW0uYzoxMjQ5Olx0XHRtaWdyYXRlX3ZtYV9wYWdlcyhcdTAwMjZhcmdzKTtcbmxpYi90ZXN0X2htbS5jLTEyNTAtXHRcdGRtaXJyb3JfbWlncmF0ZV9maW5hbGl6ZV9hbmRfbWFwKFx1MDAyNmFyZ3MsIGRtaXJyb3IpO1xuLS1cbmxpYi90ZXN0X2htbS5jPTE2NTM9c3RhdGljIHZtX2ZhdWx0X3QgZG1pcnJvcl9kZXZtZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxubGliL3Rlc3RfaG1tLmMtMTcxOC1cdH1cbmxpYi90ZXN0X2htbS5jOjE3MTk6XHRtaWdyYXRlX3ZtYV9wYWdlcyhcdTAwMjZhcmdzKTtcbmxpYi90ZXN0X2htbS5jLTE3MjAtXHQvKlxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9NjU5PXN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX3VubWFwKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTY5OS0gKiB0aGlzIGNhbiBzdGlsbCBmYWlsLCBhbmQgdGh1cyBpbnNpZGUgdGhlIGRldmljZSBkcml2ZXIgeW91IG11c3QgY2hlY2sgaWYgdGhlXG5tbS9taWdyYXRlX2RldmljZS5jOjcwMDogKiBtaWdyYXRpb24gd2FzIHN1Y2Nlc3NmdWwgZm9yIHRob3NlIGVudHJpZXMgYWZ0ZXIgY2FsbGluZyBtaWdyYXRlX3ZtYV9wYWdlcygpLFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDEtICoganVzdCBsaWtlIGZvciByZWd1bGFyIG1pZ3JhdGlvbi5cbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzAyLSAqXG5tbS9taWdyYXRlX2RldmljZS5jOjcwMzogKiBBZnRlciB0aGF0LCB0aGUgY2FsbGVycyBtdXN0IGNhbGwgbWlncmF0ZV92bWFfcGFnZXMoKSB0byBnbyBvdmVyIGVhY2ggZW50cnlcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzA0LSAqIGluIHRoZSBzcmMgYXJyYXkgdGhhdCBoYXMgdGhlIE1JR1JBVEVfUEZOX1ZBTElEIGFuZCBNSUdSQVRFX1BGTl9NSUdSQVRFIGZsYWdcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzA1LSAqIHNldC4gSWYgdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgaW4gZHN0IGFycmF5IGhhcyBNSUdSQVRFX1BGTl9WQUxJRCBmbGFnIHNldCxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzA2OiAqIHRoZW4gbWlncmF0ZV92bWFfcGFnZXMoKSB0byBtaWdyYXRlIHN0cnVjdCBwYWdlIGluZm9ybWF0aW9uIGZyb20gdGhlIHNvdXJjZVxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDctICogc3RydWN0IHBhZ2UgdG8gdGhlIGRlc3RpbmF0aW9uIHN0cnVjdCBwYWdlLiAgSWYgaXQgZmFpbHMgdG8gbWlncmF0ZSB0aGVcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTcxNC0gKlxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MTU6ICogT25jZSBtaWdyYXRlX3ZtYV9wYWdlcygpIHJldHVybnMgdGhlIGNhbGxlciBtYXkgaW5zcGVjdCB3aGljaCBwYWdlcyB3ZXJlXG5tbS9taWdyYXRlX2RldmljZS5jLTcxNi0gKiBzdWNjZXNzZnVsbHkgbWlncmF0ZWQsIGFuZCB3aGljaCB3ZXJlIG5vdC4gIFN1Y2Nlc3NmdWxseSBtaWdyYXRlZCBwYWdlcyB3aWxsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy03MTgtICpcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzE5OiAqIEl0IGlzIHNhZmUgdG8gdXBkYXRlIGRldmljZSBwYWdlIHRhYmxlIGFmdGVyIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgYmVjYXVzZVxubW0vbWlncmF0ZV9kZXZpY2UuYy03MjAtICogYm90aCBkZXN0aW5hdGlvbiBhbmQgc291cmNlIHBhZ2UgYXJlIHN0aWxsIGxvY2tlZCwgYW5kIHRoZSBtbWFwX2xvY2sgaXMgaGVsZFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTA5OD1zdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI0OS0gKlxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjUwOiAqIEVxdWl2YWxlbnQgdG8gbWlncmF0ZV92bWFfcGFnZXMoKS4gVGhpcyBpcyBjYWxsZWQgdG8gbWlncmF0ZSBzdHJ1Y3QgcGFnZVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjUxLSAqIG1ldGEtZGF0YSBmcm9tIHNvdXJjZSBzdHJ1Y3QgcGFnZSB0byBkZXN0aW5hdGlvbi5cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNTg9RVhQT1JUX1NZTUJPTChtaWdyYXRlX2RldmljZV9wYWdlcyk7XG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjYwLS8qKlxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjYxOiAqIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgLSBtaWdyYXRlIG1ldGEtZGF0YSBmcm9tIHNyYyBwYWdlIHRvIGRzdCBwYWdlXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjItICogQG1pZ3JhdGU6IG1pZ3JhdGUgc3RydWN0IGNvbnRhaW5pbmcgYWxsIG1pZ3JhdGlvbiBpbmZvcm1hdGlvblxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Ny0gKi9cbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2ODp2b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2OS17XG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjcxLX1cbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3MjpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfdm1hX3BhZ2VzKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk4OAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgUGF0Y2ggaW4gdGhlIExpbnV4IEtlcm5lbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IHRoZSBjb2RlIGFkZGVkIHdpdGhpbiBgX19taWdyYXRlX2RldmljZV9wYWdlc2AuIEl0IHNlZW1zIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgdGhpcyBzbmlwcGV0OgoKYGBgYwoJCQkJLyoKCQkJCSAqIGZvbGlvX2ZyZWVfc3dhcCgpIHJlbW92ZWQgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXAKCQkJCSAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uCgkJCQkgKi8KCQkJCW1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTsKYGBgCgpUaGlzIGlzIHR1Y2tlZCBhd2F5IGluc2lkZSBgX19taWdyYXRlX2RldmljZV9wYWdlc2AsIHdoaWNoIG1ha2VzIG1lIGltbWVkaWF0ZWx5IHRoaW5rIGFib3V0IHRoZSBjb250ZXh0LiBSaWdodCwgc28gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGlzIGNhbGxlZCBieSBib3RoIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhvc2UgZnVuY3Rpb25zLiBUaGF0JiMzOTtzIGEga2V5IHBhcnQgb2YgdGhlIHB1enpsZS4gTm93LCBkaWdnaW5nIGRlZXBlciwgSSBzZWUgdGhhdCBgbWlncmF0ZV92bWFfcGFnZXNgIGlzIGNhbGxlZCBmcm9tIGBsaWIvdGVzdF9obW0uY2AuCgpUaGF0JiMzOTtzIGludGVyZXN0aW5nLiBgbGliL3Rlc3RfaG1tLmNgLi4uIHRoYXQmIzM5O3MgdGhlIHRlc3QgZHJpdmVyIGZvciBITU0sIG9yIEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQuIEhNTSBkZWFscyB3aXRoIGEgcHJldHR5IHNwZWNpZmljIHNldCBvZiBoYXJkd2FyZSBhbmQgbWVtb3J5IGNoYXJhY3RlcmlzdGljcywgc28gY2hhbmdlcyBpbiB0aGF0IGFyZWEgYXJlIHBvdGVudGlhbGx5IGhpZ2ggaW1wYWN0IGFuZCBuZWVkIHRvIGJlIGxvb2tlZCBhdCBjbG9zZWx5LgoKU28gbm93IEkgaGF2ZSB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJIG5lZWQgdG8gc2VlIGlmIHRoYXQgcGFydGljdWxhciB0ZXN0IG1vZHVsZSBpcyBlbmFibGVkIGJ5IHNvbWUgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gSWYgaXQgaXMsIHRoZW4gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhdGNoIGNvdWxkIGJlIHF1aXRlIGltcG9ydGFudCBmb3IgdXNlcnMgd2l0aCBITU0tZW5hYmxlZCBzeXN0ZW1zLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgcGF0Y2ggY2F1c2VzIGFuIGlzc3VlIHRoYXQgY2FuIGJlIHRyYWNlZCB0byBjb25maWd1cmF0aW9uIG9mIHRoYXQgdGVzdCBoYXJuZXNzLiBUaGF0IHdvdWxkIGJlIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBhbmQgcG90ZW50aWFsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGVzdF9obW0ubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvTWFrZWZpbGU9MTAyPW9iai0kKENPTkZJR19URVNUX0xPQ0tVUCkgJiM0Mzs9IHRlc3RfbG9ja3VwLm9cbmxpYi9NYWtlZmlsZToxMDM6b2JqLSQoQ09ORklHX1RFU1RfSE1NKSAmIzQzOz0gdGVzdF9obW0ub1xubGliL01ha2VmaWxlLTEwNC1vYmotJChDT05GSUdfVEVTVF9GUkVFX1BBR0VTKSAmIzQzOz0gdGVzdF9mcmVlX3BhZ2VzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODYyMAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBUZXN0IEhNTSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBgQ09ORklHX1RFU1RfSE1NYCBoYXMgdHJpZ2dlcmVkIHRoZSBidWlsZCBvZiBgbGliL3Rlc3RfaG1tLmNgLiBUaGF0JiMzOTtzIGEgY2xlYXIgc2lnbmFsLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqIGFuZCAqaG93Ki4gVGltZSB0byBkaWcgaW50byB0aGUgS2NvbmZpZy4gSSB3YW50IHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgZGVmYXVsdCB2YWx1ZSwgYW5kIGFueSBhc3NvY2lhdGVkIGhlbHAgdGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVuZGVkIHVzZSBjYXNlIG9mIHRoaXMgdGVzdCBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIGl0JiMzOTtzIGxpa2VseSB0byBiZSBlbmFibGVkLiBJcyB0aGlzIGEgY29yZSBmdW5jdGlvbmFsaXR5IHRlc3QsIG9yIGlzIGl0IG1vcmUgb2YgYSBkZXZlbG9wZXIgc2FuaXR5IGNoZWNrPyBBcmUgdGhlcmUgb3RoZXIgcmVsYXRlZCBvcHRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mIHdpdGhpbiB0aGUgSE1NIHN1YnN5c3RlbT8gSSYjMzk7bGwgcHJvYmFibHkgYmUgYWJsZSB0byBnbGVhbiB0aGlzIGluZm9ybWF0aW9uIGRpcmVjdGx5IGZyb20gdGhlIEtjb25maWcgZmlsZSBmb3IgYHRlc3RfaG1tYC4gVGltZSB0byB0cmFjayBpdCBkb3duLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBwbGFjZSBvZiB0ZXN0IHdpdGhpbiB0aGUgYmlnZ2VyIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRFU1RfSE1NJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWc9MzM0Nj1jb25maWcgVEVTVF9NRU1JTklUXG4tLVxubGliL0tjb25maWcuZGVidWctMzM1My1cbmxpYi9LY29uZmlnLmRlYnVnOjMzNTQ6Y29uZmlnIFRFU1RfSE1NXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzU1LVx0dHJpc3RhdGUgXCYjMzQ7VGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5ODAKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGZvciBgVEVTVF9ITU1gKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgYFRFU1RfSE1NYCAtIHdoYXQmIzM5O3MgdGhpcyB0aGluZyByZWx5aW5nIG9uPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmN5IGdyYXBoLiBJcyBpdCBhIHN0YW5kYWxvbmUgbW9kdWxlLCBvciBpcyBpdCBkcmF3aW5nIG9uIG90aGVyIGNvbXBvbmVudHM/IElzIGl0IGhpdHRpbmcgdGhlIGBITU1gIG9iamVjdCBkZWZpbmVkIGluIG15IG93biBsaWJyYXJ5LCBvciB0aGUgb25lIGZyb20gdGhlIHBhcGVyPyBBcmUgdGhlcmUgZXh0ZXJuYWwgbGlicmFyaWVzIGluIHRoZSBtaXg/IEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgYnVpbGRpbmcgYmxvY2tzIGFuZCBhbnkgcG90ZW50aWFsICYjMzk7Z290Y2hhcyYjMzk7IHRoYXQgY291bGQgdHJpcCBtZSB1cC4gVGhpcyBhbmFseXNpcyB3aWxsIGd1aWRlIG15IG5leHQgc3RlcHM6IGRlYnVnZ2luZywgcmVmYWN0b3JpbmcsIG9yIHNpbXBseSB1bmRlcnN0YW5kaW5nIGhvdyBgVEVTVF9ITU1gIGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBwcm9qZWN0LiBBIHF1aWNrIGRlcGVuZGVuY3kgc2NhbiBpcyBjcnVjaWFsIGJlZm9yZSBJIGV2ZW4gdGhpbmsgYWJvdXQgdG91Y2hpbmcgdGhlIGNvZGUgaXRzZWxmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVEVTVF9ITU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTMzNDY9Y29uZmlnIFRFU1RfTUVNSU5JVFxuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTMzNTMtXG5saWIvS2NvbmZpZy5kZWJ1ZzozMzU0OmNvbmZpZyBURVNUX0hNTVxubGliL0tjb25maWcuZGVidWctMzM1NS1cdHRyaXN0YXRlIFwmIzM0O1Rlc3QgSE1NIChIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50KVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mjk0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgc3BlY2lmaWMgYWJvdXQgdGhlIGRlYnVnZ2luZyBjb25maWd1cmF0aW9uIGZvciB0aGlzIHByb2plY3QuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSByZWxldmFudCBzZXR0aW5ncyBhcmUgbGlrZWx5IGxvY2F0ZWQgd2l0aGluIHRoZSBgS2NvbmZpZy5kZWJ1Z2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDMzNTQuIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IHRoYXQgZmlsZSBsb2NhdGlvbiBkaXJlY3RseS4gTGV0JiMzOTtzIHNlZSB3aGF0IHNlY3JldHMgaXQgaG9sZHMuIEhvcGVmdWxseSwgdGhpcyBzZWN0aW9uIHdpbGwgc2hlZCBzb21lIGxpZ2h0IG9uIHRoZSBjb25maWd1cmF0aW9uIEkmIzM5O20gdHJ5aW5nIHRvIGRlY2lwaGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzUwOlx0XHQgIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byB0ZXN0IGluaXRfb25fYWxsb2MgYW5kIGluaXRfb25fZnJlZSBmZWF0dXJlcy5cbjMzNTE6XHRcbjMzNTI6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbjMzNTM6XHRcbjMzNTQ6XHRjb25maWcgVEVTVF9ITU1cbjMzNTU6XHRcdHRyaXN0YXRlIFwmIzM0O1Rlc3QgSE1NIChIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50KVwmIzM0O1xuMzM1NjpcdFx0ZGVwZW5kcyBvbiBUUkFOU1BBUkVOVF9IVUdFUEFHRVxuMzM1NzpcdFx0ZGVwZW5kcyBvbiBERVZJQ0VfUFJJVkFURVxuMzM1ODpcdFx0c2VsZWN0IEhNTV9NSVJST1JcbjMzNTk6XHRcdHNlbGVjdCBNTVVfTk9USUZJRVJcbjMzNjA6XHRcdGhlbHBcbjMzNjE6XHRcdCAgVGhpcyBpcyBhIHBzZXVkbyBkZXZpY2UgZHJpdmVyIHNvbGVseSBmb3IgdGVzdGluZyBITU0uXG4zMzYyOlx0XHQgIFNheSBNIGhlcmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlIEhNTSB0ZXN0IG1vZHVsZS5cbjMzNjM6XHRcdCAgRG9pbmcgc28gd2lsbCBhbGxvdyB5b3UgdG8gcnVuIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Qvdm0vaG1tLXRlc3RzLlxuMzM2NDpcdFxuMzM2NTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuMzM2NjpcdFxuMzM2NzpcdGNvbmZpZyBURVNUX0ZSRUVfUEFHRVNcbjMzNjg6XHRcdHRyaXN0YXRlIFwmIzM0O1Rlc3QgZnJlZWluZyBwYWdlc1wmIzM0O1xuMzM2OTpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NzYyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIERlcGVuZGVuY2llcyBpbiB0aGUgQ29kZWJhc2UqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBURVNUX0hNTWAgaGVyZSwgYW5kIGl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgcHVsbGluZyBpbiBkZXBlbmRlbmNpZXMuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQgcmVsaWVzIG9uIGJvdGggYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBhbmQgYERFVklDRV9QUklWQVRFYC4gR2l2ZW4gdGhhdCB0aGVzZSBhcmUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHJlbGF0aW9uc2hpcCBiZXR0ZXIuIE15IHByaW1hcnkgY29uY2VybiByaWdodCBub3cgaXMgd2l0aCBgREVWSUNFX1BSSVZBVEVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24gY29udHJvbHMsIHNvIEkmIzM5O2xsIGNoZWNrIGludG8gaXQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERFVklDRV9QUklWQVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTEyNjQ9Y29uZmlnIEdFVF9GUkVFX1JFR0lPTlxuLS1cbm1tL0tjb25maWctMTI2Ni1cbm1tL0tjb25maWc6MTI2Nzpjb25maWcgREVWSUNFX1BSSVZBVEVcbm1tL0tjb25maWctMTI2OC1cdGJvb2wgXCYjMzQ7VW5hZGRyZXNzYWJsZSBkZXZpY2UgbWVtb3J5IChHUFUgbWVtb3J5LCAuLi4pXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDQ3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBoYW5kbGVkLiBMZXQmIzM5O3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiBgbW0vS2NvbmZpZ2AuIEl0JiMzOTtzIGEga2V5IGZpbGUgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgYW5kIGFyb3VuZCBsaW5lIDEyNjcgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgcGxhY2UgdG8gYmVnaW4uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb3IgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGZvciB3aGF0ZXZlciBvcHRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gS25vd2luZyB0aGUgc3BlY2lmaWMgbGluZSByYW5nZSBoZWxwcyBtZSBuYXZpZ2F0ZSBlZmZpY2llbnRseSBhbmQgYXZvaWQgZ2V0dGluZyBsb3N0IGluIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEkmIzM5O20gaG9waW5nIGl0JiMzOTtzIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgZGVmaW5pdGlvbiDigJMgbWF5YmUgYSBzaW1wbGUgYGNvbmZpZ2AgYmxvY2sgd2l0aCBzb21lIGRlcGVuZGVuY2llcyBvciBhIHRyaXN0YXRlIG9wdGlvbi4gT3IgcGVyaGFwcyB0aGlzIGFyZWEgZGVhbHMgd2l0aCBob3cgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIHNwZWNpZmljIG9wdGlvbiBpcyBjb25maWd1cmVkLiBFaXRoZXIgd2F5LCB0aGlzIHNob3VsZCBiZSB0aGUgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiYjMzk7cyBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTI2NTpcdFx0Ym9vbFxuMTI2NjpcdFxuMTI2NzpcdGNvbmZpZyBERVZJQ0VfUFJJVkFURVxuMTI2ODpcdFx0Ym9vbCBcJiMzNDtVbmFkZHJlc3NhYmxlIGRldmljZSBtZW1vcnkgKEdQVSBtZW1vcnksIC4uLilcJiMzNDtcbjEyNjk6XHRcdGRlcGVuZHMgb24gWk9ORV9ERVZJQ0VcbjEyNzA6XHRcdHNlbGVjdCBHRVRfRlJFRV9SRUdJT05cbjEyNzE6XHRcbjEyNzI6XHRcdGhlbHBcbjEyNzM6XHRcdCAgQWxsb3dzIGNyZWF0aW9uIG9mIHN0cnVjdCBwYWdlcyB0byByZXByZXNlbnQgdW5hZGRyZXNzYWJsZSBkZXZpY2VcbjEyNzQ6XHRcdCAgbWVtb3J5OyBpLmUuLCBtZW1vcnkgdGhhdCBpcyBvbmx5IGFjY2Vzc2libGUgZnJvbSB0aGUgZGV2aWNlIChvclxuMTI3NTpcdFx0ICBncm91cCBvZiBkZXZpY2VzKS4gWW91IGxpa2VseSBhbHNvIHdhbnQgdG8gc2VsZWN0IEhNTV9NSVJST1IuXG4xMjc2Olx0XG4xMjc3Olx0Y29uZmlnIFZNQVBfUEZOXG4xMjc4Olx0XHRib29sXG4xMjc5Olx0XG4xMjgwOlx0Y29uZmlnIEFSQ0hfVVNFU19ISUdIX1ZNQV9GTEFHU1xuMTI4MTpcdFx0Ym9vbFxuMTI4MjpcdGNvbmZpZyBBUkNIX0hBU19QS0VZU1xuMTI4MzpcdFx0Ym9vbFxuMTI4NDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU0NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipEZXBlbmRlbmN5IENoYWluIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyBkb3duIHRoaXMgZGVwZW5kZW5jeSBjaGFpbi4gYERFVklDRV9QUklWQVRFYCByZWxpZXMgb24gYFpPTkVfREVWSUNFYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIE5vdywgYFpPTkVfREVWSUNFYCBpdHNlbGYgaXMgY29udGluZ2VudCB1cG9uIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIFRoYXQmIzM5O3MgYSBwcmV0dHkgY2xlYXIgc2V0IG9mIGRlcGVuZGVuY2llcy4gVG8gYmUgY2VydGFpbiwgSSBzaG91bGQgdmVyaWZ5IHRoZSBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3MgcHVsbCB1cCB0aGUgYG1tL0tjb25maWdgIGZpbGUgYW5kIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbnMgdGhlcmUgdG8gY29uZmlybSB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhcyBJIHRoaW5rIGl0IGlzLiBJJiMzOTtsbCBmb2N1cyBvbiBgWk9ORV9ERVZJQ0VgIHdpdGhpbiB0aGF0IGZpbGUsIG1ha2luZyBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9yIG1pc2ludGVycHJldGVkIHRoZSBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjMwOlx0XG4xMjMxOlx0Y29uZmlnIFpPTkVfRE1BMzJcbjEyMzI6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBETUEzMiB6b25lXCYjMzQ7IGlmIEFSQ0hfSEFTX1pPTkVfRE1BX1NFVFxuMTIzMzpcdFx0ZGVwZW5kcyBvbiAhWDg2XzMyXG4xMjM0Olx0XHRkZWZhdWx0IHkgaWYgQVJNNjRcbjEyMzU6XHRcbjEyMzY6XHRjb25maWcgWk9ORV9ERVZJQ0VcbjEyMzc6XHRcdGJvb2wgXCYjMzQ7RGV2aWNlIG1lbW9yeSAocG1lbSwgSE1NLCBldGMuLi4pIGhvdHBsdWcgc3VwcG9ydFwmIzM0O1xuMTIzODpcdFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUExVR1xuMTIzOTpcdFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUkVNT1ZFXG4xMjQwOlx0XHRkZXBlbmRzIG9uIFNQQVJTRU1FTV9WTUVNTUFQXG4xMjQxOlx0XHRzZWxlY3QgWEFSUkFZX01VTFRJXG4xMjQyOlx0XG4xMjQzOlx0XHRoZWxwXG4xMjQ0Olx0XHQgIERldmljZSBtZW1vcnkgaG90cGx1ZyBzdXBwb3J0IGFsbG93cyBmb3IgZXN0YWJsaXNoaW5nIHBtZW0sXG4xMjQ1Olx0XHQgIG9yIG90aGVyIGRldmljZSBkcml2ZXIgZGlzY292ZXJlZCBtZW1vcnkgcmVnaW9ucywgaW4gdGhlXG4xMjQ2Olx0XHQgIG1lbW1hcC4gVGhpcyBhbGxvd3MgcGZuX3RvX3BhZ2UoKSBsb29rdXBzIG9mIG90aGVyd2lzZVxuMTI0NzpcdFx0ICBcJiMzNDtkZXZpY2UtcGh5c2ljYWxcJiMzNDsgYWRkcmVzc2VzIHdoaWNoIGlzIG5lZWRlZCBmb3IgREFYLCBQQ0lfUDJQRE1BLCBhbmRcbjEyNDg6XHRcdCAgREVWSUNFX1BSSVZBVEUgZmVhdHVyZXMgYW1vbmcgb3RoZXJzLlxuMTI0OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTExNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25maWd1cmF0aW9uIENvbnVuZHJ1bXMgYW5kIERldmljZSBNaWdyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb25zIGhlcmUsIGFuZCBpdCBzZWVtcyBsaWtlIEkgbmVlZCB0byBlbnN1cmUgdGhlc2UgYXJlIGFsbCBzZXQ6IGBURVNUX0hNTWAsIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGBaT05FX0RFVklDRWAsIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYFNQQVJTRU1FTV9WTUVNTUFQYCwgYW5kIGBERVZJQ0VfTUlHUkFUSU9OYC4KCldhaXQgYSBzZWNvbmTigKYgYERFVklDRV9NSUdSQVRJT05gIGlzIGFjdHVhbGx5IGRlcGVuZGVudC4gSXQmIzM5O3MgZGVmaW5lZCBhcyBgZGVmX2Jvb2wgTUlHUkFUSU9OICZhbXA7JmFtcDsgWk9ORV9ERVZJQ0VgLiBIbW0sIGBNSUdSQVRJT05gIGlzIGdlbmVyYWxseSBlbmFibGVkLCBzbyB0aGF0JiMzOTtzIHByb2JhYmx5IG5vdCB0aGUgYmxvY2tlci4gTXkgZm9jdXMgbm93IGlzIHRoYXQgSSBuZWVkIHRvIGVuc3VyZSB0aGF0IEkgYW0gZW5hYmxpbmcgdGhlIGBaT05FX0RFVklDRWAgY29uZmlndXJhdGlvbiB0byBlbmFibGUgdGhlIGBERVZJQ0VfTUlHUkFUSU9OYCBjb25maWd1cmF0aW9uLgoKQWxyaWdodCwgbm93IEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGltcGxlbWVudGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgbWlncmF0aW9uIGxvZ2ljIGl0c2VsZiwgc28gbXkgbmV4dCBzdG9wIGlzIHRvIGV4YW1pbmUgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGluIGBtbS9taWdyYXRlX2RldmljZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZW50aXJlIG1pZ3JhdGlvbiBwcm9jZXNzIGlzIHN1cHBvc2VkIHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vbWlncmF0ZV9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE5MDpcdFx0XHR9XG4xMTkxOlx0XG4xMTkyOlx0XG4xMTkzOlx0XHRcdGlmIChmb2xpb19pc19kZXZpY2VfcHJpdmF0ZShuZXdmb2xpbykgfHxcbjExOTQ6XHRcdFx0ICAgIGZvbGlvX2lzX2RldmljZV9jb2hlcmVudChuZXdmb2xpbykpIHtcbjExOTU6XHRcdFx0XHRpZiAobWFwcGluZykge1xuMTE5NjpcdFx0XHRcdFx0LypcbjExOTc6XHRcdFx0XHRcdCAqIEZvciBub3cgb25seSBzdXBwb3J0IGFub255bW91cyBtZW1vcnkgbWlncmF0aW5nIHRvXG4xMTk4Olx0XHRcdFx0XHQgKiBkZXZpY2UgcHJpdmF0ZSBvciBjb2hlcmVudCBtZW1vcnkuXG4xMTk5Olx0XHRcdFx0XHQgKlxuMTIwMDpcdFx0XHRcdFx0ICogVHJ5IHRvIGdldCByaWQgb2Ygc3dhcCBjYWNoZSBpZiBwb3NzaWJsZS5cbjEyMDE6XHRcdFx0XHRcdCAqL1xuMTIwMjpcdFx0XHRcdFx0aWYgKCFmb2xpb190ZXN0X2Fub24oZm9saW8pIHx8XG4xMjAzOlx0XHRcdFx0XHQgICAgIWZvbGlvX2ZyZWVfc3dhcChmb2xpbykpIHtcbjEyMDQ6XHRcdFx0XHRcdFx0c3JjX3BmbnNbaV0gXHUwMDI2PSB+TUlHUkFURV9QRk5fTUlHUkFURTtcbjEyMDU6XHRcdFx0XHRcdFx0Z290byBuZXh0O1xuMTIwNjpcdFx0XHRcdFx0fVxuMTIwNzpcdFxuMTIwODpcdFx0XHRcdFx0LypcbjEyMDk6XHRcdFx0XHRcdCAqIGZvbGlvX2ZyZWVfc3dhcCgpIHJlbW92ZWQgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXBcbjEyMTA6XHRcdFx0XHRcdCAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uXG4xMjExOlx0XHRcdFx0XHQgKi9cbjEyMTI6XHRcdFx0XHRcdG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtcbjEyMTM6XHRcdFx0XHR9XG4xMjE0Olx0XHRcdH0gZWxzZSBpZiAoZm9saW9faXNfem9uZV9kZXZpY2UobmV3Zm9saW8pKSB7XG4xMjE1Olx0XHRcdFx0LypcbjEyMTY6XHRcdFx0XHQgKiBPdGhlciB0eXBlcyBvZiBaT05FX0RFVklDRSBwYWdlIGFyZSBub3Qgc3VwcG9ydGVkLlxuMTIxNzpcdFx0XHRcdCAqL1xuMTIxODpcdFx0XHRcdHNyY19wZm5zW2ldIFx1MDAyNj0gfk1JR1JBVEVfUEZOX01JR1JBVEU7XG4xMjE5Olx0XHRcdFx0Z290byBuZXh0O1xuMTIyMDpcdFx0XHR9XG4xMjIxOlx0XG4xMjIyOlx0XHRcdEJVR19PTihmb2xpb190ZXN0X3dyaXRlYmFjayhmb2xpbykpO1xuMTIyMzpcdFxuMTIyNDpcdFx0XHRpZiAobWlncmF0ZSBcdTAwMjZcdTAwMjYgbWlncmF0ZS1cdTAwM2VmYXVsdF9wYWdlID09IHBhZ2UpXG4xMjI1Olx0XHRcdFx0ZXh0cmFfY250ID0gMTtcbjEyMjY6XHRcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgbnIgXHUwMDI2XHUwMDI2IGkgJiM0MzsgaiBcdTAwM2MgbnBhZ2VzOyBqJiM0MzsmIzQzOykge1xuMTIyNzpcdFx0XHRcdGZvbGlvID0gcGFnZV9mb2xpbyhtaWdyYXRlX3Bmbl90b19wYWdlKHNyY19wZm5zW2kmIzQzO2pdKSk7XG4xMjI4Olx0XHRcdFx0bmV3Zm9saW8gPSBwYWdlX2ZvbGlvKG1pZ3JhdGVfcGZuX3RvX3BhZ2UoZHN0X3BmbnNbaSYjNDM7al0pKTtcbjEyMjk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxMDkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNaWdyYXRpb24gQ29kZSBmb3IgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGFzc29jaWF0ZWQgY29kZSBwYXRoLiBJdCYjMzk7cyBjbGVhciB0aGF0IHRoZSBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHBhZ2UgbWlncmF0aW9uLCBhcmUgZGVmaW5pdGVseSAqcmVhY2hhYmxlKiBhbmQgYWN0aXZlbHkgdXNlZC4gV2UgaGF2ZSBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGJlaW5nIGNhbGxlZCBmcm9tIHZhcmlvdXMgbG9jYXRpb25zIHdpdGhpbiB0aGUga2VybmVsLCBpbmNsdWRpbmcgYGxpYi90ZXN0X2htbS5jYCB0aHJvdWdoIGBkbWlycm9yX21pZ3JhdGVfdG9fc3lzdGVtYCBhbmQgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgLCBhcyB3ZWxsIGFzIHNldmVyYWwgTm91dmVhdSBhbmQgU1ZNIGZ1bmN0aW9ucyBhbmQgdmFyaW91cyBEUk0gYW5kIEtWTSBmdW5jdGlvbnMuIFRoaXMgc3VnZ2VzdHMgYSBmdW5jdGlvbmFsIGFyZWEgd2l0aGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LgoKVGhlIHBhdGNoJiMzOTtzIHN0YXRlZCBwdXJwb3NlIGlzIHRvIGFkZHJlc3MgYSBidWcgcmVsYXRlZCB0byBgZm9saW9fZnJlZV9zd2FwKGZvbGlvKWAgYW5kIGEgbWlzc2luZyByZWZyZXNoIG9mIHRoZSBgbWFwcGluZ2AgcG9pbnRlci4gU2luY2UgdGhpcyBpcyB0b3VjaGluZyBjb3JlIE1NIGFuZCBkZXZpY2UgbWlncmF0aW9uLCB0aGlzIGZlZWxzIGxpa2UgYW4gYXJlYSByaXBlIGZvciBmdXp6aW5nIGFuZCBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEFueXRpbWUgeW91JiMzOTtyZSBkZWFsaW5nIHdpdGggY2FjaGluZyBhbmQgZnJlZWluZywgZXNwZWNpYWxseSB3aGVuIGl0IGNvbWVzIHRvIGRldmljZSBtZW1vcnksIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIGJlY29tZSB2ZXJ5IHJlbGV2YW50LgoKTm93LCBsZXQmIzM5O3MgaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzIHdlIG5lZWQgdG8gZm9jdXMgb24uIFRoZSBmdW5jdGlvbiBkaXJlY3RseSBtb2RpZmllZCBpcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AsIGJ1dCB0aGUgZXhwb3J0ZWQgZnVuY3Rpb25zIGFyZSB0aGUgb25lcyB3ZSByZWFsbHkgd2FudCB0byBleHBsb3JlOiBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLiBJIHNob3VsZCBhbHNvIGxvb2sgYXQgYG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvYCBiZWNhdXNlIGl0IGNhbGxzIGBtaWdyYXRlX2RldmljZV9wYWdlc2AuIFRoZSByZWxhdGVkIGZ1bmN0aW9ucyBgbWlncmF0ZV92bWFfc2V0dXBgIGFuZCBgbWlncmF0ZV92bWFfZmluYWxpemVgIGFyZSBhbHNvIGltcG9ydGFudCB0byBjaGVjay4gSSYjMzk7bGwgc3RhcnQgd2l0aCBhIGNsb3NlciBleGFtaW5hdGlvbiBvZiBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgIGluIGBtbS9taWdyYXRlX2RldmljZS5jYCB0byBzZWUgaG93IHRoZSBjb2RlIGZsb3dzIGFyb3VuZCB0aGUgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21pZ3JhdGVfZGV2aWNlX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbWlncmF0ZV9kZXZpY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9taWdyYXRlX2RldmljZS5jPTk2NT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9pbnNlcnRfcGFnZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMDk4OnN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTktXHRcdFx0XHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjQ0LS8qKlxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjQ1OiAqIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKCkgLSBtaWdyYXRlIG1ldGEtZGF0YSBmcm9tIHNyYyBwYWdlIHRvIGRzdCBwYWdlXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNDYtICogQHNyY19wZm5zOiBzcmNfcGZucyByZXR1cm5lZCBmcm9tIG1pZ3JhdGVfZGV2aWNlX3JhbmdlKClcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTItICovXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNTM6dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTQtXHRcdFx0dW5zaWduZWQgbG9uZyBucGFnZXMpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTUte1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjU2Olx0X19taWdyYXRlX2RldmljZV9wYWdlcyhzcmNfcGZucywgZHN0X3BmbnMsIG5wYWdlcywgTlVMTCk7XG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTctfVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjU4OkVYUE9SVF9TWU1CT0wobWlncmF0ZV9kZXZpY2VfcGFnZXMpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU5LVxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI2OD12b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2OS17XG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzA6XHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKG1pZ3JhdGUtXHUwMDNlc3JjLCBtaWdyYXRlLVx1MDAzZWRzdCwgbWlncmF0ZS1cdTAwM2VucGFnZXMsIG1pZ3JhdGUpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjcxLX1cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEzNjE9c3RhdGljIHVuc2lnbmVkIGxvbmcgbWlncmF0ZV9kZXZpY2VfcGZuX2xvY2sodW5zaWduZWQgbG9uZyBwZm4pXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMzkzLSAqIGFsbG9jYXRlIGRlc3RpbmF0aW9uIHBhZ2VzIGFuZCBzdGFydCBjb3B5aW5nIGRhdGEgZnJvbSB0aGUgZGV2aWNlIHRvIENQVVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMzk0OiAqIG1lbW9yeSBiZWZvcmUgY2FsbGluZyBtaWdyYXRlX2RldmljZV9wYWdlcygpLlxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMzk1LSAqL1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTQ2MT1pbnQgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTE0ODUtXG5tbS9taWdyYXRlX2RldmljZS5jOjE0ODY6XHRtaWdyYXRlX2RldmljZV9wYWdlcyhcdTAwMjZzcmNfcGZuLCBcdTAwMjZkc3RfcGZuLCAxKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ4Ny1cdGlmIChzcmNfcGZuIFx1MDAyNiBNSUdSQVRFX1BGTl9NSUdSQVRFKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzU4NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDMyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIFBsYW4gZm9yIERldmljZSBQYWdlIE1pZ3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaW1wbGVtZW50aW5nIGRldmljZSBwYWdlIG1pZ3JhdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgYW5kIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzIGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgYXJlIHByb3Blcmx5IGluY2x1ZGVkIGluIGBGb2N1c1N5bWJvbHNgLgoKTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJdCYjMzk7cyBjbGVhciB0aGF0IGBERVZJQ0VfTUlHUkFUSU9OYCBpcyBlc3NlbnRpYWwsIGFzIGl0JiMzOTtzIHdoYXQgZW5hYmxlcyB0aGUgY29tcGlsYXRpb24gb2YgYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiBMb29raW5nIGNsb3NlciwgYERFVklDRV9NSUdSQVRJT05gIGlzIGRlZmluZWQgYXMgYGRlZl9ib29sIE1JR1JBVElPTiAmYW1wOyZhbXA7IFpPTkVfREVWSUNFYC4gYFpPTkVfREVWSUNFYCwgaW4gdHVybiwgZGVwZW5kcyBvbiBgTUVNT1JZX0hPVFBMVUdgLCBgTUVNT1JZX0hPVFJFTU9WRWAsIGFuZCBgU1BBUlNFTUVNX1ZNRU1NQVBgLiBHb3QgaXQuCgpUbyB0ZXN0IHRoaXMgcHJvcGVybHksIEkmIzM5O20gZ29pbmcgdG8gbmVlZCBhIGRyaXZlciB0aGF0IGFjdHVhbGx5IHVzZXMgdGhpcyBtaWdyYXRpb24gZnVuY3Rpb25hbGl0eS4gYFRFU1RfSE1NYCBsb29rcyBsaWtlIGEgcGVyZmVjdCBjYW5kaWRhdGUuIEludmVzdGlnYXRpbmcgZnVydGhlciwgYFRFU1RfSE1NYCBkZXBlbmRzIG9uIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgYW5kIGBERVZJQ0VfUFJJVkFURWAuIEFuZCBvZiBjb3Vyc2UsIGBERVZJQ0VfUFJJVkFURWAgZGVwZW5kcyBvbiBgWk9ORV9ERVZJQ0VgLiBTbywgdGhlIGVudGlyZSBjb25maWd1cmF0aW9uIHN0YWNrLCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbG9va3MgbGlrZSB0aGlzOgoKSSBuZWVkIHRvIGVuYWJsZTogYFRFU1RfSE1NYCwgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYERFVklDRV9QUklWQVRFYCwgYFpPTkVfREVWSUNFYCwgYE1FTU9SWV9IT1RQTFVHYCwgYE1FTU9SWV9IT1RSRU1PVkVgLCBhbmQgYFNQQVJTRU1FTV9WTUVNTUFQYC4KCkkmIzM5O20gZG91YmxlLWNoZWNraW5nLCBqdXN0IHRvIGJlIHN1cmUsIHRoYXQgYFRFU1RfSE1NYCBpcyBlbm91Z2ggdG8gdHJpZ2dlciB0aGUgdXNhZ2Ugb2YgdGhlc2UgZnVuY3Rpb25zLiBMb29rcyBsaWtlIGl0LCBiZWNhdXNlIGl0IHByb3ZpZGVzIGEgcHNldWRvIGRldmljZSBkcml2ZXIgdG8gdGVzdCBITU0sIHdoaWNoIGluIHR1cm4gdXNlcyBgbWlncmF0ZV92bWFfcGFnZXNgLgoKSSYjMzk7bGwganVzdCBxdWlja2x5IHJldmlldyBgVEVTVF9ITU1gJiMzOTtzIEtjb25maWcgZW50cnkgaW4gYGxpYi9LY29uZmlnLmRlYnVnYCB0byBlbnN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVEVTVF9ITU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1ZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1Zz0zMzQ2PWNvbmZpZyBURVNUX01FTUlOSVRcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzUzLVxubGliL0tjb25maWcuZGVidWc6MzM1NDpjb25maWcgVEVTVF9ITU1cbmxpYi9LY29uZmlnLmRlYnVnLTMzNTUtXHR0cmlzdGF0ZSBcJiMzNDtUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ0NTAKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkOgoKKipEaWdnaW5nIGludG8gdGhlIEtjb25maWcgZm9yIERldmljZS1TcGVjaWZpYyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIGtlcm5lbCBtb2R1bGUsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIGFib3V0IGl0cyBjb25maWd1cmF0aW9uLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNoZWNrIGBtbS9LY29uZmlnYC4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgdGhlIGBERVZJQ0VfUFJJVkFURWAgb3B0aW9uLiBUaGlzIG5hbWUgcmluZ3MgYSBiZWxsLCBhbmQgSSBuZWVkIHRvIGNvbmZpcm0gaXRzIGRlZmluaXRpb24gYW5kIGFueSBkZXBlbmRlbmNpZXMuIEkgc3VzcGVjdCBpdCYjMzk7cyBjb250cm9sbGluZyBzb21lIG1lbW9yeSBtYW5hZ2VtZW50IGFzcGVjdHMgc3BlY2lmaWMgdG8gdGhpcyBkZXZpY2UsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gb24gdGhlIHJpZ2h0IHRyYWNrIGFuZCBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzIGluIHRoZSBidWlsZCBzeXN0ZW0mIzM5O3MgY29uZmlndXJhdGlvbi4gR290dGEgcXVpY2tseSBjb25maXJtIHRoaXMgdG8gYXZvaWQgd2FzdGVkIHRpbWUgdHJvdWJsZXNob290aW5nIGxhdGVyLiBDaGVja2luZyBgbW0vS2NvbmZpZ2Agbm93Li4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBERVZJQ0VfUFJJVkFURSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMjY0PWNvbmZpZyBHRVRfRlJFRV9SRUdJT05cbi0tXG5tbS9LY29uZmlnLTEyNjYtXG5tbS9LY29uZmlnOjEyNjc6Y29uZmlnIERFVklDRV9QUklWQVRFXG5tbS9LY29uZmlnLTEyNjgtXHRib29sIFwmIzM0O1VuYWRkcmVzc2FibGUgZGV2aWNlIG1lbW9yeSAoR1BVIG1lbW9yeSwgLi4uKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDczNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIFpPTkVfREVWSUNFIEtjb25maWcgT3B0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBrZXJuZWwmIzM5O3MgbWVtb3J5IG1hbmFnZW1lbnQsIGFuZCBpdCBsb29rcyBsaWtlIGBaT05FX0RFVklDRWAgbWlnaHQgYmUgdGhlIGtleS4gTXkgZmlyc3QgbW92ZSBpcyB0byBqdW1wIGRpcmVjdGx5IGludG8gYG1tL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb24gYW5kIGFueSBhY2NvbXBhbnlpbmcgY29udGV4dCBmb3IgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIHNlZSB3aGF0IHRoaXMgb3B0aW9uIGVuYWJsZXMgb3IgZGlzYWJsZXMsIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcywgYW5kIHBlcmhhcHMgZXZlbiB3aGF0IGFyY2hpdGVjdHVyZXMgb3Igc3BlY2lmaWMgdXNlIGNhc2VzIGl0JiMzOTtzIHRpZWQgdG8uIFVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgZnJvbSB3aXRoaW4gdGhlIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBzb2xpZCBmb3VuZGF0aW9uIEkgbmVlZCB0byBncmFzcCBpdHMgaW1wbGljYXRpb25zIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgbWVtb3J5IG1hbmFnZW1lbnQgbGFuZHNjYXBlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFpPTkVfREVWSUNFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTEyMzE9Y29uZmlnIFpPTkVfRE1BMzJcbi0tXG5tbS9LY29uZmlnLTEyMzUtXG5tbS9LY29uZmlnOjEyMzY6Y29uZmlnIFpPTkVfREVWSUNFXG5tbS9LY29uZmlnLTEyMzctXHRib29sIFwmIzM0O0RldmljZSBtZW1vcnkgKHBtZW0sIEhNTSwgZXRjLi4uKSBob3RwbHVnIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwNDEKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgdGhlIGBNSUdSQVRJT05gIENvbmZpZ3VyYXRpb24gaW4gYG1tL0tjb25maWdgKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSYjMzk7bSB0aGlua2luZywgbGV0JiMzOTtzIHN0YXJ0IGJ5IHZlcmlmeWluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gcmVsYXRlZCB0byBgTUlHUkFUSU9OYCB3aXRoaW4gdGhlIGBtbS9LY29uZmlnYCBmaWxlLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGRldGFpbHMgYWJvdXQgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBwYWdlIG1pZ3JhdGlvbiBmZWF0dXJlcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGlzIGV4cG9zZWQgYW5kIGNvbnRyb2xsZWQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiB0aGUgZGVmYXVsdCBzdGF0ZSBvZiB0aGUgb3B0aW9uLCBhbnkgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUgb24gb3RoZXIgZmVhdHVyZXMgb3Iga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBhbmQgdGhlIGhlbHAgdGV4dCBhc3NvY2lhdGVkIHdpdGggaXQuIFRoaXMgY29udGV4dCBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGFjdCBvbiBtZW1vcnkgbWFuYWdlbWVudC4gS25vd2luZyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgaXMga2V5LCBhcyBJIHJlY2FsbCB0aGVyZSBhcmUgcXVpdGUgYSBmZXcgc3VidGxlIHdheXMgdG8gY29uZmlndXJlIGl0LCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkgd2lsbCBzdGFydCwgYnkgbWFraW5nIHN1cmUgdGhhdCB0aGUgZmVhdHVyZXMgSSBleHBlY3QgYXJlIHN0aWxsIGFjdGl2ZSBhbmQgd29ya2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1JR1JBVElPTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz02ODU9Y29uZmlnIE5VTUFfTUlHUkFUSU9OXG4tLVxubW0vS2NvbmZpZy02OTUtXG5tbS9LY29uZmlnOjY5Njpjb25maWcgTUlHUkFUSU9OXG5tbS9LY29uZmlnLTY5Ny1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNjIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBMaW5lIG9mIFJlYXNvbmluZyBSZWdhcmRpbmcgTWVtb3J5IE1hbmFnZW1lbnQgYW5kIE1pZ3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IHRoZSBgTUlHUkFUSU9OYCBmZWF0dXJlIGlzIGRpcmVjdGx5IGluZmx1ZW5jZWQgYnkgc2V2ZXJhbCBvdGhlciBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW1zOiBgTlVNQV9CQUxBTkNJTkdgLCBgQ09NUEFDVElPTmAsIGBDTUFgLCBgTUVNT1JZX0hPVFJFTU9WRWAsIGBNRU1PUllfRkFJTFVSRWAsIGFuZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBUaGF0JiMzOTtzIGEgcHJldHR5IGNsZWFyIGRlcGVuZGVuY3kgY2hhaW4uIFRoZXJlZm9yZSwgZW5hYmxpbmcgc29tZXRoaW5nIGxpa2UgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgd2hpY2ggSSBrbm93IGlzIGhlYXZpbHkgaW52b2x2ZWQgaW4gbWVtb3J5IG9wdGltaXphdGlvbiwgb3IgYE1FTU9SWV9IT1RSRU1PVkVgLCB3aGljaCBkZWFscyB3aXRoIGR5bmFtaWMgbWVtb3J5IGFkZGl0aW9uIGFuZCByZW1vdmFsLCB3aWxsIGF1dG9tYXRpY2FsbHkgcHVsbCBpbiBgTUlHUkFUSU9OYCBhcyBhIGNvcmUgY2FwYWJpbGl0eS4gTWFrZXMgcGVyZmVjdCBzZW5zZSBmcm9tIGEgc3lzdGVtcyBwZXJzcGVjdGl2ZTsgdGhlc2UgZmVhdHVyZXMgZnJlcXVlbnRseSByZXF1aXJlIHRoZSBhYmlsaXR5IHRvIG1vdmUgbWVtb3J5IGFyb3VuZC4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgYE1FTU9SWV9IT1RQTFVHYCBhbmQgYE1FTU9SWV9IT1RSRU1PVkVgLiBUaGVzZSBhcmUgY3JpdGljYWwgd2hlbiBkZWFsaW5nIHdpdGggZHluYW1pYyBtZW1vcnkgYW5kIEkgd2FudCB0byBlbnN1cmUgbXkgbWVudGFsIG1vZGVsIG9mIHRoZWlyIHJlbGF0aW9uc2hpcCB0byBgTUlHUkFUSU9OYCBpcyBjb21wbGV0ZWx5IGFjY3VyYXRlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNwZWNpZmljcyBvZiB0aGUgaG90cGx1ZyBhbmQgaG90cmVtb3ZlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgYXJlIGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNRU1PUllfSE9UUExVRyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz01MTk9Y29uZmlnIEFSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHXG4tLVxubW0vS2NvbmZpZy01MjItIyBldmVudHVhbGx5LCB3ZSBjYW4gaGF2ZSB0aGlzIG9wdGlvbiBqdXN0ICYjMzk7c2VsZWN0IFNQQVJTRU1FTSYjMzk7XG5tbS9LY29uZmlnOjUyMzptZW51Y29uZmlnIE1FTU9SWV9IT1RQTFVHXG5tbS9LY29uZmlnLTUyNC1cdGJvb2wgXCYjMzQ7TWVtb3J5IGhvdHBsdWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4MjIKCQkJCQkJCW91dHB1dDogMjIyCgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIERldmljZSBQYWdlIE1pZ3JhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJIHNlZSB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBidWcgd2l0aGluIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYC4gU3BlY2lmaWNhbGx5LCB0aGUgY29kZSYjMzk7cyBub3QgcHJvcGVybHkgaGFuZGxpbmcgdGhlIGBtYXBwaW5nYCB2YXJpYWJsZSBhZnRlciBhIGBmb2xpb19mcmVlX3N3YXAoKWAgY2FsbCByZW1vdmVzIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwIGNhY2hlLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIGRldmljZSBtaWdyYXRpb24sIHdoaWNoIGlzIHdvcnRoIGEgY2xvc2VyIGxvb2suCgpUaGUgY29kZSBwYXRocyB0aGF0IGFyZSBhZmZlY3RlZCBhcmUgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSB0aGV5JiMzOTtyZSB1dGlsaXplZCBieSBkZXZpY2UgZHJpdmVycywgYW5kIEkga25vdyB0aGUgSE1NIHRlc3QgZHJpdmVyIGFsc28gbWFrZXMgdXNlIG9mIHRoZW0uIFRvIHJlYWxseSBwdXQgdGhpcyB0aHJvdWdoIGl0cyBwYWNlcyB3aXRoIGZ1enppbmcsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGNvbmZpZ3VyYXRpb25zOiBgVEVTVF9ITU1gIG9mIGNvdXJzZSwgYXMgd2VsbCBhcyBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBgREVWSUNFX1BSSVZBVEVgLCBgWk9ORV9ERVZJQ0VgLCBhbmQgbmF0dXJhbGx5LCBgTUVNT1JZX0hPVFBMVUdgIGFuZCBgTUVNT1JZX0hPVFJFTU9WRWAgd2hpY2ggYXJlIGFscmVhZHkgaW4gcGxhY2UuIFdlIHNob3VsZCBrZWVwIGFuIGV5ZSBvbiBgU1BBUlNFTUVNX1ZNRU1NQVBgIGFsc28uCgpMZXQmIzM5O3MgbG9nIHRoZSBmdXp6aW5nIHJlc3VsdHMsIEkmIzM5O2xsIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OywKICAgICYjMzQ7U1BBUlNFTUVNX1ZNRU1NQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttaWdyYXRlX2RldmljZV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX3ZtYV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19taWdyYXRlX2RldmljZV9wYWdlc2Agd2hlcmUgdGhlIGBtYXBwaW5nYCB2YXJpYWJsZSBpcyBub3QgcmVmcmVzaGVkIGFmdGVyIGBmb2xpb19mcmVlX3N3YXAoKWAgcmVtb3ZlcyB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcCBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoZGV2aWNlIG1pZ3JhdGlvbikuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgd2hpY2ggYXJlIHVzZWQgYnkgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBITU0gdGVzdCBkcml2ZXIuIEZ1enppbmcgdGhpcyByZXF1aXJlcyBlbmFibGluZyBgVEVTVF9ITU1gIGFuZCByZWxhdGVkIG1lbW9yeSBob3RwbHVnL2RldmljZSBtZW1vcnkgY29uZmlncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VEVTVF9ITU0mIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7REVWSUNFX1BSSVZBVEUmIzM0OywKICAgICYjMzQ7Wk9ORV9ERVZJQ0UmIzM0OywKICAgICYjMzQ7TUVNT1JZX0hPVFBMVUcmIzM0OywKICAgICYjMzQ7TUVNT1JZX0hPVFJFTU9WRSYjMzQ7LAogICAgJiMzNDtTUEFSU0VNRU1fVk1FTU1BUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21pZ3JhdGVfZGV2aWNlX3BhZ2VzJiMzNDssCiAgICAmIzM0O21pZ3JhdGVfdm1hX3BhZ2VzJiMzNDssCiAgICAmIzM0O21pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCB3aGVyZSB0aGUgYG1hcHBpbmdgIHZhcmlhYmxlIGlzIG5vdCByZWZyZXNoZWQgYWZ0ZXIgYGZvbGlvX2ZyZWVfc3dhcCgpYCByZW1vdmVzIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIChkZXZpY2UgbWlncmF0aW9uKS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLCB3aGljaCBhcmUgdXNlZCBieSBkZXZpY2UgZHJpdmVycyBhbmQgdGhlIEhNTSB0ZXN0IGRyaXZlci4gRnV6emluZyB0aGlzIHJlcXVpcmVzIGVuYWJsaW5nIGBURVNUX0hNTWAgYW5kIHJlbGF0ZWQgbWVtb3J5IGhvdHBsdWcvZGV2aWNlIG1lbW9yeSBjb25maWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MjIuMDMxOTg2MzA5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMyNzg5OTU5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVEVTVF9ITU1cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERVZJQ0VfUFJJVkFURVwiLFxuICAgIFwiWk9ORV9ERVZJQ0VcIixcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCIsXG4gICAgXCJNRU1PUllfSE9UUkVNT1ZFXCIsXG4gICAgXCJTUEFSU0VNRU1fVk1FTU1BUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX3ZtYV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19taWdyYXRlX2RldmljZV9wYWdlc2Agd2hlcmUgdGhlIGBtYXBwaW5nYCB2YXJpYWJsZSBpcyBub3QgcmVmcmVzaGVkIGFmdGVyIGBmb2xpb19mcmVlX3N3YXAoKWAgcmVtb3ZlcyB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcCBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoZGV2aWNlIG1pZ3JhdGlvbikuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgd2hpY2ggYXJlIHVzZWQgYnkgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBITU0gdGVzdCBkcml2ZXIuIEZ1enppbmcgdGhpcyByZXF1aXJlcyBlbmFibGluZyBgVEVTVF9ITU1gIGFuZCByZWxhdGVkIG1lbW9yeSBob3RwbHVnL2RldmljZSBtZW1vcnkgY29uZmlncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MjIuMDMxOTk1MjY5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDk5OTk2MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3OWE0NjlmMTA5Nzc5Y2UwNTI4MWQxZTNmZDZjYmExNDFkYmVmZjEwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDI1IDEyOjA4OjIwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL21pZ3JhdGVfZGV2aWNlLmMgYi9tbS9taWdyYXRlX2RldmljZS5jXFxuaW5kZXggNTU0NzU0ZWIyNmZmMmYuLmFlODk1NzU4YjcyY2UxIDEwMDY0NFxcbi0tLSBhL21tL21pZ3JhdGVfZGV2aWNlLmNcXG4rKysgYi9tbS9taWdyYXRlX2RldmljZS5jXFxuQEAgLTEyMDQsNiArMTIwNCwxMiBAQCBzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxcbiBcXHRcXHRcXHRcXHRcXHRzcmNfcGZuc1tpXSBcXHUwMDI2PSB+TUlHUkFURV9QRk5fTUlHUkFURTtcXG4gXFx0XFx0XFx0XFx0XFx0Z290byBuZXh0O1xcbiBcXHRcXHRcXHRcXHR9XFxuK1xcbitcXHRcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHRcXHQgKiBmb2xpb19mcmVlX3N3YXAoKSByZW1vdmVkIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwXFxuK1xcdFxcdFxcdFxcdCAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uXFxuK1xcdFxcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRcXHRtYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fSBlbHNlIGlmIChmb2xpb19pc196b25lX2RldmljZShuZXdmb2xpbykpIHtcXG4gXFx0XFx0XFx0LypcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MjIuNzQ0MTI2OTgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTI1NjY4NDYzODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVEVTVF9ITU1cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERVZJQ0VfUFJJVkFURVwiLFxuICAgIFwiWk9ORV9ERVZJQ0VcIixcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCIsXG4gICAgXCJNRU1PUllfSE9UUkVNT1ZFXCIsXG4gICAgXCJTUEFSU0VNRU1fVk1FTU1BUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX3ZtYV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19taWdyYXRlX2RldmljZV9wYWdlc2Agd2hlcmUgdGhlIGBtYXBwaW5nYCB2YXJpYWJsZSBpcyBub3QgcmVmcmVzaGVkIGFmdGVyIGBmb2xpb19mcmVlX3N3YXAoKWAgcmVtb3ZlcyB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcCBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoZGV2aWNlIG1pZ3JhdGlvbikuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgd2hpY2ggYXJlIHVzZWQgYnkgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBITU0gdGVzdCBkcml2ZXIuIEZ1enppbmcgdGhpcyByZXF1aXJlcyBlbmFibGluZyBgVEVTVF9ITU1gIGFuZCByZWxhdGVkIG1lbW9yeSBob3RwbHVnL2RldmljZSBtZW1vcnkgY29uZmlncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzlhNDY5ZjEwOTc3OWNlMDUyODFkMWUzZmQ2Y2JhMTQxZGJlZmYxMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDEyOjA4OjIwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZV9kZXZpY2UuYyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcbmluZGV4IDU1NDc1NGViMjZmZjJmLi5hZTg5NTc1OGI3MmNlMSAxMDA2NDRcbi0tLSBhL21tL21pZ3JhdGVfZGV2aWNlLmNcbisrKyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcbkBAIC0xMjA0LDYgKzEyMDQsMTIgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbiBcdFx0XHRcdFx0c3JjX3BmbnNbaV0gXHUwMDI2PSB+TUlHUkFURV9QRk5fTUlHUkFURTtcbiBcdFx0XHRcdFx0Z290byBuZXh0O1xuIFx0XHRcdFx0fVxuK1xuK1x0XHRcdFx0LypcbitcdFx0XHRcdCAqIGZvbGlvX2ZyZWVfc3dhcCgpIHJlbW92ZWQgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXBcbitcdFx0XHRcdCAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uXG4rXHRcdFx0XHQgKi9cbitcdFx0XHRcdG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtcbiBcdFx0XHR9XG4gXHRcdH0gZWxzZSBpZiAoZm9saW9faXNfem9uZV9kZXZpY2UobmV3Zm9saW8pKSB7XG4gXHRcdFx0LypcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjIyLjc0NDEyOTk1MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjI4NTgwNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgYSBEZXZpY2UgTWlncmF0aW9uIFBhdGNoKipcblxuQWxyaWdodCwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCDigJMgc2VlbXMgbGlrZSBpdCdzIHRvdWNoaW5nIGBtbS9taWdyYXRlX2RldmljZS5jYC4gU3BlY2lmaWNhbGx5LCB0aGVyZSdzIGEgbmV3IGxpbmUgYmVpbmcgYWRkZWQ6IGBtYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7YCB3aXRoaW4gdGhlIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBmdW5jdGlvbi4gT2theSwgdGhhdCdzIGludGVyZXN0aW5nLiBJIGtub3cgdGhhdCBgZm9saW9fbWFwcGluZ2AgcmV0cmlldmVzIHRoZSBhZGRyZXNzIHNwYWNlIGFzc29jaWF0ZWQgd2l0aCBhIGZvbGlvLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBsaW5lIGlzIGJlaW5nIGludHJvZHVjZWQgaGVyZSBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZS5cblxuVG8gcHJvcGVybHkgZ3Jhc3AgdGhlIHJlYXNvbmluZyBiZWhpbmQgaXQsIEkgbmVlZCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIGBtbS9taWdyYXRlX2RldmljZS5jYCByaWdodCBub3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbuKAmXMgb3ZlcmFsbCBnb2FsIHdpdGhpbiB0aGUgZGV2aWNlIG1pZ3JhdGlvbiBwcm9jZXNzIGFuZCwgb2YgY291cnNlLCB0aGUgZ2VuZXJhbCBtZW1vcnkgbWlncmF0aW9uIHNjaGVtZS4gSSdsbCBmb2N1cyBvbiB0aGUgc3Vycm91bmRpbmcgY29kZSwgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkLCBhbmQgdGhlIG92ZXJhbGwgYWxnb3JpdGhtLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIG5ldyBgZm9saW9fbWFwcGluZ2AgY2FsbCBmaXRzIGludG8gdGhlIGN1cnJlbnQgbWlncmF0aW9uIGZsb3cuIElzIGl0IGZvciBzZWN1cml0eT8gVHJhY2tpbmc/IE9wdGltaXphdGlvbj8gRGVidWdnaW5nPyBJdCdzIGVzc2VudGlhbCBJIGNvbXByZWhlbmQgdGhlIGZ1bGwgY29udGV4dCB0byBhc3Nlc3MgdGhpcyBjaGFuZ2UncyBpbXBhY3QgYW5kIGVmZmljYWN5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDYzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowODoyNi4xNjY5OTEzNDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyNjQzMjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fbWlncmF0ZV9kZXZpY2VfcGFnZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbWlncmF0ZV9kZXZpY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9taWdyYXRlX2RldmljZS5jPTk2NT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9pbnNlcnRfcGFnZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTctXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMDk4OnN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk5LVxcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLCB1bnNpZ25lZCBsb25nIG5wYWdlcyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI1Mz12b2lkIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLCB1bnNpZ25lZCBsb25nICpkc3RfcGZucyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1NS17XFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjU2OlxcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMsIE5VTEwpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1Ny19XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNjg9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY5LXtcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzA6XFx0X19taWdyYXRlX2RldmljZV9wYWdlcyhtaWdyYXRlLVxcdTAwM2VzcmMsIG1pZ3JhdGUtXFx1MDAzZWRzdCwgbWlncmF0ZS1cXHUwMDNlbnBhZ2VzLCBtaWdyYXRlKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowODoyNi4zMTk2NDA2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NTc4NTExMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW5uZXIgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE1pZ3JhdGlvbiBGdW5jdGlvbidzIEludm9jYXRpb24qKlxuXG5SaWdodCwgc28gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGlzIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIsIGFuZCB0aGUgY29kZSBleHBsaWNpdGx5IHN0YXRlcyBpdCdzIGNhbGxlZCBieSBib3RoIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0LiBJJ20gdGhpbmtpbmcuLi4gd2hhdCdzIGRyaXZpbmcgdGhpcz8gV2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3Iga2VybmVsIGZlYXR1cmVzIGFyZSAqZW5hYmxpbmcqIHRoaXMgbWlncmF0aW9uIGZ1bmN0aW9uYWxpdHk/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN3aXRjaGVzIHNvIEkgY2FuIHVuZGVyc3RhbmQgdGhlIHNjZW5hcmlvcyB3aGVyZSB0aGlzIGNvZGUgcGF0aCBpcyBhY3R1YWxseSBhY3RpdmUuIE90aGVyd2lzZSwgSSdtIGp1c3QgbG9va2luZyBhdCBkZWFkIGNvZGUgYW5kIHRoYXQncyBub3QgdXNlZnVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzI4LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MjguODc3NDk1OTYyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDEyNTIxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaWdyYXRlX2RldmljZV9wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWlncmF0ZV9kZXZpY2UuYz05NjU9c3RhdGljIHZvaWQgbWlncmF0ZV92bWFfaW5zZXJ0X3BhZ2Uoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlLFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTA5ODpzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5OS1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNDQtLyoqXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjQ1OiAqIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKCkgLSBtaWdyYXRlIG1ldGEtZGF0YSBmcm9tIHNyYyBwYWdlIHRvIGRzdCBwYWdlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjQ2LSAqIEBzcmNfcGZuczogc3JjX3BmbnMgcmV0dXJuZWQgZnJvbSBtaWdyYXRlX2RldmljZV9yYW5nZSgpXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTItICovXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjUzOnZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1NC1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIG5wYWdlcylcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTUte1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1NjpcXHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzLCBOVUxMKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTctfVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1ODpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTktXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNjg9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY5LXtcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzA6XFx0X19taWdyYXRlX2RldmljZV9wYWdlcyhtaWdyYXRlLVxcdTAwM2VzcmMsIG1pZ3JhdGUtXFx1MDAzZWRzdCwgbWlncmF0ZS1cXHUwMDNlbnBhZ2VzLCBtaWdyYXRlKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzEtfVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMzYxPXN0YXRpYyB1bnNpZ25lZCBsb25nIG1pZ3JhdGVfZGV2aWNlX3Bmbl9sb2NrKHVuc2lnbmVkIGxvbmcgcGZuKVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMzkzLSAqIGFsbG9jYXRlIGRlc3RpbmF0aW9uIHBhZ2VzIGFuZCBzdGFydCBjb3B5aW5nIGRhdGEgZnJvbSB0aGUgZGV2aWNlIHRvIENQVVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTM5NDogKiBtZW1vcnkgYmVmb3JlIGNhbGxpbmcgbWlncmF0ZV9kZXZpY2VfcGFnZXMoKS5cXG5tbS9taWdyYXRlX2RldmljZS5jLTEzOTUtICovXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTE0NjE9aW50IG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTE0ODUtXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxNDg2OlxcdG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKFxcdTAwMjZzcmNfcGZuLCBcXHUwMDI2ZHN0X3BmbiwgMSk7XFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDg3LVxcdGlmIChzcmNfcGZuIFxcdTAwMjYgTUlHUkFURV9QRk5fTUlHUkFURSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MjkuMDA3NjI3NDcxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3NjEzNzk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgYG1tL21pZ3JhdGVfZGV2aWNlLmNgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGltcGxpY2F0aW9ucyBvZiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AuIFRoYXQgbWVhbnMgZGl2aW5nIHN0cmFpZ2h0IGludG8gdGhlIEtjb25maWcgZmlsZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBvciByZWxldmFudCBmZWF0dXJlcyBjb250cm9sIHRoZSBpbmNsdXNpb24gb3IgYmVoYXZpb3Igb2YgdGhhdCBzcGVjaWZpYyBmaWxlLiBJcyBpdCB0aWVkIHRvIGEgc3BlY2lmaWMgZGV2aWNlIGNsYXNzLCBhIG1lbW9yeSBtYW5hZ2VtZW50IHN0cmF0ZWd5LCBvciBwZXJoYXBzIGV2ZW4gYSBicm9hZGVyIHN5c3RlbSBjYXBhYmlsaXR5PyBLbm93aW5nIHRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgaXQgaW50ZXJhY3RzIHdpdGhpbiB0aGUga2VybmVsIGFuZCBpdHMgYnJvYWRlciBjb250ZXh0LiBJJ20gbG9va2luZyBmb3IgdGhlIGJyZWFkY3J1bWJzIHRoYXQgd2lsbCBsZWFkIG1lIHRvIHRoZSByZWxldmFudCBzeW1ib2xzIGFuZCBhbnkgcG90ZW50aWFsIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWxseSBkaWdnaW5nIGludG8gdGhpcyBwaWVjZSBvZiBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MzEuNzgzNzY4NzQ1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzgxNzk1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaWdyYXRlX2RldmljZS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL01ha2VmaWxlPTk5PW9iai0kKENPTkZJR19OVU1BKSArPSBtZW1vcnktdGllcnMub1xcbm1tL01ha2VmaWxlOjEwMDpvYmotJChDT05GSUdfREVWSUNFX01JR1JBVElPTikgKz0gbWlncmF0ZV9kZXZpY2Uub1xcbm1tL01ha2VmaWxlLTEwMS1vYmotJChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpICs9IGh1Z2VfbWVtb3J5Lm8ga2h1Z2VwYWdlZC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjMxLjkyMTU5NDc2NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTA0MjU5MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duIGltbWVkaWF0ZSBwcm9jZXNzaW5nOlxuXG4qKkRldmljZSBNaWdyYXRpb24gQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9uKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgbmVlZGluZyBgQ09ORklHX0RFVklDRV9NSUdSQVRJT05gLiBMZXQncyBqdXN0IGFzc3VtZSB3ZSBkbywgZm9yIHRoZSBzYWtlIG9mIGV4cGxvcmluZyBob3cgdGhpcyBzeXN0ZW0gaGFzIGJlZW4gZGVzaWduZWQuIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgZmlyc3QgaW5zdGluY3QsIG9mIGNvdXJzZSwgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgYW5kIHZlcmlmeSB0aGUgbmF0dXJlIGFuZCBkZXBlbmRlbmNpZXMgb2YgYENPTkZJR19ERVZJQ0VfTUlHUkFUSU9OYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucy4gVGhpcyBpc24ndCBhIGNhc3VhbCBkZWNpc2lvbjsgYSBtaWdyYXRpb24gZmVhdHVyZSBhbG1vc3QgYWx3YXlzIHRvdWNoZXMgc29tZSBmdW5kYW1lbnRhbCBwYXJ0cyBvZiB0aGUgc3lzdGVtIGFuZCBoYXMgc2lnbmlmaWNhbnQgZWZmZWN0cyBvbiBpdHMgYXJjaGl0ZWN0dXJlLiBUaW1lIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBkZXNjcmlwdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZSwgYW5kLCBjcnVjaWFsbHksIGFueSBjb25mbGljdGluZyBvcHRpb25zLiBXZSBuZWVkIHRoZSBmdWxsIHBpY3R1cmUgYmVmb3JlIG1vdmluZyBmb3J3YXJkLiBJJ20gYWZ0ZXIgdGhlIGxvdy1kb3duLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQ0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MzUuMTcyMDIzMjg5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODczMzkxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREVWSUNFX01JR1JBVElPTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9Njk2PWNvbmZpZyBNSUdSQVRJT05cXG4tLVxcbm1tL0tjb25maWctNjk5LVxcbm1tL0tjb25maWc6NzAwOmNvbmZpZyBERVZJQ0VfTUlHUkFUSU9OXFxubW0vS2NvbmZpZy03MDEtXFx0ZGVmX2Jvb2wgTUlHUkFUSU9OIFxcdTAwMjZcXHUwMDI2IFpPTkVfREVWSUNFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjM1LjI3MDc2Mzg5MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzY5MTkxMzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogQ09ORklHX0RFVklDRV9NSUdSQVRJT04qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayBkb3duIHRoaXMgZGVwZW5kZW5jeSBjaGFpbi4gVGhlIGNvZGUncyBzYXlpbmcgYENPTkZJR19ERVZJQ0VfTUlHUkFUSU9OYCBoaW5nZXMgb24gYm90aCBgTUlHUkFUSU9OYCBhbmQgYFpPTkVfREVWSUNFYC4gRmluZSwgdGhhdCBtYWtlcyBzZW5zZSBjb25jZXB0dWFsbHk7IGRldmljZSBtaWdyYXRpb24gb2Z0ZW4gaW52b2x2ZXMgbW92aW5nIGRhdGEgYmV0d2VlbiB6b25lcy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgWk9ORV9ERVZJQ0VgIGlzIHNldCwgYmVjYXVzZSB0aGF0J3MgdGhlIHVua25vd24gdmFyaWFibGUgaGVyZSwgdGhlIHRoaW5nIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZS4gSXMgYFpPTkVfREVWSUNFYCBlbmFibGVkPyBMZXQncyBjaGVjayB0aGF0LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9uYWxpdHkgdGhhdCB6b25lIGRldmljZSBpbXBsaWVzLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBgQ09ORklHX0RFVklDRV9NSUdSQVRJT05gIHdpbGwgd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2OSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjM4LjAzOTk1OTI5NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4Mzc0MTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaT05FX0RFVklDRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTIzMT1jb25maWcgWk9ORV9ETUEzMlxcbi0tXFxubW0vS2NvbmZpZy0xMjM1LVxcbm1tL0tjb25maWc6MTIzNjpjb25maWcgWk9ORV9ERVZJQ0VcXG5tbS9LY29uZmlnLTEyMzctXFx0Ym9vbCBcXFwiRGV2aWNlIG1lbW9yeSAocG1lbSwgSE1NLCBldGMuLi4pIGhvdHBsdWcgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MzguMTg4MzM5OTE0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MTkxNzY1NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgQ2FsbGVycyBvZiBQYWdlIE1pZ3JhdGlvbiBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyB3ZSBuZWVkIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBjYWxsIHNpdGVzIG9mIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AuIEkga25vdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGNydWNpYWwgZm9yIGhhbmRsaW5nIHBhZ2UgbWlncmF0aW9ucyBpbiBzcGVjaWZpYyBjb250ZXh0cywgbGlrZWx5IHJlbGF0ZWQgdG8gZGV2aWNlIG1lbW9yeSBhbmQgdmlydHVhbCBtZW1vcnkgYXJlYXMsIHJlc3BlY3RpdmVseS4gSXQncyB0aW1lIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnZva2VkIHdpdGhpbiB0aGUga2VybmVsIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHBhdGhzIHdpbGwgZ2l2ZSBtZSBjb250ZXh0IGFyb3VuZCB0aGUgbWlncmF0aW9uIGZsb3dzLCBhbmQgaGVscCBtZSBpbiB1bmRlcnN0YW5kaW5nIHRoZSBtaWdyYXRpb24gaW1wbGVtZW50YXRpb25zIGJldHRlci4gUGVyaGFwcyBJIGFtIGxvb2tpbmcgdG8gZml4IGEgYnVnLCBvciBvcHRpbWl6ZSB0aGVzZSBjYWxscy4gSSBuZWVkIHRvIGtub3cgd2h5IGFuZCB3aGVuIHRob3NlIHBhZ2VzIGFyZSBiZWluZyBtb3ZlZC4gVGhpcyBpbnZlc3RpZ2F0aW9uIGlzIHRoZSBmaXJzdCBzdGVwIHRvd2FyZCB0aGF0IGdvYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODQsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowODo0MC45MDc1MjAwMDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MDAyMTc0MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWlncmF0ZV92bWFfcGFnZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yNjQ9dXNlIGhhcmR3YXJlIERNQSBvciBkZXZpY2Ugc3BlY2lmaWMgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgdG8gbWlncmF0ZSBkYXRhLlxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoyNjU6VGhlIG1pZ3JhdGVfdm1hX3NldHVwKCksIG1pZ3JhdGVfdm1hX3BhZ2VzKCksIGFuZCBtaWdyYXRlX3ZtYV9maW5hbGl6ZSgpXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTI2Ni1mdW5jdGlvbnMgYXJlIGRlc2lnbmVkIHRvIG1ha2UgZHJpdmVycyBlYXNpZXIgdG8gd3JpdGUgYW5kIHRvIGNlbnRyYWxpemUgY29tbW9uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q9Mjk3PWJldHdlZW4gZGV2aWNlIGRyaXZlciBzcGVjaWZpYyBjb2RlIGFuZCBzaGFyZWQgY29tbW9uIGNvZGU6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMzY0LVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDozNjU6NC4gYGBtaWdyYXRlX3ZtYV9wYWdlcygpYGBcXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMzY2LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdD0yMTI9SE1NIOWIh+aNouWIsOebtOaOpeS9v+eUqCBzdHJ1Y3QgcGFnZSDnlKjkuo7orr7lpIflhoXlrZjvvIzov5nkvb/lvpflpKflpJrmlbDlhoXmoLjku6PnoIHot6/lvoTkuI3nn6XpgZPlt67lvILjgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjE4LeeUseS6jiBDUFUg5peg5rOV55u05o6l6K6/6Zeu6K6+5aSH5YaF5a2Y77yM5Zug5q2k6K6+5aSH6amx5Yqo56iL5bqP5b+F6aG75L2/55So56Gs5Lu2IERNQSDmiJborr7lpIfnibnlrprnmoTliqDovb0v5a2YXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdDoyMTk65YKo5oyH5Luk5p2l6L+B56e75pWw5o2u44CCbWlncmF0ZV92bWFfc2V0dXAoKeOAgW1pZ3JhdGVfdm1hX3BhZ2VzKCkg5ZKMXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdC0yMjAtbWlncmF0ZV92bWFfZmluYWxpemUoKSDlh73mlbDml6jlnKjkvb/pqbHliqjnqIvluo/mm7TmmJPkuo7nvJblhpnlubbpm4bkuK3ot6jpqbHliqjnqIvluo/nmoTpgJrnlKjku6PnoIHjgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q9MjQzPWRldm1fbWVtdW5tYXBfcGFnZXMoKSDlkowgZGV2bV9yZWxlYXNlX21lbV9yZWdpb24oKSDlvZPotYTmupDlj6/ku6Xnu5HlrprliLAgYGBzdHJ1Y3QgZGV2aWNlYGAuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTI5Ny1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0OjI5ODo0LiBgYG1pZ3JhdGVfdm1hX3BhZ2VzKClgYFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjk5LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy00OS0gKiAxLiBrdm0tXFx1MDAzZXNyY3UgLSBQcm90ZWN0cyBLVk0gbWVtc2xvdHNcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jOjUwOiAqIDIuIGt2bS1cXHUwMDNlbW0tXFx1MDAzZW1tYXBfbG9jayAtIGZpbmRfdm1hLCBtaWdyYXRlX3ZtYV9wYWdlcyBhbmQgaGVscGVycywga3NtX21hZHZpc2VcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTUxLSAqIDMuIGt2bS1cXHUwMDNlYXJjaC51dm1lbV9sb2NrIC0gcHJvdGVjdHMgcmVhZC93cml0ZXMgdG8gdXZtZW0gc2xvdHMgdGh1cyBhY3RpbmdcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmM9NTEzPXN0YXRpYyBpbnQgX19rdm1wcGNfc3ZtX3BhZ2Vfb3V0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01NzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYzo1Nzk6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNm1pZyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01ODAtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jPTc0MD1zdGF0aWMgaW50IGt2bXBwY19zdm1fcGFnZV9pbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNzg3LVxcdCptaWcuZHN0ID0gbWlncmF0ZV9wZm4ocGFnZV90b19wZm4oZHBhZ2UpKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jOjc4ODpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2bWlnKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTc4OS1vdXRfZmluYWxpemU6XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jPTM5ND1zdm1fbWlncmF0ZV92bWFfdG9fdnJhbShzdHJ1Y3Qga2ZkX25vZGUgKm5vZGUsIHN0cnVjdCBzdm1fcmFuZ2UgKnByYW5nZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNDUxLVxcdHIgPSBzdm1fbWlncmF0ZV9jb3B5X3RvX3ZyYW0obm9kZSwgcHJhbmdlLCBcXHUwMDI2bWlncmF0ZSwgXFx1MDAyNm1mZW5jZSwgc2NyYXRjaCwgdHRtX3Jlc19vZmZzZXQpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM6NDUyOlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKFxcdTAwMjZtaWdyYXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTQ1My1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM9NjkzPXN2bV9taWdyYXRlX3ZtYV90b19yYW0oc3RydWN0IGtmZF9ub2RlICpub2RlLCBzdHJ1Y3Qgc3ZtX3JhbmdlICpwcmFuZ2UsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTc1NS1cXHRcXHRcXHRcXHQgICAgc2NyYXRjaCwgbnBhZ2VzKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjc1NjpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2bWlncmF0ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy03NTctXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYz02MTY9aW50IGRybV9wYWdlbWFwX21pZ3JhdGVfdG9fZGV2bWVtKHN0cnVjdCBkcm1fcGFnZW1hcF9kZXZtZW0gKmRldm1lbV9hbGxvY2F0aW9uLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtODEyLWVycl9hYm9ydGVkX21pZ3JhdGlvbjpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzo4MTM6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNm1pZ3JhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTgxNC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jPTEyMTE9c3RhdGljIGludCBfX2RybV9wYWdlbWFwX21pZ3JhdGVfdG9fcmFtKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdmFzLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTMwNC1cXHRcXHRkcm1fcGFnZW1hcF9taWdyYXRpb25fdW5sb2NrX3B1dF9wYWdlcyhucGFnZXMsIG1pZ3JhdGUuZHN0KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzoxMzA1OlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKFxcdTAwMjZtaWdyYXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzA2LVxcdG1pZ3JhdGVfdm1hX2ZpbmFsaXplKFxcdTAwMjZtaWdyYXRlKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jPTE4Mz1zdGF0aWMgdm1fZmF1bHRfdCBub3V2ZWF1X2RtZW1fbWlncmF0ZV90b19yYW0oc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yNjctXFx0bm91dmVhdV9mZW5jZV9uZXcoXFx1MDAyNmZlbmNlLCBkbWVtLVxcdTAwM2VtaWdyYXRlLmNoYW4pO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jOjI2ODpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2YXJncyk7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjY5LVxcdG5vdXZlYXVfZG1lbV9mZW5jZV9kb25lKFxcdTAwMjZmZW5jZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz03ODM9c3RhdGljIHZvaWQgbm91dmVhdV9kbWVtX21pZ3JhdGVfY2h1bmsoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy04MDktXFx0bm91dmVhdV9mZW5jZV9uZXcoXFx1MDAyNmZlbmNlLCBkcm0tXFx1MDAzZWRtZW0tXFx1MDAzZW1pZ3JhdGUuY2hhbik7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6ODEwOlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKGFyZ3MpO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTgxMS1cXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcXHUwMDI2ZmVuY2UpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9MTU4PXN0cnVjdCBtaWdyYXRlX3ZtYSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xNjUtXFx0ICogbWlncmF0ZV92bWFfc2V0dXAoKSwgYW5kIG11c3Qgbm90IGNoYW5nZSB0aGUgZHN0IGFycmF5IGFmdGVyXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTY2OlxcdCAqIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgcmV0dXJucy5cXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xNjctXFx0ICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaD0xOTM9aW50IG1pZ3JhdGVfdm1hX3NldHVwKHN0cnVjdCBtaWdyYXRlX3ZtYSAqYXJncyk7XFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTk0OnZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKTtcXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xOTUtdm9pZCBtaWdyYXRlX3ZtYV9maW5hbGl6ZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTAwND1zdGF0aWMgdm1fZmF1bHRfdCBkbWlycm9yX2Rldm1lbV9mYXVsdF9hbGxvY19hbmRfY29weShzdHJ1Y3QgbWlncmF0ZV92bWEgKmFyZ3MsXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xMDc1LVxcdFxcdFxcdFxcdFxcdC8qIENsZWFyIHJlbWFpbmluZyBkc3QgZW50cmllcyB0byBhdm9pZFxcbmxpYi90ZXN0X2htbS5jOjEwNzY6XFx0XFx0XFx0XFx0XFx0ICogbWlncmF0ZV92bWFfcGFnZXMvZmluYWxpemUoKSB1c2luZ1xcbmxpYi90ZXN0X2htbS5jLTEwNzctXFx0XFx0XFx0XFx0XFx0ICogdW5pbml0aWFsaXplZCB2YWx1ZXMuXFxuLS1cXG5saWIvdGVzdF9obW0uYz0xMTIwPXN0YXRpYyBpbnQgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTExNzUtXFxubGliL3Rlc3RfaG1tLmM6MTE3NjpcXHRcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2YXJncyk7XFxubGliL3Rlc3RfaG1tLmMtMTE3Ny1cXHRcXHRjbWQtXFx1MDAzZWNwYWdlcyArPSBkbWlycm9yX3N1Y2Nlc3NmdWxfbWlncmF0ZWRfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTE4OT1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xMjQ4LVxcdFxcdGRtaXJyb3JfbWlncmF0ZV9hbGxvY19hbmRfY29weShcXHUwMDI2YXJncywgZG1pcnJvcik7XFxubGliL3Rlc3RfaG1tLmM6MTI0OTpcXHRcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2YXJncyk7XFxubGliL3Rlc3RfaG1tLmMtMTI1MC1cXHRcXHRkbWlycm9yX21pZ3JhdGVfZmluYWxpemVfYW5kX21hcChcXHUwMDI2YXJncywgZG1pcnJvcik7XFxuLS1cXG5saWIvdGVzdF9obW0uYz0xNjUzPXN0YXRpYyB2bV9mYXVsdF90IGRtaXJyb3JfZGV2bWVtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTcxOC1cXHR9XFxubGliL3Rlc3RfaG1tLmM6MTcxOTpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2YXJncyk7XFxubGliL3Rlc3RfaG1tLmMtMTcyMC1cXHQvKlxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz02NTk9c3RhdGljIHZvaWQgbWlncmF0ZV92bWFfdW5tYXAoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy02OTktICogdGhpcyBjYW4gc3RpbGwgZmFpbCwgYW5kIHRodXMgaW5zaWRlIHRoZSBkZXZpY2UgZHJpdmVyIHlvdSBtdXN0IGNoZWNrIGlmIHRoZVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzAwOiAqIG1pZ3JhdGlvbiB3YXMgc3VjY2Vzc2Z1bCBmb3IgdGhvc2UgZW50cmllcyBhZnRlciBjYWxsaW5nIG1pZ3JhdGVfdm1hX3BhZ2VzKCksXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDEtICoganVzdCBsaWtlIGZvciByZWd1bGFyIG1pZ3JhdGlvbi5cXG5tbS9taWdyYXRlX2RldmljZS5jLTcwMi0gKlxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzAzOiAqIEFmdGVyIHRoYXQsIHRoZSBjYWxsZXJzIG11c3QgY2FsbCBtaWdyYXRlX3ZtYV9wYWdlcygpIHRvIGdvIG92ZXIgZWFjaCBlbnRyeVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzA0LSAqIGluIHRoZSBzcmMgYXJyYXkgdGhhdCBoYXMgdGhlIE1JR1JBVEVfUEZOX1ZBTElEIGFuZCBNSUdSQVRFX1BGTl9NSUdSQVRFIGZsYWdcXG5tbS9taWdyYXRlX2RldmljZS5jLTcwNS0gKiBzZXQuIElmIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGluIGRzdCBhcnJheSBoYXMgTUlHUkFURV9QRk5fVkFMSUQgZmxhZyBzZXQsXFxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MDY6ICogdGhlbiBtaWdyYXRlX3ZtYV9wYWdlcygpIHRvIG1pZ3JhdGUgc3RydWN0IHBhZ2UgaW5mb3JtYXRpb24gZnJvbSB0aGUgc291cmNlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDctICogc3RydWN0IHBhZ2UgdG8gdGhlIGRlc3RpbmF0aW9uIHN0cnVjdCBwYWdlLiAgSWYgaXQgZmFpbHMgdG8gbWlncmF0ZSB0aGVcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzE0LSAqXFxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MTU6ICogT25jZSBtaWdyYXRlX3ZtYV9wYWdlcygpIHJldHVybnMgdGhlIGNhbGxlciBtYXkgaW5zcGVjdCB3aGljaCBwYWdlcyB3ZXJlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MTYtICogc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkLCBhbmQgd2hpY2ggd2VyZSBub3QuICBTdWNjZXNzZnVsbHkgbWlncmF0ZWQgcGFnZXMgd2lsbFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MTgtICpcXG5tbS9taWdyYXRlX2RldmljZS5jOjcxOTogKiBJdCBpcyBzYWZlIHRvIHVwZGF0ZSBkZXZpY2UgcGFnZSB0YWJsZSBhZnRlciBtaWdyYXRlX3ZtYV9wYWdlcygpIGJlY2F1c2VcXG5tbS9taWdyYXRlX2RldmljZS5jLTcyMC0gKiBib3RoIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2UgcGFnZSBhcmUgc3RpbGwgbG9ja2VkLCBhbmQgdGhlIG1tYXBfbG9jayBpcyBoZWxkXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEwOTg9c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI0OS0gKlxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1MDogKiBFcXVpdmFsZW50IHRvIG1pZ3JhdGVfdm1hX3BhZ2VzKCkuIFRoaXMgaXMgY2FsbGVkIHRvIG1pZ3JhdGUgc3RydWN0IHBhZ2VcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTEtICogbWV0YS1kYXRhIGZyb20gc291cmNlIHN0cnVjdCBwYWdlIHRvIGRlc3RpbmF0aW9uLlxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjU4PUVYUE9SVF9TWU1CT0wobWlncmF0ZV9kZXZpY2VfcGFnZXMpO1xcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjYwLS8qKlxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2MTogKiBtaWdyYXRlX3ZtYV9wYWdlcygpIC0gbWlncmF0ZSBtZXRhLWRhdGEgZnJvbSBzcmMgcGFnZSB0byBkc3QgcGFnZVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Mi0gKiBAbWlncmF0ZTogbWlncmF0ZSBzdHJ1Y3QgY29udGFpbmluZyBhbGwgbWlncmF0aW9uIGluZm9ybWF0aW9uXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjctICovXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjY4OnZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2OS17XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzEtfVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3MjpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfdm1hX3BhZ2VzKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjQzLjYwNzc0MTkwM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQ3MTc0MjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaCBpbiB0aGUgTGludXggS2VybmVsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IHRoZSBjb2RlIGFkZGVkIHdpdGhpbiBgX19taWdyYXRlX2RldmljZV9wYWdlc2AuIEl0IHNlZW1zIGxpa2UgdGhleSd2ZSBhZGRlZCB0aGlzIHNuaXBwZXQ6XG5cbmBgYGNcblx0XHRcdFx0Lypcblx0XHRcdFx0ICogZm9saW9fZnJlZV9zd2FwKCkgcmVtb3ZlZCB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcFxuXHRcdFx0XHQgKiBjYWNoZS4gUmVmcmVzaCB0aGUgc2F2ZWQgbWFwcGluZyBiZWZvcmUgbWlncmF0aW9uLlxuXHRcdFx0XHQgKi9cblx0XHRcdFx0bWFwcGluZyA9IGZvbGlvX21hcHBpbmcoZm9saW8pO1xuYGBgXG5cblRoaXMgaXMgdHVja2VkIGF3YXkgaW5zaWRlIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggbWFrZXMgbWUgaW1tZWRpYXRlbHkgdGhpbmsgYWJvdXQgdGhlIGNvbnRleHQuIFJpZ2h0LCBzbyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaXMgY2FsbGVkIGJ5IGJvdGggYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aG9zZSBmdW5jdGlvbnMuIFRoYXQncyBhIGtleSBwYXJ0IG9mIHRoZSBwdXp6bGUuIE5vdywgZGlnZ2luZyBkZWVwZXIsIEkgc2VlIHRoYXQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBpcyBjYWxsZWQgZnJvbSBgbGliL3Rlc3RfaG1tLmNgLlxuXG5UaGF0J3MgaW50ZXJlc3RpbmcuIGBsaWIvdGVzdF9obW0uY2AuLi4gdGhhdCdzIHRoZSB0ZXN0IGRyaXZlciBmb3IgSE1NLCBvciBIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50LiBITU0gZGVhbHMgd2l0aCBhIHByZXR0eSBzcGVjaWZpYyBzZXQgb2YgaGFyZHdhcmUgYW5kIG1lbW9yeSBjaGFyYWN0ZXJpc3RpY3MsIHNvIGNoYW5nZXMgaW4gdGhhdCBhcmVhIGFyZSBwb3RlbnRpYWxseSBoaWdoIGltcGFjdCBhbmQgbmVlZCB0byBiZSBsb29rZWQgYXQgY2xvc2VseS5cblxuU28gbm93IEkgaGF2ZSB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJIG5lZWQgdG8gc2VlIGlmIHRoYXQgcGFydGljdWxhciB0ZXN0IG1vZHVsZSBpcyBlbmFibGVkIGJ5IHNvbWUgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gSWYgaXQgaXMsIHRoZW4gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhdGNoIGNvdWxkIGJlIHF1aXRlIGltcG9ydGFudCBmb3IgdXNlcnMgd2l0aCBITU0tZW5hYmxlZCBzeXN0ZW1zLiBMZXQncyBzZWUgaWYgdGhpcyBwYXRjaCBjYXVzZXMgYW4gaXNzdWUgdGhhdCBjYW4gYmUgdHJhY2VkIHRvIGNvbmZpZ3VyYXRpb24gb2YgdGhhdCB0ZXN0IGhhcm5lc3MuIFRoYXQgd291bGQgYmUgdGhlIG5leHQgbG9naWNhbCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTg4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjQ4LjQ1NDkxOTg4OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ4NzYwMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRlc3RfaG1tLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImxpYi9NYWtlZmlsZT0xMDI9b2JqLSQoQ09ORklHX1RFU1RfTE9DS1VQKSArPSB0ZXN0X2xvY2t1cC5vXFxubGliL01ha2VmaWxlOjEwMzpvYmotJChDT05GSUdfVEVTVF9ITU0pICs9IHRlc3RfaG1tLm9cXG5saWIvTWFrZWZpbGUtMTA0LW9iai0kKENPTkZJR19URVNUX0ZSRUVfUEFHRVMpICs9IHRlc3RfZnJlZV9wYWdlcy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjQ5LjAwMzY4NDkwM1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzUxNDMxMzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBUZXN0IEhNTSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGBDT05GSUdfVEVTVF9ITU1gIGhhcyB0cmlnZ2VyZWQgdGhlIGJ1aWxkIG9mIGBsaWIvdGVzdF9obW0uY2AuIFRoYXQncyBhIGNsZWFyIHNpZ25hbCwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqd2h5KiBhbmQgKmhvdyouIFRpbWUgdG8gZGlnIGludG8gdGhlIEtjb25maWcuIEkgd2FudCB0byBzZWUgdGhlIGRlcGVuZGVuY2llcywgdGhlIGRlZmF1bHQgdmFsdWUsIGFuZCBhbnkgYXNzb2NpYXRlZCBoZWxwIHRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbmRlZCB1c2UgY2FzZSBvZiB0aGlzIHRlc3QgYW5kIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcyBpdCdzIGxpa2VseSB0byBiZSBlbmFibGVkLiBJcyB0aGlzIGEgY29yZSBmdW5jdGlvbmFsaXR5IHRlc3QsIG9yIGlzIGl0IG1vcmUgb2YgYSBkZXZlbG9wZXIgc2FuaXR5IGNoZWNrPyBBcmUgdGhlcmUgb3RoZXIgcmVsYXRlZCBvcHRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mIHdpdGhpbiB0aGUgSE1NIHN1YnN5c3RlbT8gSSdsbCBwcm9iYWJseSBiZSBhYmxlIHRvIGdsZWFuIHRoaXMgaW5mb3JtYXRpb24gZGlyZWN0bHkgZnJvbSB0aGUgS2NvbmZpZyBmaWxlIGZvciBgdGVzdF9obW1gLiBUaW1lIHRvIHRyYWNrIGl0IGRvd24uIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IHRvIHVuZGVyc3RhbmQgdGhlIHBsYWNlIG9mIHRlc3Qgd2l0aGluIHRoZSBiaWdnZXIgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjIwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6NTIuMzU1MTIzNDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzU0MjAzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEVTVF9ITU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9MzM0Nj1jb25maWcgVEVTVF9NRU1JTklUXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzUzLVxcbmxpYi9LY29uZmlnLmRlYnVnOjMzNTQ6Y29uZmlnIFRFU1RfSE1NXFxubGliL0tjb25maWcuZGVidWctMzM1NS1cXHR0cmlzdGF0ZSBcXFwiVGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowODo1Mi41MTg2NzEzODdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5MDcwMzM3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyBmb3IgYFRFU1RfSE1NYCoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCBgVEVTVF9ITU1gIC0gd2hhdCdzIHRoaXMgdGhpbmcgcmVseWluZyBvbj9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jeSBncmFwaC4gSXMgaXQgYSBzdGFuZGFsb25lIG1vZHVsZSwgb3IgaXMgaXQgZHJhd2luZyBvbiBvdGhlciBjb21wb25lbnRzPyBJcyBpdCBoaXR0aW5nIHRoZSBgSE1NYCBvYmplY3QgZGVmaW5lZCBpbiBteSBvd24gbGlicmFyeSwgb3IgdGhlIG9uZSBmcm9tIHRoZSBwYXBlcj8gQXJlIHRoZXJlIGV4dGVybmFsIGxpYnJhcmllcyBpbiB0aGUgbWl4PyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGJ1aWxkaW5nIGJsb2NrcyBhbmQgYW55IHBvdGVudGlhbCAnZ290Y2hhcycgdGhhdCBjb3VsZCB0cmlwIG1lIHVwLiBUaGlzIGFuYWx5c2lzIHdpbGwgZ3VpZGUgbXkgbmV4dCBzdGVwczogZGVidWdnaW5nLCByZWZhY3RvcmluZywgb3Igc2ltcGx5IHVuZGVyc3RhbmRpbmcgaG93IGBURVNUX0hNTWAgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIHByb2plY3QuIEEgcXVpY2sgZGVwZW5kZW5jeSBzY2FuIGlzIGNydWNpYWwgYmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCB0b3VjaGluZyB0aGUgY29kZSBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5ODAsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowODo1NS42MDkzNzc2ODVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjc0MzU0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEVTVF9ITU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz0zMzQ2PWNvbmZpZyBURVNUX01FTUlOSVRcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnLTMzNTMtXFxubGliL0tjb25maWcuZGVidWc6MzM1NDpjb25maWcgVEVTVF9ITU1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzU1LVxcdHRyaXN0YXRlIFxcXCJUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjU1LjcyNjEyNjA2NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc0NjkzMjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gRGVidWdnaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHNwZWNpZmljIGFib3V0IHRoZSBkZWJ1Z2dpbmcgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBwcm9qZWN0LiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgYXJlIGxpa2VseSBsb2NhdGVkIHdpdGhpbiB0aGUgYEtjb25maWcuZGVidWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAzMzU0LiBJJ2xsIHRha2UgYSBsb29rIGF0IHRoYXQgZmlsZSBsb2NhdGlvbiBkaXJlY3RseS4gTGV0J3Mgc2VlIHdoYXQgc2VjcmV0cyBpdCBob2xkcy4gSG9wZWZ1bGx5LCB0aGlzIHNlY3Rpb24gd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIGNvbmZpZ3VyYXRpb24gSSdtIHRyeWluZyB0byBkZWNpcGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI5NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjU4LjYwMDgyMTY2MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjAyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibGliL0tjb25maWcuZGVidWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzM1MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzM1MDpcXHRcXHQgIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byB0ZXN0IGluaXRfb25fYWxsb2MgYW5kIGluaXRfb25fZnJlZSBmZWF0dXJlcy5cXG4zMzUxOlxcdFxcbjMzNTI6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbjMzNTM6XFx0XFxuMzM1NDpcXHRjb25maWcgVEVTVF9ITU1cXG4zMzU1OlxcdFxcdHRyaXN0YXRlIFxcXCJUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcXFwiXFxuMzM1NjpcXHRcXHRkZXBlbmRzIG9uIFRSQU5TUEFSRU5UX0hVR0VQQUdFXFxuMzM1NzpcXHRcXHRkZXBlbmRzIG9uIERFVklDRV9QUklWQVRFXFxuMzM1ODpcXHRcXHRzZWxlY3QgSE1NX01JUlJPUlxcbjMzNTk6XFx0XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbjMzNjA6XFx0XFx0aGVscFxcbjMzNjE6XFx0XFx0ICBUaGlzIGlzIGEgcHNldWRvIGRldmljZSBkcml2ZXIgc29sZWx5IGZvciB0ZXN0aW5nIEhNTS5cXG4zMzYyOlxcdFxcdCAgU2F5IE0gaGVyZSBpZiB5b3Ugd2FudCB0byBidWlsZCB0aGUgSE1NIHRlc3QgbW9kdWxlLlxcbjMzNjM6XFx0XFx0ICBEb2luZyBzbyB3aWxsIGFsbG93IHlvdSB0byBydW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdC92bS9obW0tdGVzdHMuXFxuMzM2NDpcXHRcXG4zMzY1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4zMzY2OlxcdFxcbjMzNjc6XFx0Y29uZmlnIFRFU1RfRlJFRV9QQUdFU1xcbjMzNjg6XFx0XFx0dHJpc3RhdGUgXFxcIlRlc3QgZnJlZWluZyBwYWdlc1xcXCJcXG4zMzY5OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6NTguNjAxMDg0MDcyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODI2NzEyODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyBEZXBlbmRlbmNpZXMgaW4gdGhlIENvZGViYXNlKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYFRFU1RfSE1NYCBoZXJlLCBhbmQgaXQgc2VlbXMgbGlrZSBpdCdzIHB1bGxpbmcgaW4gZGVwZW5kZW5jaWVzLiBTcGVjaWZpY2FsbHksIEkgc2VlIGl0IHJlbGllcyBvbiBib3RoIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgYW5kIGBERVZJQ0VfUFJJVkFURWAuIEdpdmVuIHRoYXQgdGhlc2UgYXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyByZWxhdGlvbnNoaXAgYmV0dGVyLiBNeSBwcmltYXJ5IGNvbmNlcm4gcmlnaHQgbm93IGlzIHdpdGggYERFVklDRV9QUklWQVRFYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGNvbnRyb2xzLCBzbyBJJ2xsIGNoZWNrIGludG8gaXQuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzYyLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowOTowMS41ODM3NTg1MzlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDU4MDY3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREVWSUNFX1BSSVZBVEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTEyNjQ9Y29uZmlnIEdFVF9GUkVFX1JFR0lPTlxcbi0tXFxubW0vS2NvbmZpZy0xMjY2LVxcbm1tL0tjb25maWc6MTI2Nzpjb25maWcgREVWSUNFX1BSSVZBVEVcXG5tbS9LY29uZmlnLTEyNjgtXFx0Ym9vbCBcXFwiVW5hZGRyZXNzYWJsZSBkZXZpY2UgbWVtb3J5IChHUFUgbWVtb3J5LCAuLi4pXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowOTowMS43MTgzNDYzMzhaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyNjQzMTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGhhbmRsZWQuIExldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYG1tL0tjb25maWdgLiBJdCdzIGEga2V5IGZpbGUgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgYW5kIGFyb3VuZCBsaW5lIDEyNjcgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgcGxhY2UgdG8gYmVnaW4uIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBvciByZWxldmFudCBkZXBlbmRlbmNpZXMgZm9yIHdoYXRldmVyIG9wdGlvbiB3ZSdyZSBkZWFsaW5nIHdpdGguIEtub3dpbmcgdGhlIHNwZWNpZmljIGxpbmUgcmFuZ2UgaGVscHMgbWUgbmF2aWdhdGUgZWZmaWNpZW50bHkgYW5kIGF2b2lkIGdldHRpbmcgbG9zdCBpbiB0aGUgYnJvYWRlciBjb25maWd1cmF0aW9uIHNwYWNlLiBJJ20gaG9waW5nIGl0J3MgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBkZWZpbml0aW9uIOKAkyBtYXliZSBhIHNpbXBsZSBgY29uZmlnYCBibG9jayB3aXRoIHNvbWUgZGVwZW5kZW5jaWVzIG9yIGEgdHJpc3RhdGUgb3B0aW9uLiBPciBwZXJoYXBzIHRoaXMgYXJlYSBkZWFscyB3aXRoIGhvdyB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgc3BlY2lmaWMgb3B0aW9uIGlzIGNvbmZpZ3VyZWQuIEVpdGhlciB3YXksIHRoaXMgc2hvdWxkIGJlIHRoZSBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uJ3MgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDA0NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjA1LjA0NDc4MjA5N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzc4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjY1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjY1OlxcdFxcdGJvb2xcXG4xMjY2OlxcdFxcbjEyNjc6XFx0Y29uZmlnIERFVklDRV9QUklWQVRFXFxuMTI2ODpcXHRcXHRib29sIFxcXCJVbmFkZHJlc3NhYmxlIGRldmljZSBtZW1vcnkgKEdQVSBtZW1vcnksIC4uLilcXFwiXFxuMTI2OTpcXHRcXHRkZXBlbmRzIG9uIFpPTkVfREVWSUNFXFxuMTI3MDpcXHRcXHRzZWxlY3QgR0VUX0ZSRUVfUkVHSU9OXFxuMTI3MTpcXHRcXG4xMjcyOlxcdFxcdGhlbHBcXG4xMjczOlxcdFxcdCAgQWxsb3dzIGNyZWF0aW9uIG9mIHN0cnVjdCBwYWdlcyB0byByZXByZXNlbnQgdW5hZGRyZXNzYWJsZSBkZXZpY2VcXG4xMjc0OlxcdFxcdCAgbWVtb3J5OyBpLmUuLCBtZW1vcnkgdGhhdCBpcyBvbmx5IGFjY2Vzc2libGUgZnJvbSB0aGUgZGV2aWNlIChvclxcbjEyNzU6XFx0XFx0ICBncm91cCBvZiBkZXZpY2VzKS4gWW91IGxpa2VseSBhbHNvIHdhbnQgdG8gc2VsZWN0IEhNTV9NSVJST1IuXFxuMTI3NjpcXHRcXG4xMjc3OlxcdGNvbmZpZyBWTUFQX1BGTlxcbjEyNzg6XFx0XFx0Ym9vbFxcbjEyNzk6XFx0XFxuMTI4MDpcXHRjb25maWcgQVJDSF9VU0VTX0hJR0hfVk1BX0ZMQUdTXFxuMTI4MTpcXHRcXHRib29sXFxuMTI4MjpcXHRjb25maWcgQVJDSF9IQVNfUEtFWVNcXG4xMjgzOlxcdFxcdGJvb2xcXG4xMjg0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowOTowNS4wNDUwMjY3MzdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMwODY4NTc5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKkRlcGVuZGVuY3kgQ2hhaW4gQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyBkb3duIHRoaXMgZGVwZW5kZW5jeSBjaGFpbi4gYERFVklDRV9QUklWQVRFYCByZWxpZXMgb24gYFpPTkVfREVWSUNFYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIE5vdywgYFpPTkVfREVWSUNFYCBpdHNlbGYgaXMgY29udGluZ2VudCB1cG9uIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIFRoYXQncyBhIHByZXR0eSBjbGVhciBzZXQgb2YgZGVwZW5kZW5jaWVzLiBUbyBiZSBjZXJ0YWluLCBJIHNob3VsZCB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24uIExldCdzIHB1bGwgdXAgdGhlIGBtbS9LY29uZmlnYCBmaWxlIGFuZCBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb25zIHRoZXJlIHRvIGNvbmZpcm0gdGhpcyByZWxhdGlvbnNoaXAgaXMgYXMgSSB0aGluayBpdCBpcy4gSSdsbCBmb2N1cyBvbiBgWk9ORV9ERVZJQ0VgIHdpdGhpbiB0aGF0IGZpbGUsIG1ha2luZyBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb3IgbWlzaW50ZXJwcmV0ZWQgdGhlIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU0NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDk6MDguMzUzNzE2NDE4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDYyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjMwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjMwOlxcdFxcbjEyMzE6XFx0Y29uZmlnIFpPTkVfRE1BMzJcXG4xMjMyOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgRE1BMzIgem9uZVxcXCIgaWYgQVJDSF9IQVNfWk9ORV9ETUFfU0VUXFxuMTIzMzpcXHRcXHRkZXBlbmRzIG9uICFYODZfMzJcXG4xMjM0OlxcdFxcdGRlZmF1bHQgeSBpZiBBUk02NFxcbjEyMzU6XFx0XFxuMTIzNjpcXHRjb25maWcgWk9ORV9ERVZJQ0VcXG4xMjM3OlxcdFxcdGJvb2wgXFxcIkRldmljZSBtZW1vcnkgKHBtZW0sIEhNTSwgZXRjLi4uKSBob3RwbHVnIHN1cHBvcnRcXFwiXFxuMTIzODpcXHRcXHRkZXBlbmRzIG9uIE1FTU9SWV9IT1RQTFVHXFxuMTIzOTpcXHRcXHRkZXBlbmRzIG9uIE1FTU9SWV9IT1RSRU1PVkVcXG4xMjQwOlxcdFxcdGRlcGVuZHMgb24gU1BBUlNFTUVNX1ZNRU1NQVBcXG4xMjQxOlxcdFxcdHNlbGVjdCBYQVJSQVlfTVVMVElcXG4xMjQyOlxcdFxcbjEyNDM6XFx0XFx0aGVscFxcbjEyNDQ6XFx0XFx0ICBEZXZpY2UgbWVtb3J5IGhvdHBsdWcgc3VwcG9ydCBhbGxvd3MgZm9yIGVzdGFibGlzaGluZyBwbWVtLFxcbjEyNDU6XFx0XFx0ICBvciBvdGhlciBkZXZpY2UgZHJpdmVyIGRpc2NvdmVyZWQgbWVtb3J5IHJlZ2lvbnMsIGluIHRoZVxcbjEyNDY6XFx0XFx0ICBtZW1tYXAuIFRoaXMgYWxsb3dzIHBmbl90b19wYWdlKCkgbG9va3VwcyBvZiBvdGhlcndpc2VcXG4xMjQ3OlxcdFxcdCAgXFxcImRldmljZS1waHlzaWNhbFxcXCIgYWRkcmVzc2VzIHdoaWNoIGlzIG5lZWRlZCBmb3IgREFYLCBQQ0lfUDJQRE1BLCBhbmRcXG4xMjQ4OlxcdFxcdCAgREVWSUNFX1BSSVZBVEUgZmVhdHVyZXMgYW1vbmcgb3RoZXJzLlxcbjEyNDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjA4LjM1NTkyODQ1OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODU5Mjg1OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmZpZ3VyYXRpb24gQ29udW5kcnVtcyBhbmQgRGV2aWNlIE1pZ3JhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb25zIGhlcmUsIGFuZCBpdCBzZWVtcyBsaWtlIEkgbmVlZCB0byBlbnN1cmUgdGhlc2UgYXJlIGFsbCBzZXQ6IGBURVNUX0hNTWAsIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGBaT05FX0RFVklDRWAsIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYFNQQVJTRU1FTV9WTUVNTUFQYCwgYW5kIGBERVZJQ0VfTUlHUkFUSU9OYC5cblxuV2FpdCBhIHNlY29uZOKApiBgREVWSUNFX01JR1JBVElPTmAgaXMgYWN0dWFsbHkgZGVwZW5kZW50LiBJdCdzIGRlZmluZWQgYXMgYGRlZl9ib29sIE1JR1JBVElPTiBcdTAwMjZcdTAwMjYgWk9ORV9ERVZJQ0VgLiBIbW0sIGBNSUdSQVRJT05gIGlzIGdlbmVyYWxseSBlbmFibGVkLCBzbyB0aGF0J3MgcHJvYmFibHkgbm90IHRoZSBibG9ja2VyLiBNeSBmb2N1cyBub3cgaXMgdGhhdCBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgSSBhbSBlbmFibGluZyB0aGUgYFpPTkVfREVWSUNFYCBjb25maWd1cmF0aW9uIHRvIGVuYWJsZSB0aGUgYERFVklDRV9NSUdSQVRJT05gIGNvbmZpZ3VyYXRpb24uXG5cbkFscmlnaHQsIG5vdyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbi4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgbWlncmF0aW9uIGxvZ2ljIGl0c2VsZiwgc28gbXkgbmV4dCBzdG9wIGlzIHRvIGV4YW1pbmUgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGluIGBtbS9taWdyYXRlX2RldmljZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZW50aXJlIG1pZ3JhdGlvbiBwcm9jZXNzIGlzIHN1cHBvc2VkIHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTE1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDk6MTIuMjE1MjE3MTY0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9taWdyYXRlX2RldmljZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExOTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExOTA6XFx0XFx0XFx0fVxcbjExOTE6XFx0XFxuMTE5MjpcXHRcXG4xMTkzOlxcdFxcdFxcdGlmIChmb2xpb19pc19kZXZpY2VfcHJpdmF0ZShuZXdmb2xpbykgfHxcXG4xMTk0OlxcdFxcdFxcdCAgICBmb2xpb19pc19kZXZpY2VfY29oZXJlbnQobmV3Zm9saW8pKSB7XFxuMTE5NTpcXHRcXHRcXHRcXHRpZiAobWFwcGluZykge1xcbjExOTY6XFx0XFx0XFx0XFx0XFx0LypcXG4xMTk3OlxcdFxcdFxcdFxcdFxcdCAqIEZvciBub3cgb25seSBzdXBwb3J0IGFub255bW91cyBtZW1vcnkgbWlncmF0aW5nIHRvXFxuMTE5ODpcXHRcXHRcXHRcXHRcXHQgKiBkZXZpY2UgcHJpdmF0ZSBvciBjb2hlcmVudCBtZW1vcnkuXFxuMTE5OTpcXHRcXHRcXHRcXHRcXHQgKlxcbjEyMDA6XFx0XFx0XFx0XFx0XFx0ICogVHJ5IHRvIGdldCByaWQgb2Ygc3dhcCBjYWNoZSBpZiBwb3NzaWJsZS5cXG4xMjAxOlxcdFxcdFxcdFxcdFxcdCAqL1xcbjEyMDI6XFx0XFx0XFx0XFx0XFx0aWYgKCFmb2xpb190ZXN0X2Fub24oZm9saW8pIHx8XFxuMTIwMzpcXHRcXHRcXHRcXHRcXHQgICAgIWZvbGlvX2ZyZWVfc3dhcChmb2xpbykpIHtcXG4xMjA0OlxcdFxcdFxcdFxcdFxcdFxcdHNyY19wZm5zW2ldIFxcdTAwMjY9IH5NSUdSQVRFX1BGTl9NSUdSQVRFO1xcbjEyMDU6XFx0XFx0XFx0XFx0XFx0XFx0Z290byBuZXh0O1xcbjEyMDY6XFx0XFx0XFx0XFx0XFx0fVxcbjEyMDc6XFx0XFxuMTIwODpcXHRcXHRcXHRcXHRcXHQvKlxcbjEyMDk6XFx0XFx0XFx0XFx0XFx0ICogZm9saW9fZnJlZV9zd2FwKCkgcmVtb3ZlZCB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcFxcbjEyMTA6XFx0XFx0XFx0XFx0XFx0ICogY2FjaGUuIFJlZnJlc2ggdGhlIHNhdmVkIG1hcHBpbmcgYmVmb3JlIG1pZ3JhdGlvbi5cXG4xMjExOlxcdFxcdFxcdFxcdFxcdCAqL1xcbjEyMTI6XFx0XFx0XFx0XFx0XFx0bWFwcGluZyA9IGZvbGlvX21hcHBpbmcoZm9saW8pO1xcbjEyMTM6XFx0XFx0XFx0XFx0fVxcbjEyMTQ6XFx0XFx0XFx0fSBlbHNlIGlmIChmb2xpb19pc196b25lX2RldmljZShuZXdmb2xpbykpIHtcXG4xMjE1OlxcdFxcdFxcdFxcdC8qXFxuMTIxNjpcXHRcXHRcXHRcXHQgKiBPdGhlciB0eXBlcyBvZiBaT05FX0RFVklDRSBwYWdlIGFyZSBub3Qgc3VwcG9ydGVkLlxcbjEyMTc6XFx0XFx0XFx0XFx0ICovXFxuMTIxODpcXHRcXHRcXHRcXHRzcmNfcGZuc1tpXSBcXHUwMDI2PSB+TUlHUkFURV9QRk5fTUlHUkFURTtcXG4xMjE5OlxcdFxcdFxcdFxcdGdvdG8gbmV4dDtcXG4xMjIwOlxcdFxcdFxcdH1cXG4xMjIxOlxcdFxcbjEyMjI6XFx0XFx0XFx0QlVHX09OKGZvbGlvX3Rlc3Rfd3JpdGViYWNrKGZvbGlvKSk7XFxuMTIyMzpcXHRcXG4xMjI0OlxcdFxcdFxcdGlmIChtaWdyYXRlIFxcdTAwMjZcXHUwMDI2IG1pZ3JhdGUtXFx1MDAzZWZhdWx0X3BhZ2UgPT0gcGFnZSlcXG4xMjI1OlxcdFxcdFxcdFxcdGV4dHJhX2NudCA9IDE7XFxuMTIyNjpcXHRcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgbnIgXFx1MDAyNlxcdTAwMjYgaSArIGogXFx1MDAzYyBucGFnZXM7IGorKykge1xcbjEyMjc6XFx0XFx0XFx0XFx0Zm9saW8gPSBwYWdlX2ZvbGlvKG1pZ3JhdGVfcGZuX3RvX3BhZ2Uoc3JjX3BmbnNbaStqXSkpO1xcbjEyMjg6XFx0XFx0XFx0XFx0bmV3Zm9saW8gPSBwYWdlX2ZvbGlvKG1pZ3JhdGVfcGZuX3RvX3BhZ2UoZHN0X3BmbnNbaStqXSkpO1xcbjEyMjk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjEyLjIxNTMzMzQ0NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTUzMjI0ODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWlncmF0aW9uIENvZGUgZm9yIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgYXNzb2NpYXRlZCBjb2RlIHBhdGguIEl0J3MgY2xlYXIgdGhhdCB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBwYWdlIG1pZ3JhdGlvbiwgYXJlIGRlZmluaXRlbHkgKnJlYWNoYWJsZSogYW5kIGFjdGl2ZWx5IHVzZWQuIFdlIGhhdmUgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBiZWluZyBjYWxsZWQgZnJvbSB2YXJpb3VzIGxvY2F0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbCwgaW5jbHVkaW5nIGBsaWIvdGVzdF9obW0uY2AgdGhyb3VnaCBgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbWAgYW5kIGBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlYCwgYXMgd2VsbCBhcyBzZXZlcmFsIE5vdXZlYXUgYW5kIFNWTSBmdW5jdGlvbnMgYW5kIHZhcmlvdXMgRFJNIGFuZCBLVk0gZnVuY3Rpb25zLiBUaGlzIHN1Z2dlc3RzIGEgZnVuY3Rpb25hbCBhcmVhIHdpdGhpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudC5cblxuVGhlIHBhdGNoJ3Mgc3RhdGVkIHB1cnBvc2UgaXMgdG8gYWRkcmVzcyBhIGJ1ZyByZWxhdGVkIHRvIGBmb2xpb19mcmVlX3N3YXAoZm9saW8pYCBhbmQgYSBtaXNzaW5nIHJlZnJlc2ggb2YgdGhlIGBtYXBwaW5nYCBwb2ludGVyLiBTaW5jZSB0aGlzIGlzIHRvdWNoaW5nIGNvcmUgTU0gYW5kIGRldmljZSBtaWdyYXRpb24sIHRoaXMgZmVlbHMgbGlrZSBhbiBhcmVhIHJpcGUgZm9yIGZ1enppbmcgYW5kIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gQW55dGltZSB5b3UncmUgZGVhbGluZyB3aXRoIGNhY2hpbmcgYW5kIGZyZWVpbmcsIGVzcGVjaWFsbHkgd2hlbiBpdCBjb21lcyB0byBkZXZpY2UgbWVtb3J5LCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcyBiZWNvbWUgdmVyeSByZWxldmFudC5cblxuTm93LCBsZXQncyBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgd2UgbmVlZCB0byBmb2N1cyBvbi4gVGhlIGZ1bmN0aW9uIGRpcmVjdGx5IG1vZGlmaWVkIGlzIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYnV0IHRoZSBleHBvcnRlZCBmdW5jdGlvbnMgYXJlIHRoZSBvbmVzIHdlIHJlYWxseSB3YW50IHRvIGV4cGxvcmU6IGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AuIEkgc2hvdWxkIGFsc28gbG9vayBhdCBgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9gIGJlY2F1c2UgaXQgY2FsbHMgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYC4gVGhlIHJlbGF0ZWQgZnVuY3Rpb25zIGBtaWdyYXRlX3ZtYV9zZXR1cGAgYW5kIGBtaWdyYXRlX3ZtYV9maW5hbGl6ZWAgYXJlIGFsc28gaW1wb3J0YW50IHRvIGNoZWNrLiBJJ2xsIHN0YXJ0IHdpdGggYSBjbG9zZXIgZXhhbWluYXRpb24gb2YgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AgdG8gc2VlIGhvdyB0aGUgY29kZSBmbG93cyBhcm91bmQgdGhlIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjEwOSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjIxLjE2ODU2MzU5NVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxODU4NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1pZ3JhdGVfZGV2aWNlX3BhZ2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL21pZ3JhdGVfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWlncmF0ZV9kZXZpY2UuYz05NjU9c3RhdGljIHZvaWQgbWlncmF0ZV92bWFfaW5zZXJ0X3BhZ2Uoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlLFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTA5ODpzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5OS1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNDQtLyoqXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjQ1OiAqIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKCkgLSBtaWdyYXRlIG1ldGEtZGF0YSBmcm9tIHNyYyBwYWdlIHRvIGRzdCBwYWdlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjQ2LSAqIEBzcmNfcGZuczogc3JjX3BmbnMgcmV0dXJuZWQgZnJvbSBtaWdyYXRlX2RldmljZV9yYW5nZSgpXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTItICovXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjUzOnZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1NC1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIG5wYWdlcylcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTUte1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1NjpcXHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzLCBOVUxMKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTctfVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1ODpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTktXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNjg9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY5LXtcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzA6XFx0X19taWdyYXRlX2RldmljZV9wYWdlcyhtaWdyYXRlLVxcdTAwM2VzcmMsIG1pZ3JhdGUtXFx1MDAzZWRzdCwgbWlncmF0ZS1cXHUwMDNlbnBhZ2VzLCBtaWdyYXRlKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzEtfVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMzYxPXN0YXRpYyB1bnNpZ25lZCBsb25nIG1pZ3JhdGVfZGV2aWNlX3Bmbl9sb2NrKHVuc2lnbmVkIGxvbmcgcGZuKVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMzkzLSAqIGFsbG9jYXRlIGRlc3RpbmF0aW9uIHBhZ2VzIGFuZCBzdGFydCBjb3B5aW5nIGRhdGEgZnJvbSB0aGUgZGV2aWNlIHRvIENQVVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTM5NDogKiBtZW1vcnkgYmVmb3JlIGNhbGxpbmcgbWlncmF0ZV9kZXZpY2VfcGFnZXMoKS5cXG5tbS9taWdyYXRlX2RldmljZS5jLTEzOTUtICovXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTE0NjE9aW50IG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTE0ODUtXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxNDg2OlxcdG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKFxcdTAwMjZzcmNfcGZuLCBcXHUwMDI2ZHN0X3BmbiwgMSk7XFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDg3LVxcdGlmIChzcmNfcGZuIFxcdTAwMjYgTUlHUkFURV9QRk5fTUlHUkFURSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDk6MjEuMzIwNDMwMjAyWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMzAyMzU0NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBQbGFuIGZvciBEZXZpY2UgUGFnZSBNaWdyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBpbXBsZW1lbnRpbmcgZGV2aWNlIHBhZ2UgbWlncmF0aW9uLCBhbmQgaXQgc2VlbXMgbGlrZSBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCBgbWlncmF0ZV92bWFfcGFnZXNgLCBhbmQgYG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvYCBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgaGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgcHJvcGVybHkgaW5jbHVkZWQgaW4gYEZvY3VzU3ltYm9sc2AuXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gSXQncyBjbGVhciB0aGF0IGBERVZJQ0VfTUlHUkFUSU9OYCBpcyBlc3NlbnRpYWwsIGFzIGl0J3Mgd2hhdCBlbmFibGVzIHRoZSBjb21waWxhdGlvbiBvZiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AuIExvb2tpbmcgY2xvc2VyLCBgREVWSUNFX01JR1JBVElPTmAgaXMgZGVmaW5lZCBhcyBgZGVmX2Jvb2wgTUlHUkFUSU9OIFx1MDAyNlx1MDAyNiBaT05FX0RFVklDRWAuIGBaT05FX0RFVklDRWAsIGluIHR1cm4sIGRlcGVuZHMgb24gYE1FTU9SWV9IT1RQTFVHYCwgYE1FTU9SWV9IT1RSRU1PVkVgLCBhbmQgYFNQQVJTRU1FTV9WTUVNTUFQYC4gR290IGl0LlxuXG5UbyB0ZXN0IHRoaXMgcHJvcGVybHksIEknbSBnb2luZyB0byBuZWVkIGEgZHJpdmVyIHRoYXQgYWN0dWFsbHkgdXNlcyB0aGlzIG1pZ3JhdGlvbiBmdW5jdGlvbmFsaXR5LiBgVEVTVF9ITU1gIGxvb2tzIGxpa2UgYSBwZXJmZWN0IGNhbmRpZGF0ZS4gSW52ZXN0aWdhdGluZyBmdXJ0aGVyLCBgVEVTVF9ITU1gIGRlcGVuZHMgb24gYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBhbmQgYERFVklDRV9QUklWQVRFYC4gQW5kIG9mIGNvdXJzZSwgYERFVklDRV9QUklWQVRFYCBkZXBlbmRzIG9uIGBaT05FX0RFVklDRWAuIFNvLCB0aGUgZW50aXJlIGNvbmZpZ3VyYXRpb24gc3RhY2ssIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBsb29rcyBsaWtlIHRoaXM6XG5cbkkgbmVlZCB0byBlbmFibGU6IGBURVNUX0hNTWAsIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGBaT05FX0RFVklDRWAsIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuXG5cbkknbSBkb3VibGUtY2hlY2tpbmcsIGp1c3QgdG8gYmUgc3VyZSwgdGhhdCBgVEVTVF9ITU1gIGlzIGVub3VnaCB0byB0cmlnZ2VyIHRoZSB1c2FnZSBvZiB0aGVzZSBmdW5jdGlvbnMuIExvb2tzIGxpa2UgaXQsIGJlY2F1c2UgaXQgcHJvdmlkZXMgYSBwc2V1ZG8gZGV2aWNlIGRyaXZlciB0byB0ZXN0IEhNTSwgd2hpY2ggaW4gdHVybiB1c2VzIGBtaWdyYXRlX3ZtYV9wYWdlc2AuXG5cbkknbGwganVzdCBxdWlja2x5IHJldmlldyBgVEVTVF9ITU1gJ3MgS2NvbmZpZyBlbnRyeSBpbiBgbGliL0tjb25maWcuZGVidWdgIHRvIGVuc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1ODUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDk6MjkuNDUwNjcxMDdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODI5ODU1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEVTVF9ITU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9MzM0Nj1jb25maWcgVEVTVF9NRU1JTklUXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzUzLVxcbmxpYi9LY29uZmlnLmRlYnVnOjMzNTQ6Y29uZmlnIFRFU1RfSE1NXFxubGliL0tjb25maWcuZGVidWctMzM1NS1cXHR0cmlzdGF0ZSBcXFwiVGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowOToyOS41Njg5ODAzMTFaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1NTc4NTUzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDpcblxuKipEaWdnaW5nIGludG8gdGhlIEtjb25maWcgZm9yIERldmljZS1TcGVjaWZpYyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMga2VybmVsIG1vZHVsZSwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgYWJvdXQgaXRzIGNvbmZpZ3VyYXRpb24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY2hlY2sgYG1tL0tjb25maWdgLiBJJ20gc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIHRoZSBgREVWSUNFX1BSSVZBVEVgIG9wdGlvbi4gVGhpcyBuYW1lIHJpbmdzIGEgYmVsbCwgYW5kIEkgbmVlZCB0byBjb25maXJtIGl0cyBkZWZpbml0aW9uIGFuZCBhbnkgZGVwZW5kZW5jaWVzLiBJIHN1c3BlY3QgaXQncyBjb250cm9sbGluZyBzb21lIG1lbW9yeSBtYW5hZ2VtZW50IGFzcGVjdHMgc3BlY2lmaWMgdG8gdGhpcyBkZXZpY2UsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBvbiB0aGUgcmlnaHQgdHJhY2sgYW5kIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMgaW4gdGhlIGJ1aWxkIHN5c3RlbSdzIGNvbmZpZ3VyYXRpb24uIEdvdHRhIHF1aWNrbHkgY29uZmlybSB0aGlzIHRvIGF2b2lkIHdhc3RlZCB0aW1lIHRyb3VibGVzaG9vdGluZyBsYXRlci4gQ2hlY2tpbmcgYG1tL0tjb25maWdgIG5vdy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQ1MCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjMyLjUyNDc2ODIyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE2NzcxMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERFVklDRV9QUklWQVRFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz0xMjY0PWNvbmZpZyBHRVRfRlJFRV9SRUdJT05cXG4tLVxcbm1tL0tjb25maWctMTI2Ni1cXG5tbS9LY29uZmlnOjEyNjc6Y29uZmlnIERFVklDRV9QUklWQVRFXFxubW0vS2NvbmZpZy0xMjY4LVxcdGJvb2wgXFxcIlVuYWRkcmVzc2FibGUgZGV2aWNlIG1lbW9yeSAoR1BVIG1lbW9yeSwgLi4uKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDk6MzIuNjI2NDUxNjcyWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDk3OTMyMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFpPTkVfREVWSUNFIEtjb25maWcgT3B0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUga2VybmVsJ3MgbWVtb3J5IG1hbmFnZW1lbnQsIGFuZCBpdCBsb29rcyBsaWtlIGBaT05FX0RFVklDRWAgbWlnaHQgYmUgdGhlIGtleS4gTXkgZmlyc3QgbW92ZSBpcyB0byBqdW1wIGRpcmVjdGx5IGludG8gYG1tL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBhbmQgYW55IGFjY29tcGFueWluZyBjb250ZXh0IGZvciB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gc2VlIHdoYXQgdGhpcyBvcHRpb24gZW5hYmxlcyBvciBkaXNhYmxlcywgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLCBhbmQgcGVyaGFwcyBldmVuIHdoYXQgYXJjaGl0ZWN0dXJlcyBvciBzcGVjaWZpYyB1c2UgY2FzZXMgaXQncyB0aWVkIHRvLiBVbmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGZyb20gd2l0aGluIHRoZSBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUgc29saWQgZm91bmRhdGlvbiBJIG5lZWQgdG8gZ3Jhc3AgaXRzIGltcGxpY2F0aW9ucyBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIG1lbW9yeSBtYW5hZ2VtZW50IGxhbmRzY2FwZS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ3MzcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowOTozNS41NzYyNDg0MTJaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjQ2NTkxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWk9ORV9ERVZJQ0VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTEyMzE9Y29uZmlnIFpPTkVfRE1BMzJcXG4tLVxcbm1tL0tjb25maWctMTIzNS1cXG5tbS9LY29uZmlnOjEyMzY6Y29uZmlnIFpPTkVfREVWSUNFXFxubW0vS2NvbmZpZy0xMjM3LVxcdGJvb2wgXFxcIkRldmljZSBtZW1vcnkgKHBtZW0sIEhNTSwgZXRjLi4uKSBob3RwbHVnIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjM1LjY4ODcyMzE4MloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDI4NjU0NjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipDaGVja2luZyB0aGUgYE1JR1JBVElPTmAgQ29uZmlndXJhdGlvbiBpbiBgbW0vS2NvbmZpZ2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMuIEknbSB0aGlua2luZywgbGV0J3Mgc3RhcnQgYnkgdmVyaWZ5aW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiByZWxhdGVkIHRvIGBNSUdSQVRJT05gIHdpdGhpbiB0aGUgYG1tL0tjb25maWdgIGZpbGUuIFRoaXMgaXMgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBkZXRhaWxzIGFib3V0IGhvdyB0aGUga2VybmVsIGhhbmRsZXMgcGFnZSBtaWdyYXRpb24gZmVhdHVyZXMuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpcyBleHBvc2VkIGFuZCBjb250cm9sbGVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiB0aGUgZGVmYXVsdCBzdGF0ZSBvZiB0aGUgb3B0aW9uLCBhbnkgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUgb24gb3RoZXIgZmVhdHVyZXMgb3Iga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBhbmQgdGhlIGhlbHAgdGV4dCBhc3NvY2lhdGVkIHdpdGggaXQuIFRoaXMgY29udGV4dCBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGFjdCBvbiBtZW1vcnkgbWFuYWdlbWVudC4gS25vd2luZyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgaXMga2V5LCBhcyBJIHJlY2FsbCB0aGVyZSBhcmUgcXVpdGUgYSBmZXcgc3VidGxlIHdheXMgdG8gY29uZmlndXJlIGl0LCBzbyB0aGF0J3Mgd2hlcmUgSSB3aWxsIHN0YXJ0LCBieSBtYWtpbmcgc3VyZSB0aGF0IHRoZSBmZWF0dXJlcyBJIGV4cGVjdCBhcmUgc3RpbGwgYWN0aXZlIGFuZCB3b3JraW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTA0MSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjM5LjcxNzM4MDMxNloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMwNjI0Njc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNSUdSQVRJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTY4NT1jb25maWcgTlVNQV9NSUdSQVRJT05cXG4tLVxcbm1tL0tjb25maWctNjk1LVxcbm1tL0tjb25maWc6Njk2OmNvbmZpZyBNSUdSQVRJT05cXG5tbS9LY29uZmlnLTY5Ny1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjQwLjI0ODAxNDYxMloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODcxMzgzMTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgUmVhc29uaW5nIFJlZ2FyZGluZyBNZW1vcnkgTWFuYWdlbWVudCBhbmQgTWlncmF0aW9uKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGF0IHRoZSBgTUlHUkFUSU9OYCBmZWF0dXJlIGlzIGRpcmVjdGx5IGluZmx1ZW5jZWQgYnkgc2V2ZXJhbCBvdGhlciBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW1zOiBgTlVNQV9CQUxBTkNJTkdgLCBgQ09NUEFDVElPTmAsIGBDTUFgLCBgTUVNT1JZX0hPVFJFTU9WRWAsIGBNRU1PUllfRkFJTFVSRWAsIGFuZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBUaGF0J3MgYSBwcmV0dHkgY2xlYXIgZGVwZW5kZW5jeSBjaGFpbi4gVGhlcmVmb3JlLCBlbmFibGluZyBzb21ldGhpbmcgbGlrZSBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCB3aGljaCBJIGtub3cgaXMgaGVhdmlseSBpbnZvbHZlZCBpbiBtZW1vcnkgb3B0aW1pemF0aW9uLCBvciBgTUVNT1JZX0hPVFJFTU9WRWAsIHdoaWNoIGRlYWxzIHdpdGggZHluYW1pYyBtZW1vcnkgYWRkaXRpb24gYW5kIHJlbW92YWwsIHdpbGwgYXV0b21hdGljYWxseSBwdWxsIGluIGBNSUdSQVRJT05gIGFzIGEgY29yZSBjYXBhYmlsaXR5LiBNYWtlcyBwZXJmZWN0IHNlbnNlIGZyb20gYSBzeXN0ZW1zIHBlcnNwZWN0aXZlOyB0aGVzZSBmZWF0dXJlcyBmcmVxdWVudGx5IHJlcXVpcmUgdGhlIGFiaWxpdHkgdG8gbW92ZSBtZW1vcnkgYXJvdW5kLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJJ20gZ29pbmcgdG8gcXVpY2tseSByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgYE1FTU9SWV9IT1RQTFVHYCBhbmQgYE1FTU9SWV9IT1RSRU1PVkVgLiBUaGVzZSBhcmUgY3JpdGljYWwgd2hlbiBkZWFsaW5nIHdpdGggZHluYW1pYyBtZW1vcnkgYW5kIEkgd2FudCB0byBlbnN1cmUgbXkgbWVudGFsIG1vZGVsIG9mIHRoZWlyIHJlbGF0aW9uc2hpcCB0byBgTUlHUkFUSU9OYCBpcyBjb21wbGV0ZWx5IGFjY3VyYXRlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNwZWNpZmljcyBvZiB0aGUgaG90cGx1ZyBhbmQgaG90cmVtb3ZlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgYXJlIGhhbmRsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MzYyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDk6NDYuMTE5NDAwNTc2WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODgwMDUwMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1FTU9SWV9IT1RQTFVHXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz01MTk9Y29uZmlnIEFSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHXFxuLS1cXG5tbS9LY29uZmlnLTUyMi0jIGV2ZW50dWFsbHksIHdlIGNhbiBoYXZlIHRoaXMgb3B0aW9uIGp1c3QgJ3NlbGVjdCBTUEFSU0VNRU0nXFxubW0vS2NvbmZpZzo1MjM6bWVudWNvbmZpZyBNRU1PUllfSE9UUExVR1xcbm1tL0tjb25maWctNTI0LVxcdGJvb2wgXFxcIk1lbW9yeSBob3RwbHVnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowOTo0Ni4zMDc0MTA0OFoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODU1Mjc3MzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERldmljZSBQYWdlIE1pZ3JhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGJ1ZyB3aXRoaW4gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgLiBTcGVjaWZpY2FsbHksIHRoZSBjb2RlJ3Mgbm90IHByb3Blcmx5IGhhbmRsaW5nIHRoZSBgbWFwcGluZ2AgdmFyaWFibGUgYWZ0ZXIgYSBgZm9saW9fZnJlZV9zd2FwKClgIGNhbGwgcmVtb3ZlcyB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcCBjYWNoZS4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBkZXZpY2UgbWlncmF0aW9uLCB3aGljaCBpcyB3b3J0aCBhIGNsb3NlciBsb29rLlxuXG5UaGUgY29kZSBwYXRocyB0aGF0IGFyZSBhZmZlY3RlZCBhcmUgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSB0aGV5J3JlIHV0aWxpemVkIGJ5IGRldmljZSBkcml2ZXJzLCBhbmQgSSBrbm93IHRoZSBITU0gdGVzdCBkcml2ZXIgYWxzbyBtYWtlcyB1c2Ugb2YgdGhlbS4gVG8gcmVhbGx5IHB1dCB0aGlzIHRocm91Z2ggaXRzIHBhY2VzIHdpdGggZnV6emluZywgSSdsbCBuZWVkIHRvIGVuYWJsZSBhIGZldyBjb25maWd1cmF0aW9uczogYFRFU1RfSE1NYCBvZiBjb3Vyc2UsIGFzIHdlbGwgYXMgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYERFVklDRV9QUklWQVRFYCwgYFpPTkVfREVWSUNFYCwgYW5kIG5hdHVyYWxseSwgYE1FTU9SWV9IT1RQTFVHYCBhbmQgYE1FTU9SWV9IT1RSRU1PVkVgIHdoaWNoIGFyZSBhbHJlYWR5IGluIHBsYWNlLiBXZSBzaG91bGQga2VlcCBhbiBleWUgb24gYFNQQVJTRU1FTV9WTUVNTUFQYCBhbHNvLlxuXG5MZXQncyBsb2cgdGhlIGZ1enppbmcgcmVzdWx0cywgSSdsbCBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODIyLCJPdXRwdXRUb2tlbnMiOjIyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowOTo1NS4xNjI2OTA4MzNaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDgyNzkxMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRFU1RfSE1NXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICAgIFwiREVWSUNFX1BSSVZBVEVcIixcbiAgICBcIlpPTkVfREVWSUNFXCIsXG4gICAgXCJNRU1PUllfSE9UUExVR1wiLFxuICAgIFwiTUVNT1JZX0hPVFJFTU9WRVwiLFxuICAgIFwiU1BBUlNFTUVNX1ZNRU1NQVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtaWdyYXRlX2RldmljZV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV92bWFfcGFnZXNcIixcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIHdoZXJlIHRoZSBgbWFwcGluZ2AgdmFyaWFibGUgaXMgbm90IHJlZnJlc2hlZCBhZnRlciBgZm9saW9fZnJlZV9zd2FwKClgIHJlbW92ZXMgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXAgY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gKGRldmljZSBtaWdyYXRpb24pLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AsIHdoaWNoIGFyZSB1c2VkIGJ5IGRldmljZSBkcml2ZXJzIGFuZCB0aGUgSE1NIHRlc3QgZHJpdmVyLiBGdXp6aW5nIHRoaXMgcmVxdWlyZXMgZW5hYmxpbmcgYFRFU1RfSE1NYCBhbmQgcmVsYXRlZCBtZW1vcnkgaG90cGx1Zy9kZXZpY2UgbWVtb3J5IGNvbmZpZ3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVEVTVF9ITU1cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERVZJQ0VfUFJJVkFURVwiLFxuICAgIFwiWk9ORV9ERVZJQ0VcIixcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCIsXG4gICAgXCJNRU1PUllfSE9UUkVNT1ZFXCIsXG4gICAgXCJTUEFSU0VNRU1fVk1FTU1BUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX3ZtYV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19taWdyYXRlX2RldmljZV9wYWdlc2Agd2hlcmUgdGhlIGBtYXBwaW5nYCB2YXJpYWJsZSBpcyBub3QgcmVmcmVzaGVkIGFmdGVyIGBmb2xpb19mcmVlX3N3YXAoKWAgcmVtb3ZlcyB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcCBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoZGV2aWNlIG1pZ3JhdGlvbikuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgd2hpY2ggYXJlIHVzZWQgYnkgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBITU0gdGVzdCBkcml2ZXIuIEZ1enppbmcgdGhpcyByZXF1aXJlcyBlbmFibGluZyBgVEVTVF9ITU1gIGFuZCByZWxhdGVkIG1lbW9yeSBob3RwbHVnL2RldmljZSBtZW1vcnkgY29uZmlncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlczt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 11:39:32 +0000 UTC FinishedAt: 2026-07-25 12:09:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "b95f03f04d475aa6719d15a636ddf32222d55657", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TEST_HMM", "TRANSPARENT_HUGEPAGE", "DEVICE_PRIVATE", "ZONE_DEVICE", "MEMORY_HOTPLUG", "MEMORY_HOTREMOVE", "SPARSEMEM_VMEMMAP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "b95f03f04d475aa6719d15a636ddf32222d55657", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TEST_HMM", "TRANSPARENT_HUGEPAGE", "DEVICE_PRIVATE", "ZONE_DEVICE", "MEMORY_HOTPLUG", "MEMORY_HOTREMOVE", "SPARSEMEM_VMEMMAP" ], "series_id": "f454c585-ed4f-467b-918e-9fba54a7d476" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "migrate_device_pages", "migrate_vma_pages", "migrate_device_coherent_folio" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OywKICAgICYjMzQ7U1BBUlNFTUVNX1ZNRU1NQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttaWdyYXRlX2RldmljZV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX3ZtYV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19taWdyYXRlX2RldmljZV9wYWdlc2Agd2hlcmUgdGhlIGBtYXBwaW5nYCB2YXJpYWJsZSBpcyBub3QgcmVmcmVzaGVkIGFmdGVyIGBmb2xpb19mcmVlX3N3YXAoKWAgcmVtb3ZlcyB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcCBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoZGV2aWNlIG1pZ3JhdGlvbikuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgd2hpY2ggYXJlIHVzZWQgYnkgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBITU0gdGVzdCBkcml2ZXIuIEZ1enppbmcgdGhpcyByZXF1aXJlcyBlbmFibGluZyBgVEVTVF9ITU1gIGFuZCByZWxhdGVkIG1lbW9yeSBob3RwbHVnL2RldmljZSBtZW1vcnkgY29uZmlncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc5YTQ2OWYxMDk3NzljZTA1MjgxZDFlM2ZkNmNiYTE0MWRiZWZmMTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMjowODoyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9taWdyYXRlX2RldmljZS5jIGIvbW0vbWlncmF0ZV9kZXZpY2UuY1xuaW5kZXggNTU0NzU0ZWIyNmZmMmYuLmFlODk1NzU4YjcyY2UxIDEwMDY0NFxuLS0tIGEvbW0vbWlncmF0ZV9kZXZpY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWlncmF0ZV9kZXZpY2UuY1xuQEAgLTEyMDQsNiAmIzQzOzEyMDQsMTIgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbiBcdFx0XHRcdFx0c3JjX3BmbnNbaV0gXHUwMDI2PSB+TUlHUkFURV9QRk5fTUlHUkFURTtcbiBcdFx0XHRcdFx0Z290byBuZXh0O1xuIFx0XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0XHQvKlxuJiM0MztcdFx0XHRcdCAqIGZvbGlvX2ZyZWVfc3dhcCgpIHJlbW92ZWQgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXBcbiYjNDM7XHRcdFx0XHQgKiBjYWNoZS4gUmVmcmVzaCB0aGUgc2F2ZWQgbWFwcGluZyBiZWZvcmUgbWlncmF0aW9uLlxuJiM0MztcdFx0XHRcdCAqL1xuJiM0MztcdFx0XHRcdG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtcbiBcdFx0XHR9XG4gXHRcdH0gZWxzZSBpZiAoZm9saW9faXNfem9uZV9kZXZpY2UobmV3Zm9saW8pKSB7XG4gXHRcdFx0LypcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VEVTVF9ITU0mIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7REVWSUNFX1BSSVZBVEUmIzM0OywKICAgICYjMzQ7Wk9ORV9ERVZJQ0UmIzM0OywKICAgICYjMzQ7TUVNT1JZX0hPVFBMVUcmIzM0OywKICAgICYjMzQ7TUVNT1JZX0hPVFJFTU9WRSYjMzQ7LAogICAgJiMzNDtTUEFSU0VNRU1fVk1FTU1BUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21pZ3JhdGVfZGV2aWNlX3BhZ2VzJiMzNDssCiAgICAmIzM0O21pZ3JhdGVfdm1hX3BhZ2VzJiMzNDssCiAgICAmIzM0O21pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCB3aGVyZSB0aGUgYG1hcHBpbmdgIHZhcmlhYmxlIGlzIG5vdCByZWZyZXNoZWQgYWZ0ZXIgYGZvbGlvX2ZyZWVfc3dhcCgpYCByZW1vdmVzIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIChkZXZpY2UgbWlncmF0aW9uKS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLCB3aGljaCBhcmUgdXNlZCBieSBkZXZpY2UgZHJpdmVycyBhbmQgdGhlIEhNTSB0ZXN0IGRyaXZlci4gRnV6emluZyB0aGlzIHJlcXVpcmVzIGVuYWJsaW5nIGBURVNUX0hNTWAgYW5kIHJlbGF0ZWQgbWVtb3J5IGhvdHBsdWcvZGV2aWNlIG1lbW9yeSBjb25maWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzlhNDY5ZjEwOTc3OWNlMDUyODFkMWUzZmQ2Y2JhMTQxZGJlZmYxMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDI1IDEyOjA4OjIwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZV9kZXZpY2UuYyBiL21tL21pZ3JhdGVfZGV2aWNlLmMKaW5kZXggNTU0NzU0ZWIyNmZmMmYuLmFlODk1NzU4YjcyY2UxIDEwMDY0NAotLS0gYS9tbS9taWdyYXRlX2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL21pZ3JhdGVfZGV2aWNlLmMKQEAgLTEyMDQsNiAmIzQzOzEyMDQsMTIgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywKIAkJCQkJc3JjX3BmbnNbaV0gJmFtcDs9IH5NSUdSQVRFX1BGTl9NSUdSQVRFOwogCQkJCQlnb3RvIG5leHQ7CiAJCQkJfQomIzQzOwomIzQzOwkJCQkvKgomIzQzOwkJCQkgKiBmb2xpb19mcmVlX3N3YXAoKSByZW1vdmVkIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwCiYjNDM7CQkJCSAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uCiYjNDM7CQkJCSAqLwomIzQzOwkJCQltYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7CiAJCQl9CiAJCX0gZWxzZSBpZiAoZm9saW9faXNfem9uZV9kZXZpY2UobmV3Zm9saW8pKSB7CiAJCQkvKgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDYzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyBhIERldmljZSBNaWdyYXRpb24gUGF0Y2gqKgoKQWxyaWdodCwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2gg4oCTIHNlZW1zIGxpa2UgaXQmIzM5O3MgdG91Y2hpbmcgYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiBTcGVjaWZpY2FsbHksIHRoZXJlJiMzOTtzIGEgbmV3IGxpbmUgYmVpbmcgYWRkZWQ6IGBtYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7YCB3aXRoaW4gdGhlIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBmdW5jdGlvbi4gT2theSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBrbm93IHRoYXQgYGZvbGlvX21hcHBpbmdgIHJldHJpZXZlcyB0aGUgYWRkcmVzcyBzcGFjZSBhc3NvY2lhdGVkIHdpdGggYSBmb2xpbywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgbGluZSBpcyBiZWluZyBpbnRyb2R1Y2VkIGhlcmUgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuCgpUbyBwcm9wZXJseSBncmFzcCB0aGUgcmVhc29uaW5nIGJlaGluZCBpdCwgSSBuZWVkIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIGBtbS9taWdyYXRlX2RldmljZS5jYCByaWdodCBub3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbuKAmXMgb3ZlcmFsbCBnb2FsIHdpdGhpbiB0aGUgZGV2aWNlIG1pZ3JhdGlvbiBwcm9jZXNzIGFuZCwgb2YgY291cnNlLCB0aGUgZ2VuZXJhbCBtZW1vcnkgbWlncmF0aW9uIHNjaGVtZS4gSSYjMzk7bGwgZm9jdXMgb24gdGhlIHN1cnJvdW5kaW5nIGNvZGUsIHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCwgYW5kIHRoZSBvdmVyYWxsIGFsZ29yaXRobS4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBuZXcgYGZvbGlvX21hcHBpbmdgIGNhbGwgZml0cyBpbnRvIHRoZSBjdXJyZW50IG1pZ3JhdGlvbiBmbG93LiBJcyBpdCBmb3Igc2VjdXJpdHk/IFRyYWNraW5nPyBPcHRpbWl6YXRpb24/IERlYnVnZ2luZz8gSXQmIzM5O3MgZXNzZW50aWFsIEkgY29tcHJlaGVuZCB0aGUgZnVsbCBjb250ZXh0IHRvIGFzc2VzcyB0aGlzIGNoYW5nZSYjMzk7cyBpbXBhY3QgYW5kIGVmZmljYWN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fbWlncmF0ZV9kZXZpY2VfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9taWdyYXRlX2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21pZ3JhdGVfZGV2aWNlLmM9OTY1PXN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX2luc2VydF9wYWdlKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTctXG5tbS9taWdyYXRlX2RldmljZS5jOjEwOTg6c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5OS1cdFx0XHRcdHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLCB1bnNpZ25lZCBsb25nIG5wYWdlcyxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNTM9dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU1LXtcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1NjpcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMsIE5VTEwpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU3LX1cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNjg9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjkte1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjcwOlx0X19taWdyYXRlX2RldmljZV9wYWdlcyhtaWdyYXRlLVx1MDAzZXNyYywgbWlncmF0ZS1cdTAwM2Vkc3QsIG1pZ3JhdGUtXHUwMDNlbnBhZ2VzLCBtaWdyYXRlKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3MS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyOAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW5uZXIgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBNaWdyYXRpb24gRnVuY3Rpb24mIzM5O3MgSW52b2NhdGlvbioqCgpSaWdodCwgc28gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGlzIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIsIGFuZCB0aGUgY29kZSBleHBsaWNpdGx5IHN0YXRlcyBpdCYjMzk7cyBjYWxsZWQgYnkgYm90aCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gSSYjMzk7bSB0aGlua2luZy4uLiB3aGF0JiMzOTtzIGRyaXZpbmcgdGhpcz8gV2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3Iga2VybmVsIGZlYXR1cmVzIGFyZSAqZW5hYmxpbmcqIHRoaXMgbWlncmF0aW9uIGZ1bmN0aW9uYWxpdHk/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN3aXRjaGVzIHNvIEkgY2FuIHVuZGVyc3RhbmQgdGhlIHNjZW5hcmlvcyB3aGVyZSB0aGlzIGNvZGUgcGF0aCBpcyBhY3R1YWxseSBhY3RpdmUuIE90aGVyd2lzZSwgSSYjMzk7bSBqdXN0IGxvb2tpbmcgYXQgZGVhZCBjb2RlIGFuZCB0aGF0JiMzOTtzIG5vdCB1c2VmdWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWlncmF0ZV9kZXZpY2VfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbWlncmF0ZV9kZXZpY2UuYz05NjU9c3RhdGljIHZvaWQgbWlncmF0ZV92bWFfaW5zZXJ0X3BhZ2Uoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5Ny1cbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTA5ODpzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk5LVx0XHRcdFx0dW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsIHVuc2lnbmVkIGxvbmcgbnBhZ2VzLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI0NC0vKipcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI0NTogKiBtaWdyYXRlX2RldmljZV9wYWdlcygpIC0gbWlncmF0ZSBtZXRhLWRhdGEgZnJvbSBzcmMgcGFnZSB0byBkc3QgcGFnZVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjQ2LSAqIEBzcmNfcGZuczogc3JjX3BmbnMgcmV0dXJuZWQgZnJvbSBtaWdyYXRlX2RldmljZV9yYW5nZSgpXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjUyLSAqL1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjUzOnZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU0LVx0XHRcdHVuc2lnbmVkIGxvbmcgbnBhZ2VzKVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU1LXtcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1NjpcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMsIE5VTEwpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU3LX1cbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1ODpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1OS1cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNjg9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjkte1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjcwOlx0X19taWdyYXRlX2RldmljZV9wYWdlcyhtaWdyYXRlLVx1MDAzZXNyYywgbWlncmF0ZS1cdTAwM2Vkc3QsIG1pZ3JhdGUtXHUwMDNlbnBhZ2VzLCBtaWdyYXRlKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3MS19XG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMzYxPXN0YXRpYyB1bnNpZ25lZCBsb25nIG1pZ3JhdGVfZGV2aWNlX3Bmbl9sb2NrKHVuc2lnbmVkIGxvbmcgcGZuKVxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTM5My0gKiBhbGxvY2F0ZSBkZXN0aW5hdGlvbiBwYWdlcyBhbmQgc3RhcnQgY29weWluZyBkYXRhIGZyb20gdGhlIGRldmljZSB0byBDUFVcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTM5NDogKiBtZW1vcnkgYmVmb3JlIGNhbGxpbmcgbWlncmF0ZV9kZXZpY2VfcGFnZXMoKS5cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTM5NS0gKi9cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTE0NjE9aW50IG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDg1LVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxNDg2Olx0bWlncmF0ZV9kZXZpY2VfcGFnZXMoXHUwMDI2c3JjX3BmbiwgXHUwMDI2ZHN0X3BmbiwgMSk7XG5tbS9taWdyYXRlX2RldmljZS5jLTE0ODctXHRpZiAoc3JjX3BmbiBcdTAwMjYgTUlHUkFURV9QRk5fTUlHUkFURSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKktjb25maWcgRGl2ZSBmb3IgYG1tL21pZ3JhdGVfZGV2aWNlLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gaW1wbGljYXRpb25zIG9mIGBtbS9taWdyYXRlX2RldmljZS5jYC4gVGhhdCBtZWFucyBkaXZpbmcgc3RyYWlnaHQgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIG9yIHJlbGV2YW50IGZlYXR1cmVzIGNvbnRyb2wgdGhlIGluY2x1c2lvbiBvciBiZWhhdmlvciBvZiB0aGF0IHNwZWNpZmljIGZpbGUuIElzIGl0IHRpZWQgdG8gYSBzcGVjaWZpYyBkZXZpY2UgY2xhc3MsIGEgbWVtb3J5IG1hbmFnZW1lbnQgc3RyYXRlZ3ksIG9yIHBlcmhhcHMgZXZlbiBhIGJyb2FkZXIgc3lzdGVtIGNhcGFiaWxpdHk/IEtub3dpbmcgdGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBpdCBpbnRlcmFjdHMgd2l0aGluIHRoZSBrZXJuZWwgYW5kIGl0cyBicm9hZGVyIGNvbnRleHQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGJyZWFkY3J1bWJzIHRoYXQgd2lsbCBsZWFkIG1lIHRvIHRoZSByZWxldmFudCBzeW1ib2xzIGFuZCBhbnkgcG90ZW50aWFsIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWxseSBkaWdnaW5nIGludG8gdGhpcyBwaWVjZSBvZiBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21pZ3JhdGVfZGV2aWNlLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9NYWtlZmlsZT05OT1vYmotJChDT05GSUdfTlVNQSkgJiM0Mzs9IG1lbW9yeS10aWVycy5vXG5tbS9NYWtlZmlsZToxMDA6b2JqLSQoQ09ORklHX0RFVklDRV9NSUdSQVRJT04pICYjNDM7PSBtaWdyYXRlX2RldmljZS5vXG5tbS9NYWtlZmlsZS0xMDEtb2JqLSQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSAmIzQzOz0gaHVnZV9tZW1vcnkubyBraHVnZXBhZ2VkLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTQ0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93biBpbW1lZGlhdGUgcHJvY2Vzc2luZzoKCioqRGV2aWNlIE1pZ3JhdGlvbiBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IG5lZWRpbmcgYENPTkZJR19ERVZJQ0VfTUlHUkFUSU9OYC4gTGV0JiMzOTtzIGp1c3QgYXNzdW1lIHdlIGRvLCBmb3IgdGhlIHNha2Ugb2YgZXhwbG9yaW5nIGhvdyB0aGlzIHN5c3RlbSBoYXMgYmVlbiBkZXNpZ25lZC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBteSBmaXJzdCBpbnN0aW5jdCwgb2YgY291cnNlLCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBhbmQgdmVyaWZ5IHRoZSBuYXR1cmUgYW5kIGRlcGVuZGVuY2llcyBvZiBgQ09ORklHX0RFVklDRV9NSUdSQVRJT05gLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLiBUaGlzIGlzbiYjMzk7dCBhIGNhc3VhbCBkZWNpc2lvbjsgYSBtaWdyYXRpb24gZmVhdHVyZSBhbG1vc3QgYWx3YXlzIHRvdWNoZXMgc29tZSBmdW5kYW1lbnRhbCBwYXJ0cyBvZiB0aGUgc3lzdGVtIGFuZCBoYXMgc2lnbmlmaWNhbnQgZWZmZWN0cyBvbiBpdHMgYXJjaGl0ZWN0dXJlLiBUaW1lIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBkZXNjcmlwdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZSwgYW5kLCBjcnVjaWFsbHksIGFueSBjb25mbGljdGluZyBvcHRpb25zLiBXZSBuZWVkIHRoZSBmdWxsIHBpY3R1cmUgYmVmb3JlIG1vdmluZyBmb3J3YXJkLiBJJiMzOTttIGFmdGVyIHRoZSBsb3ctZG93bi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERFVklDRV9NSUdSQVRJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9Njk2PWNvbmZpZyBNSUdSQVRJT05cbi0tXG5tbS9LY29uZmlnLTY5OS1cbm1tL0tjb25maWc6NzAwOmNvbmZpZyBERVZJQ0VfTUlHUkFUSU9OXG5tbS9LY29uZmlnLTcwMS1cdGRlZl9ib29sIE1JR1JBVElPTiBcdTAwMjZcdTAwMjYgWk9ORV9ERVZJQ0VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI2OQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogQ09ORklHX0RFVklDRV9NSUdSQVRJT04qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBkZXBlbmRlbmN5IGNoYWluLiBUaGUgY29kZSYjMzk7cyBzYXlpbmcgYENPTkZJR19ERVZJQ0VfTUlHUkFUSU9OYCBoaW5nZXMgb24gYm90aCBgTUlHUkFUSU9OYCBhbmQgYFpPTkVfREVWSUNFYC4gRmluZSwgdGhhdCBtYWtlcyBzZW5zZSBjb25jZXB0dWFsbHk7IGRldmljZSBtaWdyYXRpb24gb2Z0ZW4gaW52b2x2ZXMgbW92aW5nIGRhdGEgYmV0d2VlbiB6b25lcy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgWk9ORV9ERVZJQ0VgIGlzIHNldCwgYmVjYXVzZSB0aGF0JiMzOTtzIHRoZSB1bmtub3duIHZhcmlhYmxlIGhlcmUsIHRoZSB0aGluZyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUuIElzIGBaT05FX0RFVklDRWAgZW5hYmxlZD8gTGV0JiMzOTtzIGNoZWNrIHRoYXQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb25hbGl0eSB0aGF0IHpvbmUgZGV2aWNlIGltcGxpZXMuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBgQ09ORklHX0RFVklDRV9NSUdSQVRJT05gIHdpbGwgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFpPTkVfREVWSUNFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTEyMzE9Y29uZmlnIFpPTkVfRE1BMzJcbi0tXG5tbS9LY29uZmlnLTEyMzUtXG5tbS9LY29uZmlnOjEyMzY6Y29uZmlnIFpPTkVfREVWSUNFXG5tbS9LY29uZmlnLTEyMzctXHRib29sIFwmIzM0O0RldmljZSBtZW1vcnkgKHBtZW0sIEhNTSwgZXRjLi4uKSBob3RwbHVnIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU4NAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgQ2FsbGVycyBvZiBQYWdlIE1pZ3JhdGlvbiBGdW5jdGlvbnMqKgoKT2theSwgc28gd2UgbmVlZCB0byB0cmFjayBkb3duIGFsbCB0aGUgY2FsbCBzaXRlcyBvZiBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLiBJIGtub3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBjcnVjaWFsIGZvciBoYW5kbGluZyBwYWdlIG1pZ3JhdGlvbnMgaW4gc3BlY2lmaWMgY29udGV4dHMsIGxpa2VseSByZWxhdGVkIHRvIGRldmljZSBtZW1vcnkgYW5kIHZpcnR1YWwgbWVtb3J5IGFyZWFzLCByZXNwZWN0aXZlbHkuIEl0JiMzOTtzIHRpbWUgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGludm9rZWQgd2l0aGluIHRoZSBrZXJuZWwgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgcGF0aHMgd2lsbCBnaXZlIG1lIGNvbnRleHQgYXJvdW5kIHRoZSBtaWdyYXRpb24gZmxvd3MsIGFuZCBoZWxwIG1lIGluIHVuZGVyc3RhbmRpbmcgdGhlIG1pZ3JhdGlvbiBpbXBsZW1lbnRhdGlvbnMgYmV0dGVyLiBQZXJoYXBzIEkgYW0gbG9va2luZyB0byBmaXggYSBidWcsIG9yIG9wdGltaXplIHRoZXNlIGNhbGxzLiBJIG5lZWQgdG8ga25vdyB3aHkgYW5kIHdoZW4gdGhvc2UgcGFnZXMgYXJlIGJlaW5nIG1vdmVkLiBUaGlzIGludmVzdGlnYXRpb24gaXMgdGhlIGZpcnN0IHN0ZXAgdG93YXJkIHRoYXQgZ29hbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWlncmF0ZV92bWFfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0PTI2ND11c2UgaGFyZHdhcmUgRE1BIG9yIGRldmljZSBzcGVjaWZpYyBsb2FkL3N0b3JlIGluc3RydWN0aW9ucyB0byBtaWdyYXRlIGRhdGEuXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MjY1OlRoZSBtaWdyYXRlX3ZtYV9zZXR1cCgpLCBtaWdyYXRlX3ZtYV9wYWdlcygpLCBhbmQgbWlncmF0ZV92bWFfZmluYWxpemUoKVxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTI2Ni1mdW5jdGlvbnMgYXJlIGRlc2lnbmVkIHRvIG1ha2UgZHJpdmVycyBlYXNpZXIgdG8gd3JpdGUgYW5kIHRvIGNlbnRyYWxpemUgY29tbW9uXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0PTI5Nz1iZXR3ZWVuIGRldmljZSBkcml2ZXIgc3BlY2lmaWMgY29kZSBhbmQgc2hhcmVkIGNvbW1vbiBjb2RlOlxuLS1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0zNjQtXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MzY1OjQuIGBgbWlncmF0ZV92bWFfcGFnZXMoKWBgXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMzY2LVxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q9MjEyPUhNTSDliIfmjaLliLDnm7TmjqXkvb/nlKggc3RydWN0IHBhZ2Ug55So5LqO6K6+5aSH5YaF5a2Y77yM6L+Z5L2/5b6X5aSn5aSa5pWw5YaF5qC45Luj56CB6Lev5b6E5LiN55+l6YGT5beu5byC44CCXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdC0yMTgt55Sx5LqOIENQVSDml6Dms5Xnm7TmjqXorr/pl67orr7lpIflhoXlrZjvvIzlm6DmraTorr7lpIfpqbHliqjnqIvluo/lv4Xpobvkvb/nlKjnoazku7YgRE1BIOaIluiuvuWkh+eJueWumueahOWKoOi9vS/lrZhcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q6MjE5OuWCqOaMh+S7pOadpei/geenu+aVsOaNruOAgm1pZ3JhdGVfdm1hX3NldHVwKCnjgIFtaWdyYXRlX3ZtYV9wYWdlcygpIOWSjFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdC0yMjAtbWlncmF0ZV92bWFfZmluYWxpemUoKSDlh73mlbDml6jlnKjkvb/pqbHliqjnqIvluo/mm7TmmJPkuo7nvJblhpnlubbpm4bkuK3ot6jpqbHliqjnqIvluo/nmoTpgJrnlKjku6PnoIHjgIJcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0PTI0Mz1kZXZtX21lbXVubWFwX3BhZ2VzKCkg5ZKMIGRldm1fcmVsZWFzZV9tZW1fcmVnaW9uKCkg5b2T6LWE5rqQ5Y+v5Lul57uR5a6a5YiwIGBgc3RydWN0IGRldmljZWBgLlxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjk3LVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdDoyOTg6NC4gYGBtaWdyYXRlX3ZtYV9wYWdlcygpYGBcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjk5LVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNDktICogMS4ga3ZtLVx1MDAzZXNyY3UgLSBQcm90ZWN0cyBLVk0gbWVtc2xvdHNcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmM6NTA6ICogMi4ga3ZtLVx1MDAzZW1tLVx1MDAzZW1tYXBfbG9jayAtIGZpbmRfdm1hLCBtaWdyYXRlX3ZtYV9wYWdlcyBhbmQgaGVscGVycywga3NtX21hZHZpc2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNTEtICogMy4ga3ZtLVx1MDAzZWFyY2gudXZtZW1fbG9jayAtIHByb3RlY3RzIHJlYWQvd3JpdGVzIHRvIHV2bWVtIHNsb3RzIHRodXMgYWN0aW5nXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYz01MTM9c3RhdGljIGludCBfX2t2bXBwY19zdm1fcGFnZV9vdXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01NzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jOjU3OTpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTU4MC1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jPTc0MD1zdGF0aWMgaW50IGt2bXBwY19zdm1fcGFnZV9pbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTc4Ny1cdCptaWcuZHN0ID0gbWlncmF0ZV9wZm4ocGFnZV90b19wZm4oZHBhZ2UpKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmM6Nzg4Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlnKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNzg5LW91dF9maW5hbGl6ZTpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jPTM5ND1zdm1fbWlncmF0ZV92bWFfdG9fdnJhbShzdHJ1Y3Qga2ZkX25vZGUgKm5vZGUsIHN0cnVjdCBzdm1fcmFuZ2UgKnByYW5nZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTQ1MS1cdHIgPSBzdm1fbWlncmF0ZV9jb3B5X3RvX3ZyYW0obm9kZSwgcHJhbmdlLCBcdTAwMjZtaWdyYXRlLCBcdTAwMjZtZmVuY2UsIHNjcmF0Y2gsIHR0bV9yZXNfb2Zmc2V0KTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM6NDUyOlx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlncmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTQ1My1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jPTY5Mz1zdm1fbWlncmF0ZV92bWFfdG9fcmFtKHN0cnVjdCBrZmRfbm9kZSAqbm9kZSwgc3RydWN0IHN2bV9yYW5nZSAqcHJhbmdlLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNzU1LVx0XHRcdFx0ICAgIHNjcmF0Y2gsIG5wYWdlcyk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjc1NjpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZ3JhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy03NTctXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9NjE2PWludCBkcm1fcGFnZW1hcF9taWdyYXRlX3RvX2Rldm1lbShzdHJ1Y3QgZHJtX3BhZ2VtYXBfZGV2bWVtICpkZXZtZW1fYWxsb2NhdGlvbixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy04MTItZXJyX2Fib3J0ZWRfbWlncmF0aW9uOlxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6ODEzOlx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlncmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy04MTQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTIxMT1zdGF0aWMgaW50IF9fZHJtX3BhZ2VtYXBfbWlncmF0ZV90b19yYW0oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2YXMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTMwNC1cdFx0ZHJtX3BhZ2VtYXBfbWlncmF0aW9uX3VubG9ja19wdXRfcGFnZXMobnBhZ2VzLCBtaWdyYXRlLmRzdCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzoxMzA1Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlncmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzA2LVx0bWlncmF0ZV92bWFfZmluYWxpemUoXHUwMDI2bWlncmF0ZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM9MTgzPXN0YXRpYyB2bV9mYXVsdF90IG5vdXZlYXVfZG1lbV9taWdyYXRlX3RvX3JhbShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yNjctXHRub3V2ZWF1X2ZlbmNlX25ldyhcdTAwMjZmZW5jZSwgZG1lbS1cdTAwM2VtaWdyYXRlLmNoYW4pO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6MjY4Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yNjktXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcdTAwMjZmZW5jZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM9NzgzPXN0YXRpYyB2b2lkIG5vdXZlYXVfZG1lbV9taWdyYXRlX2NodW5rKHN0cnVjdCBub3V2ZWF1X2RybSAqZHJtLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTgwOS1cdG5vdXZlYXVfZmVuY2VfbmV3KFx1MDAyNmZlbmNlLCBkcm0tXHUwMDNlZG1lbS1cdTAwM2VtaWdyYXRlLmNoYW4pO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6ODEwOlx0bWlncmF0ZV92bWFfcGFnZXMoYXJncyk7XG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy04MTEtXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcdTAwMjZmZW5jZSk7XG4tLVxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9MTU4PXN0cnVjdCBtaWdyYXRlX3ZtYSB7XG4tLVxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTY1LVx0ICogbWlncmF0ZV92bWFfc2V0dXAoKSwgYW5kIG11c3Qgbm90IGNoYW5nZSB0aGUgZHN0IGFycmF5IGFmdGVyXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaDoxNjY6XHQgKiBtaWdyYXRlX3ZtYV9wYWdlcygpIHJldHVybnMuXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xNjctXHQgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaD0xOTM9aW50IG1pZ3JhdGVfdm1hX3NldHVwKHN0cnVjdCBtaWdyYXRlX3ZtYSAqYXJncyk7XG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaDoxOTQ6dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpO1xuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTk1LXZvaWQgbWlncmF0ZV92bWFfZmluYWxpemUoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKTtcbi0tXG5saWIvdGVzdF9obW0uYz0xMDA0PXN0YXRpYyB2bV9mYXVsdF90IGRtaXJyb3JfZGV2bWVtX2ZhdWx0X2FsbG9jX2FuZF9jb3B5KHN0cnVjdCBtaWdyYXRlX3ZtYSAqYXJncyxcbi0tXG5saWIvdGVzdF9obW0uYy0xMDc1LVx0XHRcdFx0XHQvKiBDbGVhciByZW1haW5pbmcgZHN0IGVudHJpZXMgdG8gYXZvaWRcbmxpYi90ZXN0X2htbS5jOjEwNzY6XHRcdFx0XHRcdCAqIG1pZ3JhdGVfdm1hX3BhZ2VzL2ZpbmFsaXplKCkgdXNpbmdcbmxpYi90ZXN0X2htbS5jLTEwNzctXHRcdFx0XHRcdCAqIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxuLS1cbmxpYi90ZXN0X2htbS5jPTExMjA9c3RhdGljIGludCBkbWlycm9yX21pZ3JhdGVfdG9fc3lzdGVtKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxuLS1cbmxpYi90ZXN0X2htbS5jLTExNzUtXG5saWIvdGVzdF9obW0uYzoxMTc2Olx0XHRtaWdyYXRlX3ZtYV9wYWdlcyhcdTAwMjZhcmdzKTtcbmxpYi90ZXN0X2htbS5jLTExNzctXHRcdGNtZC1cdTAwM2VjcGFnZXMgJiM0Mzs9IGRtaXJyb3Jfc3VjY2Vzc2Z1bF9taWdyYXRlZF9wYWdlcyhcdTAwMjZhcmdzKTtcbi0tXG5saWIvdGVzdF9obW0uYz0xMTg5PXN0YXRpYyBpbnQgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcbi0tXG5saWIvdGVzdF9obW0uYy0xMjQ4LVx0XHRkbWlycm9yX21pZ3JhdGVfYWxsb2NfYW5kX2NvcHkoXHUwMDI2YXJncywgZG1pcnJvcik7XG5saWIvdGVzdF9obW0uYzoxMjQ5Olx0XHRtaWdyYXRlX3ZtYV9wYWdlcyhcdTAwMjZhcmdzKTtcbmxpYi90ZXN0X2htbS5jLTEyNTAtXHRcdGRtaXJyb3JfbWlncmF0ZV9maW5hbGl6ZV9hbmRfbWFwKFx1MDAyNmFyZ3MsIGRtaXJyb3IpO1xuLS1cbmxpYi90ZXN0X2htbS5jPTE2NTM9c3RhdGljIHZtX2ZhdWx0X3QgZG1pcnJvcl9kZXZtZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxubGliL3Rlc3RfaG1tLmMtMTcxOC1cdH1cbmxpYi90ZXN0X2htbS5jOjE3MTk6XHRtaWdyYXRlX3ZtYV9wYWdlcyhcdTAwMjZhcmdzKTtcbmxpYi90ZXN0X2htbS5jLTE3MjAtXHQvKlxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9NjU5PXN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX3VubWFwKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTY5OS0gKiB0aGlzIGNhbiBzdGlsbCBmYWlsLCBhbmQgdGh1cyBpbnNpZGUgdGhlIGRldmljZSBkcml2ZXIgeW91IG11c3QgY2hlY2sgaWYgdGhlXG5tbS9taWdyYXRlX2RldmljZS5jOjcwMDogKiBtaWdyYXRpb24gd2FzIHN1Y2Nlc3NmdWwgZm9yIHRob3NlIGVudHJpZXMgYWZ0ZXIgY2FsbGluZyBtaWdyYXRlX3ZtYV9wYWdlcygpLFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDEtICoganVzdCBsaWtlIGZvciByZWd1bGFyIG1pZ3JhdGlvbi5cbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzAyLSAqXG5tbS9taWdyYXRlX2RldmljZS5jOjcwMzogKiBBZnRlciB0aGF0LCB0aGUgY2FsbGVycyBtdXN0IGNhbGwgbWlncmF0ZV92bWFfcGFnZXMoKSB0byBnbyBvdmVyIGVhY2ggZW50cnlcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzA0LSAqIGluIHRoZSBzcmMgYXJyYXkgdGhhdCBoYXMgdGhlIE1JR1JBVEVfUEZOX1ZBTElEIGFuZCBNSUdSQVRFX1BGTl9NSUdSQVRFIGZsYWdcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzA1LSAqIHNldC4gSWYgdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgaW4gZHN0IGFycmF5IGhhcyBNSUdSQVRFX1BGTl9WQUxJRCBmbGFnIHNldCxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzA2OiAqIHRoZW4gbWlncmF0ZV92bWFfcGFnZXMoKSB0byBtaWdyYXRlIHN0cnVjdCBwYWdlIGluZm9ybWF0aW9uIGZyb20gdGhlIHNvdXJjZVxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDctICogc3RydWN0IHBhZ2UgdG8gdGhlIGRlc3RpbmF0aW9uIHN0cnVjdCBwYWdlLiAgSWYgaXQgZmFpbHMgdG8gbWlncmF0ZSB0aGVcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTcxNC0gKlxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MTU6ICogT25jZSBtaWdyYXRlX3ZtYV9wYWdlcygpIHJldHVybnMgdGhlIGNhbGxlciBtYXkgaW5zcGVjdCB3aGljaCBwYWdlcyB3ZXJlXG5tbS9taWdyYXRlX2RldmljZS5jLTcxNi0gKiBzdWNjZXNzZnVsbHkgbWlncmF0ZWQsIGFuZCB3aGljaCB3ZXJlIG5vdC4gIFN1Y2Nlc3NmdWxseSBtaWdyYXRlZCBwYWdlcyB3aWxsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy03MTgtICpcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzE5OiAqIEl0IGlzIHNhZmUgdG8gdXBkYXRlIGRldmljZSBwYWdlIHRhYmxlIGFmdGVyIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgYmVjYXVzZVxubW0vbWlncmF0ZV9kZXZpY2UuYy03MjAtICogYm90aCBkZXN0aW5hdGlvbiBhbmQgc291cmNlIHBhZ2UgYXJlIHN0aWxsIGxvY2tlZCwgYW5kIHRoZSBtbWFwX2xvY2sgaXMgaGVsZFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTA5OD1zdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI0OS0gKlxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjUwOiAqIEVxdWl2YWxlbnQgdG8gbWlncmF0ZV92bWFfcGFnZXMoKS4gVGhpcyBpcyBjYWxsZWQgdG8gbWlncmF0ZSBzdHJ1Y3QgcGFnZVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjUxLSAqIG1ldGEtZGF0YSBmcm9tIHNvdXJjZSBzdHJ1Y3QgcGFnZSB0byBkZXN0aW5hdGlvbi5cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNTg9RVhQT1JUX1NZTUJPTChtaWdyYXRlX2RldmljZV9wYWdlcyk7XG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjYwLS8qKlxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjYxOiAqIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgLSBtaWdyYXRlIG1ldGEtZGF0YSBmcm9tIHNyYyBwYWdlIHRvIGRzdCBwYWdlXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjItICogQG1pZ3JhdGU6IG1pZ3JhdGUgc3RydWN0IGNvbnRhaW5pbmcgYWxsIG1pZ3JhdGlvbiBpbmZvcm1hdGlvblxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Ny0gKi9cbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2ODp2b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2OS17XG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjcxLX1cbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3MjpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfdm1hX3BhZ2VzKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk4OAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgUGF0Y2ggaW4gdGhlIExpbnV4IEtlcm5lbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IHRoZSBjb2RlIGFkZGVkIHdpdGhpbiBgX19taWdyYXRlX2RldmljZV9wYWdlc2AuIEl0IHNlZW1zIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgdGhpcyBzbmlwcGV0OgoKYGBgYwoJCQkJLyoKCQkJCSAqIGZvbGlvX2ZyZWVfc3dhcCgpIHJlbW92ZWQgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXAKCQkJCSAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uCgkJCQkgKi8KCQkJCW1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTsKYGBgCgpUaGlzIGlzIHR1Y2tlZCBhd2F5IGluc2lkZSBgX19taWdyYXRlX2RldmljZV9wYWdlc2AsIHdoaWNoIG1ha2VzIG1lIGltbWVkaWF0ZWx5IHRoaW5rIGFib3V0IHRoZSBjb250ZXh0LiBSaWdodCwgc28gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGlzIGNhbGxlZCBieSBib3RoIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhvc2UgZnVuY3Rpb25zLiBUaGF0JiMzOTtzIGEga2V5IHBhcnQgb2YgdGhlIHB1enpsZS4gTm93LCBkaWdnaW5nIGRlZXBlciwgSSBzZWUgdGhhdCBgbWlncmF0ZV92bWFfcGFnZXNgIGlzIGNhbGxlZCBmcm9tIGBsaWIvdGVzdF9obW0uY2AuCgpUaGF0JiMzOTtzIGludGVyZXN0aW5nLiBgbGliL3Rlc3RfaG1tLmNgLi4uIHRoYXQmIzM5O3MgdGhlIHRlc3QgZHJpdmVyIGZvciBITU0sIG9yIEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQuIEhNTSBkZWFscyB3aXRoIGEgcHJldHR5IHNwZWNpZmljIHNldCBvZiBoYXJkd2FyZSBhbmQgbWVtb3J5IGNoYXJhY3RlcmlzdGljcywgc28gY2hhbmdlcyBpbiB0aGF0IGFyZWEgYXJlIHBvdGVudGlhbGx5IGhpZ2ggaW1wYWN0IGFuZCBuZWVkIHRvIGJlIGxvb2tlZCBhdCBjbG9zZWx5LgoKU28gbm93IEkgaGF2ZSB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJIG5lZWQgdG8gc2VlIGlmIHRoYXQgcGFydGljdWxhciB0ZXN0IG1vZHVsZSBpcyBlbmFibGVkIGJ5IHNvbWUgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gSWYgaXQgaXMsIHRoZW4gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhdGNoIGNvdWxkIGJlIHF1aXRlIGltcG9ydGFudCBmb3IgdXNlcnMgd2l0aCBITU0tZW5hYmxlZCBzeXN0ZW1zLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgcGF0Y2ggY2F1c2VzIGFuIGlzc3VlIHRoYXQgY2FuIGJlIHRyYWNlZCB0byBjb25maWd1cmF0aW9uIG9mIHRoYXQgdGVzdCBoYXJuZXNzLiBUaGF0IHdvdWxkIGJlIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBhbmQgcG90ZW50aWFsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGVzdF9obW0ubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvTWFrZWZpbGU9MTAyPW9iai0kKENPTkZJR19URVNUX0xPQ0tVUCkgJiM0Mzs9IHRlc3RfbG9ja3VwLm9cbmxpYi9NYWtlZmlsZToxMDM6b2JqLSQoQ09ORklHX1RFU1RfSE1NKSAmIzQzOz0gdGVzdF9obW0ub1xubGliL01ha2VmaWxlLTEwNC1vYmotJChDT05GSUdfVEVTVF9GUkVFX1BBR0VTKSAmIzQzOz0gdGVzdF9mcmVlX3BhZ2VzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODYyMAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBUZXN0IEhNTSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBgQ09ORklHX1RFU1RfSE1NYCBoYXMgdHJpZ2dlcmVkIHRoZSBidWlsZCBvZiBgbGliL3Rlc3RfaG1tLmNgLiBUaGF0JiMzOTtzIGEgY2xlYXIgc2lnbmFsLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqIGFuZCAqaG93Ki4gVGltZSB0byBkaWcgaW50byB0aGUgS2NvbmZpZy4gSSB3YW50IHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgZGVmYXVsdCB2YWx1ZSwgYW5kIGFueSBhc3NvY2lhdGVkIGhlbHAgdGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVuZGVkIHVzZSBjYXNlIG9mIHRoaXMgdGVzdCBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIGl0JiMzOTtzIGxpa2VseSB0byBiZSBlbmFibGVkLiBJcyB0aGlzIGEgY29yZSBmdW5jdGlvbmFsaXR5IHRlc3QsIG9yIGlzIGl0IG1vcmUgb2YgYSBkZXZlbG9wZXIgc2FuaXR5IGNoZWNrPyBBcmUgdGhlcmUgb3RoZXIgcmVsYXRlZCBvcHRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mIHdpdGhpbiB0aGUgSE1NIHN1YnN5c3RlbT8gSSYjMzk7bGwgcHJvYmFibHkgYmUgYWJsZSB0byBnbGVhbiB0aGlzIGluZm9ybWF0aW9uIGRpcmVjdGx5IGZyb20gdGhlIEtjb25maWcgZmlsZSBmb3IgYHRlc3RfaG1tYC4gVGltZSB0byB0cmFjayBpdCBkb3duLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBwbGFjZSBvZiB0ZXN0IHdpdGhpbiB0aGUgYmlnZ2VyIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRFU1RfSE1NJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWc9MzM0Nj1jb25maWcgVEVTVF9NRU1JTklUXG4tLVxubGliL0tjb25maWcuZGVidWctMzM1My1cbmxpYi9LY29uZmlnLmRlYnVnOjMzNTQ6Y29uZmlnIFRFU1RfSE1NXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzU1LVx0dHJpc3RhdGUgXCYjMzQ7VGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5ODAKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGZvciBgVEVTVF9ITU1gKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgYFRFU1RfSE1NYCAtIHdoYXQmIzM5O3MgdGhpcyB0aGluZyByZWx5aW5nIG9uPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmN5IGdyYXBoLiBJcyBpdCBhIHN0YW5kYWxvbmUgbW9kdWxlLCBvciBpcyBpdCBkcmF3aW5nIG9uIG90aGVyIGNvbXBvbmVudHM/IElzIGl0IGhpdHRpbmcgdGhlIGBITU1gIG9iamVjdCBkZWZpbmVkIGluIG15IG93biBsaWJyYXJ5LCBvciB0aGUgb25lIGZyb20gdGhlIHBhcGVyPyBBcmUgdGhlcmUgZXh0ZXJuYWwgbGlicmFyaWVzIGluIHRoZSBtaXg/IEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgYnVpbGRpbmcgYmxvY2tzIGFuZCBhbnkgcG90ZW50aWFsICYjMzk7Z290Y2hhcyYjMzk7IHRoYXQgY291bGQgdHJpcCBtZSB1cC4gVGhpcyBhbmFseXNpcyB3aWxsIGd1aWRlIG15IG5leHQgc3RlcHM6IGRlYnVnZ2luZywgcmVmYWN0b3JpbmcsIG9yIHNpbXBseSB1bmRlcnN0YW5kaW5nIGhvdyBgVEVTVF9ITU1gIGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBwcm9qZWN0LiBBIHF1aWNrIGRlcGVuZGVuY3kgc2NhbiBpcyBjcnVjaWFsIGJlZm9yZSBJIGV2ZW4gdGhpbmsgYWJvdXQgdG91Y2hpbmcgdGhlIGNvZGUgaXRzZWxmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVEVTVF9ITU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTMzNDY9Y29uZmlnIFRFU1RfTUVNSU5JVFxuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTMzNTMtXG5saWIvS2NvbmZpZy5kZWJ1ZzozMzU0OmNvbmZpZyBURVNUX0hNTVxubGliL0tjb25maWcuZGVidWctMzM1NS1cdHRyaXN0YXRlIFwmIzM0O1Rlc3QgSE1NIChIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50KVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mjk0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgc3BlY2lmaWMgYWJvdXQgdGhlIGRlYnVnZ2luZyBjb25maWd1cmF0aW9uIGZvciB0aGlzIHByb2plY3QuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSByZWxldmFudCBzZXR0aW5ncyBhcmUgbGlrZWx5IGxvY2F0ZWQgd2l0aGluIHRoZSBgS2NvbmZpZy5kZWJ1Z2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDMzNTQuIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IHRoYXQgZmlsZSBsb2NhdGlvbiBkaXJlY3RseS4gTGV0JiMzOTtzIHNlZSB3aGF0IHNlY3JldHMgaXQgaG9sZHMuIEhvcGVmdWxseSwgdGhpcyBzZWN0aW9uIHdpbGwgc2hlZCBzb21lIGxpZ2h0IG9uIHRoZSBjb25maWd1cmF0aW9uIEkmIzM5O20gdHJ5aW5nIHRvIGRlY2lwaGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzUwOlx0XHQgIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byB0ZXN0IGluaXRfb25fYWxsb2MgYW5kIGluaXRfb25fZnJlZSBmZWF0dXJlcy5cbjMzNTE6XHRcbjMzNTI6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbjMzNTM6XHRcbjMzNTQ6XHRjb25maWcgVEVTVF9ITU1cbjMzNTU6XHRcdHRyaXN0YXRlIFwmIzM0O1Rlc3QgSE1NIChIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50KVwmIzM0O1xuMzM1NjpcdFx0ZGVwZW5kcyBvbiBUUkFOU1BBUkVOVF9IVUdFUEFHRVxuMzM1NzpcdFx0ZGVwZW5kcyBvbiBERVZJQ0VfUFJJVkFURVxuMzM1ODpcdFx0c2VsZWN0IEhNTV9NSVJST1JcbjMzNTk6XHRcdHNlbGVjdCBNTVVfTk9USUZJRVJcbjMzNjA6XHRcdGhlbHBcbjMzNjE6XHRcdCAgVGhpcyBpcyBhIHBzZXVkbyBkZXZpY2UgZHJpdmVyIHNvbGVseSBmb3IgdGVzdGluZyBITU0uXG4zMzYyOlx0XHQgIFNheSBNIGhlcmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlIEhNTSB0ZXN0IG1vZHVsZS5cbjMzNjM6XHRcdCAgRG9pbmcgc28gd2lsbCBhbGxvdyB5b3UgdG8gcnVuIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Qvdm0vaG1tLXRlc3RzLlxuMzM2NDpcdFxuMzM2NTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuMzM2NjpcdFxuMzM2NzpcdGNvbmZpZyBURVNUX0ZSRUVfUEFHRVNcbjMzNjg6XHRcdHRyaXN0YXRlIFwmIzM0O1Rlc3QgZnJlZWluZyBwYWdlc1wmIzM0O1xuMzM2OTpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NzYyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIERlcGVuZGVuY2llcyBpbiB0aGUgQ29kZWJhc2UqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBURVNUX0hNTWAgaGVyZSwgYW5kIGl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgcHVsbGluZyBpbiBkZXBlbmRlbmNpZXMuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQgcmVsaWVzIG9uIGJvdGggYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBhbmQgYERFVklDRV9QUklWQVRFYC4gR2l2ZW4gdGhhdCB0aGVzZSBhcmUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHJlbGF0aW9uc2hpcCBiZXR0ZXIuIE15IHByaW1hcnkgY29uY2VybiByaWdodCBub3cgaXMgd2l0aCBgREVWSUNFX1BSSVZBVEVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24gY29udHJvbHMsIHNvIEkmIzM5O2xsIGNoZWNrIGludG8gaXQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERFVklDRV9QUklWQVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTEyNjQ9Y29uZmlnIEdFVF9GUkVFX1JFR0lPTlxuLS1cbm1tL0tjb25maWctMTI2Ni1cbm1tL0tjb25maWc6MTI2Nzpjb25maWcgREVWSUNFX1BSSVZBVEVcbm1tL0tjb25maWctMTI2OC1cdGJvb2wgXCYjMzQ7VW5hZGRyZXNzYWJsZSBkZXZpY2UgbWVtb3J5IChHUFUgbWVtb3J5LCAuLi4pXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDQ3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBoYW5kbGVkLiBMZXQmIzM5O3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiBgbW0vS2NvbmZpZ2AuIEl0JiMzOTtzIGEga2V5IGZpbGUgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgYW5kIGFyb3VuZCBsaW5lIDEyNjcgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgcGxhY2UgdG8gYmVnaW4uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb3IgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGZvciB3aGF0ZXZlciBvcHRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gS25vd2luZyB0aGUgc3BlY2lmaWMgbGluZSByYW5nZSBoZWxwcyBtZSBuYXZpZ2F0ZSBlZmZpY2llbnRseSBhbmQgYXZvaWQgZ2V0dGluZyBsb3N0IGluIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEkmIzM5O20gaG9waW5nIGl0JiMzOTtzIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgZGVmaW5pdGlvbiDigJMgbWF5YmUgYSBzaW1wbGUgYGNvbmZpZ2AgYmxvY2sgd2l0aCBzb21lIGRlcGVuZGVuY2llcyBvciBhIHRyaXN0YXRlIG9wdGlvbi4gT3IgcGVyaGFwcyB0aGlzIGFyZWEgZGVhbHMgd2l0aCBob3cgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIHNwZWNpZmljIG9wdGlvbiBpcyBjb25maWd1cmVkLiBFaXRoZXIgd2F5LCB0aGlzIHNob3VsZCBiZSB0aGUgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiYjMzk7cyBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTI2NTpcdFx0Ym9vbFxuMTI2NjpcdFxuMTI2NzpcdGNvbmZpZyBERVZJQ0VfUFJJVkFURVxuMTI2ODpcdFx0Ym9vbCBcJiMzNDtVbmFkZHJlc3NhYmxlIGRldmljZSBtZW1vcnkgKEdQVSBtZW1vcnksIC4uLilcJiMzNDtcbjEyNjk6XHRcdGRlcGVuZHMgb24gWk9ORV9ERVZJQ0VcbjEyNzA6XHRcdHNlbGVjdCBHRVRfRlJFRV9SRUdJT05cbjEyNzE6XHRcbjEyNzI6XHRcdGhlbHBcbjEyNzM6XHRcdCAgQWxsb3dzIGNyZWF0aW9uIG9mIHN0cnVjdCBwYWdlcyB0byByZXByZXNlbnQgdW5hZGRyZXNzYWJsZSBkZXZpY2VcbjEyNzQ6XHRcdCAgbWVtb3J5OyBpLmUuLCBtZW1vcnkgdGhhdCBpcyBvbmx5IGFjY2Vzc2libGUgZnJvbSB0aGUgZGV2aWNlIChvclxuMTI3NTpcdFx0ICBncm91cCBvZiBkZXZpY2VzKS4gWW91IGxpa2VseSBhbHNvIHdhbnQgdG8gc2VsZWN0IEhNTV9NSVJST1IuXG4xMjc2Olx0XG4xMjc3Olx0Y29uZmlnIFZNQVBfUEZOXG4xMjc4Olx0XHRib29sXG4xMjc5Olx0XG4xMjgwOlx0Y29uZmlnIEFSQ0hfVVNFU19ISUdIX1ZNQV9GTEFHU1xuMTI4MTpcdFx0Ym9vbFxuMTI4MjpcdGNvbmZpZyBBUkNIX0hBU19QS0VZU1xuMTI4MzpcdFx0Ym9vbFxuMTI4NDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU0NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipEZXBlbmRlbmN5IENoYWluIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyBkb3duIHRoaXMgZGVwZW5kZW5jeSBjaGFpbi4gYERFVklDRV9QUklWQVRFYCByZWxpZXMgb24gYFpPTkVfREVWSUNFYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIE5vdywgYFpPTkVfREVWSUNFYCBpdHNlbGYgaXMgY29udGluZ2VudCB1cG9uIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIFRoYXQmIzM5O3MgYSBwcmV0dHkgY2xlYXIgc2V0IG9mIGRlcGVuZGVuY2llcy4gVG8gYmUgY2VydGFpbiwgSSBzaG91bGQgdmVyaWZ5IHRoZSBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3MgcHVsbCB1cCB0aGUgYG1tL0tjb25maWdgIGZpbGUgYW5kIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbnMgdGhlcmUgdG8gY29uZmlybSB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhcyBJIHRoaW5rIGl0IGlzLiBJJiMzOTtsbCBmb2N1cyBvbiBgWk9ORV9ERVZJQ0VgIHdpdGhpbiB0aGF0IGZpbGUsIG1ha2luZyBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9yIG1pc2ludGVycHJldGVkIHRoZSBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjMwOlx0XG4xMjMxOlx0Y29uZmlnIFpPTkVfRE1BMzJcbjEyMzI6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBETUEzMiB6b25lXCYjMzQ7IGlmIEFSQ0hfSEFTX1pPTkVfRE1BX1NFVFxuMTIzMzpcdFx0ZGVwZW5kcyBvbiAhWDg2XzMyXG4xMjM0Olx0XHRkZWZhdWx0IHkgaWYgQVJNNjRcbjEyMzU6XHRcbjEyMzY6XHRjb25maWcgWk9ORV9ERVZJQ0VcbjEyMzc6XHRcdGJvb2wgXCYjMzQ7RGV2aWNlIG1lbW9yeSAocG1lbSwgSE1NLCBldGMuLi4pIGhvdHBsdWcgc3VwcG9ydFwmIzM0O1xuMTIzODpcdFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUExVR1xuMTIzOTpcdFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUkVNT1ZFXG4xMjQwOlx0XHRkZXBlbmRzIG9uIFNQQVJTRU1FTV9WTUVNTUFQXG4xMjQxOlx0XHRzZWxlY3QgWEFSUkFZX01VTFRJXG4xMjQyOlx0XG4xMjQzOlx0XHRoZWxwXG4xMjQ0Olx0XHQgIERldmljZSBtZW1vcnkgaG90cGx1ZyBzdXBwb3J0IGFsbG93cyBmb3IgZXN0YWJsaXNoaW5nIHBtZW0sXG4xMjQ1Olx0XHQgIG9yIG90aGVyIGRldmljZSBkcml2ZXIgZGlzY292ZXJlZCBtZW1vcnkgcmVnaW9ucywgaW4gdGhlXG4xMjQ2Olx0XHQgIG1lbW1hcC4gVGhpcyBhbGxvd3MgcGZuX3RvX3BhZ2UoKSBsb29rdXBzIG9mIG90aGVyd2lzZVxuMTI0NzpcdFx0ICBcJiMzNDtkZXZpY2UtcGh5c2ljYWxcJiMzNDsgYWRkcmVzc2VzIHdoaWNoIGlzIG5lZWRlZCBmb3IgREFYLCBQQ0lfUDJQRE1BLCBhbmRcbjEyNDg6XHRcdCAgREVWSUNFX1BSSVZBVEUgZmVhdHVyZXMgYW1vbmcgb3RoZXJzLlxuMTI0OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTExNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25maWd1cmF0aW9uIENvbnVuZHJ1bXMgYW5kIERldmljZSBNaWdyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb25zIGhlcmUsIGFuZCBpdCBzZWVtcyBsaWtlIEkgbmVlZCB0byBlbnN1cmUgdGhlc2UgYXJlIGFsbCBzZXQ6IGBURVNUX0hNTWAsIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGBaT05FX0RFVklDRWAsIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYFNQQVJTRU1FTV9WTUVNTUFQYCwgYW5kIGBERVZJQ0VfTUlHUkFUSU9OYC4KCldhaXQgYSBzZWNvbmTigKYgYERFVklDRV9NSUdSQVRJT05gIGlzIGFjdHVhbGx5IGRlcGVuZGVudC4gSXQmIzM5O3MgZGVmaW5lZCBhcyBgZGVmX2Jvb2wgTUlHUkFUSU9OICZhbXA7JmFtcDsgWk9ORV9ERVZJQ0VgLiBIbW0sIGBNSUdSQVRJT05gIGlzIGdlbmVyYWxseSBlbmFibGVkLCBzbyB0aGF0JiMzOTtzIHByb2JhYmx5IG5vdCB0aGUgYmxvY2tlci4gTXkgZm9jdXMgbm93IGlzIHRoYXQgSSBuZWVkIHRvIGVuc3VyZSB0aGF0IEkgYW0gZW5hYmxpbmcgdGhlIGBaT05FX0RFVklDRWAgY29uZmlndXJhdGlvbiB0byBlbmFibGUgdGhlIGBERVZJQ0VfTUlHUkFUSU9OYCBjb25maWd1cmF0aW9uLgoKQWxyaWdodCwgbm93IEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGltcGxlbWVudGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgbWlncmF0aW9uIGxvZ2ljIGl0c2VsZiwgc28gbXkgbmV4dCBzdG9wIGlzIHRvIGV4YW1pbmUgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGluIGBtbS9taWdyYXRlX2RldmljZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZW50aXJlIG1pZ3JhdGlvbiBwcm9jZXNzIGlzIHN1cHBvc2VkIHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vbWlncmF0ZV9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE5MDpcdFx0XHR9XG4xMTkxOlx0XG4xMTkyOlx0XG4xMTkzOlx0XHRcdGlmIChmb2xpb19pc19kZXZpY2VfcHJpdmF0ZShuZXdmb2xpbykgfHxcbjExOTQ6XHRcdFx0ICAgIGZvbGlvX2lzX2RldmljZV9jb2hlcmVudChuZXdmb2xpbykpIHtcbjExOTU6XHRcdFx0XHRpZiAobWFwcGluZykge1xuMTE5NjpcdFx0XHRcdFx0LypcbjExOTc6XHRcdFx0XHRcdCAqIEZvciBub3cgb25seSBzdXBwb3J0IGFub255bW91cyBtZW1vcnkgbWlncmF0aW5nIHRvXG4xMTk4Olx0XHRcdFx0XHQgKiBkZXZpY2UgcHJpdmF0ZSBvciBjb2hlcmVudCBtZW1vcnkuXG4xMTk5Olx0XHRcdFx0XHQgKlxuMTIwMDpcdFx0XHRcdFx0ICogVHJ5IHRvIGdldCByaWQgb2Ygc3dhcCBjYWNoZSBpZiBwb3NzaWJsZS5cbjEyMDE6XHRcdFx0XHRcdCAqL1xuMTIwMjpcdFx0XHRcdFx0aWYgKCFmb2xpb190ZXN0X2Fub24oZm9saW8pIHx8XG4xMjAzOlx0XHRcdFx0XHQgICAgIWZvbGlvX2ZyZWVfc3dhcChmb2xpbykpIHtcbjEyMDQ6XHRcdFx0XHRcdFx0c3JjX3BmbnNbaV0gXHUwMDI2PSB+TUlHUkFURV9QRk5fTUlHUkFURTtcbjEyMDU6XHRcdFx0XHRcdFx0Z290byBuZXh0O1xuMTIwNjpcdFx0XHRcdFx0fVxuMTIwNzpcdFxuMTIwODpcdFx0XHRcdFx0LypcbjEyMDk6XHRcdFx0XHRcdCAqIGZvbGlvX2ZyZWVfc3dhcCgpIHJlbW92ZWQgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXBcbjEyMTA6XHRcdFx0XHRcdCAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uXG4xMjExOlx0XHRcdFx0XHQgKi9cbjEyMTI6XHRcdFx0XHRcdG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtcbjEyMTM6XHRcdFx0XHR9XG4xMjE0Olx0XHRcdH0gZWxzZSBpZiAoZm9saW9faXNfem9uZV9kZXZpY2UobmV3Zm9saW8pKSB7XG4xMjE1Olx0XHRcdFx0LypcbjEyMTY6XHRcdFx0XHQgKiBPdGhlciB0eXBlcyBvZiBaT05FX0RFVklDRSBwYWdlIGFyZSBub3Qgc3VwcG9ydGVkLlxuMTIxNzpcdFx0XHRcdCAqL1xuMTIxODpcdFx0XHRcdHNyY19wZm5zW2ldIFx1MDAyNj0gfk1JR1JBVEVfUEZOX01JR1JBVEU7XG4xMjE5Olx0XHRcdFx0Z290byBuZXh0O1xuMTIyMDpcdFx0XHR9XG4xMjIxOlx0XG4xMjIyOlx0XHRcdEJVR19PTihmb2xpb190ZXN0X3dyaXRlYmFjayhmb2xpbykpO1xuMTIyMzpcdFxuMTIyNDpcdFx0XHRpZiAobWlncmF0ZSBcdTAwMjZcdTAwMjYgbWlncmF0ZS1cdTAwM2VmYXVsdF9wYWdlID09IHBhZ2UpXG4xMjI1Olx0XHRcdFx0ZXh0cmFfY250ID0gMTtcbjEyMjY6XHRcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgbnIgXHUwMDI2XHUwMDI2IGkgJiM0MzsgaiBcdTAwM2MgbnBhZ2VzOyBqJiM0MzsmIzQzOykge1xuMTIyNzpcdFx0XHRcdGZvbGlvID0gcGFnZV9mb2xpbyhtaWdyYXRlX3Bmbl90b19wYWdlKHNyY19wZm5zW2kmIzQzO2pdKSk7XG4xMjI4Olx0XHRcdFx0bmV3Zm9saW8gPSBwYWdlX2ZvbGlvKG1pZ3JhdGVfcGZuX3RvX3BhZ2UoZHN0X3BmbnNbaSYjNDM7al0pKTtcbjEyMjk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxMDkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNaWdyYXRpb24gQ29kZSBmb3IgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGFzc29jaWF0ZWQgY29kZSBwYXRoLiBJdCYjMzk7cyBjbGVhciB0aGF0IHRoZSBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHBhZ2UgbWlncmF0aW9uLCBhcmUgZGVmaW5pdGVseSAqcmVhY2hhYmxlKiBhbmQgYWN0aXZlbHkgdXNlZC4gV2UgaGF2ZSBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGJlaW5nIGNhbGxlZCBmcm9tIHZhcmlvdXMgbG9jYXRpb25zIHdpdGhpbiB0aGUga2VybmVsLCBpbmNsdWRpbmcgYGxpYi90ZXN0X2htbS5jYCB0aHJvdWdoIGBkbWlycm9yX21pZ3JhdGVfdG9fc3lzdGVtYCBhbmQgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgLCBhcyB3ZWxsIGFzIHNldmVyYWwgTm91dmVhdSBhbmQgU1ZNIGZ1bmN0aW9ucyBhbmQgdmFyaW91cyBEUk0gYW5kIEtWTSBmdW5jdGlvbnMuIFRoaXMgc3VnZ2VzdHMgYSBmdW5jdGlvbmFsIGFyZWEgd2l0aGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LgoKVGhlIHBhdGNoJiMzOTtzIHN0YXRlZCBwdXJwb3NlIGlzIHRvIGFkZHJlc3MgYSBidWcgcmVsYXRlZCB0byBgZm9saW9fZnJlZV9zd2FwKGZvbGlvKWAgYW5kIGEgbWlzc2luZyByZWZyZXNoIG9mIHRoZSBgbWFwcGluZ2AgcG9pbnRlci4gU2luY2UgdGhpcyBpcyB0b3VjaGluZyBjb3JlIE1NIGFuZCBkZXZpY2UgbWlncmF0aW9uLCB0aGlzIGZlZWxzIGxpa2UgYW4gYXJlYSByaXBlIGZvciBmdXp6aW5nIGFuZCBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEFueXRpbWUgeW91JiMzOTtyZSBkZWFsaW5nIHdpdGggY2FjaGluZyBhbmQgZnJlZWluZywgZXNwZWNpYWxseSB3aGVuIGl0IGNvbWVzIHRvIGRldmljZSBtZW1vcnksIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIGJlY29tZSB2ZXJ5IHJlbGV2YW50LgoKTm93LCBsZXQmIzM5O3MgaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzIHdlIG5lZWQgdG8gZm9jdXMgb24uIFRoZSBmdW5jdGlvbiBkaXJlY3RseSBtb2RpZmllZCBpcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AsIGJ1dCB0aGUgZXhwb3J0ZWQgZnVuY3Rpb25zIGFyZSB0aGUgb25lcyB3ZSByZWFsbHkgd2FudCB0byBleHBsb3JlOiBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLiBJIHNob3VsZCBhbHNvIGxvb2sgYXQgYG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvYCBiZWNhdXNlIGl0IGNhbGxzIGBtaWdyYXRlX2RldmljZV9wYWdlc2AuIFRoZSByZWxhdGVkIGZ1bmN0aW9ucyBgbWlncmF0ZV92bWFfc2V0dXBgIGFuZCBgbWlncmF0ZV92bWFfZmluYWxpemVgIGFyZSBhbHNvIGltcG9ydGFudCB0byBjaGVjay4gSSYjMzk7bGwgc3RhcnQgd2l0aCBhIGNsb3NlciBleGFtaW5hdGlvbiBvZiBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgIGluIGBtbS9taWdyYXRlX2RldmljZS5jYCB0byBzZWUgaG93IHRoZSBjb2RlIGZsb3dzIGFyb3VuZCB0aGUgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21pZ3JhdGVfZGV2aWNlX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbWlncmF0ZV9kZXZpY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9taWdyYXRlX2RldmljZS5jPTk2NT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9pbnNlcnRfcGFnZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMDk4OnN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTktXHRcdFx0XHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjQ0LS8qKlxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjQ1OiAqIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKCkgLSBtaWdyYXRlIG1ldGEtZGF0YSBmcm9tIHNyYyBwYWdlIHRvIGRzdCBwYWdlXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNDYtICogQHNyY19wZm5zOiBzcmNfcGZucyByZXR1cm5lZCBmcm9tIG1pZ3JhdGVfZGV2aWNlX3JhbmdlKClcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTItICovXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNTM6dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTQtXHRcdFx0dW5zaWduZWQgbG9uZyBucGFnZXMpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTUte1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjU2Olx0X19taWdyYXRlX2RldmljZV9wYWdlcyhzcmNfcGZucywgZHN0X3BmbnMsIG5wYWdlcywgTlVMTCk7XG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTctfVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjU4OkVYUE9SVF9TWU1CT0wobWlncmF0ZV9kZXZpY2VfcGFnZXMpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU5LVxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI2OD12b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2OS17XG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzA6XHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKG1pZ3JhdGUtXHUwMDNlc3JjLCBtaWdyYXRlLVx1MDAzZWRzdCwgbWlncmF0ZS1cdTAwM2VucGFnZXMsIG1pZ3JhdGUpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjcxLX1cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEzNjE9c3RhdGljIHVuc2lnbmVkIGxvbmcgbWlncmF0ZV9kZXZpY2VfcGZuX2xvY2sodW5zaWduZWQgbG9uZyBwZm4pXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMzkzLSAqIGFsbG9jYXRlIGRlc3RpbmF0aW9uIHBhZ2VzIGFuZCBzdGFydCBjb3B5aW5nIGRhdGEgZnJvbSB0aGUgZGV2aWNlIHRvIENQVVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMzk0OiAqIG1lbW9yeSBiZWZvcmUgY2FsbGluZyBtaWdyYXRlX2RldmljZV9wYWdlcygpLlxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMzk1LSAqL1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTQ2MT1pbnQgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTE0ODUtXG5tbS9taWdyYXRlX2RldmljZS5jOjE0ODY6XHRtaWdyYXRlX2RldmljZV9wYWdlcyhcdTAwMjZzcmNfcGZuLCBcdTAwMjZkc3RfcGZuLCAxKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ4Ny1cdGlmIChzcmNfcGZuIFx1MDAyNiBNSUdSQVRFX1BGTl9NSUdSQVRFKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzU4NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDMyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIFBsYW4gZm9yIERldmljZSBQYWdlIE1pZ3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaW1wbGVtZW50aW5nIGRldmljZSBwYWdlIG1pZ3JhdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgYW5kIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzIGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgYXJlIHByb3Blcmx5IGluY2x1ZGVkIGluIGBGb2N1c1N5bWJvbHNgLgoKTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJdCYjMzk7cyBjbGVhciB0aGF0IGBERVZJQ0VfTUlHUkFUSU9OYCBpcyBlc3NlbnRpYWwsIGFzIGl0JiMzOTtzIHdoYXQgZW5hYmxlcyB0aGUgY29tcGlsYXRpb24gb2YgYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiBMb29raW5nIGNsb3NlciwgYERFVklDRV9NSUdSQVRJT05gIGlzIGRlZmluZWQgYXMgYGRlZl9ib29sIE1JR1JBVElPTiAmYW1wOyZhbXA7IFpPTkVfREVWSUNFYC4gYFpPTkVfREVWSUNFYCwgaW4gdHVybiwgZGVwZW5kcyBvbiBgTUVNT1JZX0hPVFBMVUdgLCBgTUVNT1JZX0hPVFJFTU9WRWAsIGFuZCBgU1BBUlNFTUVNX1ZNRU1NQVBgLiBHb3QgaXQuCgpUbyB0ZXN0IHRoaXMgcHJvcGVybHksIEkmIzM5O20gZ29pbmcgdG8gbmVlZCBhIGRyaXZlciB0aGF0IGFjdHVhbGx5IHVzZXMgdGhpcyBtaWdyYXRpb24gZnVuY3Rpb25hbGl0eS4gYFRFU1RfSE1NYCBsb29rcyBsaWtlIGEgcGVyZmVjdCBjYW5kaWRhdGUuIEludmVzdGlnYXRpbmcgZnVydGhlciwgYFRFU1RfSE1NYCBkZXBlbmRzIG9uIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgYW5kIGBERVZJQ0VfUFJJVkFURWAuIEFuZCBvZiBjb3Vyc2UsIGBERVZJQ0VfUFJJVkFURWAgZGVwZW5kcyBvbiBgWk9ORV9ERVZJQ0VgLiBTbywgdGhlIGVudGlyZSBjb25maWd1cmF0aW9uIHN0YWNrLCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbG9va3MgbGlrZSB0aGlzOgoKSSBuZWVkIHRvIGVuYWJsZTogYFRFU1RfSE1NYCwgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYERFVklDRV9QUklWQVRFYCwgYFpPTkVfREVWSUNFYCwgYE1FTU9SWV9IT1RQTFVHYCwgYE1FTU9SWV9IT1RSRU1PVkVgLCBhbmQgYFNQQVJTRU1FTV9WTUVNTUFQYC4KCkkmIzM5O20gZG91YmxlLWNoZWNraW5nLCBqdXN0IHRvIGJlIHN1cmUsIHRoYXQgYFRFU1RfSE1NYCBpcyBlbm91Z2ggdG8gdHJpZ2dlciB0aGUgdXNhZ2Ugb2YgdGhlc2UgZnVuY3Rpb25zLiBMb29rcyBsaWtlIGl0LCBiZWNhdXNlIGl0IHByb3ZpZGVzIGEgcHNldWRvIGRldmljZSBkcml2ZXIgdG8gdGVzdCBITU0sIHdoaWNoIGluIHR1cm4gdXNlcyBgbWlncmF0ZV92bWFfcGFnZXNgLgoKSSYjMzk7bGwganVzdCBxdWlja2x5IHJldmlldyBgVEVTVF9ITU1gJiMzOTtzIEtjb25maWcgZW50cnkgaW4gYGxpYi9LY29uZmlnLmRlYnVnYCB0byBlbnN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVEVTVF9ITU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1ZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1Zz0zMzQ2PWNvbmZpZyBURVNUX01FTUlOSVRcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzUzLVxubGliL0tjb25maWcuZGVidWc6MzM1NDpjb25maWcgVEVTVF9ITU1cbmxpYi9LY29uZmlnLmRlYnVnLTMzNTUtXHR0cmlzdGF0ZSBcJiMzNDtUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ0NTAKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkOgoKKipEaWdnaW5nIGludG8gdGhlIEtjb25maWcgZm9yIERldmljZS1TcGVjaWZpYyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIGtlcm5lbCBtb2R1bGUsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIGFib3V0IGl0cyBjb25maWd1cmF0aW9uLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNoZWNrIGBtbS9LY29uZmlnYC4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgdGhlIGBERVZJQ0VfUFJJVkFURWAgb3B0aW9uLiBUaGlzIG5hbWUgcmluZ3MgYSBiZWxsLCBhbmQgSSBuZWVkIHRvIGNvbmZpcm0gaXRzIGRlZmluaXRpb24gYW5kIGFueSBkZXBlbmRlbmNpZXMuIEkgc3VzcGVjdCBpdCYjMzk7cyBjb250cm9sbGluZyBzb21lIG1lbW9yeSBtYW5hZ2VtZW50IGFzcGVjdHMgc3BlY2lmaWMgdG8gdGhpcyBkZXZpY2UsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gb24gdGhlIHJpZ2h0IHRyYWNrIGFuZCBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzIGluIHRoZSBidWlsZCBzeXN0ZW0mIzM5O3MgY29uZmlndXJhdGlvbi4gR290dGEgcXVpY2tseSBjb25maXJtIHRoaXMgdG8gYXZvaWQgd2FzdGVkIHRpbWUgdHJvdWJsZXNob290aW5nIGxhdGVyLiBDaGVja2luZyBgbW0vS2NvbmZpZ2Agbm93Li4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBERVZJQ0VfUFJJVkFURSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMjY0PWNvbmZpZyBHRVRfRlJFRV9SRUdJT05cbi0tXG5tbS9LY29uZmlnLTEyNjYtXG5tbS9LY29uZmlnOjEyNjc6Y29uZmlnIERFVklDRV9QUklWQVRFXG5tbS9LY29uZmlnLTEyNjgtXHRib29sIFwmIzM0O1VuYWRkcmVzc2FibGUgZGV2aWNlIG1lbW9yeSAoR1BVIG1lbW9yeSwgLi4uKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDczNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIFpPTkVfREVWSUNFIEtjb25maWcgT3B0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBrZXJuZWwmIzM5O3MgbWVtb3J5IG1hbmFnZW1lbnQsIGFuZCBpdCBsb29rcyBsaWtlIGBaT05FX0RFVklDRWAgbWlnaHQgYmUgdGhlIGtleS4gTXkgZmlyc3QgbW92ZSBpcyB0byBqdW1wIGRpcmVjdGx5IGludG8gYG1tL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb24gYW5kIGFueSBhY2NvbXBhbnlpbmcgY29udGV4dCBmb3IgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIHNlZSB3aGF0IHRoaXMgb3B0aW9uIGVuYWJsZXMgb3IgZGlzYWJsZXMsIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcywgYW5kIHBlcmhhcHMgZXZlbiB3aGF0IGFyY2hpdGVjdHVyZXMgb3Igc3BlY2lmaWMgdXNlIGNhc2VzIGl0JiMzOTtzIHRpZWQgdG8uIFVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgZnJvbSB3aXRoaW4gdGhlIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBzb2xpZCBmb3VuZGF0aW9uIEkgbmVlZCB0byBncmFzcCBpdHMgaW1wbGljYXRpb25zIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgbWVtb3J5IG1hbmFnZW1lbnQgbGFuZHNjYXBlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFpPTkVfREVWSUNFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTEyMzE9Y29uZmlnIFpPTkVfRE1BMzJcbi0tXG5tbS9LY29uZmlnLTEyMzUtXG5tbS9LY29uZmlnOjEyMzY6Y29uZmlnIFpPTkVfREVWSUNFXG5tbS9LY29uZmlnLTEyMzctXHRib29sIFwmIzM0O0RldmljZSBtZW1vcnkgKHBtZW0sIEhNTSwgZXRjLi4uKSBob3RwbHVnIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwNDEKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgdGhlIGBNSUdSQVRJT05gIENvbmZpZ3VyYXRpb24gaW4gYG1tL0tjb25maWdgKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSYjMzk7bSB0aGlua2luZywgbGV0JiMzOTtzIHN0YXJ0IGJ5IHZlcmlmeWluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gcmVsYXRlZCB0byBgTUlHUkFUSU9OYCB3aXRoaW4gdGhlIGBtbS9LY29uZmlnYCBmaWxlLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGRldGFpbHMgYWJvdXQgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBwYWdlIG1pZ3JhdGlvbiBmZWF0dXJlcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGlzIGV4cG9zZWQgYW5kIGNvbnRyb2xsZWQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiB0aGUgZGVmYXVsdCBzdGF0ZSBvZiB0aGUgb3B0aW9uLCBhbnkgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUgb24gb3RoZXIgZmVhdHVyZXMgb3Iga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBhbmQgdGhlIGhlbHAgdGV4dCBhc3NvY2lhdGVkIHdpdGggaXQuIFRoaXMgY29udGV4dCBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGFjdCBvbiBtZW1vcnkgbWFuYWdlbWVudC4gS25vd2luZyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgaXMga2V5LCBhcyBJIHJlY2FsbCB0aGVyZSBhcmUgcXVpdGUgYSBmZXcgc3VidGxlIHdheXMgdG8gY29uZmlndXJlIGl0LCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkgd2lsbCBzdGFydCwgYnkgbWFraW5nIHN1cmUgdGhhdCB0aGUgZmVhdHVyZXMgSSBleHBlY3QgYXJlIHN0aWxsIGFjdGl2ZSBhbmQgd29ya2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1JR1JBVElPTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz02ODU9Y29uZmlnIE5VTUFfTUlHUkFUSU9OXG4tLVxubW0vS2NvbmZpZy02OTUtXG5tbS9LY29uZmlnOjY5Njpjb25maWcgTUlHUkFUSU9OXG5tbS9LY29uZmlnLTY5Ny1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNjIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBMaW5lIG9mIFJlYXNvbmluZyBSZWdhcmRpbmcgTWVtb3J5IE1hbmFnZW1lbnQgYW5kIE1pZ3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IHRoZSBgTUlHUkFUSU9OYCBmZWF0dXJlIGlzIGRpcmVjdGx5IGluZmx1ZW5jZWQgYnkgc2V2ZXJhbCBvdGhlciBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW1zOiBgTlVNQV9CQUxBTkNJTkdgLCBgQ09NUEFDVElPTmAsIGBDTUFgLCBgTUVNT1JZX0hPVFJFTU9WRWAsIGBNRU1PUllfRkFJTFVSRWAsIGFuZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBUaGF0JiMzOTtzIGEgcHJldHR5IGNsZWFyIGRlcGVuZGVuY3kgY2hhaW4uIFRoZXJlZm9yZSwgZW5hYmxpbmcgc29tZXRoaW5nIGxpa2UgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgd2hpY2ggSSBrbm93IGlzIGhlYXZpbHkgaW52b2x2ZWQgaW4gbWVtb3J5IG9wdGltaXphdGlvbiwgb3IgYE1FTU9SWV9IT1RSRU1PVkVgLCB3aGljaCBkZWFscyB3aXRoIGR5bmFtaWMgbWVtb3J5IGFkZGl0aW9uIGFuZCByZW1vdmFsLCB3aWxsIGF1dG9tYXRpY2FsbHkgcHVsbCBpbiBgTUlHUkFUSU9OYCBhcyBhIGNvcmUgY2FwYWJpbGl0eS4gTWFrZXMgcGVyZmVjdCBzZW5zZSBmcm9tIGEgc3lzdGVtcyBwZXJzcGVjdGl2ZTsgdGhlc2UgZmVhdHVyZXMgZnJlcXVlbnRseSByZXF1aXJlIHRoZSBhYmlsaXR5IHRvIG1vdmUgbWVtb3J5IGFyb3VuZC4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgYE1FTU9SWV9IT1RQTFVHYCBhbmQgYE1FTU9SWV9IT1RSRU1PVkVgLiBUaGVzZSBhcmUgY3JpdGljYWwgd2hlbiBkZWFsaW5nIHdpdGggZHluYW1pYyBtZW1vcnkgYW5kIEkgd2FudCB0byBlbnN1cmUgbXkgbWVudGFsIG1vZGVsIG9mIHRoZWlyIHJlbGF0aW9uc2hpcCB0byBgTUlHUkFUSU9OYCBpcyBjb21wbGV0ZWx5IGFjY3VyYXRlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNwZWNpZmljcyBvZiB0aGUgaG90cGx1ZyBhbmQgaG90cmVtb3ZlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgYXJlIGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNRU1PUllfSE9UUExVRyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz01MTk9Y29uZmlnIEFSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHXG4tLVxubW0vS2NvbmZpZy01MjItIyBldmVudHVhbGx5LCB3ZSBjYW4gaGF2ZSB0aGlzIG9wdGlvbiBqdXN0ICYjMzk7c2VsZWN0IFNQQVJTRU1FTSYjMzk7XG5tbS9LY29uZmlnOjUyMzptZW51Y29uZmlnIE1FTU9SWV9IT1RQTFVHXG5tbS9LY29uZmlnLTUyNC1cdGJvb2wgXCYjMzQ7TWVtb3J5IGhvdHBsdWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4MjIKCQkJCQkJCW91dHB1dDogMjIyCgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIERldmljZSBQYWdlIE1pZ3JhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJIHNlZSB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBidWcgd2l0aGluIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYC4gU3BlY2lmaWNhbGx5LCB0aGUgY29kZSYjMzk7cyBub3QgcHJvcGVybHkgaGFuZGxpbmcgdGhlIGBtYXBwaW5nYCB2YXJpYWJsZSBhZnRlciBhIGBmb2xpb19mcmVlX3N3YXAoKWAgY2FsbCByZW1vdmVzIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwIGNhY2hlLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIGRldmljZSBtaWdyYXRpb24sIHdoaWNoIGlzIHdvcnRoIGEgY2xvc2VyIGxvb2suCgpUaGUgY29kZSBwYXRocyB0aGF0IGFyZSBhZmZlY3RlZCBhcmUgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSB0aGV5JiMzOTtyZSB1dGlsaXplZCBieSBkZXZpY2UgZHJpdmVycywgYW5kIEkga25vdyB0aGUgSE1NIHRlc3QgZHJpdmVyIGFsc28gbWFrZXMgdXNlIG9mIHRoZW0uIFRvIHJlYWxseSBwdXQgdGhpcyB0aHJvdWdoIGl0cyBwYWNlcyB3aXRoIGZ1enppbmcsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGNvbmZpZ3VyYXRpb25zOiBgVEVTVF9ITU1gIG9mIGNvdXJzZSwgYXMgd2VsbCBhcyBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBgREVWSUNFX1BSSVZBVEVgLCBgWk9ORV9ERVZJQ0VgLCBhbmQgbmF0dXJhbGx5LCBgTUVNT1JZX0hPVFBMVUdgIGFuZCBgTUVNT1JZX0hPVFJFTU9WRWAgd2hpY2ggYXJlIGFscmVhZHkgaW4gcGxhY2UuIFdlIHNob3VsZCBrZWVwIGFuIGV5ZSBvbiBgU1BBUlNFTUVNX1ZNRU1NQVBgIGFsc28uCgpMZXQmIzM5O3MgbG9nIHRoZSBmdXp6aW5nIHJlc3VsdHMsIEkmIzM5O2xsIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OywKICAgICYjMzQ7U1BBUlNFTUVNX1ZNRU1NQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttaWdyYXRlX2RldmljZV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX3ZtYV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19taWdyYXRlX2RldmljZV9wYWdlc2Agd2hlcmUgdGhlIGBtYXBwaW5nYCB2YXJpYWJsZSBpcyBub3QgcmVmcmVzaGVkIGFmdGVyIGBmb2xpb19mcmVlX3N3YXAoKWAgcmVtb3ZlcyB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcCBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoZGV2aWNlIG1pZ3JhdGlvbikuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgd2hpY2ggYXJlIHVzZWQgYnkgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBITU0gdGVzdCBkcml2ZXIuIEZ1enppbmcgdGhpcyByZXF1aXJlcyBlbmFibGluZyBgVEVTVF9ITU1gIGFuZCByZWxhdGVkIG1lbW9yeSBob3RwbHVnL2RldmljZSBtZW1vcnkgY29uZmlncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VEVTVF9ITU0mIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7REVWSUNFX1BSSVZBVEUmIzM0OywKICAgICYjMzQ7Wk9ORV9ERVZJQ0UmIzM0OywKICAgICYjMzQ7TUVNT1JZX0hPVFBMVUcmIzM0OywKICAgICYjMzQ7TUVNT1JZX0hPVFJFTU9WRSYjMzQ7LAogICAgJiMzNDtTUEFSU0VNRU1fVk1FTU1BUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21pZ3JhdGVfZGV2aWNlX3BhZ2VzJiMzNDssCiAgICAmIzM0O21pZ3JhdGVfdm1hX3BhZ2VzJiMzNDssCiAgICAmIzM0O21pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCB3aGVyZSB0aGUgYG1hcHBpbmdgIHZhcmlhYmxlIGlzIG5vdCByZWZyZXNoZWQgYWZ0ZXIgYGZvbGlvX2ZyZWVfc3dhcCgpYCByZW1vdmVzIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIChkZXZpY2UgbWlncmF0aW9uKS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLCB3aGljaCBhcmUgdXNlZCBieSBkZXZpY2UgZHJpdmVycyBhbmQgdGhlIEhNTSB0ZXN0IGRyaXZlci4gRnV6emluZyB0aGlzIHJlcXVpcmVzIGVuYWJsaW5nIGBURVNUX0hNTWAgYW5kIHJlbGF0ZWQgbWVtb3J5IGhvdHBsdWcvZGV2aWNlIG1lbW9yeSBjb25maWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MjIuMDMxOTg2MzA5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMyNzg5OTU5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVEVTVF9ITU1cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERVZJQ0VfUFJJVkFURVwiLFxuICAgIFwiWk9ORV9ERVZJQ0VcIixcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCIsXG4gICAgXCJNRU1PUllfSE9UUkVNT1ZFXCIsXG4gICAgXCJTUEFSU0VNRU1fVk1FTU1BUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX3ZtYV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19taWdyYXRlX2RldmljZV9wYWdlc2Agd2hlcmUgdGhlIGBtYXBwaW5nYCB2YXJpYWJsZSBpcyBub3QgcmVmcmVzaGVkIGFmdGVyIGBmb2xpb19mcmVlX3N3YXAoKWAgcmVtb3ZlcyB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcCBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoZGV2aWNlIG1pZ3JhdGlvbikuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgd2hpY2ggYXJlIHVzZWQgYnkgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBITU0gdGVzdCBkcml2ZXIuIEZ1enppbmcgdGhpcyByZXF1aXJlcyBlbmFibGluZyBgVEVTVF9ITU1gIGFuZCByZWxhdGVkIG1lbW9yeSBob3RwbHVnL2RldmljZSBtZW1vcnkgY29uZmlncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MjIuMDMxOTk1MjY5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDk5OTk2MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3OWE0NjlmMTA5Nzc5Y2UwNTI4MWQxZTNmZDZjYmExNDFkYmVmZjEwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDI1IDEyOjA4OjIwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL21pZ3JhdGVfZGV2aWNlLmMgYi9tbS9taWdyYXRlX2RldmljZS5jXFxuaW5kZXggNTU0NzU0ZWIyNmZmMmYuLmFlODk1NzU4YjcyY2UxIDEwMDY0NFxcbi0tLSBhL21tL21pZ3JhdGVfZGV2aWNlLmNcXG4rKysgYi9tbS9taWdyYXRlX2RldmljZS5jXFxuQEAgLTEyMDQsNiArMTIwNCwxMiBAQCBzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxcbiBcXHRcXHRcXHRcXHRcXHRzcmNfcGZuc1tpXSBcXHUwMDI2PSB+TUlHUkFURV9QRk5fTUlHUkFURTtcXG4gXFx0XFx0XFx0XFx0XFx0Z290byBuZXh0O1xcbiBcXHRcXHRcXHRcXHR9XFxuK1xcbitcXHRcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHRcXHQgKiBmb2xpb19mcmVlX3N3YXAoKSByZW1vdmVkIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwXFxuK1xcdFxcdFxcdFxcdCAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uXFxuK1xcdFxcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRcXHRtYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fSBlbHNlIGlmIChmb2xpb19pc196b25lX2RldmljZShuZXdmb2xpbykpIHtcXG4gXFx0XFx0XFx0LypcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MjIuNzQ0MTI2OTgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTI1NjY4NDYzODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVEVTVF9ITU1cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERVZJQ0VfUFJJVkFURVwiLFxuICAgIFwiWk9ORV9ERVZJQ0VcIixcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCIsXG4gICAgXCJNRU1PUllfSE9UUkVNT1ZFXCIsXG4gICAgXCJTUEFSU0VNRU1fVk1FTU1BUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX3ZtYV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19taWdyYXRlX2RldmljZV9wYWdlc2Agd2hlcmUgdGhlIGBtYXBwaW5nYCB2YXJpYWJsZSBpcyBub3QgcmVmcmVzaGVkIGFmdGVyIGBmb2xpb19mcmVlX3N3YXAoKWAgcmVtb3ZlcyB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcCBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoZGV2aWNlIG1pZ3JhdGlvbikuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgd2hpY2ggYXJlIHVzZWQgYnkgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBITU0gdGVzdCBkcml2ZXIuIEZ1enppbmcgdGhpcyByZXF1aXJlcyBlbmFibGluZyBgVEVTVF9ITU1gIGFuZCByZWxhdGVkIG1lbW9yeSBob3RwbHVnL2RldmljZSBtZW1vcnkgY29uZmlncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzlhNDY5ZjEwOTc3OWNlMDUyODFkMWUzZmQ2Y2JhMTQxZGJlZmYxMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDEyOjA4OjIwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZV9kZXZpY2UuYyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcbmluZGV4IDU1NDc1NGViMjZmZjJmLi5hZTg5NTc1OGI3MmNlMSAxMDA2NDRcbi0tLSBhL21tL21pZ3JhdGVfZGV2aWNlLmNcbisrKyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcbkBAIC0xMjA0LDYgKzEyMDQsMTIgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbiBcdFx0XHRcdFx0c3JjX3BmbnNbaV0gXHUwMDI2PSB+TUlHUkFURV9QRk5fTUlHUkFURTtcbiBcdFx0XHRcdFx0Z290byBuZXh0O1xuIFx0XHRcdFx0fVxuK1xuK1x0XHRcdFx0LypcbitcdFx0XHRcdCAqIGZvbGlvX2ZyZWVfc3dhcCgpIHJlbW92ZWQgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXBcbitcdFx0XHRcdCAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uXG4rXHRcdFx0XHQgKi9cbitcdFx0XHRcdG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtcbiBcdFx0XHR9XG4gXHRcdH0gZWxzZSBpZiAoZm9saW9faXNfem9uZV9kZXZpY2UobmV3Zm9saW8pKSB7XG4gXHRcdFx0LypcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjIyLjc0NDEyOTk1MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjI4NTgwNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgYSBEZXZpY2UgTWlncmF0aW9uIFBhdGNoKipcblxuQWxyaWdodCwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCDigJMgc2VlbXMgbGlrZSBpdCdzIHRvdWNoaW5nIGBtbS9taWdyYXRlX2RldmljZS5jYC4gU3BlY2lmaWNhbGx5LCB0aGVyZSdzIGEgbmV3IGxpbmUgYmVpbmcgYWRkZWQ6IGBtYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7YCB3aXRoaW4gdGhlIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBmdW5jdGlvbi4gT2theSwgdGhhdCdzIGludGVyZXN0aW5nLiBJIGtub3cgdGhhdCBgZm9saW9fbWFwcGluZ2AgcmV0cmlldmVzIHRoZSBhZGRyZXNzIHNwYWNlIGFzc29jaWF0ZWQgd2l0aCBhIGZvbGlvLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBsaW5lIGlzIGJlaW5nIGludHJvZHVjZWQgaGVyZSBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZS5cblxuVG8gcHJvcGVybHkgZ3Jhc3AgdGhlIHJlYXNvbmluZyBiZWhpbmQgaXQsIEkgbmVlZCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIGBtbS9taWdyYXRlX2RldmljZS5jYCByaWdodCBub3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbuKAmXMgb3ZlcmFsbCBnb2FsIHdpdGhpbiB0aGUgZGV2aWNlIG1pZ3JhdGlvbiBwcm9jZXNzIGFuZCwgb2YgY291cnNlLCB0aGUgZ2VuZXJhbCBtZW1vcnkgbWlncmF0aW9uIHNjaGVtZS4gSSdsbCBmb2N1cyBvbiB0aGUgc3Vycm91bmRpbmcgY29kZSwgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkLCBhbmQgdGhlIG92ZXJhbGwgYWxnb3JpdGhtLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIG5ldyBgZm9saW9fbWFwcGluZ2AgY2FsbCBmaXRzIGludG8gdGhlIGN1cnJlbnQgbWlncmF0aW9uIGZsb3cuIElzIGl0IGZvciBzZWN1cml0eT8gVHJhY2tpbmc/IE9wdGltaXphdGlvbj8gRGVidWdnaW5nPyBJdCdzIGVzc2VudGlhbCBJIGNvbXByZWhlbmQgdGhlIGZ1bGwgY29udGV4dCB0byBhc3Nlc3MgdGhpcyBjaGFuZ2UncyBpbXBhY3QgYW5kIGVmZmljYWN5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDYzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowODoyNi4xNjY5OTEzNDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyNjQzMjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fbWlncmF0ZV9kZXZpY2VfcGFnZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbWlncmF0ZV9kZXZpY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9taWdyYXRlX2RldmljZS5jPTk2NT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9pbnNlcnRfcGFnZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTctXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMDk4OnN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk5LVxcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLCB1bnNpZ25lZCBsb25nIG5wYWdlcyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI1Mz12b2lkIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLCB1bnNpZ25lZCBsb25nICpkc3RfcGZucyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1NS17XFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjU2OlxcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMsIE5VTEwpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1Ny19XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNjg9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY5LXtcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzA6XFx0X19taWdyYXRlX2RldmljZV9wYWdlcyhtaWdyYXRlLVxcdTAwM2VzcmMsIG1pZ3JhdGUtXFx1MDAzZWRzdCwgbWlncmF0ZS1cXHUwMDNlbnBhZ2VzLCBtaWdyYXRlKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowODoyNi4zMTk2NDA2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NTc4NTExMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW5uZXIgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE1pZ3JhdGlvbiBGdW5jdGlvbidzIEludm9jYXRpb24qKlxuXG5SaWdodCwgc28gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGlzIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIsIGFuZCB0aGUgY29kZSBleHBsaWNpdGx5IHN0YXRlcyBpdCdzIGNhbGxlZCBieSBib3RoIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0LiBJJ20gdGhpbmtpbmcuLi4gd2hhdCdzIGRyaXZpbmcgdGhpcz8gV2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3Iga2VybmVsIGZlYXR1cmVzIGFyZSAqZW5hYmxpbmcqIHRoaXMgbWlncmF0aW9uIGZ1bmN0aW9uYWxpdHk/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN3aXRjaGVzIHNvIEkgY2FuIHVuZGVyc3RhbmQgdGhlIHNjZW5hcmlvcyB3aGVyZSB0aGlzIGNvZGUgcGF0aCBpcyBhY3R1YWxseSBhY3RpdmUuIE90aGVyd2lzZSwgSSdtIGp1c3QgbG9va2luZyBhdCBkZWFkIGNvZGUgYW5kIHRoYXQncyBub3QgdXNlZnVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzI4LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MjguODc3NDk1OTYyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDEyNTIxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaWdyYXRlX2RldmljZV9wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWlncmF0ZV9kZXZpY2UuYz05NjU9c3RhdGljIHZvaWQgbWlncmF0ZV92bWFfaW5zZXJ0X3BhZ2Uoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlLFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTA5ODpzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5OS1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNDQtLyoqXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjQ1OiAqIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKCkgLSBtaWdyYXRlIG1ldGEtZGF0YSBmcm9tIHNyYyBwYWdlIHRvIGRzdCBwYWdlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjQ2LSAqIEBzcmNfcGZuczogc3JjX3BmbnMgcmV0dXJuZWQgZnJvbSBtaWdyYXRlX2RldmljZV9yYW5nZSgpXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTItICovXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjUzOnZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1NC1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIG5wYWdlcylcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTUte1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1NjpcXHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzLCBOVUxMKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTctfVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1ODpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTktXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNjg9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY5LXtcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzA6XFx0X19taWdyYXRlX2RldmljZV9wYWdlcyhtaWdyYXRlLVxcdTAwM2VzcmMsIG1pZ3JhdGUtXFx1MDAzZWRzdCwgbWlncmF0ZS1cXHUwMDNlbnBhZ2VzLCBtaWdyYXRlKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzEtfVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMzYxPXN0YXRpYyB1bnNpZ25lZCBsb25nIG1pZ3JhdGVfZGV2aWNlX3Bmbl9sb2NrKHVuc2lnbmVkIGxvbmcgcGZuKVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMzkzLSAqIGFsbG9jYXRlIGRlc3RpbmF0aW9uIHBhZ2VzIGFuZCBzdGFydCBjb3B5aW5nIGRhdGEgZnJvbSB0aGUgZGV2aWNlIHRvIENQVVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTM5NDogKiBtZW1vcnkgYmVmb3JlIGNhbGxpbmcgbWlncmF0ZV9kZXZpY2VfcGFnZXMoKS5cXG5tbS9taWdyYXRlX2RldmljZS5jLTEzOTUtICovXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTE0NjE9aW50IG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTE0ODUtXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxNDg2OlxcdG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKFxcdTAwMjZzcmNfcGZuLCBcXHUwMDI2ZHN0X3BmbiwgMSk7XFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDg3LVxcdGlmIChzcmNfcGZuIFxcdTAwMjYgTUlHUkFURV9QRk5fTUlHUkFURSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MjkuMDA3NjI3NDcxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3NjEzNzk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgYG1tL21pZ3JhdGVfZGV2aWNlLmNgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGltcGxpY2F0aW9ucyBvZiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AuIFRoYXQgbWVhbnMgZGl2aW5nIHN0cmFpZ2h0IGludG8gdGhlIEtjb25maWcgZmlsZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBvciByZWxldmFudCBmZWF0dXJlcyBjb250cm9sIHRoZSBpbmNsdXNpb24gb3IgYmVoYXZpb3Igb2YgdGhhdCBzcGVjaWZpYyBmaWxlLiBJcyBpdCB0aWVkIHRvIGEgc3BlY2lmaWMgZGV2aWNlIGNsYXNzLCBhIG1lbW9yeSBtYW5hZ2VtZW50IHN0cmF0ZWd5LCBvciBwZXJoYXBzIGV2ZW4gYSBicm9hZGVyIHN5c3RlbSBjYXBhYmlsaXR5PyBLbm93aW5nIHRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgaXQgaW50ZXJhY3RzIHdpdGhpbiB0aGUga2VybmVsIGFuZCBpdHMgYnJvYWRlciBjb250ZXh0LiBJJ20gbG9va2luZyBmb3IgdGhlIGJyZWFkY3J1bWJzIHRoYXQgd2lsbCBsZWFkIG1lIHRvIHRoZSByZWxldmFudCBzeW1ib2xzIGFuZCBhbnkgcG90ZW50aWFsIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWxseSBkaWdnaW5nIGludG8gdGhpcyBwaWVjZSBvZiBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MzEuNzgzNzY4NzQ1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzgxNzk1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaWdyYXRlX2RldmljZS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL01ha2VmaWxlPTk5PW9iai0kKENPTkZJR19OVU1BKSArPSBtZW1vcnktdGllcnMub1xcbm1tL01ha2VmaWxlOjEwMDpvYmotJChDT05GSUdfREVWSUNFX01JR1JBVElPTikgKz0gbWlncmF0ZV9kZXZpY2Uub1xcbm1tL01ha2VmaWxlLTEwMS1vYmotJChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpICs9IGh1Z2VfbWVtb3J5Lm8ga2h1Z2VwYWdlZC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjMxLjkyMTU5NDc2NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTA0MjU5MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duIGltbWVkaWF0ZSBwcm9jZXNzaW5nOlxuXG4qKkRldmljZSBNaWdyYXRpb24gQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9uKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgbmVlZGluZyBgQ09ORklHX0RFVklDRV9NSUdSQVRJT05gLiBMZXQncyBqdXN0IGFzc3VtZSB3ZSBkbywgZm9yIHRoZSBzYWtlIG9mIGV4cGxvcmluZyBob3cgdGhpcyBzeXN0ZW0gaGFzIGJlZW4gZGVzaWduZWQuIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgZmlyc3QgaW5zdGluY3QsIG9mIGNvdXJzZSwgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgYW5kIHZlcmlmeSB0aGUgbmF0dXJlIGFuZCBkZXBlbmRlbmNpZXMgb2YgYENPTkZJR19ERVZJQ0VfTUlHUkFUSU9OYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucy4gVGhpcyBpc24ndCBhIGNhc3VhbCBkZWNpc2lvbjsgYSBtaWdyYXRpb24gZmVhdHVyZSBhbG1vc3QgYWx3YXlzIHRvdWNoZXMgc29tZSBmdW5kYW1lbnRhbCBwYXJ0cyBvZiB0aGUgc3lzdGVtIGFuZCBoYXMgc2lnbmlmaWNhbnQgZWZmZWN0cyBvbiBpdHMgYXJjaGl0ZWN0dXJlLiBUaW1lIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBkZXNjcmlwdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZSwgYW5kLCBjcnVjaWFsbHksIGFueSBjb25mbGljdGluZyBvcHRpb25zLiBXZSBuZWVkIHRoZSBmdWxsIHBpY3R1cmUgYmVmb3JlIG1vdmluZyBmb3J3YXJkLiBJJ20gYWZ0ZXIgdGhlIGxvdy1kb3duLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQ0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MzUuMTcyMDIzMjg5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODczMzkxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREVWSUNFX01JR1JBVElPTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9Njk2PWNvbmZpZyBNSUdSQVRJT05cXG4tLVxcbm1tL0tjb25maWctNjk5LVxcbm1tL0tjb25maWc6NzAwOmNvbmZpZyBERVZJQ0VfTUlHUkFUSU9OXFxubW0vS2NvbmZpZy03MDEtXFx0ZGVmX2Jvb2wgTUlHUkFUSU9OIFxcdTAwMjZcXHUwMDI2IFpPTkVfREVWSUNFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjM1LjI3MDc2Mzg5MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzY5MTkxMzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogQ09ORklHX0RFVklDRV9NSUdSQVRJT04qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayBkb3duIHRoaXMgZGVwZW5kZW5jeSBjaGFpbi4gVGhlIGNvZGUncyBzYXlpbmcgYENPTkZJR19ERVZJQ0VfTUlHUkFUSU9OYCBoaW5nZXMgb24gYm90aCBgTUlHUkFUSU9OYCBhbmQgYFpPTkVfREVWSUNFYC4gRmluZSwgdGhhdCBtYWtlcyBzZW5zZSBjb25jZXB0dWFsbHk7IGRldmljZSBtaWdyYXRpb24gb2Z0ZW4gaW52b2x2ZXMgbW92aW5nIGRhdGEgYmV0d2VlbiB6b25lcy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgWk9ORV9ERVZJQ0VgIGlzIHNldCwgYmVjYXVzZSB0aGF0J3MgdGhlIHVua25vd24gdmFyaWFibGUgaGVyZSwgdGhlIHRoaW5nIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZS4gSXMgYFpPTkVfREVWSUNFYCBlbmFibGVkPyBMZXQncyBjaGVjayB0aGF0LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9uYWxpdHkgdGhhdCB6b25lIGRldmljZSBpbXBsaWVzLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBgQ09ORklHX0RFVklDRV9NSUdSQVRJT05gIHdpbGwgd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2OSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjM4LjAzOTk1OTI5NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4Mzc0MTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaT05FX0RFVklDRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTIzMT1jb25maWcgWk9ORV9ETUEzMlxcbi0tXFxubW0vS2NvbmZpZy0xMjM1LVxcbm1tL0tjb25maWc6MTIzNjpjb25maWcgWk9ORV9ERVZJQ0VcXG5tbS9LY29uZmlnLTEyMzctXFx0Ym9vbCBcXFwiRGV2aWNlIG1lbW9yeSAocG1lbSwgSE1NLCBldGMuLi4pIGhvdHBsdWcgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6MzguMTg4MzM5OTE0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MTkxNzY1NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgQ2FsbGVycyBvZiBQYWdlIE1pZ3JhdGlvbiBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyB3ZSBuZWVkIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBjYWxsIHNpdGVzIG9mIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AuIEkga25vdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGNydWNpYWwgZm9yIGhhbmRsaW5nIHBhZ2UgbWlncmF0aW9ucyBpbiBzcGVjaWZpYyBjb250ZXh0cywgbGlrZWx5IHJlbGF0ZWQgdG8gZGV2aWNlIG1lbW9yeSBhbmQgdmlydHVhbCBtZW1vcnkgYXJlYXMsIHJlc3BlY3RpdmVseS4gSXQncyB0aW1lIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnZva2VkIHdpdGhpbiB0aGUga2VybmVsIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHBhdGhzIHdpbGwgZ2l2ZSBtZSBjb250ZXh0IGFyb3VuZCB0aGUgbWlncmF0aW9uIGZsb3dzLCBhbmQgaGVscCBtZSBpbiB1bmRlcnN0YW5kaW5nIHRoZSBtaWdyYXRpb24gaW1wbGVtZW50YXRpb25zIGJldHRlci4gUGVyaGFwcyBJIGFtIGxvb2tpbmcgdG8gZml4IGEgYnVnLCBvciBvcHRpbWl6ZSB0aGVzZSBjYWxscy4gSSBuZWVkIHRvIGtub3cgd2h5IGFuZCB3aGVuIHRob3NlIHBhZ2VzIGFyZSBiZWluZyBtb3ZlZC4gVGhpcyBpbnZlc3RpZ2F0aW9uIGlzIHRoZSBmaXJzdCBzdGVwIHRvd2FyZCB0aGF0IGdvYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODQsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowODo0MC45MDc1MjAwMDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MDAyMTc0MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWlncmF0ZV92bWFfcGFnZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yNjQ9dXNlIGhhcmR3YXJlIERNQSBvciBkZXZpY2Ugc3BlY2lmaWMgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgdG8gbWlncmF0ZSBkYXRhLlxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoyNjU6VGhlIG1pZ3JhdGVfdm1hX3NldHVwKCksIG1pZ3JhdGVfdm1hX3BhZ2VzKCksIGFuZCBtaWdyYXRlX3ZtYV9maW5hbGl6ZSgpXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTI2Ni1mdW5jdGlvbnMgYXJlIGRlc2lnbmVkIHRvIG1ha2UgZHJpdmVycyBlYXNpZXIgdG8gd3JpdGUgYW5kIHRvIGNlbnRyYWxpemUgY29tbW9uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q9Mjk3PWJldHdlZW4gZGV2aWNlIGRyaXZlciBzcGVjaWZpYyBjb2RlIGFuZCBzaGFyZWQgY29tbW9uIGNvZGU6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMzY0LVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDozNjU6NC4gYGBtaWdyYXRlX3ZtYV9wYWdlcygpYGBcXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMzY2LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdD0yMTI9SE1NIOWIh+aNouWIsOebtOaOpeS9v+eUqCBzdHJ1Y3QgcGFnZSDnlKjkuo7orr7lpIflhoXlrZjvvIzov5nkvb/lvpflpKflpJrmlbDlhoXmoLjku6PnoIHot6/lvoTkuI3nn6XpgZPlt67lvILjgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjE4LeeUseS6jiBDUFUg5peg5rOV55u05o6l6K6/6Zeu6K6+5aSH5YaF5a2Y77yM5Zug5q2k6K6+5aSH6amx5Yqo56iL5bqP5b+F6aG75L2/55So56Gs5Lu2IERNQSDmiJborr7lpIfnibnlrprnmoTliqDovb0v5a2YXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdDoyMTk65YKo5oyH5Luk5p2l6L+B56e75pWw5o2u44CCbWlncmF0ZV92bWFfc2V0dXAoKeOAgW1pZ3JhdGVfdm1hX3BhZ2VzKCkg5ZKMXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdC0yMjAtbWlncmF0ZV92bWFfZmluYWxpemUoKSDlh73mlbDml6jlnKjkvb/pqbHliqjnqIvluo/mm7TmmJPkuo7nvJblhpnlubbpm4bkuK3ot6jpqbHliqjnqIvluo/nmoTpgJrnlKjku6PnoIHjgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q9MjQzPWRldm1fbWVtdW5tYXBfcGFnZXMoKSDlkowgZGV2bV9yZWxlYXNlX21lbV9yZWdpb24oKSDlvZPotYTmupDlj6/ku6Xnu5HlrprliLAgYGBzdHJ1Y3QgZGV2aWNlYGAuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTI5Ny1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0OjI5ODo0LiBgYG1pZ3JhdGVfdm1hX3BhZ2VzKClgYFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjk5LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy00OS0gKiAxLiBrdm0tXFx1MDAzZXNyY3UgLSBQcm90ZWN0cyBLVk0gbWVtc2xvdHNcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jOjUwOiAqIDIuIGt2bS1cXHUwMDNlbW0tXFx1MDAzZW1tYXBfbG9jayAtIGZpbmRfdm1hLCBtaWdyYXRlX3ZtYV9wYWdlcyBhbmQgaGVscGVycywga3NtX21hZHZpc2VcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTUxLSAqIDMuIGt2bS1cXHUwMDNlYXJjaC51dm1lbV9sb2NrIC0gcHJvdGVjdHMgcmVhZC93cml0ZXMgdG8gdXZtZW0gc2xvdHMgdGh1cyBhY3RpbmdcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmM9NTEzPXN0YXRpYyBpbnQgX19rdm1wcGNfc3ZtX3BhZ2Vfb3V0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01NzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYzo1Nzk6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNm1pZyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01ODAtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jPTc0MD1zdGF0aWMgaW50IGt2bXBwY19zdm1fcGFnZV9pbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNzg3LVxcdCptaWcuZHN0ID0gbWlncmF0ZV9wZm4ocGFnZV90b19wZm4oZHBhZ2UpKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jOjc4ODpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2bWlnKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTc4OS1vdXRfZmluYWxpemU6XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jPTM5ND1zdm1fbWlncmF0ZV92bWFfdG9fdnJhbShzdHJ1Y3Qga2ZkX25vZGUgKm5vZGUsIHN0cnVjdCBzdm1fcmFuZ2UgKnByYW5nZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNDUxLVxcdHIgPSBzdm1fbWlncmF0ZV9jb3B5X3RvX3ZyYW0obm9kZSwgcHJhbmdlLCBcXHUwMDI2bWlncmF0ZSwgXFx1MDAyNm1mZW5jZSwgc2NyYXRjaCwgdHRtX3Jlc19vZmZzZXQpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM6NDUyOlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKFxcdTAwMjZtaWdyYXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTQ1My1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM9NjkzPXN2bV9taWdyYXRlX3ZtYV90b19yYW0oc3RydWN0IGtmZF9ub2RlICpub2RlLCBzdHJ1Y3Qgc3ZtX3JhbmdlICpwcmFuZ2UsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTc1NS1cXHRcXHRcXHRcXHQgICAgc2NyYXRjaCwgbnBhZ2VzKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjc1NjpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2bWlncmF0ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy03NTctXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYz02MTY9aW50IGRybV9wYWdlbWFwX21pZ3JhdGVfdG9fZGV2bWVtKHN0cnVjdCBkcm1fcGFnZW1hcF9kZXZtZW0gKmRldm1lbV9hbGxvY2F0aW9uLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtODEyLWVycl9hYm9ydGVkX21pZ3JhdGlvbjpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzo4MTM6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNm1pZ3JhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTgxNC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jPTEyMTE9c3RhdGljIGludCBfX2RybV9wYWdlbWFwX21pZ3JhdGVfdG9fcmFtKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdmFzLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTMwNC1cXHRcXHRkcm1fcGFnZW1hcF9taWdyYXRpb25fdW5sb2NrX3B1dF9wYWdlcyhucGFnZXMsIG1pZ3JhdGUuZHN0KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzoxMzA1OlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKFxcdTAwMjZtaWdyYXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzA2LVxcdG1pZ3JhdGVfdm1hX2ZpbmFsaXplKFxcdTAwMjZtaWdyYXRlKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jPTE4Mz1zdGF0aWMgdm1fZmF1bHRfdCBub3V2ZWF1X2RtZW1fbWlncmF0ZV90b19yYW0oc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yNjctXFx0bm91dmVhdV9mZW5jZV9uZXcoXFx1MDAyNmZlbmNlLCBkbWVtLVxcdTAwM2VtaWdyYXRlLmNoYW4pO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jOjI2ODpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2YXJncyk7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjY5LVxcdG5vdXZlYXVfZG1lbV9mZW5jZV9kb25lKFxcdTAwMjZmZW5jZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz03ODM9c3RhdGljIHZvaWQgbm91dmVhdV9kbWVtX21pZ3JhdGVfY2h1bmsoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy04MDktXFx0bm91dmVhdV9mZW5jZV9uZXcoXFx1MDAyNmZlbmNlLCBkcm0tXFx1MDAzZWRtZW0tXFx1MDAzZW1pZ3JhdGUuY2hhbik7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6ODEwOlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKGFyZ3MpO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTgxMS1cXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcXHUwMDI2ZmVuY2UpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9MTU4PXN0cnVjdCBtaWdyYXRlX3ZtYSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xNjUtXFx0ICogbWlncmF0ZV92bWFfc2V0dXAoKSwgYW5kIG11c3Qgbm90IGNoYW5nZSB0aGUgZHN0IGFycmF5IGFmdGVyXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTY2OlxcdCAqIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgcmV0dXJucy5cXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xNjctXFx0ICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaD0xOTM9aW50IG1pZ3JhdGVfdm1hX3NldHVwKHN0cnVjdCBtaWdyYXRlX3ZtYSAqYXJncyk7XFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTk0OnZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKTtcXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xOTUtdm9pZCBtaWdyYXRlX3ZtYV9maW5hbGl6ZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTAwND1zdGF0aWMgdm1fZmF1bHRfdCBkbWlycm9yX2Rldm1lbV9mYXVsdF9hbGxvY19hbmRfY29weShzdHJ1Y3QgbWlncmF0ZV92bWEgKmFyZ3MsXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xMDc1LVxcdFxcdFxcdFxcdFxcdC8qIENsZWFyIHJlbWFpbmluZyBkc3QgZW50cmllcyB0byBhdm9pZFxcbmxpYi90ZXN0X2htbS5jOjEwNzY6XFx0XFx0XFx0XFx0XFx0ICogbWlncmF0ZV92bWFfcGFnZXMvZmluYWxpemUoKSB1c2luZ1xcbmxpYi90ZXN0X2htbS5jLTEwNzctXFx0XFx0XFx0XFx0XFx0ICogdW5pbml0aWFsaXplZCB2YWx1ZXMuXFxuLS1cXG5saWIvdGVzdF9obW0uYz0xMTIwPXN0YXRpYyBpbnQgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTExNzUtXFxubGliL3Rlc3RfaG1tLmM6MTE3NjpcXHRcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2YXJncyk7XFxubGliL3Rlc3RfaG1tLmMtMTE3Ny1cXHRcXHRjbWQtXFx1MDAzZWNwYWdlcyArPSBkbWlycm9yX3N1Y2Nlc3NmdWxfbWlncmF0ZWRfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTE4OT1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xMjQ4LVxcdFxcdGRtaXJyb3JfbWlncmF0ZV9hbGxvY19hbmRfY29weShcXHUwMDI2YXJncywgZG1pcnJvcik7XFxubGliL3Rlc3RfaG1tLmM6MTI0OTpcXHRcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2YXJncyk7XFxubGliL3Rlc3RfaG1tLmMtMTI1MC1cXHRcXHRkbWlycm9yX21pZ3JhdGVfZmluYWxpemVfYW5kX21hcChcXHUwMDI2YXJncywgZG1pcnJvcik7XFxuLS1cXG5saWIvdGVzdF9obW0uYz0xNjUzPXN0YXRpYyB2bV9mYXVsdF90IGRtaXJyb3JfZGV2bWVtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTcxOC1cXHR9XFxubGliL3Rlc3RfaG1tLmM6MTcxOTpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2YXJncyk7XFxubGliL3Rlc3RfaG1tLmMtMTcyMC1cXHQvKlxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz02NTk9c3RhdGljIHZvaWQgbWlncmF0ZV92bWFfdW5tYXAoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy02OTktICogdGhpcyBjYW4gc3RpbGwgZmFpbCwgYW5kIHRodXMgaW5zaWRlIHRoZSBkZXZpY2UgZHJpdmVyIHlvdSBtdXN0IGNoZWNrIGlmIHRoZVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzAwOiAqIG1pZ3JhdGlvbiB3YXMgc3VjY2Vzc2Z1bCBmb3IgdGhvc2UgZW50cmllcyBhZnRlciBjYWxsaW5nIG1pZ3JhdGVfdm1hX3BhZ2VzKCksXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDEtICoganVzdCBsaWtlIGZvciByZWd1bGFyIG1pZ3JhdGlvbi5cXG5tbS9taWdyYXRlX2RldmljZS5jLTcwMi0gKlxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzAzOiAqIEFmdGVyIHRoYXQsIHRoZSBjYWxsZXJzIG11c3QgY2FsbCBtaWdyYXRlX3ZtYV9wYWdlcygpIHRvIGdvIG92ZXIgZWFjaCBlbnRyeVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzA0LSAqIGluIHRoZSBzcmMgYXJyYXkgdGhhdCBoYXMgdGhlIE1JR1JBVEVfUEZOX1ZBTElEIGFuZCBNSUdSQVRFX1BGTl9NSUdSQVRFIGZsYWdcXG5tbS9taWdyYXRlX2RldmljZS5jLTcwNS0gKiBzZXQuIElmIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGluIGRzdCBhcnJheSBoYXMgTUlHUkFURV9QRk5fVkFMSUQgZmxhZyBzZXQsXFxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MDY6ICogdGhlbiBtaWdyYXRlX3ZtYV9wYWdlcygpIHRvIG1pZ3JhdGUgc3RydWN0IHBhZ2UgaW5mb3JtYXRpb24gZnJvbSB0aGUgc291cmNlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDctICogc3RydWN0IHBhZ2UgdG8gdGhlIGRlc3RpbmF0aW9uIHN0cnVjdCBwYWdlLiAgSWYgaXQgZmFpbHMgdG8gbWlncmF0ZSB0aGVcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzE0LSAqXFxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MTU6ICogT25jZSBtaWdyYXRlX3ZtYV9wYWdlcygpIHJldHVybnMgdGhlIGNhbGxlciBtYXkgaW5zcGVjdCB3aGljaCBwYWdlcyB3ZXJlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MTYtICogc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkLCBhbmQgd2hpY2ggd2VyZSBub3QuICBTdWNjZXNzZnVsbHkgbWlncmF0ZWQgcGFnZXMgd2lsbFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MTgtICpcXG5tbS9taWdyYXRlX2RldmljZS5jOjcxOTogKiBJdCBpcyBzYWZlIHRvIHVwZGF0ZSBkZXZpY2UgcGFnZSB0YWJsZSBhZnRlciBtaWdyYXRlX3ZtYV9wYWdlcygpIGJlY2F1c2VcXG5tbS9taWdyYXRlX2RldmljZS5jLTcyMC0gKiBib3RoIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2UgcGFnZSBhcmUgc3RpbGwgbG9ja2VkLCBhbmQgdGhlIG1tYXBfbG9jayBpcyBoZWxkXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEwOTg9c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI0OS0gKlxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1MDogKiBFcXVpdmFsZW50IHRvIG1pZ3JhdGVfdm1hX3BhZ2VzKCkuIFRoaXMgaXMgY2FsbGVkIHRvIG1pZ3JhdGUgc3RydWN0IHBhZ2VcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTEtICogbWV0YS1kYXRhIGZyb20gc291cmNlIHN0cnVjdCBwYWdlIHRvIGRlc3RpbmF0aW9uLlxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjU4PUVYUE9SVF9TWU1CT0wobWlncmF0ZV9kZXZpY2VfcGFnZXMpO1xcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjYwLS8qKlxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2MTogKiBtaWdyYXRlX3ZtYV9wYWdlcygpIC0gbWlncmF0ZSBtZXRhLWRhdGEgZnJvbSBzcmMgcGFnZSB0byBkc3QgcGFnZVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Mi0gKiBAbWlncmF0ZTogbWlncmF0ZSBzdHJ1Y3QgY29udGFpbmluZyBhbGwgbWlncmF0aW9uIGluZm9ybWF0aW9uXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjctICovXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjY4OnZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2OS17XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzEtfVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3MjpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfdm1hX3BhZ2VzKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjQzLjYwNzc0MTkwM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQ3MTc0MjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaCBpbiB0aGUgTGludXggS2VybmVsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IHRoZSBjb2RlIGFkZGVkIHdpdGhpbiBgX19taWdyYXRlX2RldmljZV9wYWdlc2AuIEl0IHNlZW1zIGxpa2UgdGhleSd2ZSBhZGRlZCB0aGlzIHNuaXBwZXQ6XG5cbmBgYGNcblx0XHRcdFx0Lypcblx0XHRcdFx0ICogZm9saW9fZnJlZV9zd2FwKCkgcmVtb3ZlZCB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcFxuXHRcdFx0XHQgKiBjYWNoZS4gUmVmcmVzaCB0aGUgc2F2ZWQgbWFwcGluZyBiZWZvcmUgbWlncmF0aW9uLlxuXHRcdFx0XHQgKi9cblx0XHRcdFx0bWFwcGluZyA9IGZvbGlvX21hcHBpbmcoZm9saW8pO1xuYGBgXG5cblRoaXMgaXMgdHVja2VkIGF3YXkgaW5zaWRlIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggbWFrZXMgbWUgaW1tZWRpYXRlbHkgdGhpbmsgYWJvdXQgdGhlIGNvbnRleHQuIFJpZ2h0LCBzbyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaXMgY2FsbGVkIGJ5IGJvdGggYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aG9zZSBmdW5jdGlvbnMuIFRoYXQncyBhIGtleSBwYXJ0IG9mIHRoZSBwdXp6bGUuIE5vdywgZGlnZ2luZyBkZWVwZXIsIEkgc2VlIHRoYXQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBpcyBjYWxsZWQgZnJvbSBgbGliL3Rlc3RfaG1tLmNgLlxuXG5UaGF0J3MgaW50ZXJlc3RpbmcuIGBsaWIvdGVzdF9obW0uY2AuLi4gdGhhdCdzIHRoZSB0ZXN0IGRyaXZlciBmb3IgSE1NLCBvciBIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50LiBITU0gZGVhbHMgd2l0aCBhIHByZXR0eSBzcGVjaWZpYyBzZXQgb2YgaGFyZHdhcmUgYW5kIG1lbW9yeSBjaGFyYWN0ZXJpc3RpY3MsIHNvIGNoYW5nZXMgaW4gdGhhdCBhcmVhIGFyZSBwb3RlbnRpYWxseSBoaWdoIGltcGFjdCBhbmQgbmVlZCB0byBiZSBsb29rZWQgYXQgY2xvc2VseS5cblxuU28gbm93IEkgaGF2ZSB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJIG5lZWQgdG8gc2VlIGlmIHRoYXQgcGFydGljdWxhciB0ZXN0IG1vZHVsZSBpcyBlbmFibGVkIGJ5IHNvbWUgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gSWYgaXQgaXMsIHRoZW4gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhdGNoIGNvdWxkIGJlIHF1aXRlIGltcG9ydGFudCBmb3IgdXNlcnMgd2l0aCBITU0tZW5hYmxlZCBzeXN0ZW1zLiBMZXQncyBzZWUgaWYgdGhpcyBwYXRjaCBjYXVzZXMgYW4gaXNzdWUgdGhhdCBjYW4gYmUgdHJhY2VkIHRvIGNvbmZpZ3VyYXRpb24gb2YgdGhhdCB0ZXN0IGhhcm5lc3MuIFRoYXQgd291bGQgYmUgdGhlIG5leHQgbG9naWNhbCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTg4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjQ4LjQ1NDkxOTg4OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ4NzYwMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRlc3RfaG1tLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImxpYi9NYWtlZmlsZT0xMDI9b2JqLSQoQ09ORklHX1RFU1RfTE9DS1VQKSArPSB0ZXN0X2xvY2t1cC5vXFxubGliL01ha2VmaWxlOjEwMzpvYmotJChDT05GSUdfVEVTVF9ITU0pICs9IHRlc3RfaG1tLm9cXG5saWIvTWFrZWZpbGUtMTA0LW9iai0kKENPTkZJR19URVNUX0ZSRUVfUEFHRVMpICs9IHRlc3RfZnJlZV9wYWdlcy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjQ5LjAwMzY4NDkwM1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzUxNDMxMzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBUZXN0IEhNTSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGBDT05GSUdfVEVTVF9ITU1gIGhhcyB0cmlnZ2VyZWQgdGhlIGJ1aWxkIG9mIGBsaWIvdGVzdF9obW0uY2AuIFRoYXQncyBhIGNsZWFyIHNpZ25hbCwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqd2h5KiBhbmQgKmhvdyouIFRpbWUgdG8gZGlnIGludG8gdGhlIEtjb25maWcuIEkgd2FudCB0byBzZWUgdGhlIGRlcGVuZGVuY2llcywgdGhlIGRlZmF1bHQgdmFsdWUsIGFuZCBhbnkgYXNzb2NpYXRlZCBoZWxwIHRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbmRlZCB1c2UgY2FzZSBvZiB0aGlzIHRlc3QgYW5kIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcyBpdCdzIGxpa2VseSB0byBiZSBlbmFibGVkLiBJcyB0aGlzIGEgY29yZSBmdW5jdGlvbmFsaXR5IHRlc3QsIG9yIGlzIGl0IG1vcmUgb2YgYSBkZXZlbG9wZXIgc2FuaXR5IGNoZWNrPyBBcmUgdGhlcmUgb3RoZXIgcmVsYXRlZCBvcHRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mIHdpdGhpbiB0aGUgSE1NIHN1YnN5c3RlbT8gSSdsbCBwcm9iYWJseSBiZSBhYmxlIHRvIGdsZWFuIHRoaXMgaW5mb3JtYXRpb24gZGlyZWN0bHkgZnJvbSB0aGUgS2NvbmZpZyBmaWxlIGZvciBgdGVzdF9obW1gLiBUaW1lIHRvIHRyYWNrIGl0IGRvd24uIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IHRvIHVuZGVyc3RhbmQgdGhlIHBsYWNlIG9mIHRlc3Qgd2l0aGluIHRoZSBiaWdnZXIgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjIwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6NTIuMzU1MTIzNDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzU0MjAzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEVTVF9ITU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9MzM0Nj1jb25maWcgVEVTVF9NRU1JTklUXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzUzLVxcbmxpYi9LY29uZmlnLmRlYnVnOjMzNTQ6Y29uZmlnIFRFU1RfSE1NXFxubGliL0tjb25maWcuZGVidWctMzM1NS1cXHR0cmlzdGF0ZSBcXFwiVGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowODo1Mi41MTg2NzEzODdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5MDcwMzM3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyBmb3IgYFRFU1RfSE1NYCoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCBgVEVTVF9ITU1gIC0gd2hhdCdzIHRoaXMgdGhpbmcgcmVseWluZyBvbj9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jeSBncmFwaC4gSXMgaXQgYSBzdGFuZGFsb25lIG1vZHVsZSwgb3IgaXMgaXQgZHJhd2luZyBvbiBvdGhlciBjb21wb25lbnRzPyBJcyBpdCBoaXR0aW5nIHRoZSBgSE1NYCBvYmplY3QgZGVmaW5lZCBpbiBteSBvd24gbGlicmFyeSwgb3IgdGhlIG9uZSBmcm9tIHRoZSBwYXBlcj8gQXJlIHRoZXJlIGV4dGVybmFsIGxpYnJhcmllcyBpbiB0aGUgbWl4PyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGJ1aWxkaW5nIGJsb2NrcyBhbmQgYW55IHBvdGVudGlhbCAnZ290Y2hhcycgdGhhdCBjb3VsZCB0cmlwIG1lIHVwLiBUaGlzIGFuYWx5c2lzIHdpbGwgZ3VpZGUgbXkgbmV4dCBzdGVwczogZGVidWdnaW5nLCByZWZhY3RvcmluZywgb3Igc2ltcGx5IHVuZGVyc3RhbmRpbmcgaG93IGBURVNUX0hNTWAgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIHByb2plY3QuIEEgcXVpY2sgZGVwZW5kZW5jeSBzY2FuIGlzIGNydWNpYWwgYmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCB0b3VjaGluZyB0aGUgY29kZSBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5ODAsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowODo1NS42MDkzNzc2ODVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjc0MzU0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEVTVF9ITU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz0zMzQ2PWNvbmZpZyBURVNUX01FTUlOSVRcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnLTMzNTMtXFxubGliL0tjb25maWcuZGVidWc6MzM1NDpjb25maWcgVEVTVF9ITU1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzU1LVxcdHRyaXN0YXRlIFxcXCJUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjU1LjcyNjEyNjA2NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc0NjkzMjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gRGVidWdnaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHNwZWNpZmljIGFib3V0IHRoZSBkZWJ1Z2dpbmcgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBwcm9qZWN0LiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgYXJlIGxpa2VseSBsb2NhdGVkIHdpdGhpbiB0aGUgYEtjb25maWcuZGVidWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAzMzU0LiBJJ2xsIHRha2UgYSBsb29rIGF0IHRoYXQgZmlsZSBsb2NhdGlvbiBkaXJlY3RseS4gTGV0J3Mgc2VlIHdoYXQgc2VjcmV0cyBpdCBob2xkcy4gSG9wZWZ1bGx5LCB0aGlzIHNlY3Rpb24gd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIGNvbmZpZ3VyYXRpb24gSSdtIHRyeWluZyB0byBkZWNpcGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI5NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA4OjU4LjYwMDgyMTY2MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjAyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibGliL0tjb25maWcuZGVidWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzM1MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzM1MDpcXHRcXHQgIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byB0ZXN0IGluaXRfb25fYWxsb2MgYW5kIGluaXRfb25fZnJlZSBmZWF0dXJlcy5cXG4zMzUxOlxcdFxcbjMzNTI6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbjMzNTM6XFx0XFxuMzM1NDpcXHRjb25maWcgVEVTVF9ITU1cXG4zMzU1OlxcdFxcdHRyaXN0YXRlIFxcXCJUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcXFwiXFxuMzM1NjpcXHRcXHRkZXBlbmRzIG9uIFRSQU5TUEFSRU5UX0hVR0VQQUdFXFxuMzM1NzpcXHRcXHRkZXBlbmRzIG9uIERFVklDRV9QUklWQVRFXFxuMzM1ODpcXHRcXHRzZWxlY3QgSE1NX01JUlJPUlxcbjMzNTk6XFx0XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbjMzNjA6XFx0XFx0aGVscFxcbjMzNjE6XFx0XFx0ICBUaGlzIGlzIGEgcHNldWRvIGRldmljZSBkcml2ZXIgc29sZWx5IGZvciB0ZXN0aW5nIEhNTS5cXG4zMzYyOlxcdFxcdCAgU2F5IE0gaGVyZSBpZiB5b3Ugd2FudCB0byBidWlsZCB0aGUgSE1NIHRlc3QgbW9kdWxlLlxcbjMzNjM6XFx0XFx0ICBEb2luZyBzbyB3aWxsIGFsbG93IHlvdSB0byBydW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdC92bS9obW0tdGVzdHMuXFxuMzM2NDpcXHRcXG4zMzY1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4zMzY2OlxcdFxcbjMzNjc6XFx0Y29uZmlnIFRFU1RfRlJFRV9QQUdFU1xcbjMzNjg6XFx0XFx0dHJpc3RhdGUgXFxcIlRlc3QgZnJlZWluZyBwYWdlc1xcXCJcXG4zMzY5OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDg6NTguNjAxMDg0MDcyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODI2NzEyODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyBEZXBlbmRlbmNpZXMgaW4gdGhlIENvZGViYXNlKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYFRFU1RfSE1NYCBoZXJlLCBhbmQgaXQgc2VlbXMgbGlrZSBpdCdzIHB1bGxpbmcgaW4gZGVwZW5kZW5jaWVzLiBTcGVjaWZpY2FsbHksIEkgc2VlIGl0IHJlbGllcyBvbiBib3RoIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgYW5kIGBERVZJQ0VfUFJJVkFURWAuIEdpdmVuIHRoYXQgdGhlc2UgYXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyByZWxhdGlvbnNoaXAgYmV0dGVyLiBNeSBwcmltYXJ5IGNvbmNlcm4gcmlnaHQgbm93IGlzIHdpdGggYERFVklDRV9QUklWQVRFYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGNvbnRyb2xzLCBzbyBJJ2xsIGNoZWNrIGludG8gaXQuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzYyLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowOTowMS41ODM3NTg1MzlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDU4MDY3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREVWSUNFX1BSSVZBVEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTEyNjQ9Y29uZmlnIEdFVF9GUkVFX1JFR0lPTlxcbi0tXFxubW0vS2NvbmZpZy0xMjY2LVxcbm1tL0tjb25maWc6MTI2Nzpjb25maWcgREVWSUNFX1BSSVZBVEVcXG5tbS9LY29uZmlnLTEyNjgtXFx0Ym9vbCBcXFwiVW5hZGRyZXNzYWJsZSBkZXZpY2UgbWVtb3J5IChHUFUgbWVtb3J5LCAuLi4pXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowOTowMS43MTgzNDYzMzhaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyNjQzMTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGhhbmRsZWQuIExldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYG1tL0tjb25maWdgLiBJdCdzIGEga2V5IGZpbGUgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgYW5kIGFyb3VuZCBsaW5lIDEyNjcgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgcGxhY2UgdG8gYmVnaW4uIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBvciByZWxldmFudCBkZXBlbmRlbmNpZXMgZm9yIHdoYXRldmVyIG9wdGlvbiB3ZSdyZSBkZWFsaW5nIHdpdGguIEtub3dpbmcgdGhlIHNwZWNpZmljIGxpbmUgcmFuZ2UgaGVscHMgbWUgbmF2aWdhdGUgZWZmaWNpZW50bHkgYW5kIGF2b2lkIGdldHRpbmcgbG9zdCBpbiB0aGUgYnJvYWRlciBjb25maWd1cmF0aW9uIHNwYWNlLiBJJ20gaG9waW5nIGl0J3MgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBkZWZpbml0aW9uIOKAkyBtYXliZSBhIHNpbXBsZSBgY29uZmlnYCBibG9jayB3aXRoIHNvbWUgZGVwZW5kZW5jaWVzIG9yIGEgdHJpc3RhdGUgb3B0aW9uLiBPciBwZXJoYXBzIHRoaXMgYXJlYSBkZWFscyB3aXRoIGhvdyB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgc3BlY2lmaWMgb3B0aW9uIGlzIGNvbmZpZ3VyZWQuIEVpdGhlciB3YXksIHRoaXMgc2hvdWxkIGJlIHRoZSBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uJ3MgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDA0NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjA1LjA0NDc4MjA5N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzc4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjY1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjY1OlxcdFxcdGJvb2xcXG4xMjY2OlxcdFxcbjEyNjc6XFx0Y29uZmlnIERFVklDRV9QUklWQVRFXFxuMTI2ODpcXHRcXHRib29sIFxcXCJVbmFkZHJlc3NhYmxlIGRldmljZSBtZW1vcnkgKEdQVSBtZW1vcnksIC4uLilcXFwiXFxuMTI2OTpcXHRcXHRkZXBlbmRzIG9uIFpPTkVfREVWSUNFXFxuMTI3MDpcXHRcXHRzZWxlY3QgR0VUX0ZSRUVfUkVHSU9OXFxuMTI3MTpcXHRcXG4xMjcyOlxcdFxcdGhlbHBcXG4xMjczOlxcdFxcdCAgQWxsb3dzIGNyZWF0aW9uIG9mIHN0cnVjdCBwYWdlcyB0byByZXByZXNlbnQgdW5hZGRyZXNzYWJsZSBkZXZpY2VcXG4xMjc0OlxcdFxcdCAgbWVtb3J5OyBpLmUuLCBtZW1vcnkgdGhhdCBpcyBvbmx5IGFjY2Vzc2libGUgZnJvbSB0aGUgZGV2aWNlIChvclxcbjEyNzU6XFx0XFx0ICBncm91cCBvZiBkZXZpY2VzKS4gWW91IGxpa2VseSBhbHNvIHdhbnQgdG8gc2VsZWN0IEhNTV9NSVJST1IuXFxuMTI3NjpcXHRcXG4xMjc3OlxcdGNvbmZpZyBWTUFQX1BGTlxcbjEyNzg6XFx0XFx0Ym9vbFxcbjEyNzk6XFx0XFxuMTI4MDpcXHRjb25maWcgQVJDSF9VU0VTX0hJR0hfVk1BX0ZMQUdTXFxuMTI4MTpcXHRcXHRib29sXFxuMTI4MjpcXHRjb25maWcgQVJDSF9IQVNfUEtFWVNcXG4xMjgzOlxcdFxcdGJvb2xcXG4xMjg0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowOTowNS4wNDUwMjY3MzdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMwODY4NTc5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKkRlcGVuZGVuY3kgQ2hhaW4gQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyBkb3duIHRoaXMgZGVwZW5kZW5jeSBjaGFpbi4gYERFVklDRV9QUklWQVRFYCByZWxpZXMgb24gYFpPTkVfREVWSUNFYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIE5vdywgYFpPTkVfREVWSUNFYCBpdHNlbGYgaXMgY29udGluZ2VudCB1cG9uIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIFRoYXQncyBhIHByZXR0eSBjbGVhciBzZXQgb2YgZGVwZW5kZW5jaWVzLiBUbyBiZSBjZXJ0YWluLCBJIHNob3VsZCB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24uIExldCdzIHB1bGwgdXAgdGhlIGBtbS9LY29uZmlnYCBmaWxlIGFuZCBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb25zIHRoZXJlIHRvIGNvbmZpcm0gdGhpcyByZWxhdGlvbnNoaXAgaXMgYXMgSSB0aGluayBpdCBpcy4gSSdsbCBmb2N1cyBvbiBgWk9ORV9ERVZJQ0VgIHdpdGhpbiB0aGF0IGZpbGUsIG1ha2luZyBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb3IgbWlzaW50ZXJwcmV0ZWQgdGhlIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU0NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDk6MDguMzUzNzE2NDE4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDYyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjMwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjMwOlxcdFxcbjEyMzE6XFx0Y29uZmlnIFpPTkVfRE1BMzJcXG4xMjMyOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgRE1BMzIgem9uZVxcXCIgaWYgQVJDSF9IQVNfWk9ORV9ETUFfU0VUXFxuMTIzMzpcXHRcXHRkZXBlbmRzIG9uICFYODZfMzJcXG4xMjM0OlxcdFxcdGRlZmF1bHQgeSBpZiBBUk02NFxcbjEyMzU6XFx0XFxuMTIzNjpcXHRjb25maWcgWk9ORV9ERVZJQ0VcXG4xMjM3OlxcdFxcdGJvb2wgXFxcIkRldmljZSBtZW1vcnkgKHBtZW0sIEhNTSwgZXRjLi4uKSBob3RwbHVnIHN1cHBvcnRcXFwiXFxuMTIzODpcXHRcXHRkZXBlbmRzIG9uIE1FTU9SWV9IT1RQTFVHXFxuMTIzOTpcXHRcXHRkZXBlbmRzIG9uIE1FTU9SWV9IT1RSRU1PVkVcXG4xMjQwOlxcdFxcdGRlcGVuZHMgb24gU1BBUlNFTUVNX1ZNRU1NQVBcXG4xMjQxOlxcdFxcdHNlbGVjdCBYQVJSQVlfTVVMVElcXG4xMjQyOlxcdFxcbjEyNDM6XFx0XFx0aGVscFxcbjEyNDQ6XFx0XFx0ICBEZXZpY2UgbWVtb3J5IGhvdHBsdWcgc3VwcG9ydCBhbGxvd3MgZm9yIGVzdGFibGlzaGluZyBwbWVtLFxcbjEyNDU6XFx0XFx0ICBvciBvdGhlciBkZXZpY2UgZHJpdmVyIGRpc2NvdmVyZWQgbWVtb3J5IHJlZ2lvbnMsIGluIHRoZVxcbjEyNDY6XFx0XFx0ICBtZW1tYXAuIFRoaXMgYWxsb3dzIHBmbl90b19wYWdlKCkgbG9va3VwcyBvZiBvdGhlcndpc2VcXG4xMjQ3OlxcdFxcdCAgXFxcImRldmljZS1waHlzaWNhbFxcXCIgYWRkcmVzc2VzIHdoaWNoIGlzIG5lZWRlZCBmb3IgREFYLCBQQ0lfUDJQRE1BLCBhbmRcXG4xMjQ4OlxcdFxcdCAgREVWSUNFX1BSSVZBVEUgZmVhdHVyZXMgYW1vbmcgb3RoZXJzLlxcbjEyNDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjA4LjM1NTkyODQ1OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODU5Mjg1OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmZpZ3VyYXRpb24gQ29udW5kcnVtcyBhbmQgRGV2aWNlIE1pZ3JhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb25zIGhlcmUsIGFuZCBpdCBzZWVtcyBsaWtlIEkgbmVlZCB0byBlbnN1cmUgdGhlc2UgYXJlIGFsbCBzZXQ6IGBURVNUX0hNTWAsIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGBaT05FX0RFVklDRWAsIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYFNQQVJTRU1FTV9WTUVNTUFQYCwgYW5kIGBERVZJQ0VfTUlHUkFUSU9OYC5cblxuV2FpdCBhIHNlY29uZOKApiBgREVWSUNFX01JR1JBVElPTmAgaXMgYWN0dWFsbHkgZGVwZW5kZW50LiBJdCdzIGRlZmluZWQgYXMgYGRlZl9ib29sIE1JR1JBVElPTiBcdTAwMjZcdTAwMjYgWk9ORV9ERVZJQ0VgLiBIbW0sIGBNSUdSQVRJT05gIGlzIGdlbmVyYWxseSBlbmFibGVkLCBzbyB0aGF0J3MgcHJvYmFibHkgbm90IHRoZSBibG9ja2VyLiBNeSBmb2N1cyBub3cgaXMgdGhhdCBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgSSBhbSBlbmFibGluZyB0aGUgYFpPTkVfREVWSUNFYCBjb25maWd1cmF0aW9uIHRvIGVuYWJsZSB0aGUgYERFVklDRV9NSUdSQVRJT05gIGNvbmZpZ3VyYXRpb24uXG5cbkFscmlnaHQsIG5vdyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbi4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgbWlncmF0aW9uIGxvZ2ljIGl0c2VsZiwgc28gbXkgbmV4dCBzdG9wIGlzIHRvIGV4YW1pbmUgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGluIGBtbS9taWdyYXRlX2RldmljZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZW50aXJlIG1pZ3JhdGlvbiBwcm9jZXNzIGlzIHN1cHBvc2VkIHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTE1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDk6MTIuMjE1MjE3MTY0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9taWdyYXRlX2RldmljZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExOTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExOTA6XFx0XFx0XFx0fVxcbjExOTE6XFx0XFxuMTE5MjpcXHRcXG4xMTkzOlxcdFxcdFxcdGlmIChmb2xpb19pc19kZXZpY2VfcHJpdmF0ZShuZXdmb2xpbykgfHxcXG4xMTk0OlxcdFxcdFxcdCAgICBmb2xpb19pc19kZXZpY2VfY29oZXJlbnQobmV3Zm9saW8pKSB7XFxuMTE5NTpcXHRcXHRcXHRcXHRpZiAobWFwcGluZykge1xcbjExOTY6XFx0XFx0XFx0XFx0XFx0LypcXG4xMTk3OlxcdFxcdFxcdFxcdFxcdCAqIEZvciBub3cgb25seSBzdXBwb3J0IGFub255bW91cyBtZW1vcnkgbWlncmF0aW5nIHRvXFxuMTE5ODpcXHRcXHRcXHRcXHRcXHQgKiBkZXZpY2UgcHJpdmF0ZSBvciBjb2hlcmVudCBtZW1vcnkuXFxuMTE5OTpcXHRcXHRcXHRcXHRcXHQgKlxcbjEyMDA6XFx0XFx0XFx0XFx0XFx0ICogVHJ5IHRvIGdldCByaWQgb2Ygc3dhcCBjYWNoZSBpZiBwb3NzaWJsZS5cXG4xMjAxOlxcdFxcdFxcdFxcdFxcdCAqL1xcbjEyMDI6XFx0XFx0XFx0XFx0XFx0aWYgKCFmb2xpb190ZXN0X2Fub24oZm9saW8pIHx8XFxuMTIwMzpcXHRcXHRcXHRcXHRcXHQgICAgIWZvbGlvX2ZyZWVfc3dhcChmb2xpbykpIHtcXG4xMjA0OlxcdFxcdFxcdFxcdFxcdFxcdHNyY19wZm5zW2ldIFxcdTAwMjY9IH5NSUdSQVRFX1BGTl9NSUdSQVRFO1xcbjEyMDU6XFx0XFx0XFx0XFx0XFx0XFx0Z290byBuZXh0O1xcbjEyMDY6XFx0XFx0XFx0XFx0XFx0fVxcbjEyMDc6XFx0XFxuMTIwODpcXHRcXHRcXHRcXHRcXHQvKlxcbjEyMDk6XFx0XFx0XFx0XFx0XFx0ICogZm9saW9fZnJlZV9zd2FwKCkgcmVtb3ZlZCB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcFxcbjEyMTA6XFx0XFx0XFx0XFx0XFx0ICogY2FjaGUuIFJlZnJlc2ggdGhlIHNhdmVkIG1hcHBpbmcgYmVmb3JlIG1pZ3JhdGlvbi5cXG4xMjExOlxcdFxcdFxcdFxcdFxcdCAqL1xcbjEyMTI6XFx0XFx0XFx0XFx0XFx0bWFwcGluZyA9IGZvbGlvX21hcHBpbmcoZm9saW8pO1xcbjEyMTM6XFx0XFx0XFx0XFx0fVxcbjEyMTQ6XFx0XFx0XFx0fSBlbHNlIGlmIChmb2xpb19pc196b25lX2RldmljZShuZXdmb2xpbykpIHtcXG4xMjE1OlxcdFxcdFxcdFxcdC8qXFxuMTIxNjpcXHRcXHRcXHRcXHQgKiBPdGhlciB0eXBlcyBvZiBaT05FX0RFVklDRSBwYWdlIGFyZSBub3Qgc3VwcG9ydGVkLlxcbjEyMTc6XFx0XFx0XFx0XFx0ICovXFxuMTIxODpcXHRcXHRcXHRcXHRzcmNfcGZuc1tpXSBcXHUwMDI2PSB+TUlHUkFURV9QRk5fTUlHUkFURTtcXG4xMjE5OlxcdFxcdFxcdFxcdGdvdG8gbmV4dDtcXG4xMjIwOlxcdFxcdFxcdH1cXG4xMjIxOlxcdFxcbjEyMjI6XFx0XFx0XFx0QlVHX09OKGZvbGlvX3Rlc3Rfd3JpdGViYWNrKGZvbGlvKSk7XFxuMTIyMzpcXHRcXG4xMjI0OlxcdFxcdFxcdGlmIChtaWdyYXRlIFxcdTAwMjZcXHUwMDI2IG1pZ3JhdGUtXFx1MDAzZWZhdWx0X3BhZ2UgPT0gcGFnZSlcXG4xMjI1OlxcdFxcdFxcdFxcdGV4dHJhX2NudCA9IDE7XFxuMTIyNjpcXHRcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgbnIgXFx1MDAyNlxcdTAwMjYgaSArIGogXFx1MDAzYyBucGFnZXM7IGorKykge1xcbjEyMjc6XFx0XFx0XFx0XFx0Zm9saW8gPSBwYWdlX2ZvbGlvKG1pZ3JhdGVfcGZuX3RvX3BhZ2Uoc3JjX3BmbnNbaStqXSkpO1xcbjEyMjg6XFx0XFx0XFx0XFx0bmV3Zm9saW8gPSBwYWdlX2ZvbGlvKG1pZ3JhdGVfcGZuX3RvX3BhZ2UoZHN0X3BmbnNbaStqXSkpO1xcbjEyMjk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjEyLjIxNTMzMzQ0NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTUzMjI0ODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWlncmF0aW9uIENvZGUgZm9yIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgYXNzb2NpYXRlZCBjb2RlIHBhdGguIEl0J3MgY2xlYXIgdGhhdCB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBwYWdlIG1pZ3JhdGlvbiwgYXJlIGRlZmluaXRlbHkgKnJlYWNoYWJsZSogYW5kIGFjdGl2ZWx5IHVzZWQuIFdlIGhhdmUgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBiZWluZyBjYWxsZWQgZnJvbSB2YXJpb3VzIGxvY2F0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbCwgaW5jbHVkaW5nIGBsaWIvdGVzdF9obW0uY2AgdGhyb3VnaCBgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbWAgYW5kIGBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlYCwgYXMgd2VsbCBhcyBzZXZlcmFsIE5vdXZlYXUgYW5kIFNWTSBmdW5jdGlvbnMgYW5kIHZhcmlvdXMgRFJNIGFuZCBLVk0gZnVuY3Rpb25zLiBUaGlzIHN1Z2dlc3RzIGEgZnVuY3Rpb25hbCBhcmVhIHdpdGhpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudC5cblxuVGhlIHBhdGNoJ3Mgc3RhdGVkIHB1cnBvc2UgaXMgdG8gYWRkcmVzcyBhIGJ1ZyByZWxhdGVkIHRvIGBmb2xpb19mcmVlX3N3YXAoZm9saW8pYCBhbmQgYSBtaXNzaW5nIHJlZnJlc2ggb2YgdGhlIGBtYXBwaW5nYCBwb2ludGVyLiBTaW5jZSB0aGlzIGlzIHRvdWNoaW5nIGNvcmUgTU0gYW5kIGRldmljZSBtaWdyYXRpb24sIHRoaXMgZmVlbHMgbGlrZSBhbiBhcmVhIHJpcGUgZm9yIGZ1enppbmcgYW5kIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gQW55dGltZSB5b3UncmUgZGVhbGluZyB3aXRoIGNhY2hpbmcgYW5kIGZyZWVpbmcsIGVzcGVjaWFsbHkgd2hlbiBpdCBjb21lcyB0byBkZXZpY2UgbWVtb3J5LCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcyBiZWNvbWUgdmVyeSByZWxldmFudC5cblxuTm93LCBsZXQncyBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgd2UgbmVlZCB0byBmb2N1cyBvbi4gVGhlIGZ1bmN0aW9uIGRpcmVjdGx5IG1vZGlmaWVkIGlzIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYnV0IHRoZSBleHBvcnRlZCBmdW5jdGlvbnMgYXJlIHRoZSBvbmVzIHdlIHJlYWxseSB3YW50IHRvIGV4cGxvcmU6IGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AuIEkgc2hvdWxkIGFsc28gbG9vayBhdCBgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9gIGJlY2F1c2UgaXQgY2FsbHMgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYC4gVGhlIHJlbGF0ZWQgZnVuY3Rpb25zIGBtaWdyYXRlX3ZtYV9zZXR1cGAgYW5kIGBtaWdyYXRlX3ZtYV9maW5hbGl6ZWAgYXJlIGFsc28gaW1wb3J0YW50IHRvIGNoZWNrLiBJJ2xsIHN0YXJ0IHdpdGggYSBjbG9zZXIgZXhhbWluYXRpb24gb2YgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AgdG8gc2VlIGhvdyB0aGUgY29kZSBmbG93cyBhcm91bmQgdGhlIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjEwOSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjIxLjE2ODU2MzU5NVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxODU4NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1pZ3JhdGVfZGV2aWNlX3BhZ2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL21pZ3JhdGVfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWlncmF0ZV9kZXZpY2UuYz05NjU9c3RhdGljIHZvaWQgbWlncmF0ZV92bWFfaW5zZXJ0X3BhZ2Uoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlLFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTA5ODpzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5OS1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNDQtLyoqXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjQ1OiAqIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKCkgLSBtaWdyYXRlIG1ldGEtZGF0YSBmcm9tIHNyYyBwYWdlIHRvIGRzdCBwYWdlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjQ2LSAqIEBzcmNfcGZuczogc3JjX3BmbnMgcmV0dXJuZWQgZnJvbSBtaWdyYXRlX2RldmljZV9yYW5nZSgpXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTItICovXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjUzOnZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1NC1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIG5wYWdlcylcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTUte1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1NjpcXHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzLCBOVUxMKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTctfVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1ODpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTktXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNjg9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY5LXtcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzA6XFx0X19taWdyYXRlX2RldmljZV9wYWdlcyhtaWdyYXRlLVxcdTAwM2VzcmMsIG1pZ3JhdGUtXFx1MDAzZWRzdCwgbWlncmF0ZS1cXHUwMDNlbnBhZ2VzLCBtaWdyYXRlKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzEtfVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMzYxPXN0YXRpYyB1bnNpZ25lZCBsb25nIG1pZ3JhdGVfZGV2aWNlX3Bmbl9sb2NrKHVuc2lnbmVkIGxvbmcgcGZuKVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMzkzLSAqIGFsbG9jYXRlIGRlc3RpbmF0aW9uIHBhZ2VzIGFuZCBzdGFydCBjb3B5aW5nIGRhdGEgZnJvbSB0aGUgZGV2aWNlIHRvIENQVVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTM5NDogKiBtZW1vcnkgYmVmb3JlIGNhbGxpbmcgbWlncmF0ZV9kZXZpY2VfcGFnZXMoKS5cXG5tbS9taWdyYXRlX2RldmljZS5jLTEzOTUtICovXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTE0NjE9aW50IG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTE0ODUtXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxNDg2OlxcdG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKFxcdTAwMjZzcmNfcGZuLCBcXHUwMDI2ZHN0X3BmbiwgMSk7XFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDg3LVxcdGlmIChzcmNfcGZuIFxcdTAwMjYgTUlHUkFURV9QRk5fTUlHUkFURSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDk6MjEuMzIwNDMwMjAyWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMzAyMzU0NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBQbGFuIGZvciBEZXZpY2UgUGFnZSBNaWdyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBpbXBsZW1lbnRpbmcgZGV2aWNlIHBhZ2UgbWlncmF0aW9uLCBhbmQgaXQgc2VlbXMgbGlrZSBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCBgbWlncmF0ZV92bWFfcGFnZXNgLCBhbmQgYG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvYCBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgaGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgcHJvcGVybHkgaW5jbHVkZWQgaW4gYEZvY3VzU3ltYm9sc2AuXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gSXQncyBjbGVhciB0aGF0IGBERVZJQ0VfTUlHUkFUSU9OYCBpcyBlc3NlbnRpYWwsIGFzIGl0J3Mgd2hhdCBlbmFibGVzIHRoZSBjb21waWxhdGlvbiBvZiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AuIExvb2tpbmcgY2xvc2VyLCBgREVWSUNFX01JR1JBVElPTmAgaXMgZGVmaW5lZCBhcyBgZGVmX2Jvb2wgTUlHUkFUSU9OIFx1MDAyNlx1MDAyNiBaT05FX0RFVklDRWAuIGBaT05FX0RFVklDRWAsIGluIHR1cm4sIGRlcGVuZHMgb24gYE1FTU9SWV9IT1RQTFVHYCwgYE1FTU9SWV9IT1RSRU1PVkVgLCBhbmQgYFNQQVJTRU1FTV9WTUVNTUFQYC4gR290IGl0LlxuXG5UbyB0ZXN0IHRoaXMgcHJvcGVybHksIEknbSBnb2luZyB0byBuZWVkIGEgZHJpdmVyIHRoYXQgYWN0dWFsbHkgdXNlcyB0aGlzIG1pZ3JhdGlvbiBmdW5jdGlvbmFsaXR5LiBgVEVTVF9ITU1gIGxvb2tzIGxpa2UgYSBwZXJmZWN0IGNhbmRpZGF0ZS4gSW52ZXN0aWdhdGluZyBmdXJ0aGVyLCBgVEVTVF9ITU1gIGRlcGVuZHMgb24gYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBhbmQgYERFVklDRV9QUklWQVRFYC4gQW5kIG9mIGNvdXJzZSwgYERFVklDRV9QUklWQVRFYCBkZXBlbmRzIG9uIGBaT05FX0RFVklDRWAuIFNvLCB0aGUgZW50aXJlIGNvbmZpZ3VyYXRpb24gc3RhY2ssIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBsb29rcyBsaWtlIHRoaXM6XG5cbkkgbmVlZCB0byBlbmFibGU6IGBURVNUX0hNTWAsIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGBaT05FX0RFVklDRWAsIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuXG5cbkknbSBkb3VibGUtY2hlY2tpbmcsIGp1c3QgdG8gYmUgc3VyZSwgdGhhdCBgVEVTVF9ITU1gIGlzIGVub3VnaCB0byB0cmlnZ2VyIHRoZSB1c2FnZSBvZiB0aGVzZSBmdW5jdGlvbnMuIExvb2tzIGxpa2UgaXQsIGJlY2F1c2UgaXQgcHJvdmlkZXMgYSBwc2V1ZG8gZGV2aWNlIGRyaXZlciB0byB0ZXN0IEhNTSwgd2hpY2ggaW4gdHVybiB1c2VzIGBtaWdyYXRlX3ZtYV9wYWdlc2AuXG5cbkknbGwganVzdCBxdWlja2x5IHJldmlldyBgVEVTVF9ITU1gJ3MgS2NvbmZpZyBlbnRyeSBpbiBgbGliL0tjb25maWcuZGVidWdgIHRvIGVuc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1ODUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDk6MjkuNDUwNjcxMDdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODI5ODU1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEVTVF9ITU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9MzM0Nj1jb25maWcgVEVTVF9NRU1JTklUXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzUzLVxcbmxpYi9LY29uZmlnLmRlYnVnOjMzNTQ6Y29uZmlnIFRFU1RfSE1NXFxubGliL0tjb25maWcuZGVidWctMzM1NS1cXHR0cmlzdGF0ZSBcXFwiVGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowOToyOS41Njg5ODAzMTFaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1NTc4NTUzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDpcblxuKipEaWdnaW5nIGludG8gdGhlIEtjb25maWcgZm9yIERldmljZS1TcGVjaWZpYyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMga2VybmVsIG1vZHVsZSwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgYWJvdXQgaXRzIGNvbmZpZ3VyYXRpb24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY2hlY2sgYG1tL0tjb25maWdgLiBJJ20gc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIHRoZSBgREVWSUNFX1BSSVZBVEVgIG9wdGlvbi4gVGhpcyBuYW1lIHJpbmdzIGEgYmVsbCwgYW5kIEkgbmVlZCB0byBjb25maXJtIGl0cyBkZWZpbml0aW9uIGFuZCBhbnkgZGVwZW5kZW5jaWVzLiBJIHN1c3BlY3QgaXQncyBjb250cm9sbGluZyBzb21lIG1lbW9yeSBtYW5hZ2VtZW50IGFzcGVjdHMgc3BlY2lmaWMgdG8gdGhpcyBkZXZpY2UsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBvbiB0aGUgcmlnaHQgdHJhY2sgYW5kIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMgaW4gdGhlIGJ1aWxkIHN5c3RlbSdzIGNvbmZpZ3VyYXRpb24uIEdvdHRhIHF1aWNrbHkgY29uZmlybSB0aGlzIHRvIGF2b2lkIHdhc3RlZCB0aW1lIHRyb3VibGVzaG9vdGluZyBsYXRlci4gQ2hlY2tpbmcgYG1tL0tjb25maWdgIG5vdy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQ1MCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjMyLjUyNDc2ODIyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE2NzcxMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERFVklDRV9QUklWQVRFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz0xMjY0PWNvbmZpZyBHRVRfRlJFRV9SRUdJT05cXG4tLVxcbm1tL0tjb25maWctMTI2Ni1cXG5tbS9LY29uZmlnOjEyNjc6Y29uZmlnIERFVklDRV9QUklWQVRFXFxubW0vS2NvbmZpZy0xMjY4LVxcdGJvb2wgXFxcIlVuYWRkcmVzc2FibGUgZGV2aWNlIG1lbW9yeSAoR1BVIG1lbW9yeSwgLi4uKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDk6MzIuNjI2NDUxNjcyWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDk3OTMyMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFpPTkVfREVWSUNFIEtjb25maWcgT3B0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUga2VybmVsJ3MgbWVtb3J5IG1hbmFnZW1lbnQsIGFuZCBpdCBsb29rcyBsaWtlIGBaT05FX0RFVklDRWAgbWlnaHQgYmUgdGhlIGtleS4gTXkgZmlyc3QgbW92ZSBpcyB0byBqdW1wIGRpcmVjdGx5IGludG8gYG1tL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBhbmQgYW55IGFjY29tcGFueWluZyBjb250ZXh0IGZvciB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gc2VlIHdoYXQgdGhpcyBvcHRpb24gZW5hYmxlcyBvciBkaXNhYmxlcywgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLCBhbmQgcGVyaGFwcyBldmVuIHdoYXQgYXJjaGl0ZWN0dXJlcyBvciBzcGVjaWZpYyB1c2UgY2FzZXMgaXQncyB0aWVkIHRvLiBVbmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGZyb20gd2l0aGluIHRoZSBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUgc29saWQgZm91bmRhdGlvbiBJIG5lZWQgdG8gZ3Jhc3AgaXRzIGltcGxpY2F0aW9ucyBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIG1lbW9yeSBtYW5hZ2VtZW50IGxhbmRzY2FwZS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ3MzcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowOTozNS41NzYyNDg0MTJaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjQ2NTkxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWk9ORV9ERVZJQ0VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTEyMzE9Y29uZmlnIFpPTkVfRE1BMzJcXG4tLVxcbm1tL0tjb25maWctMTIzNS1cXG5tbS9LY29uZmlnOjEyMzY6Y29uZmlnIFpPTkVfREVWSUNFXFxubW0vS2NvbmZpZy0xMjM3LVxcdGJvb2wgXFxcIkRldmljZSBtZW1vcnkgKHBtZW0sIEhNTSwgZXRjLi4uKSBob3RwbHVnIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjM1LjY4ODcyMzE4MloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDI4NjU0NjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipDaGVja2luZyB0aGUgYE1JR1JBVElPTmAgQ29uZmlndXJhdGlvbiBpbiBgbW0vS2NvbmZpZ2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMuIEknbSB0aGlua2luZywgbGV0J3Mgc3RhcnQgYnkgdmVyaWZ5aW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiByZWxhdGVkIHRvIGBNSUdSQVRJT05gIHdpdGhpbiB0aGUgYG1tL0tjb25maWdgIGZpbGUuIFRoaXMgaXMgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBkZXRhaWxzIGFib3V0IGhvdyB0aGUga2VybmVsIGhhbmRsZXMgcGFnZSBtaWdyYXRpb24gZmVhdHVyZXMuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpcyBleHBvc2VkIGFuZCBjb250cm9sbGVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiB0aGUgZGVmYXVsdCBzdGF0ZSBvZiB0aGUgb3B0aW9uLCBhbnkgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUgb24gb3RoZXIgZmVhdHVyZXMgb3Iga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBhbmQgdGhlIGhlbHAgdGV4dCBhc3NvY2lhdGVkIHdpdGggaXQuIFRoaXMgY29udGV4dCBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGFjdCBvbiBtZW1vcnkgbWFuYWdlbWVudC4gS25vd2luZyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgaXMga2V5LCBhcyBJIHJlY2FsbCB0aGVyZSBhcmUgcXVpdGUgYSBmZXcgc3VidGxlIHdheXMgdG8gY29uZmlndXJlIGl0LCBzbyB0aGF0J3Mgd2hlcmUgSSB3aWxsIHN0YXJ0LCBieSBtYWtpbmcgc3VyZSB0aGF0IHRoZSBmZWF0dXJlcyBJIGV4cGVjdCBhcmUgc3RpbGwgYWN0aXZlIGFuZCB3b3JraW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTA0MSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjM5LjcxNzM4MDMxNloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMwNjI0Njc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNSUdSQVRJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTY4NT1jb25maWcgTlVNQV9NSUdSQVRJT05cXG4tLVxcbm1tL0tjb25maWctNjk1LVxcbm1tL0tjb25maWc6Njk2OmNvbmZpZyBNSUdSQVRJT05cXG5tbS9LY29uZmlnLTY5Ny1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjA5OjQwLjI0ODAxNDYxMloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODcxMzgzMTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgUmVhc29uaW5nIFJlZ2FyZGluZyBNZW1vcnkgTWFuYWdlbWVudCBhbmQgTWlncmF0aW9uKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGF0IHRoZSBgTUlHUkFUSU9OYCBmZWF0dXJlIGlzIGRpcmVjdGx5IGluZmx1ZW5jZWQgYnkgc2V2ZXJhbCBvdGhlciBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW1zOiBgTlVNQV9CQUxBTkNJTkdgLCBgQ09NUEFDVElPTmAsIGBDTUFgLCBgTUVNT1JZX0hPVFJFTU9WRWAsIGBNRU1PUllfRkFJTFVSRWAsIGFuZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBUaGF0J3MgYSBwcmV0dHkgY2xlYXIgZGVwZW5kZW5jeSBjaGFpbi4gVGhlcmVmb3JlLCBlbmFibGluZyBzb21ldGhpbmcgbGlrZSBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCB3aGljaCBJIGtub3cgaXMgaGVhdmlseSBpbnZvbHZlZCBpbiBtZW1vcnkgb3B0aW1pemF0aW9uLCBvciBgTUVNT1JZX0hPVFJFTU9WRWAsIHdoaWNoIGRlYWxzIHdpdGggZHluYW1pYyBtZW1vcnkgYWRkaXRpb24gYW5kIHJlbW92YWwsIHdpbGwgYXV0b21hdGljYWxseSBwdWxsIGluIGBNSUdSQVRJT05gIGFzIGEgY29yZSBjYXBhYmlsaXR5LiBNYWtlcyBwZXJmZWN0IHNlbnNlIGZyb20gYSBzeXN0ZW1zIHBlcnNwZWN0aXZlOyB0aGVzZSBmZWF0dXJlcyBmcmVxdWVudGx5IHJlcXVpcmUgdGhlIGFiaWxpdHkgdG8gbW92ZSBtZW1vcnkgYXJvdW5kLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJJ20gZ29pbmcgdG8gcXVpY2tseSByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgYE1FTU9SWV9IT1RQTFVHYCBhbmQgYE1FTU9SWV9IT1RSRU1PVkVgLiBUaGVzZSBhcmUgY3JpdGljYWwgd2hlbiBkZWFsaW5nIHdpdGggZHluYW1pYyBtZW1vcnkgYW5kIEkgd2FudCB0byBlbnN1cmUgbXkgbWVudGFsIG1vZGVsIG9mIHRoZWlyIHJlbGF0aW9uc2hpcCB0byBgTUlHUkFUSU9OYCBpcyBjb21wbGV0ZWx5IGFjY3VyYXRlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNwZWNpZmljcyBvZiB0aGUgaG90cGx1ZyBhbmQgaG90cmVtb3ZlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgYXJlIGhhbmRsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MzYyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDk6NDYuMTE5NDAwNTc2WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODgwMDUwMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1FTU9SWV9IT1RQTFVHXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz01MTk9Y29uZmlnIEFSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHXFxuLS1cXG5tbS9LY29uZmlnLTUyMi0jIGV2ZW50dWFsbHksIHdlIGNhbiBoYXZlIHRoaXMgb3B0aW9uIGp1c3QgJ3NlbGVjdCBTUEFSU0VNRU0nXFxubW0vS2NvbmZpZzo1MjM6bWVudWNvbmZpZyBNRU1PUllfSE9UUExVR1xcbm1tL0tjb25maWctNTI0LVxcdGJvb2wgXFxcIk1lbW9yeSBob3RwbHVnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowOTo0Ni4zMDc0MTA0OFoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODU1Mjc3MzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERldmljZSBQYWdlIE1pZ3JhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGJ1ZyB3aXRoaW4gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgLiBTcGVjaWZpY2FsbHksIHRoZSBjb2RlJ3Mgbm90IHByb3Blcmx5IGhhbmRsaW5nIHRoZSBgbWFwcGluZ2AgdmFyaWFibGUgYWZ0ZXIgYSBgZm9saW9fZnJlZV9zd2FwKClgIGNhbGwgcmVtb3ZlcyB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcCBjYWNoZS4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBkZXZpY2UgbWlncmF0aW9uLCB3aGljaCBpcyB3b3J0aCBhIGNsb3NlciBsb29rLlxuXG5UaGUgY29kZSBwYXRocyB0aGF0IGFyZSBhZmZlY3RlZCBhcmUgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSB0aGV5J3JlIHV0aWxpemVkIGJ5IGRldmljZSBkcml2ZXJzLCBhbmQgSSBrbm93IHRoZSBITU0gdGVzdCBkcml2ZXIgYWxzbyBtYWtlcyB1c2Ugb2YgdGhlbS4gVG8gcmVhbGx5IHB1dCB0aGlzIHRocm91Z2ggaXRzIHBhY2VzIHdpdGggZnV6emluZywgSSdsbCBuZWVkIHRvIGVuYWJsZSBhIGZldyBjb25maWd1cmF0aW9uczogYFRFU1RfSE1NYCBvZiBjb3Vyc2UsIGFzIHdlbGwgYXMgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYERFVklDRV9QUklWQVRFYCwgYFpPTkVfREVWSUNFYCwgYW5kIG5hdHVyYWxseSwgYE1FTU9SWV9IT1RQTFVHYCBhbmQgYE1FTU9SWV9IT1RSRU1PVkVgIHdoaWNoIGFyZSBhbHJlYWR5IGluIHBsYWNlLiBXZSBzaG91bGQga2VlcCBhbiBleWUgb24gYFNQQVJTRU1FTV9WTUVNTUFQYCBhbHNvLlxuXG5MZXQncyBsb2cgdGhlIGZ1enppbmcgcmVzdWx0cywgSSdsbCBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODIyLCJPdXRwdXRUb2tlbnMiOjIyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowOTo1NS4xNjI2OTA4MzNaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDgyNzkxMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRFU1RfSE1NXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICAgIFwiREVWSUNFX1BSSVZBVEVcIixcbiAgICBcIlpPTkVfREVWSUNFXCIsXG4gICAgXCJNRU1PUllfSE9UUExVR1wiLFxuICAgIFwiTUVNT1JZX0hPVFJFTU9WRVwiLFxuICAgIFwiU1BBUlNFTUVNX1ZNRU1NQVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtaWdyYXRlX2RldmljZV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV92bWFfcGFnZXNcIixcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIHdoZXJlIHRoZSBgbWFwcGluZ2AgdmFyaWFibGUgaXMgbm90IHJlZnJlc2hlZCBhZnRlciBgZm9saW9fZnJlZV9zd2FwKClgIHJlbW92ZXMgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXAgY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gKGRldmljZSBtaWdyYXRpb24pLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AsIHdoaWNoIGFyZSB1c2VkIGJ5IGRldmljZSBkcml2ZXJzIGFuZCB0aGUgSE1NIHRlc3QgZHJpdmVyLiBGdXp6aW5nIHRoaXMgcmVxdWlyZXMgZW5hYmxpbmcgYFRFU1RfSE1NYCBhbmQgcmVsYXRlZCBtZW1vcnkgaG90cGx1Zy9kZXZpY2UgbWVtb3J5IGNvbmZpZ3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVEVTVF9ITU1cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERVZJQ0VfUFJJVkFURVwiLFxuICAgIFwiWk9ORV9ERVZJQ0VcIixcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCIsXG4gICAgXCJNRU1PUllfSE9UUkVNT1ZFXCIsXG4gICAgXCJTUEFSU0VNRU1fVk1FTU1BUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX3ZtYV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19taWdyYXRlX2RldmljZV9wYWdlc2Agd2hlcmUgdGhlIGBtYXBwaW5nYCB2YXJpYWJsZSBpcyBub3QgcmVmcmVzaGVkIGFmdGVyIGBmb2xpb19mcmVlX3N3YXAoKWAgcmVtb3ZlcyB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcCBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoZGV2aWNlIG1pZ3JhdGlvbikuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgd2hpY2ggYXJlIHVzZWQgYnkgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBITU0gdGVzdCBkcml2ZXIuIEZ1enppbmcgdGhpcyByZXF1aXJlcyBlbmFibGluZyBgVEVTVF9ITU1gIGFuZCByZWxhdGVkIG1lbW9yeSBob3RwbHVnL2RldmljZSBtZW1vcnkgY29uZmlncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlczt[1] Phase: Succeeded StartedAt: 2026-07-25 12:10:06 +0000 UTC FinishedAt: 2026-07-25 12:10:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 12:10:06 +0000 UTC FinishedAt: 2026-07-25 12:10:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2] Phase: Succeeded StartedAt: 2026-07-25 12:10:06 +0000 UTC FinishedAt: 2026-07-25 16:41:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-25 12:10:06 +0000 UTC FinishedAt: 2026-07-25 16:41:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 12:10:06 +0000 UTC FinishedAt: 2026-07-25 12:11:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 12:10:06 +0000 UTC FinishedAt: 2026-07-25 12:11:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowrlczt/series-workflowrlczt-convert-artifact-1399874070/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 12:11:16 +0000 UTC FinishedAt: 2026-07-25 12:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 12:11:16 +0000 UTC FinishedAt: 2026-07-25 12:46:57 +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:*27c11947-fd0b-4e08-8fda-ba7c137d6f0f,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-workflowrlczt/series-workflowrlczt-convert-artifact-1399874070/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": "5f82738c-f37c-4033-a68b-9ab4072874d1", "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-workflowrlczt/series-workflowrlczt-build-action-2085327276/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 12:11:16 +0000 UTC FinishedAt: 2026-07-25 12:46:47 +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:*27c11947-fd0b-4e08-8fda-ba7c137d6f0f,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-workflowrlczt/series-workflowrlczt-convert-artifact-1399874070/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": "5f82738c-f37c-4033-a68b-9ab4072874d1", "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-workflowrlczt/series-workflowrlczt-build-action-2085327276/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 12:46:57 +0000 UTC FinishedAt: 2026-07-25 12:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 12:46:57 +0000 UTC FinishedAt: 2026-07-25 12:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 12:46:57 +0000 UTC FinishedAt: 2026-07-25 12:47:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 12:46:57 +0000 UTC FinishedAt: 2026-07-25 12:47:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowrlczt/series-workflowrlczt-convert-artifact-1515469737/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 12:47:17 +0000 UTC FinishedAt: 2026-07-25 12:49:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 12:47:17 +0000 UTC FinishedAt: 2026-07-25 12:49:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5f82738c-f37c-4033-a68b-9ab4072874d1,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-workflowrlczt/series-workflowrlczt-build-action-2085327276/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-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 12:49:12 +0000 UTC FinishedAt: 2026-07-25 12:49:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 12:49:12 +0000 UTC FinishedAt: 2026-07-25 12:49:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 12:49:12 +0000 UTC FinishedAt: 2026-07-25 13:36:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 12:49:12 +0000 UTC FinishedAt: 2026-07-25 13:36:00 +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:*27c11947-fd0b-4e08-8fda-ba7c137d6f0f,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-workflowrlczt/series-workflowrlczt-convert-artifact-1515469737/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": "0abf9e4d-d744-49a2-b344-5765da956a09", "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-workflowrlczt/series-workflowrlczt-build-action-3371925637/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 12:49:12 +0000 UTC FinishedAt: 2026-07-25 13:34:32 +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:*27c11947-fd0b-4e08-8fda-ba7c137d6f0f,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-workflowrlczt/series-workflowrlczt-convert-artifact-1515469737/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": "0abf9e4d-d744-49a2-b344-5765da956a09", "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-workflowrlczt/series-workflowrlczt-build-action-3371925637/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-25 13:36:00 +0000 UTC FinishedAt: 2026-07-25 13:36:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-25 13:36:00 +0000 UTC FinishedAt: 2026-07-25 13:36:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-25 13:36:00 +0000 UTC FinishedAt: 2026-07-25 13:37:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-25 13:36:00 +0000 UTC FinishedAt: 2026-07-25 13:37:41 +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:*0abf9e4d-d744-49a2-b344-5765da956a09,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-workflowrlczt/series-workflowrlczt-build-action-3371925637/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-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-25 13:37:51 +0000 UTC FinishedAt: 2026-07-25 16:41:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-25 13:37:51 +0000 UTC FinishedAt: 2026-07-25 16:41:34 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},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:*5f82738c-f37c-4033-a68b-9ab4072874d1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0abf9e4d-d744-49a2-b344-5765da956a09,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-workflowrlczt/series-workflowrlczt-build-action-2085327276/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-workflowrlczt/series-workflowrlczt-build-action-3371925637/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-25 13:37:51 +0000 UTC FinishedAt: 2026-07-25 13:38:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-25 13:37:51 +0000 UTC FinishedAt: 2026-07-25 13:38:00 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},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-workflowrlczt/series-workflowrlczt-convert-artifact-4079976190/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-25 13:37:51 +0000 UTC FinishedAt: 2026-07-25 13:37:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-25 13:37:51 +0000 UTC FinishedAt: 2026-07-25 13:37:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-25 13:37:51 +0000 UTC FinishedAt: 2026-07-25 13:37:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-25 13:38:12 +0000 UTC FinishedAt: 2026-07-25 16:41:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlczt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE","SPARSEMEM_VMEMMAP"],"series_id":"f454c585-ed4f-467b-918e-9fba54a7d476","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-25 13:38:12 +0000 UTC FinishedAt: 2026-07-25 16:41:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5f82738c-f37c-4033-a68b-9ab4072874d1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0abf9e4d-d744-49a2-b344-5765da956a09,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-workflowrlczt/series-workflowrlczt-build-action-2085327276/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-workflowrlczt/series-workflowrlczt-build-action-3371925637/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-workflowrlczt/series-workflowrlczt-convert-artifact-4079976190/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,}