Name: series-workflow4xb4g Phase: Succeeded StartedAt: 2026-07-04 09:43:44 +0000 UTC FinishedAt: 2026-07-04 14:41:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[0] Phase: Succeeded StartedAt: 2026-07-04 09:43:44 +0000 UTC FinishedAt: 2026-07-04 10:15:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[0].run-triage Phase: Succeeded StartedAt: 2026-07-04 09:43:44 +0000 UTC FinishedAt: 2026-07-04 10:15:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "29ea9753-3963-4f52-8336-e5e50d548be5" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "nullb_device_power_store", "nullb_group_make_group", "nullb_group_drop_item", "null_add_dev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZ3JvdXBfbWFrZV9ncm91cCYjMzQ7LAogICAgJiMzNDtudWxsYl9ncm91cF9kcm9wX2l0ZW0mIzM0OywKICAgICYjMzQ7bnVsbF9hZGRfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gbnVsbF9ibGsgbW9kdWxlIGluaXRpYWxpemF0aW9uIHdoZXJlIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgaXMgZXhwb3NlZCBiZWZvcmUgYGxvY2tgIGlzIGluaXRpYWxpemVkLiBGdXp6aW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBudWxsX2JsayBjYW4gaGVscCB2ZXJpZnkgdGhpcyBmaXggYW5kIHVuY292ZXIgc2ltaWxhciBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4NmExMGY3Zjk4NzY2MGNiYTQyY2IzMmM2ODdhODFiMDgzM2ZiZGY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgNCAxMDoxNDozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uOTg2MTZkMjkwYzVjYjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC0yMTYxLDEzICYjNDM7MjE2MSwxMiBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcbiBcdGNvbmZpZ19ncm91cF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XG4gXHRtdXRleF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XG4mIzQzO1x0bXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtcbiBcbiBcdHJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdG11dGV4X2luaXQoXHUwMDI2bG9jayk7XG4tXG4gXHRudWxsX21ham9yID0gcmVnaXN0ZXJfYmxrZGV2KDAsIFwmIzM0O251bGxiXCYjMzQ7KTtcbiBcdGlmIChudWxsX21ham9yIFx1MDAzYyAwKSB7XG4gXHRcdHJldCA9IG51bGxfbWFqb3I7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OVUxMX0JMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9ncm91cF9tYWtlX2dyb3VwJiMzNDssCiAgICAmIzM0O251bGxiX2dyb3VwX2Ryb3BfaXRlbSYjMzQ7LAogICAgJiMzNDtudWxsX2FkZF9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBudWxsX2JsayBtb2R1bGUgaW5pdGlhbGl6YXRpb24gd2hlcmUgdGhlIGNvbmZpZ2ZzIGludGVyZmFjZSBpcyBleHBvc2VkIGJlZm9yZSBgbG9ja2AgaXMgaW5pdGlhbGl6ZWQuIEZ1enppbmcgdGhlIGNvbmZpZ2ZzIGludGVyZmFjZSBmdW5jdGlvbnMgZm9yIG51bGxfYmxrIGNhbiBoZWxwIHZlcmlmeSB0aGlzIGZpeCBhbmQgdW5jb3ZlciBzaW1pbGFyIGlzc3Vlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODZhMTBmN2Y5ODc2NjBjYmE0MmNiMzJjNjg3YTgxYjA4MzNmYmRmNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDQgMTA6MTQ6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jCmluZGV4IGY4YzBmZDU3ZTA0MWE4Li45ODYxNmQyOTBjNWNiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKQEAgLTIxNjEsMTMgJiM0MzsyMTYxLDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKQogCiAJY29uZmlnX2dyb3VwX2luaXQoJmFtcDtudWxsYl9zdWJzeXMuc3VfZ3JvdXApOwogCW11dGV4X2luaXQoJmFtcDtudWxsYl9zdWJzeXMuc3VfbXV0ZXgpOwomIzQzOwltdXRleF9pbml0KCZhbXA7bG9jayk7CiAKIAlyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oJmFtcDtudWxsYl9zdWJzeXMpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQltdXRleF9pbml0KCZhbXA7bG9jayk7Ci0KIAludWxsX21ham9yID0gcmVnaXN0ZXJfYmxrZGV2KDAsICYjMzQ7bnVsbGImIzM0Oyk7CiAJaWYgKG51bGxfbWFqb3IgJmx0OyAwKSB7CiAJCXJldCA9IG51bGxfbWFqb3I7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4ODIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTnVsbCBCbG9jayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGVkIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGEgc2ltcGxlIGNvZGUgcmVhcnJhbmdlbWVudCwgbW92aW5nIHRoZSBgbXV0ZXhfaW5pdCgmYW1wO2xvY2spO2AgY2FsbCB0byAqYmVmb3JlKiB0aGUgYGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbSgmYW1wO251bGxiX3N1YnN5cyk7YCBjYWxsLiBBdCBmaXJzdCBnbGFuY2UsIHRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgaW1wcm92ZW1lbnQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIHByb2JhYmx5IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uCgpMZXQgbWUgYnJlYWsgdGhhdCBkb3duOiBJZiBgY29uZmlnZnNgIGlzIGFjY2Vzc2VkIGNvbmN1cnJlbnRseSB3aXRoIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24sIHRoZXJlJiMzOTtzIGEgd2luZG93IHdoZXJlIGBsb2NrYCAqY291bGQqIGJlIHVzZWQgYmVmb3JlIGl0JiMzOTtzIGJlZW4gaW5pdGlhbGl6ZWQgdmlhIGBtdXRleF9pbml0KClgLiBUaGlzIHJlYXJyYW5nZW1lbnQgbGlrZWx5IGNsb3NlcyB0aGF0IHdpbmRvdywgZW5zdXJpbmcgdGhlIG11dGV4IGlzIHJlYWR5IGJlZm9yZSBhbnl0aGluZyBhdHRlbXB0cyB0byB1c2UgaXQuIE5vdyBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgYXJvdW5kIHRoZSBgbXV0ZXhfaW5pdCgmYW1wO2xvY2spO2AgbGluZSBpbiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLCBhbmQgY29uZmlybSBteSBoeXBvdGhlc2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O211dGV4X2luaXRcXChcdTAwMjZsb2NrXFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjEyNT1zdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTYzLVx0bXV0ZXhfaW5pdChcdTAwMjZudWxsYl9zdWJzeXMuc3VfbXV0ZXgpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjE2NDpcdG11dGV4X2luaXQoXHUwMDI2bG9jayk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTY1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNjEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTaWduaWZpY2FuY2Ugb2YgYSBLZXJuZWwgTW9kdWxlIEluaXRpYWxpemF0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgaW5pdGlhbGl6YXRpb24gb3JkZXIgd2l0aGluIGBudWxsX2luaXRgLCB3aGljaCBJIGtub3cgaXMgdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGZvciB0aGUgYG51bGxfYmxrYCBtb2R1bGUuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtTaG91bGQgd2UgZnV6eiB0aGlzPyYjMzQ7IEFuZCB0aGUgYW5zd2VyIGlzICYjMzQ7WWVzLCBhYnNvbHV0ZWx5LiYjMzQ7IFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjb3NtZXRpYyBjaGFuZ2U7IGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBmaXggYWRkcmVzc2luZyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi4gQW55IGNoYW5nZSB0aGF0IG1vZGlmaWVzIHRoZSB3YXkgYSBtb2R1bGUgaXMgaW5pdGlhbGl6ZWQgaXMgd29ydGggYSBjbG9zZXIgbG9vaywgZXNwZWNpYWxseSBpZiBpdCBjb3VsZCBpbXBhY3QgY29uY3VycmVuY3kuCgpIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2jigKYgYG51bGxfaW5pdGAgaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24sIGlzbiYjMzk7dCBpdD8gRnV6emluZyB1c3VhbGx5IHRhcmdldHMgc3lzY2FsbHMgYW5kIHJ1bnRpbWUgYmVoYXZpb3JzLiBXZSYjMzk7cmUgZ2VuZXJhbGx5IG5vdCBmdXp6aW5nIGtlcm5lbCBpbml0aWFsaXphdGlvbiBkaXJlY3RseSwgYnV0IHRoZW4gYWdhaW4uLi4gd2XigJlyZSB3b3JraW5nIHdpdGggc3l6a2FsbGVyLiBTeXprYWxsZXIgaXMgY2FwYWJsZSBvZiBkb2luZyBtb3JlIHRoYW4ganVzdCBwb2tpbmcgYXQgc3lzY2FsbHMuIEl0IGNhbiBoYW5kbGUgbW9kdWxlIGxvYWRpbmcgYW5kIHVubG9hZGluZy4gSXQgY2FuIGludGVyYWN0IHdpdGggY29uZmlnZnMuIFRoaXMgYWRkcyBhIG5ldyBkaW1lbnNpb24uCgpBbHJpZ2h0LCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW4sIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgY2hlY2sgd2hhdCBsb2NrIGlzIHVzZWQgZm9yIGluIHRoZSBudWxsX2JsayBtb2R1bGUuIEtub3dpbmcgdGhlIGNyaXRpY2FsIHNlY3Rpb25zIHdpbGwgaW5mb3JtIG15IGZ1enppbmcgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXV0ZXhfbG9ja1xcKFx1MDAyNmxvY2tcXCkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00MjE9c3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MjUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0MjY6XHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDI3LVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDMzPXN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQzNy1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQzODpcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzktXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00ODQ9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00OTUtXHRyZXQgPSBjb3VudDtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ5NjpcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00OTctXHRpZiAoIWRldi1cdTAwM2Vwb3dlciBcdTAwMjZcdTAwMjYgbmV3cCkge1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTcwNT1udWxsYl9ncm91cF9kcm9wX2l0ZW0oc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsIHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MDktXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzEwOlx0XHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzExLVx0XHRkZXYtXHUwMDNlcG93ZXIgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMDgwPXN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwODMtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDg0Olx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwODUtXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG5iLCBcdTAwMjZudWxsYl9saXN0LCBsaXN0KSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjA5Nj1zdGF0aWMgaW50IG51bGxfY3JlYXRlX2Rldih2b2lkKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDQtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTA1Olx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDYtXHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMTk2PXN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMjAzLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjIwNDpcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMjA1LVx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNm51bGxiX2xpc3QpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYwNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSYWNlIENvbmRpdGlvbiBJZGVudGlmaWVkIGluIG51bGxfYmxrIE1vZHVsZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgbnVsbF9ibGtgIG1vZHVsZSwgYW5kIEkmIzM5O3ZlIHNwb3R0ZWQgc29tZXRoaW5nIGludGVyZXN0aW5nLiBUaGlzIGBsb2NrYCB2YXJpYWJsZS4uLiBpdCYjMzk7cyB1c2VkIGFsbCBvdmVyIHRoZSBwbGFjZTogaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gLCBgbnVsbF9jcmVhdGVfZGV2YCwgYG51bGxfZmluZF9kZXZfYnlfbmFtZWAsIGFuZCBwcmVzdW1hYmx5IGEgZmV3IG90aGVyIHBsYWNlcy4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGlzIHRoYXQgYWxsIG9mIHRob3NlIGZ1bmN0aW9ucyBhcmUgYWNjZXNzaWJsZSwgYXQgbGVhc3QgaW4gcGFydCwgdmlhIHRoZSBjb25maWdmcyBpbnRlcmZhY2Ugb3IgbW9kdWxlIHBhcmFtZXRlcnMsIHJpZ2h0PwoKVGhlIHBhdGNoIEkmIzM5O20gcmV2aWV3aW5nIGFwcGVhcnMgdG8gYWRkcmVzcyBhIHJhY2UgY29uZGl0aW9uLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRvIG1lIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBUaGUgaXNzdWUgaXMgdGhhdCB0aGUgYGxvY2tgIGlzIHVzZWQgKmJlZm9yZSogaXQmIzM5O3MgYmVlbiBpbml0aWFsaXplZC4gVGhpcyByYWNlIGNvbmRpdGlvbiBzZWVtcyB0byBiZSB0cmlnZ2VyZWQgYmVjYXVzZSBvZiB0aGUgdGltaW5nIGFzc29jaWF0ZWQgd2l0aCBgY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtYC4gRXNzZW50aWFsbHksIHNvbWUgdXNlciBhY2Nlc3NlcyB0aGUgY29uZmlnZnMgaW50ZXJmYWNlIChsaWtlIGEgY2FsbCB0byBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCkgKmJlZm9yZSogYG11dGV4X2luaXQoJmFtcDtsb2NrKWAgaGFzIGJlZW4gY2FsbGVkLiBUaGUga2VybmVsIGNhbiBleHBvc2UgdGhlIGNvbmZpZ2ZzIGludGVyZmFjZSBhbmQgYWxsb3cgdXNlciBhY2Nlc3MgYmVmb3JlIHRoZSBtdXRleCBpcyBhY3R1YWxseSBzZXQgdXAsIHdoaWNoIG9mIGNvdXJzZSBsZWFkcyB0byB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLgoKR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgdGhpcyBraW5kIG9mIHJhY2UsIEkmIzM5O20gYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgdGhpcyBuZWVkcyBzb21lIHNlcmlvdXMgZnV6emluZy4gVGhlIHNjZW5hcmlvIHNlZW1zIHByZXR0eSB3ZWxsLWRlZmluZWQsIGFuZCB0aGUgaW1wYWN0IGNvdWxkIGJlIHNpZ25pZmljYW50LCBkZXBlbmRpbmcgb24gaG93IHRoaXMgbG9jayBpcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGRldmljZSBkcml2ZXJzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXhhY3QgY29uZmlnIG9wdGlvbnMgZm9yIGBudWxsX2Jsa2AgdG8gYnVpbGQgYSBmdXp6aW5nIHRlc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0RFVl9OVUxMX0JMSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEzNQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRob3NlIGZpbGVzOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBIdW50aW5nKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBhIHNwZWNpZmljIGJsb2NrIGRldmljZSBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBzZXQgdXAuIExldCYjMzk7cyBzZWUuLi4gVHlwaWNhbGx5LCB0aGVzZSBvcHRpb25zIGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIEtjb25maWcgc3lzdGVtLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXJuZWwmIzM5O3MgZGlyZWN0b3J5IHN0cnVjdHVyZSwgdGhlIG1vc3QgbG9naWNhbCBwbGFjZXMgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMgYXJlIHRoZSBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBhbmQsIHBvdGVudGlhbGx5IGlmIHRoaXMgaXMgYSBzcGVjaWFsaXplZCBkcml2ZXIsIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdgIGZpbGVzLiBJJiMzOTtsbCBuZWVkIHRvIG9wZW4gdGhlbSBhbmQgc2NhbiB0aHJvdWdoIHRoZSBlbnRyaWVzLCBsb29raW5nIGZvciBsaWtlbHkgY2FuZGlkYXRlcyBiYXNlZCBvbiB0aGUgZGV2aWNlIG9yIGZ1bmN0aW9uYWxpdHkgSSYjMzk7bSB0cnlpbmcgdG8gY29uZmlndXJlLiBUaGVzZSBmaWxlcyBjb250YWluIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGV4cG9zZWQgdG8gdGhlIHVzZXIsIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRob3NlIG9wdGlvbnMsIGFuZCBhbnkgYXNzb2NpYXRlZCBoZWxwIHRleHQuIEkgY2FuIHRoZW4gdHJhY2UgYmFjayB0aHJvdWdoIHRoZSBkZXBlbmRlbmNpZXMgdG8gc2VlIHdoeSBhIHBhcnRpY3VsYXIgb3B0aW9uIGlzIHNlbGVjdGVkIG9yIGRlc2VsZWN0ZWQuIEZyb20gdGhlcmUgSSYjMzk7bGwgYmUgYWJsZSB0byB3b3JrIG91dCBob3cgdG8gY29udHJvbCB0aGUgYmxvY2sgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAxMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgLipOVUxMX0JMSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjY6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy05LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAxMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTQ1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTnVsbCBCbG9jayBEZXZpY2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uLCBhbmQgYEJMS19ERVZfTlVMTF9CTEtgIGlzIHRoZSBrZXkgZGVmaW5pdGlvbiBoZXJlLiBUaGF0IHBvaW50cyBtZSB0byB0aGUgbnVsbCBibG9jayBkZXZpY2UuIE15IGZvY3VzIGlzIG9uIGlkZW50aWZ5aW5nIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgdG8gdW5jb3ZlciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKSSBuZWVkIHRvIG5haWwgZG93biB0aGUgZXNzZW50aWFsIGZ1bmN0aW9ucyB0byB0YXJnZXQuIEZpcnN0LCBgbnVsbF9pbml0YCBpcyB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIOKAkyBkZWZpbml0ZWx5IG5lZWRzIGEgY2xvc2UgbG9vay4gQmV5b25kIHRoYXQsIEkmIzM5O3ZlIGdvdCBhIHNob3J0IGxpc3Q6IGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLCBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYCwgYG51bGxfY3JlYXRlX2RldmAsIGFuZCBgbnVsbF9hZGRfZGV2YC4KCkkmIzM5O20gc3RhcnRpbmcgd2l0aCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBhbmQgYG51bGxiX2dyb3VwX2Ryb3BfaXRlbWAuIFRoZXNlIHNlZW0gbGlrZSBnb29kIHN0YXJ0aW5nIHBvaW50cyBkdWUgdG8gdGhlIHBvdGVudGlhbCBjb21wbGV4aXRpZXMgYXJvdW5kIHBvd2VyIG1hbmFnZW1lbnQgYW5kIGdyb3VwIG9wZXJhdGlvbnMsIHdoaWNoIGFyZSBvZnRlbiBwcm9uZSB0byBzdWJ0bGUgYnVncy4gSSYjMzk7bGwgZGlnIGludG8gdGhlIGNvZGUgYW5kIHN0YXJ0IHNrZXRjaGluZyBvdXQgZnV6emluZyBzdHJhdGVnaWVzIGZvciB0aG9zZSB0d28gZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ3OT1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDgzLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDg0OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODUtXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAzMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gLiBKdXN0IGdsYW5jaW5nIGF0IHRoZSBuYW1lLCBpdCYjMzk7cyBpbW1lZGlhdGVseSBhcHBhcmVudCB0aGlzIHJlbGF0ZXMgdG8gc29tZXRoaW5nIGJlaW5nIGRyb3BwZWQgb3IgcmVtb3ZlZCB3aXRoaW4gYSBudWxsLWJhc2VkIHN0cnVjdHVyZSwgbGlrZWx5IHNvbWUga2luZCBvZiBncm91cCBvciBjb2xsZWN0aW9uLiBNeSBtaW5kJiMzOTtzIGFscmVhZHkgZmlyaW5nIHVwIHF1ZXN0aW9uczogSXMgdGhpcyBhIGNyaXRpY2FsIHBhdGggZnVuY3Rpb24/IFdoYXQmIzM5O3MgdGhlIGNvbnRleHQgLSBtZW1vcnkgbWFuYWdlbWVudD8gRGF0YSBzdHJ1Y3R1cmVzPyBDb25jdXJyZW50IGFjY2VzcyBjb25jZXJucz8gQXJlIHdlIGRlYWxpbmcgd2l0aCBwb2ludGVyIG1hbmlwdWxhdGlvbiwgYW5kIGlmIHNvLCB3aGF0JiMzOTtzIHRoZSBsZXZlbCBvZiBzYWZldHkgYnVpbHQgaW4/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgJiMzNDtkcm9wcGluZyYjMzQ7IGFuIGl0ZW0uIElzIGl0IHNpbXBseSBhIHJlbW92YWwgZnJvbSBhIGxpc3QsIG9yIGRvZXMgaXQgaW52b2x2ZSBkZWFsbG9jYXRpb24sIHJlZiBjb3VudGluZywgb3Igc29tZSBraW5kIG9mIGludmFsaWRhdGlvbj8gSSBob3BlIHRoZSBuYW1pbmcgY29udmVudGlvbiBpcyBjbGVhciBhbmQgdGhhdCB0aGVyZSBhcmUgZ29vZCBjb21tZW50cy4uLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZGVlcGVyIGludG8gaXRzIGltcGxlbWVudGF0aW9uIGFuZCBjYWxsIHNpdGVzIHRvIGdyYXNwIHRoZSBpbnRyaWNhY2llcyBvZiBpdHMgZGVzaWduLiBMZXQmIzM5O3Mgc2VlIGhvdyB3ZWxsIGl0JiMzOTtzIGJlZW4gaGFuZGxlZCBpbiB0aGUgcHJvamVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnVsbGJfZ3JvdXBfZHJvcF9pdGVtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NzA0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3MDU6bnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MDYte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ2ZzX2dyb3VwX29wZXJhdGlvbnMgbnVsbGJfZ3JvdXBfb3BzID0ge1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzUzLVx0Lm1ha2VfZ3JvdXBcdD0gbnVsbGJfZ3JvdXBfbWFrZV9ncm91cCxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjc1NDpcdC5kcm9wX2l0ZW1cdD0gbnVsbGJfZ3JvdXBfZHJvcF9pdGVtLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzU1LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MjUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGaXggYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiB0aGF0IG9jY3VycyBkdXJpbmcgdGhlIG1vZHVsZSYjMzk7cyBpbml0aWFsaXphdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3ZSBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0byBsZXZlcmFnZSB0aGlzIGZvciBmdXp6aW5nLiBUaGUga2V5IHNlZW1zIHRvIGJlIHRhcmdldGluZyB0aGUgY29uZmlnZnMgcGF0aHMsIGFuZCBzcGVjaWZpY2FsbHkgdGhpbmtpbmcgYWJvdXQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9ncm91cF9tYWtlX2dyb3VwYCwgYW5kIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gLgoKVGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBpdHNlbGYsIGBudWxsX2luaXRgLCBpc24mIzM5O3QgZGlyZWN0bHkgZnV6emVkIGJ5IHN5emthbGxlci4gSW5zdGVhZCwgaXQgZnV6emVzIHN5c2NhbGxzLiBCdXQgaXQgKmNhbiogbG9hZCBtb2R1bGVzIGFuZCBpbnRlcmFjdCB3aXRoIGNvbmZpZ2ZzLiBUaGF0JiMzOTtzIHRoZSBhbmdsZS4gVGhlcmVmb3JlLCBmb2N1c2luZyBvbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxiX2dyb3VwX21ha2VfZ3JvdXBgLCBhbmQgYG51bGxiX2dyb3VwX2Ryb3BfaXRlbWAgc2VlbXMgbGlrZSBhIGdvb2QgYXBwcm9hY2guIExldCYjMzk7cyBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gYG51bGxiX2dyb3VwX21ha2VfZ3JvdXBgLiBJJiMzOTtsbCB3YW50IHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBpcyBzdHJ1Y3R1cmVkIGFuZCB3aGF0IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgbWlnaHQgZXhpc3QgaW4gaXRzIGNvbmZpZ2ZzIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnVsbGJfZ3JvdXBfbWFrZV9ncm91cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTY4Nj1zdGF0aWMgc3RydWN0XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2ODc6Y29uZmlnX2dyb3VwICpudWxsYl9ncm91cF9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjg4LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03NTI9c3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdmc19ncm91cF9vcGVyYXRpb25zIG51bGxiX2dyb3VwX29wcyA9IHtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjc1MzpcdC5tYWtlX2dyb3VwXHQ9IG51bGxiX2dyb3VwX21ha2VfZ3JvdXAsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03NTQtXHQuZHJvcF9pdGVtXHQ9IG51bGxiX2dyb3VwX2Ryb3BfaXRlbSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEzMwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkIGFuZCBhcHByb2FjaGluZyBhIGRlYnVnZ2luZyBzY2VuYXJpbzoKCioqQ2hlY2tpbmcgYG51bGxfYWRkX2RldmAqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiAmIzM0O0xldCYjMzk7cyBjaGVjayBgbnVsbF9hZGRfZGV2YC4mIzM0OyBUaGF0IHRob3VnaHQgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LiBJdCYjMzk7cyBhIHByZWNpc2UsIHRhcmdldGVkIHBocmFzZS4gVGhpcyB0ZWxscyBtZSBJJiMzOTt2ZSBpZGVudGlmaWVkIGEgc3BlY2lmaWMgYXJlYSBvZiB0aGUgY29kZWJhc2UsIG9yIGEgcGFydGljdWxhciB2YXJpYWJsZSwgZnVuY3Rpb24sIG9yIHNlY3Rpb24gb2YgdGhlIHN5c3RlbSwgdGhhdCBJIHN1c3BlY3QgaXMgcmVsYXRlZCB0byB0aGUgY3VycmVudCBpc3N1ZS4gVGhlIHVzZSBvZiBiYWNrdGlja3Mgc3VnZ2VzdHMgdGhhdCBpdCYjMzk7cyBjb2RlLCBhIGNvbmZpZ3VyYXRpb24gc2V0dGluZywgb3IgYSBzeXN0ZW0gaWRlbnRpZmllciB0aGF0IEkmIzM5O20gZm9jdXNpbmcgb24uIEl0JiMzOTtzIGNvbmNpc2U7IEkgZG9uJiMzOTt0IG5lZWQgdG8gZXhwbGFpbiB0aGUgY29udGV4dCB0byBteXNlbGYsIEkganVzdCAqa25vdyouIEl0JiMzOTtzIGEgcXVpY2ssIGRpcmVjdGVkIHRob3VnaHQsIHRoZSBmaXJzdCBzdGVwIGluIGRlYnVnZ2luZyBvciBpbnZlc3RpZ2F0aW5nLiBJdCBpcyBhIGtub3duIGFyZWEgb2YgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnVsbF9hZGRfZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9Mjc1PXN0YXRpYyB2b2lkIG51bGxfZGVsX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI3NjpzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc3LXN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00ODQ9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MDAtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MDE6XHRcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTAyLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTk0Mj1zdGF0aWMgYm9vbCBudWxsX3NldHVwX2ZhdWx0KHZvaWQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk1NC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE5NTU6c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk1Ni17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjA5Nj1zdGF0aWMgaW50IG51bGxfY3JlYXRlX2Rldih2b2lkKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDUtXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjEwNjpcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEwNy1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgwNAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBEcml2ZXIqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBkaXJlY3RseSBjYWxscyBgbnVsbF9hZGRfZGV2YC4gVGhhdCBtZWFucyB0aG9zZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYG51bGxiX2dyb3VwX21ha2VfZ3JvdXBgIGFuZCBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYCwgYXJlIGFsbCBnb29kIHRhcmdldHMgZm9yIGZ1enppbmcuIFNlZW1zIGxpa2UgYSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LgoKTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBXZSBhbHJlYWR5IGtub3cgYENPTkZJR19CTEtfREVWX05VTExfQkxLYCBpcyBjcnVjaWFsLCBvYnZpb3VzbHkuIFdoYXQgZWxzZSBkbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHByb3Blcmx5IHNldCB1cD8gUmlnaHQsIHRoZSBjb25maWdmcyBkZXBlbmRlbmN5LiBJICp0aGluayogYENPTkZJR19DT05GSUdGU19GU2AgaXMgYWxyZWFkeSBlbmFibGVkIGluIHRoZSBiYXNlLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCBpcyByZXF1aXJlZCBieSBgQkxLX0RFVl9OVUxMX0JMS2AuIEp1c3QgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX05VTExfQkxLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjY6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy05LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAxMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzA1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBudWxsX2Jsa2AqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnYC4gVGltZSB0byBkaXZlIGluIGFuZCBwYXJzZSB0aGF0IEtjb25maWcgZmlsZS4gSSYjMzk7bSBhc3N1bWluZyBpdCYjMzk7bGwgb3V0bGluZSB3aGljaCBvdGhlciBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucyBtdXN0IGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIGBudWxsX2Jsa2AgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgc3lzdGVtIGFyY2hpdGVjdHVyZSBhbmQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgbGltaXRhdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIHJldmVhbC4gSSYjMzk7bSBleHBlY3Rpbmcgc3RhbmRhcmQgS2NvbmZpZyBzeW50YXgsIHNvIGhvcGVmdWxseSwgdGhpcyB3aWxsIGJlIHN0cmFpZ2h0Zm9yd2FyZC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgYGRlcGVuZHMgb25gLCBgc2VsZWN0YCwgYW5kIGFueSBzcGVjaWZpYyBzeW1ib2wgZGVmaW5pdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIE51bGwgYmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4gICA4Olx0XHRzZWxlY3QgQ09ORklHRlNfRlNcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbiAgMTE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbiAgMTI6XHRcdGRlcGVuZHMgb24gQkxLX0RFVl9OVUxMX0JMSyBcdTAwMjZcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NzUKCQkJCQkJCW91dHB1dDogMTI4CgkJCQkJCQl0aG91Z2h0czogMjIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE51bGwgQmxvY2sgRGV2aWNlIEluaXRpYWxpemF0aW9uIEZpeCoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IGxvb2tzIGxpa2UgYEJMS19ERVZfTlVMTF9CTEtgIGF1dG9tYXRpY2FsbHkgZW5hYmxlcyBgQ09ORklHRlNfRlNgLCB3aGljaCBpcyBnb29kLiBUaGF0IHNpbXBsaWZpZXMgdGhlIGRlcGVuZGVuY3kgY29uc2lkZXJhdGlvbnM7IHdlIGp1c3QgbmVlZCB0byBmb2N1cyBvbiBlbnN1cmluZyBgQkxLX0RFVl9OVUxMX0JMS2AgaXMgc2V0IGNvcnJlY3RseS4KClRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBpcyBhIHJhY2UgY29uZGl0aW9uIGluIGhvdyB0aGUgYG51bGxfYmxrYCBtb2R1bGUgaW5pdGlhbGl6ZXMuIFNwZWNpZmljYWxseSwgYGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbWAgaXMgbWFraW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgYXZhaWxhYmxlICpiZWZvcmUqIHRoZSBgbXV0ZXhgIGNhbGxlZCBgbG9ja2AgaXMgaW5pdGlhbGl6ZWQuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGJ1ZywgYW5kIGRlZmluaXRlbHkgd2FycmFudHMgYXR0ZW50aW9uLiBUaGlzIG1lYW5zIGEgdXNlciBjb3VsZCBwb3RlbnRpYWxseSBpbnRlcmFjdCB3aXRoIHRoZSBjb25maWdmcyBpbnRlcmZhY2UsIHRyaWdnZXJpbmcgYSBgbXV0ZXhfbG9jaygmYW1wO2xvY2spYCBjYWxsICpiZWZvcmUqIHRoZSBtdXRleCBpcyBwcm9wZXJseSBzZXQgdXAuIFRoYXQmIzM5O3MgYSBndWFyYW50ZWVkIGNyYXNoLCBvciBhdCBsZWFzdCBzb21lIGZvcm0gb2YgdW5kZWZpbmVkIGJlaGF2aW9yLCByaWdodCB0aGVyZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBHaXZlbiBpdCYjMzk7cyByYWNlIGNvbmRpdGlvbiwgSSYjMzk7bSB0aGlua2luZyB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4KCk15IHByaW1hcnkgZm9jdXMgZm9yIGZ1enppbmcgd2lsbCBiZSBvbiBmdW5jdGlvbnMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgaW4gYG51bGxfYmxrYC4gSSYjMzk7bGwgYmUgbG9va2luZyBhdDoKCiogICBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYAoqICAgYG51bGxiX2dyb3VwX21ha2VfZ3JvdXBgCiogICBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYAoqICAgYG51bGxfYWRkX2RldmAKCkkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enppbmcgcHJvY2VzcyByZWFsbHkgc3RyZXNzZXMgdGhlc2UgZnVuY3Rpb25zLCBzaW11bGF0aW5nIGNvbmN1cnJlbnQgYWNjZXNzIGFuZCBwb3RlbnRpYWxseSB0cnlpbmcgdG8gdHJpZ2dlciB0aGUgcmFjZSBjb25kaXRpb24gZGlyZWN0bHkuIEkgd2FudCB0byB0cnkgdG8gZXhwb3NlIGFueSBzaW1pbGFyIGluaXRpYWxpemF0aW9uIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZ3JvdXBfbWFrZV9ncm91cCYjMzQ7LAogICAgJiMzNDtudWxsYl9ncm91cF9kcm9wX2l0ZW0mIzM0OywKICAgICYjMzQ7bnVsbF9hZGRfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gbnVsbF9ibGsgbW9kdWxlIGluaXRpYWxpemF0aW9uIHdoZXJlIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgaXMgZXhwb3NlZCBiZWZvcmUgYGxvY2tgIGlzIGluaXRpYWxpemVkLiBGdXp6aW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBudWxsX2JsayBjYW4gaGVscCB2ZXJpZnkgdGhpcyBmaXggYW5kIHVuY292ZXIgc2ltaWxhciBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZ3JvdXBfbWFrZV9ncm91cCYjMzQ7LAogICAgJiMzNDtudWxsYl9ncm91cF9kcm9wX2l0ZW0mIzM0OywKICAgICYjMzQ7bnVsbF9hZGRfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gbnVsbF9ibGsgbW9kdWxlIGluaXRpYWxpemF0aW9uIHdoZXJlIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgaXMgZXhwb3NlZCBiZWZvcmUgYGxvY2tgIGlzIGluaXRpYWxpemVkLiBGdXp6aW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBudWxsX2JsayBjYW4gaGVscCB2ZXJpZnkgdGhpcyBmaXggYW5kIHVuY292ZXIgc2ltaWxhciBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNDozOS4yMjA4Njg5NDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjI3MzY3ODA5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9ncm91cF9tYWtlX2dyb3VwXCIsXG4gICAgXCJudWxsYl9ncm91cF9kcm9wX2l0ZW1cIixcbiAgICBcIm51bGxfYWRkX2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gbnVsbF9ibGsgbW9kdWxlIGluaXRpYWxpemF0aW9uIHdoZXJlIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgaXMgZXhwb3NlZCBiZWZvcmUgYGxvY2tgIGlzIGluaXRpYWxpemVkLiBGdXp6aW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBudWxsX2JsayBjYW4gaGVscCB2ZXJpZnkgdGhpcyBmaXggYW5kIHVuY292ZXIgc2ltaWxhciBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE0OjM5LjIyMDg3NjI0NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk0MzcyMjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODZhMTBmN2Y5ODc2NjBjYmE0MmNiMzJjNjg3YTgxYjA4MzNmYmRmN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCA0IDEwOjE0OjM4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uOTg2MTZkMjkwYzVjYjIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbkBAIC0yMTYxLDEzICsyMTYxLDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxcbiBcXG4gXFx0Y29uZmlnX2dyb3VwX2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XFxuK1xcdG11dGV4X2luaXQoXFx1MDAyNmxvY2spO1xcbiBcXG4gXFx0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFxcdTAwMjZudWxsYl9zdWJzeXMpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4tXFx0bXV0ZXhfaW5pdChcXHUwMDI2bG9jayk7XFxuLVxcbiBcXHRudWxsX21ham9yID0gcmVnaXN0ZXJfYmxrZGV2KDAsIFxcXCJudWxsYlxcXCIpO1xcbiBcXHRpZiAobnVsbF9tYWpvciBcXHUwMDNjIDApIHtcXG4gXFx0XFx0cmV0ID0gbnVsbF9tYWpvcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTQ6MzkuNTE2MDU5MDk2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk3ODQ3NjU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9ncm91cF9tYWtlX2dyb3VwXCIsXG4gICAgXCJudWxsYl9ncm91cF9kcm9wX2l0ZW1cIixcbiAgICBcIm51bGxfYWRkX2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gbnVsbF9ibGsgbW9kdWxlIGluaXRpYWxpemF0aW9uIHdoZXJlIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgaXMgZXhwb3NlZCBiZWZvcmUgYGxvY2tgIGlzIGluaXRpYWxpemVkLiBGdXp6aW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBudWxsX2JsayBjYW4gaGVscCB2ZXJpZnkgdGhpcyBmaXggYW5kIHVuY292ZXIgc2ltaWxhciBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODZhMTBmN2Y5ODc2NjBjYmE0MmNiMzJjNjg3YTgxYjA4MzNmYmRmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDQgMTA6MTQ6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uOTg2MTZkMjkwYzVjYjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC0yMTYxLDEzICsyMTYxLDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFxuIFx0Y29uZmlnX2dyb3VwX2luaXQoXHUwMDI2bnVsbGJfc3Vic3lzLnN1X2dyb3VwKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2bnVsbGJfc3Vic3lzLnN1X211dGV4KTtcbitcdG11dGV4X2luaXQoXHUwMDI2bG9jayk7XG4gXG4gXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRtdXRleF9pbml0KFx1MDAyNmxvY2spO1xuLVxuIFx0bnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCBcIm51bGxiXCIpO1xuIFx0aWYgKG51bGxfbWFqb3IgXHUwMDNjIDApIHtcbiBcdFx0cmV0ID0gbnVsbF9tYWpvcjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE0OjM5LjUxNjA2MTAxNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MjI1NzQzMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTnVsbCBCbG9jayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyB0b3VjaGVkIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGEgc2ltcGxlIGNvZGUgcmVhcnJhbmdlbWVudCwgbW92aW5nIHRoZSBgbXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtgIGNhbGwgdG8gKmJlZm9yZSogdGhlIGBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtgIGNhbGwuIEF0IGZpcnN0IGdsYW5jZSwgdGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgcHJvYmFibHkgYWRkcmVzc2luZyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi5cblxuTGV0IG1lIGJyZWFrIHRoYXQgZG93bjogSWYgYGNvbmZpZ2ZzYCBpcyBhY2Nlc3NlZCBjb25jdXJyZW50bHkgd2l0aCB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24sIHRoZXJlJ3MgYSB3aW5kb3cgd2hlcmUgYGxvY2tgICpjb3VsZCogYmUgdXNlZCBiZWZvcmUgaXQncyBiZWVuIGluaXRpYWxpemVkIHZpYSBgbXV0ZXhfaW5pdCgpYC4gVGhpcyByZWFycmFuZ2VtZW50IGxpa2VseSBjbG9zZXMgdGhhdCB3aW5kb3csIGVuc3VyaW5nIHRoZSBtdXRleCBpcyByZWFkeSBiZWZvcmUgYW55dGhpbmcgYXR0ZW1wdHMgdG8gdXNlIGl0LiBOb3cgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIGFyb3VuZCB0aGUgYG11dGV4X2luaXQoXHUwMDI2bG9jayk7YCBsaW5lIGluIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AsIGFuZCBjb25maXJtIG15IGh5cG90aGVzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4ODIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNDo0My4zMzg2MzcwODVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0NzMzODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXV0ZXhfaW5pdFxcXFwoXFx1MDAyNmxvY2tcXFxcKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMTI1PXN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjE2My1cXHRtdXRleF9pbml0KFxcdTAwMjZudWxsYl9zdWJzeXMuc3VfbXV0ZXgpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxNjQ6XFx0bXV0ZXhfaW5pdChcXHUwMDI2bG9jayk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjE2NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTQ6NDMuMzk1MTE1NDMzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyMTcyODY5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNpZ25pZmljYW5jZSBvZiBhIEtlcm5lbCBNb2R1bGUgSW5pdGlhbGl6YXRpb24gQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9yZGVyIHdpdGhpbiBgbnVsbF9pbml0YCwgd2hpY2ggSSBrbm93IGlzIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgdGhlIGBudWxsX2Jsa2AgbW9kdWxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiU2hvdWxkIHdlIGZ1enogdGhpcz9cIiBBbmQgdGhlIGFuc3dlciBpcyBcIlllcywgYWJzb2x1dGVseS5cIiBUaGlzIGlzbid0IGp1c3QgYSBjb3NtZXRpYyBjaGFuZ2U7IGl0J3MgYSBmdW5jdGlvbmFsIGZpeCBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLiBBbnkgY2hhbmdlIHRoYXQgbW9kaWZpZXMgdGhlIHdheSBhIG1vZHVsZSBpcyBpbml0aWFsaXplZCBpcyB3b3J0aCBhIGNsb3NlciBsb29rLCBlc3BlY2lhbGx5IGlmIGl0IGNvdWxkIGltcGFjdCBjb25jdXJyZW5jeS5cblxuSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdo4oCmIGBudWxsX2luaXRgIGlzIGFuIGBfX2luaXRgIGZ1bmN0aW9uLCBpc24ndCBpdD8gRnV6emluZyB1c3VhbGx5IHRhcmdldHMgc3lzY2FsbHMgYW5kIHJ1bnRpbWUgYmVoYXZpb3JzLiBXZSdyZSBnZW5lcmFsbHkgbm90IGZ1enppbmcga2VybmVsIGluaXRpYWxpemF0aW9uIGRpcmVjdGx5LCBidXQgdGhlbiBhZ2Fpbi4uLiB3ZeKAmXJlIHdvcmtpbmcgd2l0aCBzeXprYWxsZXIuIFN5emthbGxlciBpcyBjYXBhYmxlIG9mIGRvaW5nIG1vcmUgdGhhbiBqdXN0IHBva2luZyBhdCBzeXNjYWxscy4gSXQgY2FuIGhhbmRsZSBtb2R1bGUgbG9hZGluZyBhbmQgdW5sb2FkaW5nLiBJdCBjYW4gaW50ZXJhY3Qgd2l0aCBjb25maWdmcy4gVGhpcyBhZGRzIGEgbmV3IGRpbWVuc2lvbi5cblxuQWxyaWdodCwgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGluLCBsZXQncyBqdXN0IHF1aWNrbHkgY2hlY2sgd2hhdCBsb2NrIGlzIHVzZWQgZm9yIGluIHRoZSBudWxsX2JsayBtb2R1bGUuIEtub3dpbmcgdGhlIGNyaXRpY2FsIHNlY3Rpb25zIHdpbGwgaW5mb3JtIG15IGZ1enppbmcgYXBwcm9hY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTQ6NDcuMzE2ODQ2MTc4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDkxMjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm11dGV4X2xvY2tcXFxcKFxcdTAwMjZsb2NrXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDIxPXN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MjUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDI2OlxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQyNy1cXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVxcdTAwM2Vwb2xsX3F1ZXVlcyk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00MzM9c3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzctXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDM4OlxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQzOS1cXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00ODQ9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ5NS1cXHRyZXQgPSBjb3VudDtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0OTY6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDk3LVxcdGlmICghZGV2LVxcdTAwM2Vwb3dlciBcXHUwMDI2XFx1MDAyNiBuZXdwKSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03MDU9bnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MDktXFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjcxMDpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MTEtXFx0XFx0ZGV2LVxcdTAwM2Vwb3dlciA9IGZhbHNlO1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjA4MD1zdGF0aWMgc3RydWN0IG51bGxiICpudWxsX2ZpbmRfZGV2X2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwODMtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjA4NDpcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDg1LVxcdGxpc3RfZm9yX2VhY2hfZW50cnkobmIsIFxcdTAwMjZudWxsYl9saXN0LCBsaXN0KSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMDk2PXN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTA0LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxMDU6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEwNi1cXHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTIxOTY9c3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjIwMy1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMjA0OlxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIyMDUtXFx0d2hpbGUgKCFsaXN0X2VtcHR5KFxcdTAwMjZudWxsYl9saXN0KSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNDo0Ny4zNzM5NTAzOTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTYzNzAyMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJhY2UgQ29uZGl0aW9uIElkZW50aWZpZWQgaW4gbnVsbF9ibGsgTW9kdWxlKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgbnVsbF9ibGtgIG1vZHVsZSwgYW5kIEkndmUgc3BvdHRlZCBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIFRoaXMgYGxvY2tgIHZhcmlhYmxlLi4uIGl0J3MgdXNlZCBhbGwgb3ZlciB0aGUgcGxhY2U6IGluIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLCBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYCwgYG51bGxfY3JlYXRlX2RldmAsIGBudWxsX2ZpbmRfZGV2X2J5X25hbWVgLCBhbmQgcHJlc3VtYWJseSBhIGZldyBvdGhlciBwbGFjZXMuIFRoZSBpbnRlcmVzdGluZyB0aGluZyBpcyB0aGF0IGFsbCBvZiB0aG9zZSBmdW5jdGlvbnMgYXJlIGFjY2Vzc2libGUsIGF0IGxlYXN0IGluIHBhcnQsIHZpYSB0aGUgY29uZmlnZnMgaW50ZXJmYWNlIG9yIG1vZHVsZSBwYXJhbWV0ZXJzLCByaWdodD9cblxuVGhlIHBhdGNoIEknbSByZXZpZXdpbmcgYXBwZWFycyB0byBhZGRyZXNzIGEgcmFjZSBjb25kaXRpb24sIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0byBtZSB3aGF0J3MgaGFwcGVuaW5nLiBUaGUgaXNzdWUgaXMgdGhhdCB0aGUgYGxvY2tgIGlzIHVzZWQgKmJlZm9yZSogaXQncyBiZWVuIGluaXRpYWxpemVkLiBUaGlzIHJhY2UgY29uZGl0aW9uIHNlZW1zIHRvIGJlIHRyaWdnZXJlZCBiZWNhdXNlIG9mIHRoZSB0aW1pbmcgYXNzb2NpYXRlZCB3aXRoIGBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW1gLiBFc3NlbnRpYWxseSwgc29tZSB1c2VyIGFjY2Vzc2VzIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgKGxpa2UgYSBjYWxsIHRvIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgKSAqYmVmb3JlKiBgbXV0ZXhfaW5pdChcdTAwMjZsb2NrKWAgaGFzIGJlZW4gY2FsbGVkLiBUaGUga2VybmVsIGNhbiBleHBvc2UgdGhlIGNvbmZpZ2ZzIGludGVyZmFjZSBhbmQgYWxsb3cgdXNlciBhY2Nlc3MgYmVmb3JlIHRoZSBtdXRleCBpcyBhY3R1YWxseSBzZXQgdXAsIHdoaWNoIG9mIGNvdXJzZSBsZWFkcyB0byB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLlxuXG5HaXZlbiB0aGUgcG90ZW50aWFsIGZvciB0aGlzIGtpbmQgb2YgcmFjZSwgSSdtIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IHRoaXMgbmVlZHMgc29tZSBzZXJpb3VzIGZ1enppbmcuIFRoZSBzY2VuYXJpbyBzZWVtcyBwcmV0dHkgd2VsbC1kZWZpbmVkLCBhbmQgdGhlIGltcGFjdCBjb3VsZCBiZSBzaWduaWZpY2FudCwgZGVwZW5kaW5nIG9uIGhvdyB0aGlzIGxvY2sgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBkZXZpY2UgZHJpdmVycy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGNvbmZpZyBvcHRpb25zIGZvciBgbnVsbF9ibGtgIHRvIGJ1aWxkIGEgZnV6emluZyB0ZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjA2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE0OjUxLjUzNzY1NTI2M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDI3Njg0OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19ERVZfTlVMTF9CTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNDo1MS41OTc5Mzk4MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjI0NDA0NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aG9zZSBmaWxlczpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBIdW50aW5nKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGEgc3BlY2lmaWMgYmxvY2sgZGV2aWNlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHNldCB1cC4gTGV0J3Mgc2VlLi4uIFR5cGljYWxseSwgdGhlc2Ugb3B0aW9ucyBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGtlcm5lbCdzIEtjb25maWcgc3lzdGVtLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXJuZWwncyBkaXJlY3Rvcnkgc3RydWN0dXJlLCB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlcyB0byBzdGFydCBsb29raW5nIGZvciB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIGBkcml2ZXJzL2Jsb2NrL0tjb25maWdgIGFuZCwgcG90ZW50aWFsbHkgaWYgdGhpcyBpcyBhIHNwZWNpYWxpemVkIGRyaXZlciwgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ2AgZmlsZXMuIEknbGwgbmVlZCB0byBvcGVuIHRoZW0gYW5kIHNjYW4gdGhyb3VnaCB0aGUgZW50cmllcywgbG9va2luZyBmb3IgbGlrZWx5IGNhbmRpZGF0ZXMgYmFzZWQgb24gdGhlIGRldmljZSBvciBmdW5jdGlvbmFsaXR5IEknbSB0cnlpbmcgdG8gY29uZmlndXJlLiBUaGVzZSBmaWxlcyBjb250YWluIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGV4cG9zZWQgdG8gdGhlIHVzZXIsIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRob3NlIG9wdGlvbnMsIGFuZCBhbnkgYXNzb2NpYXRlZCBoZWxwIHRleHQuIEkgY2FuIHRoZW4gdHJhY2UgYmFjayB0aHJvdWdoIHRoZSBkZXBlbmRlbmNpZXMgdG8gc2VlIHdoeSBhIHBhcnRpY3VsYXIgb3B0aW9uIGlzIHNlbGVjdGVkIG9yIGRlc2VsZWN0ZWQuIEZyb20gdGhlcmUgSSdsbCBiZSBhYmxlIHRvIHdvcmsgb3V0IGhvdyB0byBjb250cm9sIHRoZSBibG9jayBkZXZpY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMzUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNDo1NC42NjAzODI5MzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NDEzMDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyAuKk5VTExfQkxLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNDo1NC43MTk4MDE3NTZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUwNjgwMzA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uLCBhbmQgYEJMS19ERVZfTlVMTF9CTEtgIGlzIHRoZSBrZXkgZGVmaW5pdGlvbiBoZXJlLiBUaGF0IHBvaW50cyBtZSB0byB0aGUgbnVsbCBibG9jayBkZXZpY2UuIE15IGZvY3VzIGlzIG9uIGlkZW50aWZ5aW5nIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgdG8gdW5jb3ZlciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5JIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBlc3NlbnRpYWwgZnVuY3Rpb25zIHRvIHRhcmdldC4gRmlyc3QsIGBudWxsX2luaXRgIGlzIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24g4oCTIGRlZmluaXRlbHkgbmVlZHMgYSBjbG9zZSBsb29rLiBCZXlvbmQgdGhhdCwgSSd2ZSBnb3QgYSBzaG9ydCBsaXN0OiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxiX2dyb3VwX2Ryb3BfaXRlbWAsIGBudWxsX2NyZWF0ZV9kZXZgLCBhbmQgYG51bGxfYWRkX2RldmAuXG5cbkknbSBzdGFydGluZyB3aXRoIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGFuZCBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYC4gVGhlc2Ugc2VlbSBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGR1ZSB0byB0aGUgcG90ZW50aWFsIGNvbXBsZXhpdGllcyBhcm91bmQgcG93ZXIgbWFuYWdlbWVudCBhbmQgZ3JvdXAgb3BlcmF0aW9ucywgd2hpY2ggYXJlIG9mdGVuIHByb25lIHRvIHN1YnRsZSBidWdzLiBJJ2xsIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzdGFydCBza2V0Y2hpbmcgb3V0IGZ1enppbmcgc3RyYXRlZ2llcyBmb3IgdGhvc2UgdHdvIGZpcnN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTQ1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTQ6NTguMjI2NjA3NDA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njg2ODI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDc5PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4My1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODQ6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODUtXFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE0OjU4LjI4MzQ4MjY5NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTA0MjI1MTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gLiBKdXN0IGdsYW5jaW5nIGF0IHRoZSBuYW1lLCBpdCdzIGltbWVkaWF0ZWx5IGFwcGFyZW50IHRoaXMgcmVsYXRlcyB0byBzb21ldGhpbmcgYmVpbmcgZHJvcHBlZCBvciByZW1vdmVkIHdpdGhpbiBhIG51bGwtYmFzZWQgc3RydWN0dXJlLCBsaWtlbHkgc29tZSBraW5kIG9mIGdyb3VwIG9yIGNvbGxlY3Rpb24uIE15IG1pbmQncyBhbHJlYWR5IGZpcmluZyB1cCBxdWVzdGlvbnM6IElzIHRoaXMgYSBjcml0aWNhbCBwYXRoIGZ1bmN0aW9uPyBXaGF0J3MgdGhlIGNvbnRleHQgLSBtZW1vcnkgbWFuYWdlbWVudD8gRGF0YSBzdHJ1Y3R1cmVzPyBDb25jdXJyZW50IGFjY2VzcyBjb25jZXJucz8gQXJlIHdlIGRlYWxpbmcgd2l0aCBwb2ludGVyIG1hbmlwdWxhdGlvbiwgYW5kIGlmIHNvLCB3aGF0J3MgdGhlIGxldmVsIG9mIHNhZmV0eSBidWlsdCBpbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBcImRyb3BwaW5nXCIgYW4gaXRlbS4gSXMgaXQgc2ltcGx5IGEgcmVtb3ZhbCBmcm9tIGEgbGlzdCwgb3IgZG9lcyBpdCBpbnZvbHZlIGRlYWxsb2NhdGlvbiwgcmVmIGNvdW50aW5nLCBvciBzb21lIGtpbmQgb2YgaW52YWxpZGF0aW9uPyBJIGhvcGUgdGhlIG5hbWluZyBjb252ZW50aW9uIGlzIGNsZWFyIGFuZCB0aGF0IHRoZXJlIGFyZSBnb29kIGNvbW1lbnRzLi4uIEknbGwgbmVlZCB0byBsb29rIGRlZXBlciBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgY2FsbCBzaXRlcyB0byBncmFzcCB0aGUgaW50cmljYWNpZXMgb2YgaXRzIGRlc2lnbi4gTGV0J3Mgc2VlIGhvdyB3ZWxsIGl0J3MgYmVlbiBoYW5kbGVkIGluIHRoZSBwcm9qZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDMyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTU6MDEuMzg3NzA5OTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODAwOTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm51bGxiX2dyb3VwX2Ryb3BfaXRlbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03MDQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3MDU6bnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzA2LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ2ZzX2dyb3VwX29wZXJhdGlvbnMgbnVsbGJfZ3JvdXBfb3BzID0ge1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc1My1cXHQubWFrZV9ncm91cFxcdD0gbnVsbGJfZ3JvdXBfbWFrZV9ncm91cCxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3NTQ6XFx0LmRyb3BfaXRlbVxcdD0gbnVsbGJfZ3JvdXBfZHJvcF9pdGVtLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc1NS19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNTowMS40NDQ1MTg3NjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1NjA0MDUxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZpeCBhbmQgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gdGhhdCBvY2N1cnMgZHVyaW5nIHRoZSBtb2R1bGUncyBpbml0aWFsaXphdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3ZSBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0byBsZXZlcmFnZSB0aGlzIGZvciBmdXp6aW5nLiBUaGUga2V5IHNlZW1zIHRvIGJlIHRhcmdldGluZyB0aGUgY29uZmlnZnMgcGF0aHMsIGFuZCBzcGVjaWZpY2FsbHkgdGhpbmtpbmcgYWJvdXQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9ncm91cF9tYWtlX2dyb3VwYCwgYW5kIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gLlxuXG5UaGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGl0c2VsZiwgYG51bGxfaW5pdGAsIGlzbid0IGRpcmVjdGx5IGZ1enplZCBieSBzeXprYWxsZXIuIEluc3RlYWQsIGl0IGZ1enplcyBzeXNjYWxscy4gQnV0IGl0ICpjYW4qIGxvYWQgbW9kdWxlcyBhbmQgaW50ZXJhY3Qgd2l0aCBjb25maWdmcy4gVGhhdCdzIHRoZSBhbmdsZS4gVGhlcmVmb3JlLCBmb2N1c2luZyBvbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxiX2dyb3VwX21ha2VfZ3JvdXBgLCBhbmQgYG51bGxiX2dyb3VwX2Ryb3BfaXRlbWAgc2VlbXMgbGlrZSBhIGdvb2QgYXBwcm9hY2guIExldCdzIHN0YXJ0IHdpdGggYSBkZWVwIGRpdmUgaW50byBgbnVsbGJfZ3JvdXBfbWFrZV9ncm91cGAuIEknbGwgd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaXMgc3RydWN0dXJlZCBhbmQgd2hhdCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG1pZ2h0IGV4aXN0IGluIGl0cyBjb25maWdmcyBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MjUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTU6MDUuMTAwNTYxNjMzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODYwNTM2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudWxsYl9ncm91cF9tYWtlX2dyb3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTY4Nj1zdGF0aWMgc3RydWN0XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Njg3OmNvbmZpZ19ncm91cCAqbnVsbGJfZ3JvdXBfbWFrZV9ncm91cChzdHJ1Y3QgY29uZmlnX2dyb3VwICpncm91cCwgY29uc3QgY2hhciAqbmFtZSlcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02ODgte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NzUyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnZnNfZ3JvdXBfb3BlcmF0aW9ucyBudWxsYl9ncm91cF9vcHMgPSB7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzUzOlxcdC5tYWtlX2dyb3VwXFx0PSBudWxsYl9ncm91cF9tYWtlX2dyb3VwLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc1NC1cXHQuZHJvcF9pdGVtXFx0PSBudWxsYl9ncm91cF9kcm9wX2l0ZW0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE1OjA1LjE1OTE3MjY5MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODUyMTA0OTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZCBhbmQgYXBwcm9hY2hpbmcgYSBkZWJ1Z2dpbmcgc2NlbmFyaW86XG5cbioqQ2hlY2tpbmcgYG51bGxfYWRkX2RldmAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIFwiTGV0J3MgY2hlY2sgYG51bGxfYWRkX2RldmAuXCIgVGhhdCB0aG91Z2h0IGlzIHRoZSBzdGFydGluZyBwb2ludC4gSXQncyBhIHByZWNpc2UsIHRhcmdldGVkIHBocmFzZS4gVGhpcyB0ZWxscyBtZSBJJ3ZlIGlkZW50aWZpZWQgYSBzcGVjaWZpYyBhcmVhIG9mIHRoZSBjb2RlYmFzZSwgb3IgYSBwYXJ0aWN1bGFyIHZhcmlhYmxlLCBmdW5jdGlvbiwgb3Igc2VjdGlvbiBvZiB0aGUgc3lzdGVtLCB0aGF0IEkgc3VzcGVjdCBpcyByZWxhdGVkIHRvIHRoZSBjdXJyZW50IGlzc3VlLiBUaGUgdXNlIG9mIGJhY2t0aWNrcyBzdWdnZXN0cyB0aGF0IGl0J3MgY29kZSwgYSBjb25maWd1cmF0aW9uIHNldHRpbmcsIG9yIGEgc3lzdGVtIGlkZW50aWZpZXIgdGhhdCBJJ20gZm9jdXNpbmcgb24uIEl0J3MgY29uY2lzZTsgSSBkb24ndCBuZWVkIHRvIGV4cGxhaW4gdGhlIGNvbnRleHQgdG8gbXlzZWxmLCBJIGp1c3QgKmtub3cqLiBJdCdzIGEgcXVpY2ssIGRpcmVjdGVkIHRob3VnaHQsIHRoZSBmaXJzdCBzdGVwIGluIGRlYnVnZ2luZyBvciBpbnZlc3RpZ2F0aW5nLiBJdCBpcyBhIGtub3duIGFyZWEgb2YgdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEzMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE1OjA4LjAxMTI3OTQ3NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg0NTY0MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnVsbF9hZGRfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTI3NT1zdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc2OnN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc3LXN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ4ND1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTAwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUwMTpcXHRcXHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MDItXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTk0Mj1zdGF0aWMgYm9vbCBudWxsX3NldHVwX2ZhdWx0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU0LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE5NTU6c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5NTYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjA5Nj1zdGF0aWMgaW50IG51bGxfY3JlYXRlX2Rldih2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEwNS1cXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTA2OlxcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDctXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTU6MDguMDY5NzQyNjA0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTMwMTA2NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTnVsbCBCbG9jayBEZXZpY2UgRHJpdmVyKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBkaXJlY3RseSBjYWxscyBgbnVsbF9hZGRfZGV2YC4gVGhhdCBtZWFucyB0aG9zZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYG51bGxiX2dyb3VwX21ha2VfZ3JvdXBgIGFuZCBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYCwgYXJlIGFsbCBnb29kIHRhcmdldHMgZm9yIGZ1enppbmcuIFNlZW1zIGxpa2UgYSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIFdlIGFscmVhZHkga25vdyBgQ09ORklHX0JMS19ERVZfTlVMTF9CTEtgIGlzIGNydWNpYWwsIG9idmlvdXNseS4gV2hhdCBlbHNlIGRvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgcHJvcGVybHkgc2V0IHVwPyBSaWdodCwgdGhlIGNvbmZpZ2ZzIGRlcGVuZGVuY3kuIEkgKnRoaW5rKiBgQ09ORklHX0NPTkZJR0ZTX0ZTYCBpcyBhbHJlYWR5IGVuYWJsZWQgaW4gdGhlIGJhc2UsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIGl0IGlzIHJlcXVpcmVkIGJ5IGBCTEtfREVWX05VTExfQkxLYC4gSnVzdCB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgwNCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNToxMS42NjI3NTUxNDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MzQ5ODQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTEtfREVWX05VTExfQkxLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6Njpjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cXHRib29sIFxcXCJTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTU6MTEuNzE5MTEyNTE5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODE0MjkyMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgbnVsbF9ibGtgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnYC4gVGltZSB0byBkaXZlIGluIGFuZCBwYXJzZSB0aGF0IEtjb25maWcgZmlsZS4gSSdtIGFzc3VtaW5nIGl0J2xsIG91dGxpbmUgd2hpY2ggb3RoZXIgZmVhdHVyZXMgb3IgY29uZmlndXJhdGlvbnMgbXVzdCBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBgbnVsbF9ibGtgIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIHN5c3RlbSBhcmNoaXRlY3R1cmUgYW5kIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGxpbWl0YXRpb25zLiBMZXQncyBzZWUgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIHJldmVhbC4gSSdtIGV4cGVjdGluZyBzdGFuZGFyZCBLY29uZmlnIHN5bnRheCwgc28gaG9wZWZ1bGx5LCB0aGlzIHdpbGwgYmUgc3RyYWlnaHRmb3J3YXJkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGBkZXBlbmRzIG9uYCwgYHNlbGVjdGAsIGFuZCBhbnkgc3BlY2lmaWMgc3ltYm9sIGRlZmluaXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzA1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTU6MTUuMTAwNTQ0MTk1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTnVsbCBibG9jayBkZXZpY2UgZHJpdmVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IENPTkZJR0ZTX0ZTXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbiAgMTE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXFx1MDAyNlxcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE1OjE1LjEwMDYyMDg3NVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzAzNjcxNjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE51bGwgQmxvY2sgRGV2aWNlIEluaXRpYWxpemF0aW9uIEZpeCoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBsb29rcyBsaWtlIGBCTEtfREVWX05VTExfQkxLYCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYENPTkZJR0ZTX0ZTYCwgd2hpY2ggaXMgZ29vZC4gVGhhdCBzaW1wbGlmaWVzIHRoZSBkZXBlbmRlbmN5IGNvbnNpZGVyYXRpb25zOyB3ZSBqdXN0IG5lZWQgdG8gZm9jdXMgb24gZW5zdXJpbmcgYEJMS19ERVZfTlVMTF9CTEtgIGlzIHNldCBjb3JyZWN0bHkuXG5cblRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBpcyBhIHJhY2UgY29uZGl0aW9uIGluIGhvdyB0aGUgYG51bGxfYmxrYCBtb2R1bGUgaW5pdGlhbGl6ZXMuIFNwZWNpZmljYWxseSwgYGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbWAgaXMgbWFraW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgYXZhaWxhYmxlICpiZWZvcmUqIHRoZSBgbXV0ZXhgIGNhbGxlZCBgbG9ja2AgaXMgaW5pdGlhbGl6ZWQuIFRoYXQncyBhIGNsYXNzaWMgY29uY3VycmVuY3kgYnVnLCBhbmQgZGVmaW5pdGVseSB3YXJyYW50cyBhdHRlbnRpb24uIFRoaXMgbWVhbnMgYSB1c2VyIGNvdWxkIHBvdGVudGlhbGx5IGludGVyYWN0IHdpdGggdGhlIGNvbmZpZ2ZzIGludGVyZmFjZSwgdHJpZ2dlcmluZyBhIGBtdXRleF9sb2NrKFx1MDAyNmxvY2spYCBjYWxsICpiZWZvcmUqIHRoZSBtdXRleCBpcyBwcm9wZXJseSBzZXQgdXAuIFRoYXQncyBhIGd1YXJhbnRlZWQgY3Jhc2gsIG9yIGF0IGxlYXN0IHNvbWUgZm9ybSBvZiB1bmRlZmluZWQgYmVoYXZpb3IsIHJpZ2h0IHRoZXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEdpdmVuIGl0J3MgcmFjZSBjb25kaXRpb24sIEknbSB0aGlua2luZyB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBmb3IgZnV6emluZyB3aWxsIGJlIG9uIGZ1bmN0aW9ucyB0aGF0IGludGVyYWN0IHdpdGggdGhlIGNvbmZpZ2ZzIGludGVyZmFjZSBpbiBgbnVsbF9ibGtgLiBJJ2xsIGJlIGxvb2tpbmcgYXQ6XG5cbiogICBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYFxuKiAgIGBudWxsYl9ncm91cF9tYWtlX2dyb3VwYFxuKiAgIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gXG4qICAgYG51bGxfYWRkX2RldmBcblxuSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBwcm9jZXNzIHJlYWxseSBzdHJlc3NlcyB0aGVzZSBmdW5jdGlvbnMsIHNpbXVsYXRpbmcgY29uY3VycmVudCBhY2Nlc3MgYW5kIHBvdGVudGlhbGx5IHRyeWluZyB0byB0cmlnZ2VyIHRoZSByYWNlIGNvbmRpdGlvbiBkaXJlY3RseS4gSSB3YW50IHRvIHRyeSB0byBleHBvc2UgYW55IHNpbWlsYXIgaW5pdGlhbGl6YXRpb24gaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Njc1LCJPdXRwdXRUb2tlbnMiOjEyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE1OjIxLjQwNDI5NDQ3M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwMjM1MzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9ncm91cF9tYWtlX2dyb3VwXCIsXG4gICAgXCJudWxsYl9ncm91cF9kcm9wX2l0ZW1cIixcbiAgICBcIm51bGxfYWRkX2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gbnVsbF9ibGsgbW9kdWxlIGluaXRpYWxpemF0aW9uIHdoZXJlIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgaXMgZXhwb3NlZCBiZWZvcmUgYGxvY2tgIGlzIGluaXRpYWxpemVkLiBGdXp6aW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBudWxsX2JsayBjYW4gaGVscCB2ZXJpZnkgdGhpcyBmaXggYW5kIHVuY292ZXIgc2ltaWxhciBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zdG9yZVwiLFxuICAgIFwibnVsbGJfZ3JvdXBfbWFrZV9ncm91cFwiLFxuICAgIFwibnVsbGJfZ3JvdXBfZHJvcF9pdGVtXCIsXG4gICAgXCJudWxsX2FkZF9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIG51bGxfYmxrIG1vZHVsZSBpbml0aWFsaXphdGlvbiB3aGVyZSB0aGUgY29uZmlnZnMgaW50ZXJmYWNlIGlzIGV4cG9zZWQgYmVmb3JlIGBsb2NrYCBpcyBpbml0aWFsaXplZC4gRnV6emluZyB0aGUgY29uZmlnZnMgaW50ZXJmYWNlIGZ1bmN0aW9ucyBmb3IgbnVsbF9ibGsgY2FuIGhlbHAgdmVyaWZ5IHRoaXMgZml4IGFuZCB1bmNvdmVyIHNpbWlsYXIgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xb4g[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-04 09:43:44 +0000 UTC FinishedAt: 2026-07-04 10:15:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "29ea9753-3963-4f52-8336-e5e50d548be5" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "nullb_device_power_store", "nullb_group_make_group", "nullb_group_drop_item", "null_add_dev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZ3JvdXBfbWFrZV9ncm91cCYjMzQ7LAogICAgJiMzNDtudWxsYl9ncm91cF9kcm9wX2l0ZW0mIzM0OywKICAgICYjMzQ7bnVsbF9hZGRfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gbnVsbF9ibGsgbW9kdWxlIGluaXRpYWxpemF0aW9uIHdoZXJlIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgaXMgZXhwb3NlZCBiZWZvcmUgYGxvY2tgIGlzIGluaXRpYWxpemVkLiBGdXp6aW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBudWxsX2JsayBjYW4gaGVscCB2ZXJpZnkgdGhpcyBmaXggYW5kIHVuY292ZXIgc2ltaWxhciBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4NmExMGY3Zjk4NzY2MGNiYTQyY2IzMmM2ODdhODFiMDgzM2ZiZGY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgNCAxMDoxNDozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uOTg2MTZkMjkwYzVjYjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC0yMTYxLDEzICYjNDM7MjE2MSwxMiBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcbiBcdGNvbmZpZ19ncm91cF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XG4gXHRtdXRleF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XG4mIzQzO1x0bXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtcbiBcbiBcdHJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdG11dGV4X2luaXQoXHUwMDI2bG9jayk7XG4tXG4gXHRudWxsX21ham9yID0gcmVnaXN0ZXJfYmxrZGV2KDAsIFwmIzM0O251bGxiXCYjMzQ7KTtcbiBcdGlmIChudWxsX21ham9yIFx1MDAzYyAwKSB7XG4gXHRcdHJldCA9IG51bGxfbWFqb3I7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OVUxMX0JMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9ncm91cF9tYWtlX2dyb3VwJiMzNDssCiAgICAmIzM0O251bGxiX2dyb3VwX2Ryb3BfaXRlbSYjMzQ7LAogICAgJiMzNDtudWxsX2FkZF9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBudWxsX2JsayBtb2R1bGUgaW5pdGlhbGl6YXRpb24gd2hlcmUgdGhlIGNvbmZpZ2ZzIGludGVyZmFjZSBpcyBleHBvc2VkIGJlZm9yZSBgbG9ja2AgaXMgaW5pdGlhbGl6ZWQuIEZ1enppbmcgdGhlIGNvbmZpZ2ZzIGludGVyZmFjZSBmdW5jdGlvbnMgZm9yIG51bGxfYmxrIGNhbiBoZWxwIHZlcmlmeSB0aGlzIGZpeCBhbmQgdW5jb3ZlciBzaW1pbGFyIGlzc3Vlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODZhMTBmN2Y5ODc2NjBjYmE0MmNiMzJjNjg3YTgxYjA4MzNmYmRmNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDQgMTA6MTQ6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jCmluZGV4IGY4YzBmZDU3ZTA0MWE4Li45ODYxNmQyOTBjNWNiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKQEAgLTIxNjEsMTMgJiM0MzsyMTYxLDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKQogCiAJY29uZmlnX2dyb3VwX2luaXQoJmFtcDtudWxsYl9zdWJzeXMuc3VfZ3JvdXApOwogCW11dGV4X2luaXQoJmFtcDtudWxsYl9zdWJzeXMuc3VfbXV0ZXgpOwomIzQzOwltdXRleF9pbml0KCZhbXA7bG9jayk7CiAKIAlyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oJmFtcDtudWxsYl9zdWJzeXMpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQltdXRleF9pbml0KCZhbXA7bG9jayk7Ci0KIAludWxsX21ham9yID0gcmVnaXN0ZXJfYmxrZGV2KDAsICYjMzQ7bnVsbGImIzM0Oyk7CiAJaWYgKG51bGxfbWFqb3IgJmx0OyAwKSB7CiAJCXJldCA9IG51bGxfbWFqb3I7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4ODIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTnVsbCBCbG9jayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGVkIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGEgc2ltcGxlIGNvZGUgcmVhcnJhbmdlbWVudCwgbW92aW5nIHRoZSBgbXV0ZXhfaW5pdCgmYW1wO2xvY2spO2AgY2FsbCB0byAqYmVmb3JlKiB0aGUgYGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbSgmYW1wO251bGxiX3N1YnN5cyk7YCBjYWxsLiBBdCBmaXJzdCBnbGFuY2UsIHRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgaW1wcm92ZW1lbnQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIHByb2JhYmx5IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uCgpMZXQgbWUgYnJlYWsgdGhhdCBkb3duOiBJZiBgY29uZmlnZnNgIGlzIGFjY2Vzc2VkIGNvbmN1cnJlbnRseSB3aXRoIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24sIHRoZXJlJiMzOTtzIGEgd2luZG93IHdoZXJlIGBsb2NrYCAqY291bGQqIGJlIHVzZWQgYmVmb3JlIGl0JiMzOTtzIGJlZW4gaW5pdGlhbGl6ZWQgdmlhIGBtdXRleF9pbml0KClgLiBUaGlzIHJlYXJyYW5nZW1lbnQgbGlrZWx5IGNsb3NlcyB0aGF0IHdpbmRvdywgZW5zdXJpbmcgdGhlIG11dGV4IGlzIHJlYWR5IGJlZm9yZSBhbnl0aGluZyBhdHRlbXB0cyB0byB1c2UgaXQuIE5vdyBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgYXJvdW5kIHRoZSBgbXV0ZXhfaW5pdCgmYW1wO2xvY2spO2AgbGluZSBpbiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLCBhbmQgY29uZmlybSBteSBoeXBvdGhlc2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O211dGV4X2luaXRcXChcdTAwMjZsb2NrXFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjEyNT1zdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTYzLVx0bXV0ZXhfaW5pdChcdTAwMjZudWxsYl9zdWJzeXMuc3VfbXV0ZXgpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjE2NDpcdG11dGV4X2luaXQoXHUwMDI2bG9jayk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTY1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNjEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTaWduaWZpY2FuY2Ugb2YgYSBLZXJuZWwgTW9kdWxlIEluaXRpYWxpemF0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgaW5pdGlhbGl6YXRpb24gb3JkZXIgd2l0aGluIGBudWxsX2luaXRgLCB3aGljaCBJIGtub3cgaXMgdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGZvciB0aGUgYG51bGxfYmxrYCBtb2R1bGUuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtTaG91bGQgd2UgZnV6eiB0aGlzPyYjMzQ7IEFuZCB0aGUgYW5zd2VyIGlzICYjMzQ7WWVzLCBhYnNvbHV0ZWx5LiYjMzQ7IFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjb3NtZXRpYyBjaGFuZ2U7IGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBmaXggYWRkcmVzc2luZyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi4gQW55IGNoYW5nZSB0aGF0IG1vZGlmaWVzIHRoZSB3YXkgYSBtb2R1bGUgaXMgaW5pdGlhbGl6ZWQgaXMgd29ydGggYSBjbG9zZXIgbG9vaywgZXNwZWNpYWxseSBpZiBpdCBjb3VsZCBpbXBhY3QgY29uY3VycmVuY3kuCgpIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2jigKYgYG51bGxfaW5pdGAgaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24sIGlzbiYjMzk7dCBpdD8gRnV6emluZyB1c3VhbGx5IHRhcmdldHMgc3lzY2FsbHMgYW5kIHJ1bnRpbWUgYmVoYXZpb3JzLiBXZSYjMzk7cmUgZ2VuZXJhbGx5IG5vdCBmdXp6aW5nIGtlcm5lbCBpbml0aWFsaXphdGlvbiBkaXJlY3RseSwgYnV0IHRoZW4gYWdhaW4uLi4gd2XigJlyZSB3b3JraW5nIHdpdGggc3l6a2FsbGVyLiBTeXprYWxsZXIgaXMgY2FwYWJsZSBvZiBkb2luZyBtb3JlIHRoYW4ganVzdCBwb2tpbmcgYXQgc3lzY2FsbHMuIEl0IGNhbiBoYW5kbGUgbW9kdWxlIGxvYWRpbmcgYW5kIHVubG9hZGluZy4gSXQgY2FuIGludGVyYWN0IHdpdGggY29uZmlnZnMuIFRoaXMgYWRkcyBhIG5ldyBkaW1lbnNpb24uCgpBbHJpZ2h0LCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW4sIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgY2hlY2sgd2hhdCBsb2NrIGlzIHVzZWQgZm9yIGluIHRoZSBudWxsX2JsayBtb2R1bGUuIEtub3dpbmcgdGhlIGNyaXRpY2FsIHNlY3Rpb25zIHdpbGwgaW5mb3JtIG15IGZ1enppbmcgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXV0ZXhfbG9ja1xcKFx1MDAyNmxvY2tcXCkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00MjE9c3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MjUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0MjY6XHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDI3LVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDMzPXN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQzNy1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQzODpcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzktXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00ODQ9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00OTUtXHRyZXQgPSBjb3VudDtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ5NjpcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00OTctXHRpZiAoIWRldi1cdTAwM2Vwb3dlciBcdTAwMjZcdTAwMjYgbmV3cCkge1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTcwNT1udWxsYl9ncm91cF9kcm9wX2l0ZW0oc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsIHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MDktXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzEwOlx0XHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzExLVx0XHRkZXYtXHUwMDNlcG93ZXIgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMDgwPXN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwODMtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDg0Olx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwODUtXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG5iLCBcdTAwMjZudWxsYl9saXN0LCBsaXN0KSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjA5Nj1zdGF0aWMgaW50IG51bGxfY3JlYXRlX2Rldih2b2lkKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDQtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTA1Olx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDYtXHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMTk2PXN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMjAzLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjIwNDpcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMjA1LVx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNm51bGxiX2xpc3QpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYwNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSYWNlIENvbmRpdGlvbiBJZGVudGlmaWVkIGluIG51bGxfYmxrIE1vZHVsZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgbnVsbF9ibGtgIG1vZHVsZSwgYW5kIEkmIzM5O3ZlIHNwb3R0ZWQgc29tZXRoaW5nIGludGVyZXN0aW5nLiBUaGlzIGBsb2NrYCB2YXJpYWJsZS4uLiBpdCYjMzk7cyB1c2VkIGFsbCBvdmVyIHRoZSBwbGFjZTogaW4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gLCBgbnVsbF9jcmVhdGVfZGV2YCwgYG51bGxfZmluZF9kZXZfYnlfbmFtZWAsIGFuZCBwcmVzdW1hYmx5IGEgZmV3IG90aGVyIHBsYWNlcy4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGlzIHRoYXQgYWxsIG9mIHRob3NlIGZ1bmN0aW9ucyBhcmUgYWNjZXNzaWJsZSwgYXQgbGVhc3QgaW4gcGFydCwgdmlhIHRoZSBjb25maWdmcyBpbnRlcmZhY2Ugb3IgbW9kdWxlIHBhcmFtZXRlcnMsIHJpZ2h0PwoKVGhlIHBhdGNoIEkmIzM5O20gcmV2aWV3aW5nIGFwcGVhcnMgdG8gYWRkcmVzcyBhIHJhY2UgY29uZGl0aW9uLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRvIG1lIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBUaGUgaXNzdWUgaXMgdGhhdCB0aGUgYGxvY2tgIGlzIHVzZWQgKmJlZm9yZSogaXQmIzM5O3MgYmVlbiBpbml0aWFsaXplZC4gVGhpcyByYWNlIGNvbmRpdGlvbiBzZWVtcyB0byBiZSB0cmlnZ2VyZWQgYmVjYXVzZSBvZiB0aGUgdGltaW5nIGFzc29jaWF0ZWQgd2l0aCBgY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtYC4gRXNzZW50aWFsbHksIHNvbWUgdXNlciBhY2Nlc3NlcyB0aGUgY29uZmlnZnMgaW50ZXJmYWNlIChsaWtlIGEgY2FsbCB0byBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCkgKmJlZm9yZSogYG11dGV4X2luaXQoJmFtcDtsb2NrKWAgaGFzIGJlZW4gY2FsbGVkLiBUaGUga2VybmVsIGNhbiBleHBvc2UgdGhlIGNvbmZpZ2ZzIGludGVyZmFjZSBhbmQgYWxsb3cgdXNlciBhY2Nlc3MgYmVmb3JlIHRoZSBtdXRleCBpcyBhY3R1YWxseSBzZXQgdXAsIHdoaWNoIG9mIGNvdXJzZSBsZWFkcyB0byB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLgoKR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgdGhpcyBraW5kIG9mIHJhY2UsIEkmIzM5O20gYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgdGhpcyBuZWVkcyBzb21lIHNlcmlvdXMgZnV6emluZy4gVGhlIHNjZW5hcmlvIHNlZW1zIHByZXR0eSB3ZWxsLWRlZmluZWQsIGFuZCB0aGUgaW1wYWN0IGNvdWxkIGJlIHNpZ25pZmljYW50LCBkZXBlbmRpbmcgb24gaG93IHRoaXMgbG9jayBpcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGRldmljZSBkcml2ZXJzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXhhY3QgY29uZmlnIG9wdGlvbnMgZm9yIGBudWxsX2Jsa2AgdG8gYnVpbGQgYSBmdXp6aW5nIHRlc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0RFVl9OVUxMX0JMSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEzNQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRob3NlIGZpbGVzOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBIdW50aW5nKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBhIHNwZWNpZmljIGJsb2NrIGRldmljZSBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBzZXQgdXAuIExldCYjMzk7cyBzZWUuLi4gVHlwaWNhbGx5LCB0aGVzZSBvcHRpb25zIGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIEtjb25maWcgc3lzdGVtLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXJuZWwmIzM5O3MgZGlyZWN0b3J5IHN0cnVjdHVyZSwgdGhlIG1vc3QgbG9naWNhbCBwbGFjZXMgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMgYXJlIHRoZSBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBhbmQsIHBvdGVudGlhbGx5IGlmIHRoaXMgaXMgYSBzcGVjaWFsaXplZCBkcml2ZXIsIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdgIGZpbGVzLiBJJiMzOTtsbCBuZWVkIHRvIG9wZW4gdGhlbSBhbmQgc2NhbiB0aHJvdWdoIHRoZSBlbnRyaWVzLCBsb29raW5nIGZvciBsaWtlbHkgY2FuZGlkYXRlcyBiYXNlZCBvbiB0aGUgZGV2aWNlIG9yIGZ1bmN0aW9uYWxpdHkgSSYjMzk7bSB0cnlpbmcgdG8gY29uZmlndXJlLiBUaGVzZSBmaWxlcyBjb250YWluIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGV4cG9zZWQgdG8gdGhlIHVzZXIsIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRob3NlIG9wdGlvbnMsIGFuZCBhbnkgYXNzb2NpYXRlZCBoZWxwIHRleHQuIEkgY2FuIHRoZW4gdHJhY2UgYmFjayB0aHJvdWdoIHRoZSBkZXBlbmRlbmNpZXMgdG8gc2VlIHdoeSBhIHBhcnRpY3VsYXIgb3B0aW9uIGlzIHNlbGVjdGVkIG9yIGRlc2VsZWN0ZWQuIEZyb20gdGhlcmUgSSYjMzk7bGwgYmUgYWJsZSB0byB3b3JrIG91dCBob3cgdG8gY29udHJvbCB0aGUgYmxvY2sgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAxMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgLipOVUxMX0JMSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjY6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy05LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAxMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTQ1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTnVsbCBCbG9jayBEZXZpY2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uLCBhbmQgYEJMS19ERVZfTlVMTF9CTEtgIGlzIHRoZSBrZXkgZGVmaW5pdGlvbiBoZXJlLiBUaGF0IHBvaW50cyBtZSB0byB0aGUgbnVsbCBibG9jayBkZXZpY2UuIE15IGZvY3VzIGlzIG9uIGlkZW50aWZ5aW5nIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgdG8gdW5jb3ZlciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKSSBuZWVkIHRvIG5haWwgZG93biB0aGUgZXNzZW50aWFsIGZ1bmN0aW9ucyB0byB0YXJnZXQuIEZpcnN0LCBgbnVsbF9pbml0YCBpcyB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIOKAkyBkZWZpbml0ZWx5IG5lZWRzIGEgY2xvc2UgbG9vay4gQmV5b25kIHRoYXQsIEkmIzM5O3ZlIGdvdCBhIHNob3J0IGxpc3Q6IGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLCBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYCwgYG51bGxfY3JlYXRlX2RldmAsIGFuZCBgbnVsbF9hZGRfZGV2YC4KCkkmIzM5O20gc3RhcnRpbmcgd2l0aCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBhbmQgYG51bGxiX2dyb3VwX2Ryb3BfaXRlbWAuIFRoZXNlIHNlZW0gbGlrZSBnb29kIHN0YXJ0aW5nIHBvaW50cyBkdWUgdG8gdGhlIHBvdGVudGlhbCBjb21wbGV4aXRpZXMgYXJvdW5kIHBvd2VyIG1hbmFnZW1lbnQgYW5kIGdyb3VwIG9wZXJhdGlvbnMsIHdoaWNoIGFyZSBvZnRlbiBwcm9uZSB0byBzdWJ0bGUgYnVncy4gSSYjMzk7bGwgZGlnIGludG8gdGhlIGNvZGUgYW5kIHN0YXJ0IHNrZXRjaGluZyBvdXQgZnV6emluZyBzdHJhdGVnaWVzIGZvciB0aG9zZSB0d28gZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ3OT1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDgzLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDg0OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODUtXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAzMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gLiBKdXN0IGdsYW5jaW5nIGF0IHRoZSBuYW1lLCBpdCYjMzk7cyBpbW1lZGlhdGVseSBhcHBhcmVudCB0aGlzIHJlbGF0ZXMgdG8gc29tZXRoaW5nIGJlaW5nIGRyb3BwZWQgb3IgcmVtb3ZlZCB3aXRoaW4gYSBudWxsLWJhc2VkIHN0cnVjdHVyZSwgbGlrZWx5IHNvbWUga2luZCBvZiBncm91cCBvciBjb2xsZWN0aW9uLiBNeSBtaW5kJiMzOTtzIGFscmVhZHkgZmlyaW5nIHVwIHF1ZXN0aW9uczogSXMgdGhpcyBhIGNyaXRpY2FsIHBhdGggZnVuY3Rpb24/IFdoYXQmIzM5O3MgdGhlIGNvbnRleHQgLSBtZW1vcnkgbWFuYWdlbWVudD8gRGF0YSBzdHJ1Y3R1cmVzPyBDb25jdXJyZW50IGFjY2VzcyBjb25jZXJucz8gQXJlIHdlIGRlYWxpbmcgd2l0aCBwb2ludGVyIG1hbmlwdWxhdGlvbiwgYW5kIGlmIHNvLCB3aGF0JiMzOTtzIHRoZSBsZXZlbCBvZiBzYWZldHkgYnVpbHQgaW4/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgJiMzNDtkcm9wcGluZyYjMzQ7IGFuIGl0ZW0uIElzIGl0IHNpbXBseSBhIHJlbW92YWwgZnJvbSBhIGxpc3QsIG9yIGRvZXMgaXQgaW52b2x2ZSBkZWFsbG9jYXRpb24sIHJlZiBjb3VudGluZywgb3Igc29tZSBraW5kIG9mIGludmFsaWRhdGlvbj8gSSBob3BlIHRoZSBuYW1pbmcgY29udmVudGlvbiBpcyBjbGVhciBhbmQgdGhhdCB0aGVyZSBhcmUgZ29vZCBjb21tZW50cy4uLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZGVlcGVyIGludG8gaXRzIGltcGxlbWVudGF0aW9uIGFuZCBjYWxsIHNpdGVzIHRvIGdyYXNwIHRoZSBpbnRyaWNhY2llcyBvZiBpdHMgZGVzaWduLiBMZXQmIzM5O3Mgc2VlIGhvdyB3ZWxsIGl0JiMzOTtzIGJlZW4gaGFuZGxlZCBpbiB0aGUgcHJvamVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnVsbGJfZ3JvdXBfZHJvcF9pdGVtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NzA0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3MDU6bnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MDYte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ2ZzX2dyb3VwX29wZXJhdGlvbnMgbnVsbGJfZ3JvdXBfb3BzID0ge1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzUzLVx0Lm1ha2VfZ3JvdXBcdD0gbnVsbGJfZ3JvdXBfbWFrZV9ncm91cCxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjc1NDpcdC5kcm9wX2l0ZW1cdD0gbnVsbGJfZ3JvdXBfZHJvcF9pdGVtLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzU1LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MjUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGaXggYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiB0aGF0IG9jY3VycyBkdXJpbmcgdGhlIG1vZHVsZSYjMzk7cyBpbml0aWFsaXphdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3ZSBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0byBsZXZlcmFnZSB0aGlzIGZvciBmdXp6aW5nLiBUaGUga2V5IHNlZW1zIHRvIGJlIHRhcmdldGluZyB0aGUgY29uZmlnZnMgcGF0aHMsIGFuZCBzcGVjaWZpY2FsbHkgdGhpbmtpbmcgYWJvdXQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9ncm91cF9tYWtlX2dyb3VwYCwgYW5kIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gLgoKVGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBpdHNlbGYsIGBudWxsX2luaXRgLCBpc24mIzM5O3QgZGlyZWN0bHkgZnV6emVkIGJ5IHN5emthbGxlci4gSW5zdGVhZCwgaXQgZnV6emVzIHN5c2NhbGxzLiBCdXQgaXQgKmNhbiogbG9hZCBtb2R1bGVzIGFuZCBpbnRlcmFjdCB3aXRoIGNvbmZpZ2ZzLiBUaGF0JiMzOTtzIHRoZSBhbmdsZS4gVGhlcmVmb3JlLCBmb2N1c2luZyBvbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxiX2dyb3VwX21ha2VfZ3JvdXBgLCBhbmQgYG51bGxiX2dyb3VwX2Ryb3BfaXRlbWAgc2VlbXMgbGlrZSBhIGdvb2QgYXBwcm9hY2guIExldCYjMzk7cyBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gYG51bGxiX2dyb3VwX21ha2VfZ3JvdXBgLiBJJiMzOTtsbCB3YW50IHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBpcyBzdHJ1Y3R1cmVkIGFuZCB3aGF0IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgbWlnaHQgZXhpc3QgaW4gaXRzIGNvbmZpZ2ZzIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnVsbGJfZ3JvdXBfbWFrZV9ncm91cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTY4Nj1zdGF0aWMgc3RydWN0XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2ODc6Y29uZmlnX2dyb3VwICpudWxsYl9ncm91cF9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjg4LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03NTI9c3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdmc19ncm91cF9vcGVyYXRpb25zIG51bGxiX2dyb3VwX29wcyA9IHtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjc1MzpcdC5tYWtlX2dyb3VwXHQ9IG51bGxiX2dyb3VwX21ha2VfZ3JvdXAsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03NTQtXHQuZHJvcF9pdGVtXHQ9IG51bGxiX2dyb3VwX2Ryb3BfaXRlbSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEzMwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkIGFuZCBhcHByb2FjaGluZyBhIGRlYnVnZ2luZyBzY2VuYXJpbzoKCioqQ2hlY2tpbmcgYG51bGxfYWRkX2RldmAqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiAmIzM0O0xldCYjMzk7cyBjaGVjayBgbnVsbF9hZGRfZGV2YC4mIzM0OyBUaGF0IHRob3VnaHQgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LiBJdCYjMzk7cyBhIHByZWNpc2UsIHRhcmdldGVkIHBocmFzZS4gVGhpcyB0ZWxscyBtZSBJJiMzOTt2ZSBpZGVudGlmaWVkIGEgc3BlY2lmaWMgYXJlYSBvZiB0aGUgY29kZWJhc2UsIG9yIGEgcGFydGljdWxhciB2YXJpYWJsZSwgZnVuY3Rpb24sIG9yIHNlY3Rpb24gb2YgdGhlIHN5c3RlbSwgdGhhdCBJIHN1c3BlY3QgaXMgcmVsYXRlZCB0byB0aGUgY3VycmVudCBpc3N1ZS4gVGhlIHVzZSBvZiBiYWNrdGlja3Mgc3VnZ2VzdHMgdGhhdCBpdCYjMzk7cyBjb2RlLCBhIGNvbmZpZ3VyYXRpb24gc2V0dGluZywgb3IgYSBzeXN0ZW0gaWRlbnRpZmllciB0aGF0IEkmIzM5O20gZm9jdXNpbmcgb24uIEl0JiMzOTtzIGNvbmNpc2U7IEkgZG9uJiMzOTt0IG5lZWQgdG8gZXhwbGFpbiB0aGUgY29udGV4dCB0byBteXNlbGYsIEkganVzdCAqa25vdyouIEl0JiMzOTtzIGEgcXVpY2ssIGRpcmVjdGVkIHRob3VnaHQsIHRoZSBmaXJzdCBzdGVwIGluIGRlYnVnZ2luZyBvciBpbnZlc3RpZ2F0aW5nLiBJdCBpcyBhIGtub3duIGFyZWEgb2YgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnVsbF9hZGRfZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9Mjc1PXN0YXRpYyB2b2lkIG51bGxfZGVsX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI3NjpzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc3LXN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00ODQ9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MDAtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MDE6XHRcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTAyLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTk0Mj1zdGF0aWMgYm9vbCBudWxsX3NldHVwX2ZhdWx0KHZvaWQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk1NC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE5NTU6c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk1Ni17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjA5Nj1zdGF0aWMgaW50IG51bGxfY3JlYXRlX2Rldih2b2lkKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDUtXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjEwNjpcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEwNy1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgwNAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBEcml2ZXIqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBkaXJlY3RseSBjYWxscyBgbnVsbF9hZGRfZGV2YC4gVGhhdCBtZWFucyB0aG9zZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYG51bGxiX2dyb3VwX21ha2VfZ3JvdXBgIGFuZCBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYCwgYXJlIGFsbCBnb29kIHRhcmdldHMgZm9yIGZ1enppbmcuIFNlZW1zIGxpa2UgYSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LgoKTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBXZSBhbHJlYWR5IGtub3cgYENPTkZJR19CTEtfREVWX05VTExfQkxLYCBpcyBjcnVjaWFsLCBvYnZpb3VzbHkuIFdoYXQgZWxzZSBkbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHByb3Blcmx5IHNldCB1cD8gUmlnaHQsIHRoZSBjb25maWdmcyBkZXBlbmRlbmN5LiBJICp0aGluayogYENPTkZJR19DT05GSUdGU19GU2AgaXMgYWxyZWFkeSBlbmFibGVkIGluIHRoZSBiYXNlLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCBpcyByZXF1aXJlZCBieSBgQkxLX0RFVl9OVUxMX0JMS2AuIEp1c3QgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX05VTExfQkxLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjY6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy05LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAxMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzA1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBudWxsX2Jsa2AqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnYC4gVGltZSB0byBkaXZlIGluIGFuZCBwYXJzZSB0aGF0IEtjb25maWcgZmlsZS4gSSYjMzk7bSBhc3N1bWluZyBpdCYjMzk7bGwgb3V0bGluZSB3aGljaCBvdGhlciBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucyBtdXN0IGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIGBudWxsX2Jsa2AgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgc3lzdGVtIGFyY2hpdGVjdHVyZSBhbmQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgbGltaXRhdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIHJldmVhbC4gSSYjMzk7bSBleHBlY3Rpbmcgc3RhbmRhcmQgS2NvbmZpZyBzeW50YXgsIHNvIGhvcGVmdWxseSwgdGhpcyB3aWxsIGJlIHN0cmFpZ2h0Zm9yd2FyZC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgYGRlcGVuZHMgb25gLCBgc2VsZWN0YCwgYW5kIGFueSBzcGVjaWZpYyBzeW1ib2wgZGVmaW5pdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIE51bGwgYmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4gICA4Olx0XHRzZWxlY3QgQ09ORklHRlNfRlNcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbiAgMTE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbiAgMTI6XHRcdGRlcGVuZHMgb24gQkxLX0RFVl9OVUxMX0JMSyBcdTAwMjZcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDEwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NzUKCQkJCQkJCW91dHB1dDogMTI4CgkJCQkJCQl0aG91Z2h0czogMjIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE51bGwgQmxvY2sgRGV2aWNlIEluaXRpYWxpemF0aW9uIEZpeCoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IGxvb2tzIGxpa2UgYEJMS19ERVZfTlVMTF9CTEtgIGF1dG9tYXRpY2FsbHkgZW5hYmxlcyBgQ09ORklHRlNfRlNgLCB3aGljaCBpcyBnb29kLiBUaGF0IHNpbXBsaWZpZXMgdGhlIGRlcGVuZGVuY3kgY29uc2lkZXJhdGlvbnM7IHdlIGp1c3QgbmVlZCB0byBmb2N1cyBvbiBlbnN1cmluZyBgQkxLX0RFVl9OVUxMX0JMS2AgaXMgc2V0IGNvcnJlY3RseS4KClRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBpcyBhIHJhY2UgY29uZGl0aW9uIGluIGhvdyB0aGUgYG51bGxfYmxrYCBtb2R1bGUgaW5pdGlhbGl6ZXMuIFNwZWNpZmljYWxseSwgYGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbWAgaXMgbWFraW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgYXZhaWxhYmxlICpiZWZvcmUqIHRoZSBgbXV0ZXhgIGNhbGxlZCBgbG9ja2AgaXMgaW5pdGlhbGl6ZWQuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGJ1ZywgYW5kIGRlZmluaXRlbHkgd2FycmFudHMgYXR0ZW50aW9uLiBUaGlzIG1lYW5zIGEgdXNlciBjb3VsZCBwb3RlbnRpYWxseSBpbnRlcmFjdCB3aXRoIHRoZSBjb25maWdmcyBpbnRlcmZhY2UsIHRyaWdnZXJpbmcgYSBgbXV0ZXhfbG9jaygmYW1wO2xvY2spYCBjYWxsICpiZWZvcmUqIHRoZSBtdXRleCBpcyBwcm9wZXJseSBzZXQgdXAuIFRoYXQmIzM5O3MgYSBndWFyYW50ZWVkIGNyYXNoLCBvciBhdCBsZWFzdCBzb21lIGZvcm0gb2YgdW5kZWZpbmVkIGJlaGF2aW9yLCByaWdodCB0aGVyZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBHaXZlbiBpdCYjMzk7cyByYWNlIGNvbmRpdGlvbiwgSSYjMzk7bSB0aGlua2luZyB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4KCk15IHByaW1hcnkgZm9jdXMgZm9yIGZ1enppbmcgd2lsbCBiZSBvbiBmdW5jdGlvbnMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgaW4gYG51bGxfYmxrYC4gSSYjMzk7bGwgYmUgbG9va2luZyBhdDoKCiogICBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYAoqICAgYG51bGxiX2dyb3VwX21ha2VfZ3JvdXBgCiogICBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYAoqICAgYG51bGxfYWRkX2RldmAKCkkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enppbmcgcHJvY2VzcyByZWFsbHkgc3RyZXNzZXMgdGhlc2UgZnVuY3Rpb25zLCBzaW11bGF0aW5nIGNvbmN1cnJlbnQgYWNjZXNzIGFuZCBwb3RlbnRpYWxseSB0cnlpbmcgdG8gdHJpZ2dlciB0aGUgcmFjZSBjb25kaXRpb24gZGlyZWN0bHkuIEkgd2FudCB0byB0cnkgdG8gZXhwb3NlIGFueSBzaW1pbGFyIGluaXRpYWxpemF0aW9uIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMTA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZ3JvdXBfbWFrZV9ncm91cCYjMzQ7LAogICAgJiMzNDtudWxsYl9ncm91cF9kcm9wX2l0ZW0mIzM0OywKICAgICYjMzQ7bnVsbF9hZGRfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gbnVsbF9ibGsgbW9kdWxlIGluaXRpYWxpemF0aW9uIHdoZXJlIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgaXMgZXhwb3NlZCBiZWZvcmUgYGxvY2tgIGlzIGluaXRpYWxpemVkLiBGdXp6aW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBudWxsX2JsayBjYW4gaGVscCB2ZXJpZnkgdGhpcyBmaXggYW5kIHVuY292ZXIgc2ltaWxhciBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZ3JvdXBfbWFrZV9ncm91cCYjMzQ7LAogICAgJiMzNDtudWxsYl9ncm91cF9kcm9wX2l0ZW0mIzM0OywKICAgICYjMzQ7bnVsbF9hZGRfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gbnVsbF9ibGsgbW9kdWxlIGluaXRpYWxpemF0aW9uIHdoZXJlIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgaXMgZXhwb3NlZCBiZWZvcmUgYGxvY2tgIGlzIGluaXRpYWxpemVkLiBGdXp6aW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBudWxsX2JsayBjYW4gaGVscCB2ZXJpZnkgdGhpcyBmaXggYW5kIHVuY292ZXIgc2ltaWxhciBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNDozOS4yMjA4Njg5NDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjI3MzY3ODA5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9ncm91cF9tYWtlX2dyb3VwXCIsXG4gICAgXCJudWxsYl9ncm91cF9kcm9wX2l0ZW1cIixcbiAgICBcIm51bGxfYWRkX2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gbnVsbF9ibGsgbW9kdWxlIGluaXRpYWxpemF0aW9uIHdoZXJlIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgaXMgZXhwb3NlZCBiZWZvcmUgYGxvY2tgIGlzIGluaXRpYWxpemVkLiBGdXp6aW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBudWxsX2JsayBjYW4gaGVscCB2ZXJpZnkgdGhpcyBmaXggYW5kIHVuY292ZXIgc2ltaWxhciBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE0OjM5LjIyMDg3NjI0NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk0MzcyMjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODZhMTBmN2Y5ODc2NjBjYmE0MmNiMzJjNjg3YTgxYjA4MzNmYmRmN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCA0IDEwOjE0OjM4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uOTg2MTZkMjkwYzVjYjIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbkBAIC0yMTYxLDEzICsyMTYxLDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxcbiBcXG4gXFx0Y29uZmlnX2dyb3VwX2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XFxuK1xcdG11dGV4X2luaXQoXFx1MDAyNmxvY2spO1xcbiBcXG4gXFx0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFxcdTAwMjZudWxsYl9zdWJzeXMpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4tXFx0bXV0ZXhfaW5pdChcXHUwMDI2bG9jayk7XFxuLVxcbiBcXHRudWxsX21ham9yID0gcmVnaXN0ZXJfYmxrZGV2KDAsIFxcXCJudWxsYlxcXCIpO1xcbiBcXHRpZiAobnVsbF9tYWpvciBcXHUwMDNjIDApIHtcXG4gXFx0XFx0cmV0ID0gbnVsbF9tYWpvcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTQ6MzkuNTE2MDU5MDk2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk3ODQ3NjU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9ncm91cF9tYWtlX2dyb3VwXCIsXG4gICAgXCJudWxsYl9ncm91cF9kcm9wX2l0ZW1cIixcbiAgICBcIm51bGxfYWRkX2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gbnVsbF9ibGsgbW9kdWxlIGluaXRpYWxpemF0aW9uIHdoZXJlIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgaXMgZXhwb3NlZCBiZWZvcmUgYGxvY2tgIGlzIGluaXRpYWxpemVkLiBGdXp6aW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBudWxsX2JsayBjYW4gaGVscCB2ZXJpZnkgdGhpcyBmaXggYW5kIHVuY292ZXIgc2ltaWxhciBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODZhMTBmN2Y5ODc2NjBjYmE0MmNiMzJjNjg3YTgxYjA4MzNmYmRmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDQgMTA6MTQ6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uOTg2MTZkMjkwYzVjYjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC0yMTYxLDEzICsyMTYxLDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFxuIFx0Y29uZmlnX2dyb3VwX2luaXQoXHUwMDI2bnVsbGJfc3Vic3lzLnN1X2dyb3VwKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2bnVsbGJfc3Vic3lzLnN1X211dGV4KTtcbitcdG11dGV4X2luaXQoXHUwMDI2bG9jayk7XG4gXG4gXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRtdXRleF9pbml0KFx1MDAyNmxvY2spO1xuLVxuIFx0bnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCBcIm51bGxiXCIpO1xuIFx0aWYgKG51bGxfbWFqb3IgXHUwMDNjIDApIHtcbiBcdFx0cmV0ID0gbnVsbF9tYWpvcjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE0OjM5LjUxNjA2MTAxNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MjI1NzQzMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTnVsbCBCbG9jayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyB0b3VjaGVkIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGEgc2ltcGxlIGNvZGUgcmVhcnJhbmdlbWVudCwgbW92aW5nIHRoZSBgbXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtgIGNhbGwgdG8gKmJlZm9yZSogdGhlIGBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtgIGNhbGwuIEF0IGZpcnN0IGdsYW5jZSwgdGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgcHJvYmFibHkgYWRkcmVzc2luZyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi5cblxuTGV0IG1lIGJyZWFrIHRoYXQgZG93bjogSWYgYGNvbmZpZ2ZzYCBpcyBhY2Nlc3NlZCBjb25jdXJyZW50bHkgd2l0aCB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24sIHRoZXJlJ3MgYSB3aW5kb3cgd2hlcmUgYGxvY2tgICpjb3VsZCogYmUgdXNlZCBiZWZvcmUgaXQncyBiZWVuIGluaXRpYWxpemVkIHZpYSBgbXV0ZXhfaW5pdCgpYC4gVGhpcyByZWFycmFuZ2VtZW50IGxpa2VseSBjbG9zZXMgdGhhdCB3aW5kb3csIGVuc3VyaW5nIHRoZSBtdXRleCBpcyByZWFkeSBiZWZvcmUgYW55dGhpbmcgYXR0ZW1wdHMgdG8gdXNlIGl0LiBOb3cgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIGFyb3VuZCB0aGUgYG11dGV4X2luaXQoXHUwMDI2bG9jayk7YCBsaW5lIGluIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AsIGFuZCBjb25maXJtIG15IGh5cG90aGVzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4ODIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNDo0My4zMzg2MzcwODVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0NzMzODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXV0ZXhfaW5pdFxcXFwoXFx1MDAyNmxvY2tcXFxcKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMTI1PXN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjE2My1cXHRtdXRleF9pbml0KFxcdTAwMjZudWxsYl9zdWJzeXMuc3VfbXV0ZXgpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxNjQ6XFx0bXV0ZXhfaW5pdChcXHUwMDI2bG9jayk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjE2NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTQ6NDMuMzk1MTE1NDMzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyMTcyODY5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNpZ25pZmljYW5jZSBvZiBhIEtlcm5lbCBNb2R1bGUgSW5pdGlhbGl6YXRpb24gQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9yZGVyIHdpdGhpbiBgbnVsbF9pbml0YCwgd2hpY2ggSSBrbm93IGlzIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgdGhlIGBudWxsX2Jsa2AgbW9kdWxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiU2hvdWxkIHdlIGZ1enogdGhpcz9cIiBBbmQgdGhlIGFuc3dlciBpcyBcIlllcywgYWJzb2x1dGVseS5cIiBUaGlzIGlzbid0IGp1c3QgYSBjb3NtZXRpYyBjaGFuZ2U7IGl0J3MgYSBmdW5jdGlvbmFsIGZpeCBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLiBBbnkgY2hhbmdlIHRoYXQgbW9kaWZpZXMgdGhlIHdheSBhIG1vZHVsZSBpcyBpbml0aWFsaXplZCBpcyB3b3J0aCBhIGNsb3NlciBsb29rLCBlc3BlY2lhbGx5IGlmIGl0IGNvdWxkIGltcGFjdCBjb25jdXJyZW5jeS5cblxuSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdo4oCmIGBudWxsX2luaXRgIGlzIGFuIGBfX2luaXRgIGZ1bmN0aW9uLCBpc24ndCBpdD8gRnV6emluZyB1c3VhbGx5IHRhcmdldHMgc3lzY2FsbHMgYW5kIHJ1bnRpbWUgYmVoYXZpb3JzLiBXZSdyZSBnZW5lcmFsbHkgbm90IGZ1enppbmcga2VybmVsIGluaXRpYWxpemF0aW9uIGRpcmVjdGx5LCBidXQgdGhlbiBhZ2Fpbi4uLiB3ZeKAmXJlIHdvcmtpbmcgd2l0aCBzeXprYWxsZXIuIFN5emthbGxlciBpcyBjYXBhYmxlIG9mIGRvaW5nIG1vcmUgdGhhbiBqdXN0IHBva2luZyBhdCBzeXNjYWxscy4gSXQgY2FuIGhhbmRsZSBtb2R1bGUgbG9hZGluZyBhbmQgdW5sb2FkaW5nLiBJdCBjYW4gaW50ZXJhY3Qgd2l0aCBjb25maWdmcy4gVGhpcyBhZGRzIGEgbmV3IGRpbWVuc2lvbi5cblxuQWxyaWdodCwgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGluLCBsZXQncyBqdXN0IHF1aWNrbHkgY2hlY2sgd2hhdCBsb2NrIGlzIHVzZWQgZm9yIGluIHRoZSBudWxsX2JsayBtb2R1bGUuIEtub3dpbmcgdGhlIGNyaXRpY2FsIHNlY3Rpb25zIHdpbGwgaW5mb3JtIG15IGZ1enppbmcgYXBwcm9hY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTQ6NDcuMzE2ODQ2MTc4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDkxMjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm11dGV4X2xvY2tcXFxcKFxcdTAwMjZsb2NrXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDIxPXN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MjUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDI2OlxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQyNy1cXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVxcdTAwM2Vwb2xsX3F1ZXVlcyk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00MzM9c3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzctXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDM4OlxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQzOS1cXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00ODQ9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ5NS1cXHRyZXQgPSBjb3VudDtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0OTY6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDk3LVxcdGlmICghZGV2LVxcdTAwM2Vwb3dlciBcXHUwMDI2XFx1MDAyNiBuZXdwKSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03MDU9bnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MDktXFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjcxMDpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MTEtXFx0XFx0ZGV2LVxcdTAwM2Vwb3dlciA9IGZhbHNlO1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjA4MD1zdGF0aWMgc3RydWN0IG51bGxiICpudWxsX2ZpbmRfZGV2X2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwODMtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjA4NDpcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDg1LVxcdGxpc3RfZm9yX2VhY2hfZW50cnkobmIsIFxcdTAwMjZudWxsYl9saXN0LCBsaXN0KSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMDk2PXN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTA0LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxMDU6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEwNi1cXHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTIxOTY9c3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjIwMy1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMjA0OlxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIyMDUtXFx0d2hpbGUgKCFsaXN0X2VtcHR5KFxcdTAwMjZudWxsYl9saXN0KSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNDo0Ny4zNzM5NTAzOTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTYzNzAyMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJhY2UgQ29uZGl0aW9uIElkZW50aWZpZWQgaW4gbnVsbF9ibGsgTW9kdWxlKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgbnVsbF9ibGtgIG1vZHVsZSwgYW5kIEkndmUgc3BvdHRlZCBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIFRoaXMgYGxvY2tgIHZhcmlhYmxlLi4uIGl0J3MgdXNlZCBhbGwgb3ZlciB0aGUgcGxhY2U6IGluIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLCBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYCwgYG51bGxfY3JlYXRlX2RldmAsIGBudWxsX2ZpbmRfZGV2X2J5X25hbWVgLCBhbmQgcHJlc3VtYWJseSBhIGZldyBvdGhlciBwbGFjZXMuIFRoZSBpbnRlcmVzdGluZyB0aGluZyBpcyB0aGF0IGFsbCBvZiB0aG9zZSBmdW5jdGlvbnMgYXJlIGFjY2Vzc2libGUsIGF0IGxlYXN0IGluIHBhcnQsIHZpYSB0aGUgY29uZmlnZnMgaW50ZXJmYWNlIG9yIG1vZHVsZSBwYXJhbWV0ZXJzLCByaWdodD9cblxuVGhlIHBhdGNoIEknbSByZXZpZXdpbmcgYXBwZWFycyB0byBhZGRyZXNzIGEgcmFjZSBjb25kaXRpb24sIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0byBtZSB3aGF0J3MgaGFwcGVuaW5nLiBUaGUgaXNzdWUgaXMgdGhhdCB0aGUgYGxvY2tgIGlzIHVzZWQgKmJlZm9yZSogaXQncyBiZWVuIGluaXRpYWxpemVkLiBUaGlzIHJhY2UgY29uZGl0aW9uIHNlZW1zIHRvIGJlIHRyaWdnZXJlZCBiZWNhdXNlIG9mIHRoZSB0aW1pbmcgYXNzb2NpYXRlZCB3aXRoIGBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW1gLiBFc3NlbnRpYWxseSwgc29tZSB1c2VyIGFjY2Vzc2VzIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgKGxpa2UgYSBjYWxsIHRvIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgKSAqYmVmb3JlKiBgbXV0ZXhfaW5pdChcdTAwMjZsb2NrKWAgaGFzIGJlZW4gY2FsbGVkLiBUaGUga2VybmVsIGNhbiBleHBvc2UgdGhlIGNvbmZpZ2ZzIGludGVyZmFjZSBhbmQgYWxsb3cgdXNlciBhY2Nlc3MgYmVmb3JlIHRoZSBtdXRleCBpcyBhY3R1YWxseSBzZXQgdXAsIHdoaWNoIG9mIGNvdXJzZSBsZWFkcyB0byB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLlxuXG5HaXZlbiB0aGUgcG90ZW50aWFsIGZvciB0aGlzIGtpbmQgb2YgcmFjZSwgSSdtIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IHRoaXMgbmVlZHMgc29tZSBzZXJpb3VzIGZ1enppbmcuIFRoZSBzY2VuYXJpbyBzZWVtcyBwcmV0dHkgd2VsbC1kZWZpbmVkLCBhbmQgdGhlIGltcGFjdCBjb3VsZCBiZSBzaWduaWZpY2FudCwgZGVwZW5kaW5nIG9uIGhvdyB0aGlzIGxvY2sgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBkZXZpY2UgZHJpdmVycy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGNvbmZpZyBvcHRpb25zIGZvciBgbnVsbF9ibGtgIHRvIGJ1aWxkIGEgZnV6emluZyB0ZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjA2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE0OjUxLjUzNzY1NTI2M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDI3Njg0OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19ERVZfTlVMTF9CTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNDo1MS41OTc5Mzk4MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjI0NDA0NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aG9zZSBmaWxlczpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBIdW50aW5nKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGEgc3BlY2lmaWMgYmxvY2sgZGV2aWNlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHNldCB1cC4gTGV0J3Mgc2VlLi4uIFR5cGljYWxseSwgdGhlc2Ugb3B0aW9ucyBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGtlcm5lbCdzIEtjb25maWcgc3lzdGVtLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXJuZWwncyBkaXJlY3Rvcnkgc3RydWN0dXJlLCB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlcyB0byBzdGFydCBsb29raW5nIGZvciB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIGBkcml2ZXJzL2Jsb2NrL0tjb25maWdgIGFuZCwgcG90ZW50aWFsbHkgaWYgdGhpcyBpcyBhIHNwZWNpYWxpemVkIGRyaXZlciwgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ2AgZmlsZXMuIEknbGwgbmVlZCB0byBvcGVuIHRoZW0gYW5kIHNjYW4gdGhyb3VnaCB0aGUgZW50cmllcywgbG9va2luZyBmb3IgbGlrZWx5IGNhbmRpZGF0ZXMgYmFzZWQgb24gdGhlIGRldmljZSBvciBmdW5jdGlvbmFsaXR5IEknbSB0cnlpbmcgdG8gY29uZmlndXJlLiBUaGVzZSBmaWxlcyBjb250YWluIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGV4cG9zZWQgdG8gdGhlIHVzZXIsIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRob3NlIG9wdGlvbnMsIGFuZCBhbnkgYXNzb2NpYXRlZCBoZWxwIHRleHQuIEkgY2FuIHRoZW4gdHJhY2UgYmFjayB0aHJvdWdoIHRoZSBkZXBlbmRlbmNpZXMgdG8gc2VlIHdoeSBhIHBhcnRpY3VsYXIgb3B0aW9uIGlzIHNlbGVjdGVkIG9yIGRlc2VsZWN0ZWQuIEZyb20gdGhlcmUgSSdsbCBiZSBhYmxlIHRvIHdvcmsgb3V0IGhvdyB0byBjb250cm9sIHRoZSBibG9jayBkZXZpY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMzUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNDo1NC42NjAzODI5MzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NDEzMDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyAuKk5VTExfQkxLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNDo1NC43MTk4MDE3NTZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUwNjgwMzA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uLCBhbmQgYEJMS19ERVZfTlVMTF9CTEtgIGlzIHRoZSBrZXkgZGVmaW5pdGlvbiBoZXJlLiBUaGF0IHBvaW50cyBtZSB0byB0aGUgbnVsbCBibG9jayBkZXZpY2UuIE15IGZvY3VzIGlzIG9uIGlkZW50aWZ5aW5nIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgdG8gdW5jb3ZlciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5JIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBlc3NlbnRpYWwgZnVuY3Rpb25zIHRvIHRhcmdldC4gRmlyc3QsIGBudWxsX2luaXRgIGlzIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24g4oCTIGRlZmluaXRlbHkgbmVlZHMgYSBjbG9zZSBsb29rLiBCZXlvbmQgdGhhdCwgSSd2ZSBnb3QgYSBzaG9ydCBsaXN0OiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxiX2dyb3VwX2Ryb3BfaXRlbWAsIGBudWxsX2NyZWF0ZV9kZXZgLCBhbmQgYG51bGxfYWRkX2RldmAuXG5cbkknbSBzdGFydGluZyB3aXRoIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGFuZCBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYC4gVGhlc2Ugc2VlbSBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGR1ZSB0byB0aGUgcG90ZW50aWFsIGNvbXBsZXhpdGllcyBhcm91bmQgcG93ZXIgbWFuYWdlbWVudCBhbmQgZ3JvdXAgb3BlcmF0aW9ucywgd2hpY2ggYXJlIG9mdGVuIHByb25lIHRvIHN1YnRsZSBidWdzLiBJJ2xsIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzdGFydCBza2V0Y2hpbmcgb3V0IGZ1enppbmcgc3RyYXRlZ2llcyBmb3IgdGhvc2UgdHdvIGZpcnN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTQ1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTQ6NTguMjI2NjA3NDA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njg2ODI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDc5PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4My1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODQ6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODUtXFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE0OjU4LjI4MzQ4MjY5NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTA0MjI1MTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gLiBKdXN0IGdsYW5jaW5nIGF0IHRoZSBuYW1lLCBpdCdzIGltbWVkaWF0ZWx5IGFwcGFyZW50IHRoaXMgcmVsYXRlcyB0byBzb21ldGhpbmcgYmVpbmcgZHJvcHBlZCBvciByZW1vdmVkIHdpdGhpbiBhIG51bGwtYmFzZWQgc3RydWN0dXJlLCBsaWtlbHkgc29tZSBraW5kIG9mIGdyb3VwIG9yIGNvbGxlY3Rpb24uIE15IG1pbmQncyBhbHJlYWR5IGZpcmluZyB1cCBxdWVzdGlvbnM6IElzIHRoaXMgYSBjcml0aWNhbCBwYXRoIGZ1bmN0aW9uPyBXaGF0J3MgdGhlIGNvbnRleHQgLSBtZW1vcnkgbWFuYWdlbWVudD8gRGF0YSBzdHJ1Y3R1cmVzPyBDb25jdXJyZW50IGFjY2VzcyBjb25jZXJucz8gQXJlIHdlIGRlYWxpbmcgd2l0aCBwb2ludGVyIG1hbmlwdWxhdGlvbiwgYW5kIGlmIHNvLCB3aGF0J3MgdGhlIGxldmVsIG9mIHNhZmV0eSBidWlsdCBpbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBcImRyb3BwaW5nXCIgYW4gaXRlbS4gSXMgaXQgc2ltcGx5IGEgcmVtb3ZhbCBmcm9tIGEgbGlzdCwgb3IgZG9lcyBpdCBpbnZvbHZlIGRlYWxsb2NhdGlvbiwgcmVmIGNvdW50aW5nLCBvciBzb21lIGtpbmQgb2YgaW52YWxpZGF0aW9uPyBJIGhvcGUgdGhlIG5hbWluZyBjb252ZW50aW9uIGlzIGNsZWFyIGFuZCB0aGF0IHRoZXJlIGFyZSBnb29kIGNvbW1lbnRzLi4uIEknbGwgbmVlZCB0byBsb29rIGRlZXBlciBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgY2FsbCBzaXRlcyB0byBncmFzcCB0aGUgaW50cmljYWNpZXMgb2YgaXRzIGRlc2lnbi4gTGV0J3Mgc2VlIGhvdyB3ZWxsIGl0J3MgYmVlbiBoYW5kbGVkIGluIHRoZSBwcm9qZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDMyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTU6MDEuMzg3NzA5OTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODAwOTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm51bGxiX2dyb3VwX2Ryb3BfaXRlbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03MDQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3MDU6bnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzA2LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ2ZzX2dyb3VwX29wZXJhdGlvbnMgbnVsbGJfZ3JvdXBfb3BzID0ge1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc1My1cXHQubWFrZV9ncm91cFxcdD0gbnVsbGJfZ3JvdXBfbWFrZV9ncm91cCxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3NTQ6XFx0LmRyb3BfaXRlbVxcdD0gbnVsbGJfZ3JvdXBfZHJvcF9pdGVtLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc1NS19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNTowMS40NDQ1MTg3NjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1NjA0MDUxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZpeCBhbmQgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gdGhhdCBvY2N1cnMgZHVyaW5nIHRoZSBtb2R1bGUncyBpbml0aWFsaXphdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3ZSBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0byBsZXZlcmFnZSB0aGlzIGZvciBmdXp6aW5nLiBUaGUga2V5IHNlZW1zIHRvIGJlIHRhcmdldGluZyB0aGUgY29uZmlnZnMgcGF0aHMsIGFuZCBzcGVjaWZpY2FsbHkgdGhpbmtpbmcgYWJvdXQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9ncm91cF9tYWtlX2dyb3VwYCwgYW5kIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gLlxuXG5UaGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGl0c2VsZiwgYG51bGxfaW5pdGAsIGlzbid0IGRpcmVjdGx5IGZ1enplZCBieSBzeXprYWxsZXIuIEluc3RlYWQsIGl0IGZ1enplcyBzeXNjYWxscy4gQnV0IGl0ICpjYW4qIGxvYWQgbW9kdWxlcyBhbmQgaW50ZXJhY3Qgd2l0aCBjb25maWdmcy4gVGhhdCdzIHRoZSBhbmdsZS4gVGhlcmVmb3JlLCBmb2N1c2luZyBvbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxiX2dyb3VwX21ha2VfZ3JvdXBgLCBhbmQgYG51bGxiX2dyb3VwX2Ryb3BfaXRlbWAgc2VlbXMgbGlrZSBhIGdvb2QgYXBwcm9hY2guIExldCdzIHN0YXJ0IHdpdGggYSBkZWVwIGRpdmUgaW50byBgbnVsbGJfZ3JvdXBfbWFrZV9ncm91cGAuIEknbGwgd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaXMgc3RydWN0dXJlZCBhbmQgd2hhdCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG1pZ2h0IGV4aXN0IGluIGl0cyBjb25maWdmcyBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MjUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTU6MDUuMTAwNTYxNjMzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODYwNTM2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudWxsYl9ncm91cF9tYWtlX2dyb3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTY4Nj1zdGF0aWMgc3RydWN0XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Njg3OmNvbmZpZ19ncm91cCAqbnVsbGJfZ3JvdXBfbWFrZV9ncm91cChzdHJ1Y3QgY29uZmlnX2dyb3VwICpncm91cCwgY29uc3QgY2hhciAqbmFtZSlcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02ODgte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NzUyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnZnNfZ3JvdXBfb3BlcmF0aW9ucyBudWxsYl9ncm91cF9vcHMgPSB7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzUzOlxcdC5tYWtlX2dyb3VwXFx0PSBudWxsYl9ncm91cF9tYWtlX2dyb3VwLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc1NC1cXHQuZHJvcF9pdGVtXFx0PSBudWxsYl9ncm91cF9kcm9wX2l0ZW0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE1OjA1LjE1OTE3MjY5MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODUyMTA0OTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZCBhbmQgYXBwcm9hY2hpbmcgYSBkZWJ1Z2dpbmcgc2NlbmFyaW86XG5cbioqQ2hlY2tpbmcgYG51bGxfYWRkX2RldmAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIFwiTGV0J3MgY2hlY2sgYG51bGxfYWRkX2RldmAuXCIgVGhhdCB0aG91Z2h0IGlzIHRoZSBzdGFydGluZyBwb2ludC4gSXQncyBhIHByZWNpc2UsIHRhcmdldGVkIHBocmFzZS4gVGhpcyB0ZWxscyBtZSBJJ3ZlIGlkZW50aWZpZWQgYSBzcGVjaWZpYyBhcmVhIG9mIHRoZSBjb2RlYmFzZSwgb3IgYSBwYXJ0aWN1bGFyIHZhcmlhYmxlLCBmdW5jdGlvbiwgb3Igc2VjdGlvbiBvZiB0aGUgc3lzdGVtLCB0aGF0IEkgc3VzcGVjdCBpcyByZWxhdGVkIHRvIHRoZSBjdXJyZW50IGlzc3VlLiBUaGUgdXNlIG9mIGJhY2t0aWNrcyBzdWdnZXN0cyB0aGF0IGl0J3MgY29kZSwgYSBjb25maWd1cmF0aW9uIHNldHRpbmcsIG9yIGEgc3lzdGVtIGlkZW50aWZpZXIgdGhhdCBJJ20gZm9jdXNpbmcgb24uIEl0J3MgY29uY2lzZTsgSSBkb24ndCBuZWVkIHRvIGV4cGxhaW4gdGhlIGNvbnRleHQgdG8gbXlzZWxmLCBJIGp1c3QgKmtub3cqLiBJdCdzIGEgcXVpY2ssIGRpcmVjdGVkIHRob3VnaHQsIHRoZSBmaXJzdCBzdGVwIGluIGRlYnVnZ2luZyBvciBpbnZlc3RpZ2F0aW5nLiBJdCBpcyBhIGtub3duIGFyZWEgb2YgdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEzMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE1OjA4LjAxMTI3OTQ3NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg0NTY0MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnVsbF9hZGRfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTI3NT1zdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc2OnN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc3LXN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ4ND1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTAwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUwMTpcXHRcXHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MDItXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTk0Mj1zdGF0aWMgYm9vbCBudWxsX3NldHVwX2ZhdWx0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU0LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE5NTU6c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5NTYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjA5Nj1zdGF0aWMgaW50IG51bGxfY3JlYXRlX2Rldih2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEwNS1cXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTA2OlxcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDctXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTU6MDguMDY5NzQyNjA0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTMwMTA2NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTnVsbCBCbG9jayBEZXZpY2UgRHJpdmVyKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBkaXJlY3RseSBjYWxscyBgbnVsbF9hZGRfZGV2YC4gVGhhdCBtZWFucyB0aG9zZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYG51bGxiX2dyb3VwX21ha2VfZ3JvdXBgIGFuZCBgbnVsbGJfZ3JvdXBfZHJvcF9pdGVtYCwgYXJlIGFsbCBnb29kIHRhcmdldHMgZm9yIGZ1enppbmcuIFNlZW1zIGxpa2UgYSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIFdlIGFscmVhZHkga25vdyBgQ09ORklHX0JMS19ERVZfTlVMTF9CTEtgIGlzIGNydWNpYWwsIG9idmlvdXNseS4gV2hhdCBlbHNlIGRvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgcHJvcGVybHkgc2V0IHVwPyBSaWdodCwgdGhlIGNvbmZpZ2ZzIGRlcGVuZGVuY3kuIEkgKnRoaW5rKiBgQ09ORklHX0NPTkZJR0ZTX0ZTYCBpcyBhbHJlYWR5IGVuYWJsZWQgaW4gdGhlIGJhc2UsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIGl0IGlzIHJlcXVpcmVkIGJ5IGBCTEtfREVWX05VTExfQkxLYC4gSnVzdCB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgwNCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQxMDoxNToxMS42NjI3NTUxNDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MzQ5ODQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTEtfREVWX05VTExfQkxLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6Njpjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cXHRib29sIFxcXCJTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTU6MTEuNzE5MTEyNTE5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODE0MjkyMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgbnVsbF9ibGtgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnYC4gVGltZSB0byBkaXZlIGluIGFuZCBwYXJzZSB0aGF0IEtjb25maWcgZmlsZS4gSSdtIGFzc3VtaW5nIGl0J2xsIG91dGxpbmUgd2hpY2ggb3RoZXIgZmVhdHVyZXMgb3IgY29uZmlndXJhdGlvbnMgbXVzdCBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBgbnVsbF9ibGtgIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIHN5c3RlbSBhcmNoaXRlY3R1cmUgYW5kIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGxpbWl0YXRpb25zLiBMZXQncyBzZWUgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIHJldmVhbC4gSSdtIGV4cGVjdGluZyBzdGFuZGFyZCBLY29uZmlnIHN5bnRheCwgc28gaG9wZWZ1bGx5LCB0aGlzIHdpbGwgYmUgc3RyYWlnaHRmb3J3YXJkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGBkZXBlbmRzIG9uYCwgYHNlbGVjdGAsIGFuZCBhbnkgc3BlY2lmaWMgc3ltYm9sIGRlZmluaXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzA1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMTA6MTU6MTUuMTAwNTQ0MTk1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTnVsbCBibG9jayBkZXZpY2UgZHJpdmVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IENPTkZJR0ZTX0ZTXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbiAgMTE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXFx1MDAyNlxcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE1OjE1LjEwMDYyMDg3NVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzAzNjcxNjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE51bGwgQmxvY2sgRGV2aWNlIEluaXRpYWxpemF0aW9uIEZpeCoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBsb29rcyBsaWtlIGBCTEtfREVWX05VTExfQkxLYCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYENPTkZJR0ZTX0ZTYCwgd2hpY2ggaXMgZ29vZC4gVGhhdCBzaW1wbGlmaWVzIHRoZSBkZXBlbmRlbmN5IGNvbnNpZGVyYXRpb25zOyB3ZSBqdXN0IG5lZWQgdG8gZm9jdXMgb24gZW5zdXJpbmcgYEJMS19ERVZfTlVMTF9CTEtgIGlzIHNldCBjb3JyZWN0bHkuXG5cblRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBpcyBhIHJhY2UgY29uZGl0aW9uIGluIGhvdyB0aGUgYG51bGxfYmxrYCBtb2R1bGUgaW5pdGlhbGl6ZXMuIFNwZWNpZmljYWxseSwgYGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbWAgaXMgbWFraW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgYXZhaWxhYmxlICpiZWZvcmUqIHRoZSBgbXV0ZXhgIGNhbGxlZCBgbG9ja2AgaXMgaW5pdGlhbGl6ZWQuIFRoYXQncyBhIGNsYXNzaWMgY29uY3VycmVuY3kgYnVnLCBhbmQgZGVmaW5pdGVseSB3YXJyYW50cyBhdHRlbnRpb24uIFRoaXMgbWVhbnMgYSB1c2VyIGNvdWxkIHBvdGVudGlhbGx5IGludGVyYWN0IHdpdGggdGhlIGNvbmZpZ2ZzIGludGVyZmFjZSwgdHJpZ2dlcmluZyBhIGBtdXRleF9sb2NrKFx1MDAyNmxvY2spYCBjYWxsICpiZWZvcmUqIHRoZSBtdXRleCBpcyBwcm9wZXJseSBzZXQgdXAuIFRoYXQncyBhIGd1YXJhbnRlZWQgY3Jhc2gsIG9yIGF0IGxlYXN0IHNvbWUgZm9ybSBvZiB1bmRlZmluZWQgYmVoYXZpb3IsIHJpZ2h0IHRoZXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEdpdmVuIGl0J3MgcmFjZSBjb25kaXRpb24sIEknbSB0aGlua2luZyB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBmb3IgZnV6emluZyB3aWxsIGJlIG9uIGZ1bmN0aW9ucyB0aGF0IGludGVyYWN0IHdpdGggdGhlIGNvbmZpZ2ZzIGludGVyZmFjZSBpbiBgbnVsbF9ibGtgLiBJJ2xsIGJlIGxvb2tpbmcgYXQ6XG5cbiogICBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYFxuKiAgIGBudWxsYl9ncm91cF9tYWtlX2dyb3VwYFxuKiAgIGBudWxsYl9ncm91cF9kcm9wX2l0ZW1gXG4qICAgYG51bGxfYWRkX2RldmBcblxuSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBwcm9jZXNzIHJlYWxseSBzdHJlc3NlcyB0aGVzZSBmdW5jdGlvbnMsIHNpbXVsYXRpbmcgY29uY3VycmVudCBhY2Nlc3MgYW5kIHBvdGVudGlhbGx5IHRyeWluZyB0byB0cmlnZ2VyIHRoZSByYWNlIGNvbmRpdGlvbiBkaXJlY3RseS4gSSB3YW50IHRvIHRyeSB0byBleHBvc2UgYW55IHNpbWlsYXIgaW5pdGlhbGl6YXRpb24gaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Njc1LCJPdXRwdXRUb2tlbnMiOjEyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDEwOjE1OjIxLjQwNDI5NDQ3M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwMjM1MzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9ncm91cF9tYWtlX2dyb3VwXCIsXG4gICAgXCJudWxsYl9ncm91cF9kcm9wX2l0ZW1cIixcbiAgICBcIm51bGxfYWRkX2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gbnVsbF9ibGsgbW9kdWxlIGluaXRpYWxpemF0aW9uIHdoZXJlIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgaXMgZXhwb3NlZCBiZWZvcmUgYGxvY2tgIGlzIGluaXRpYWxpemVkLiBGdXp6aW5nIHRoZSBjb25maWdmcyBpbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBudWxsX2JsayBjYW4gaGVscCB2ZXJpZnkgdGhpcyBmaXggYW5kIHVuY292ZXIgc2ltaWxhciBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zdG9yZVwiLFxuICAgIFwibnVsbGJfZ3JvdXBfbWFrZV9ncm91cFwiLFxuICAgIFwibnVsbGJfZ3JvdXBfZHJvcF9pdGVtXCIsXG4gICAgXCJudWxsX2FkZF9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIG51bGxfYmxrIG1vZHVsZSBpbml0aWFsaXphdGlvbiB3aGVyZSB0aGUgY29uZmlnZnMgaW50ZXJmYWNlIGlzIGV4cG9zZWQgYmVmb3JlIGBsb2NrYCBpcyBpbml0aWFsaXplZC4gRnV6emluZyB0aGUgY29uZmlnZnMgaW50ZXJmYWNlIGZ1bmN0aW9ucyBmb3IgbnVsbF9ibGsgY2FuIGhlbHAgdmVyaWZ5IHRoaXMgZml4IGFuZCB1bmNvdmVyIHNpbWlsYXIgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xb4g[1] Phase: Succeeded StartedAt: 2026-07-04 10:15:33 +0000 UTC FinishedAt: 2026-07-04 10:15:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-04 10:15:33 +0000 UTC FinishedAt: 2026-07-04 10:15:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2] Phase: Succeeded StartedAt: 2026-07-04 10:15:33 +0000 UTC FinishedAt: 2026-07-04 14:41:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-04 10:15:33 +0000 UTC FinishedAt: 2026-07-04 14:41:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-04 10:15:33 +0000 UTC FinishedAt: 2026-07-04 10:15:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-04 10:15:33 +0000 UTC FinishedAt: 2026-07-04 10:15:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow4xb4g/series-workflow4xb4g-convert-artifact-1703526973/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-04 10:15:54 +0000 UTC FinishedAt: 2026-07-04 11:08:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-04 10:15:54 +0000 UTC FinishedAt: 2026-07-04 11:08:00 +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:*7600581e-b846-4b50-96f8-42c1a7981d0e,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-workflow4xb4g/series-workflow4xb4g-convert-artifact-1703526973/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": "6ae67cc3-e2db-4540-a286-10d86f22810f", "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-workflow4xb4g/series-workflow4xb4g-build-action-2279795571/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-04 10:15:54 +0000 UTC FinishedAt: 2026-07-04 11:07:50 +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:*7600581e-b846-4b50-96f8-42c1a7981d0e,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-workflow4xb4g/series-workflow4xb4g-convert-artifact-1703526973/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": "6ae67cc3-e2db-4540-a286-10d86f22810f", "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-workflow4xb4g/series-workflow4xb4g-build-action-2279795571/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-04 11:08:00 +0000 UTC FinishedAt: 2026-07-04 11:08:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-04 11:08:00 +0000 UTC FinishedAt: 2026-07-04 11:08:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-04 11:08:00 +0000 UTC FinishedAt: 2026-07-04 11:08:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-04 11:08:00 +0000 UTC FinishedAt: 2026-07-04 11:08:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow4xb4g/series-workflow4xb4g-convert-artifact-1498448280/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-04 11:08:10 +0000 UTC FinishedAt: 2026-07-04 11:10:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-04 11:08:10 +0000 UTC FinishedAt: 2026-07-04 11:10:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6ae67cc3-e2db-4540-a286-10d86f22810f,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-workflow4xb4g/series-workflow4xb4g-build-action-2279795571/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-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-04 11:10:49 +0000 UTC FinishedAt: 2026-07-04 11:10:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-04 11:10:49 +0000 UTC FinishedAt: 2026-07-04 11:10:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-04 11:10:49 +0000 UTC FinishedAt: 2026-07-04 11:35:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-04 11:10:49 +0000 UTC FinishedAt: 2026-07-04 11:35:45 +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:*7600581e-b846-4b50-96f8-42c1a7981d0e,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-workflow4xb4g/series-workflow4xb4g-convert-artifact-1498448280/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": "eacc9d25-b7c9-422e-b0f6-15e0b7074244", "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-workflow4xb4g/series-workflow4xb4g-build-action-4056144388/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-04 11:10:49 +0000 UTC FinishedAt: 2026-07-04 11:35:31 +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:*7600581e-b846-4b50-96f8-42c1a7981d0e,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-workflow4xb4g/series-workflow4xb4g-convert-artifact-1498448280/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": "eacc9d25-b7c9-422e-b0f6-15e0b7074244", "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-workflow4xb4g/series-workflow4xb4g-build-action-4056144388/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-04 11:35:45 +0000 UTC FinishedAt: 2026-07-04 11:35:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-04 11:35:45 +0000 UTC FinishedAt: 2026-07-04 11:35:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-04 11:35:45 +0000 UTC FinishedAt: 2026-07-04 11:38:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-04 11:35:45 +0000 UTC FinishedAt: 2026-07-04 11:37:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eacc9d25-b7c9-422e-b0f6-15e0b7074244,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-workflow4xb4g/series-workflow4xb4g-build-action-4056144388/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-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-04 11:38:02 +0000 UTC FinishedAt: 2026-07-04 14:41:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-04 11:38:02 +0000 UTC FinishedAt: 2026-07-04 14:41:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*6ae67cc3-e2db-4540-a286-10d86f22810f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eacc9d25-b7c9-422e-b0f6-15e0b7074244,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-workflow4xb4g/series-workflow4xb4g-build-action-2279795571/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-workflow4xb4g/series-workflow4xb4g-build-action-4056144388/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-04 11:38:02 +0000 UTC FinishedAt: 2026-07-04 11:38:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-04 11:38:02 +0000 UTC FinishedAt: 2026-07-04 11:38:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4xb4g/series-workflow4xb4g-convert-artifact-3447327857/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-04 11:38:02 +0000 UTC FinishedAt: 2026-07-04 11:38:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-04 11:38:02 +0000 UTC FinishedAt: 2026-07-04 11:38:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-04 11:38:02 +0000 UTC FinishedAt: 2026-07-04 11:38:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-04 11:38:22 +0000 UTC FinishedAt: 2026-07-04 14:41:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xb4g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_group_make_group","nullb_group_drop_item","null_add_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"29ea9753-3963-4f52-8336-e5e50d548be5","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-04 11:38:22 +0000 UTC FinishedAt: 2026-07-04 14:41:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6ae67cc3-e2db-4540-a286-10d86f22810f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eacc9d25-b7c9-422e-b0f6-15e0b7074244,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-workflow4xb4g/series-workflow4xb4g-build-action-2279795571/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-workflow4xb4g/series-workflow4xb4g-build-action-4056144388/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-workflow4xb4g/series-workflow4xb4g-convert-artifact-3447327857/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,}