Name: series-workflowd8rxd Phase: Succeeded StartedAt: 2026-08-21 07:21:23 +0000 UTC FinishedAt: 2026-08-21 09:19:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[0] Phase: Succeeded StartedAt: 2026-08-21 07:21:23 +0000 UTC FinishedAt: 2026-08-21 07:41:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[0].run-triage Phase: Succeeded StartedAt: 2026-08-21 07:21:23 +0000 UTC FinishedAt: 2026-08-21 07:41:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e264c048709469096f3927fcd35a2c45f9e38eb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "SFP", "USB_NET_DRIVERS", "USB_NET_SMSC95XX", "USB_LAN78XX", "LED_TRIGGER_PHY", "PHYLIB_LEDS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e264c048709469096f3927fcd35a2c45f9e38eb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "SFP", "USB_NET_DRIVERS", "USB_NET_SMSC95XX", "USB_LAN78XX", "LED_TRIGGER_PHY", "PHYLIB_LEDS" ], "series_id": "37aa0a65-4ec9-4b1c-b1d5-cb339e083323" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phy_probe", "phy_remove", "phy_led_triggers_register", "phy_led_triggers_unregister" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtTRlAmIzM0OywKICAgICYjMzQ7VVNCX05FVF9EUklWRVJTJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfU01TQzk1WFgmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7TEVEX1RSSUdHRVJfUEhZJiMzNDssCiAgICAmIzM0O1BIWUxJQl9MRURTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X3Byb2JlJiMzNDssCiAgICAmIzM0O3BoeV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXImIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmb2N1c2VzIG9uIGZpeGluZyBlcnJvciBoYW5kbGluZyBwYXRocyBhbmQgcmVzb3VyY2UgY2xlYW51cCBpbiB0aGUgUEhZIGRldmljZSBwcm9iZSBhbmQgcmVtb3ZhbCByb3V0aW5lcyAoZS5nLiwgYHBoeV9wcm9iZWAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3NmcF9wcm9iZWApLiBJdCBhZGRyZXNzZXMgcG90ZW50aWFsIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGJ5IGVuc3VyaW5nIHRoYXQgcmVzb3VyY2VzIGxpa2UgU0ZQIGJ1c2VzLCBQSFkgcG9ydHMsIGFuZCBMRUQgdHJpZ2dlcnMgYXJlIHByb3Blcmx5IHJlbGVhc2VkIG9yIHVucmVnaXN0ZXJlZCB3aGVuIGluaXRpYWxpemF0aW9uIGZhaWxzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzIHN1Y2ggYXMgS0FTQU4gKGZvciB1c2UtYWZ0ZXItZnJlZSBhbmQgb3V0LW9mLWJvdW5kcyksIGttZW1sZWFrIChmb3IgbWVtb3J5IGxlYWtzKSwgYW5kIGdlbmVyYWwga2VybmVsIG9vcHMvcGFuaWNzIChmb3IgTlVMTCBkZXJlZmVyZW5jZXMpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBpbnZvbHZlIGNvbXBsZXggdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4mIzM5O3Mgc3BlY2lhbGl6ZWQgdW5pbml0aWFsaXplZCBtZW1vcnkgdHJhY2tpbmcuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHJlc291cmNlIGxlYWtzIGFuZCBlcnJvciBoYW5kbGluZyBwYXRocyBpbiB0aGUgUEhZIGRldmljZSBwcm9iZSBhbmQgcmVtb3ZhbCByb3V0aW5lcyAoYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfc2ZwX3Byb2JlYCkgYW5kIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBjb3JlIFBIWSBsaWJyYXJ5IChgcGh5bGliYCkgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgZW11bGF0ZWQgVVNCIG5ldHdvcmsgYWRhcHRlcnMgKGUuZy4sIGBzbXNjOTV4eGAsIGBsYW43OHh4YCkgdGhhdCByZWdpc3RlciBNRElPIGJ1c2VzIGFuZCBQSFkgZGV2aWNlcy4gRnV6emluZyB0aGVzZSBwYXRocyBpcyB2YWx1YWJsZSB0byBlbnN1cmUgcm9idXN0bmVzcyBvZiBQSFkgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93bi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQzOWQyOWZhMmMzNzkzM2RiYWE2NGZmZDgxNjkwZTYxODk0ZWJlY2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAwNzozOTo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggOTRiMmU4NWUwMGEzNy4uOGNiMGQ2MGZjYmJhOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0xNzIzLDEyICYjNDM7MTcyMyw0MSBAQCBzdGF0aWMgaW50IHBoeV9zZnBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0XHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4gXHR9XG4gXG4tXHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZXNmcF9idXMpXG4mIzQzO1x0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VzZnBfYnVzKSB7XG4gXHRcdHJldCA9IHBoeV9zZXR1cF9zZnBfcG9ydChwaHlkZXYpO1xuJiM0MztcdFx0aWYgKHJldCkge1xuJiM0MztcdFx0XHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4mIzQzO1x0XHRcdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIHBoeV9zZnBfcmVsZWFzZSAtIHJlbGVhc2UgcmVzb3VyY2VzIHNldCB1cCBieSBwaHlfc2ZwX3Byb2JlKClcbiYjNDM7ICogQHBoeWRldjogdGhlIFBIWSBkZXZpY2VcbiYjNDM7ICpcbiYjNDM7ICogUmVsZWFzZSB0aGUgU0ZQIHJlc291cmNlcyBzZXQgdXAgYnkgYSBzdWNjZXNzZnVsIHBoeV9zZnBfcHJvYmUoKS4gVW5yZWdpc3RlclxuJiM0MzsgKiB0aGUgdXBzdHJlYW0gYmVmb3JlIGRlc3Ryb3lpbmcgaXRzIHBoeV9wb3J0LCBzbyBTRlAgdXBzdHJlYW0gY2FsbGJhY2tzIGNhbm5vdFxuJiM0MzsgKiByYWNlIHdpdGggcG9ydCBkZXN0cnVjdGlvbi5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIHBoeV9zZnBfcmVsZWFzZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBoeV9wb3J0ICpwb3J0LCAqdG1wO1xuJiM0MztcbiYjNDM7XHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4mIzQzO1x0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuJiM0MztcbiYjNDM7XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9ydCwgdG1wLCBcdTAwMjZwaHlkZXYtXHUwMDNlcG9ydHMsIGhlYWQpIHtcbiYjNDM7XHRcdGlmICghcG9ydC1cdTAwM2Vpc19zZnApXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdHBoeV9kZWxfcG9ydChwaHlkZXYsIHBvcnQpO1xuJiM0MztcdFx0cGh5X3BvcnRfZGVzdHJveShwb3J0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcbiB7XG4gXHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbkBAIC0zNDU0LDYgJiM0MzszNDgzLDcgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdHN0cnVjdCBwaHlfcG9ydCAqcG9ydCA9IHBoeV9wb3J0X2FsbG9jKCk7XG4gXHR1bnNpZ25lZCBsb25nIG1vZGU7XG4mIzQzO1x0aW50IHJldDtcbiBcbiBcdGlmICghcG9ydClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG5AQCAtMzQ4MCw5ICYjNDM7MzUxMCwxMSBAQCBzdGF0aWMgaW50IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdHBvcnQtXHUwMDNlcGFpcnMgPSBtYXhfdChpbnQsIHBvcnQtXHUwMDNlcGFpcnMsXG4gXHRcdFx0XHQgICAgZXRodG9vbF9saW5rbW9kZV9uX3BhaXJzKG1vZGUpKTtcbiBcbi1cdHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpO1xuJiM0MztcdHJldCA9IHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRwaHlfcG9ydF9kZXN0cm95KHBvcnQpO1xuIFxuLVx0cmV0dXJuIDA7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGludCBvZl9waHlfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbkBAIC0zNTQ3LDEzICYjNDM7MzU3OSwxMyBAQCBzdGF0aWMgaW50IHBoeV9zZXR1cF9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0aWYgKCFwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuIFx0XHRyZXQgPSBwaHlfc2ZwX3Byb2JlKHBoeWRldik7XG4gXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRcdGdvdG8gZXJyX3BvcnRzO1xuIFx0fVxuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VuX3BvcnRzIFx1MDAzYyBwaHlkZXYtXHUwMDNlbWF4X25fcG9ydHMpIHtcbiBcdFx0cmV0ID0gcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQocGh5ZGV2KTtcbiBcdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdFx0Z290byBlcnJfc2ZwO1xuIFx0fVxuIFxuIFx0bGlua21vZGVfemVybyhwb3J0c19zdXBwb3J0ZWQpO1xuQEAgLTM1ODAsNyAmIzQzOzM2MTIsOSBAQCBzdGF0aWMgaW50IHBoeV9zZXR1cF9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFxuIFx0cmV0dXJuIDA7XG4gXG4tb3V0OlxuJiM0MztlcnJfc2ZwOlxuJiM0MztcdHBoeV9zZnBfcmVsZWFzZShwaHlkZXYpO1xuJiM0MztlcnJfcG9ydHM6XG4gXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMzcwNiw3ICYjNDM7Mzc0MCw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGlmIChwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXByb2JlKSB7XG4gXHRcdGVyciA9IHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcHJvYmUocGh5ZGV2KTtcbiBcdFx0aWYgKGVycilcbi1cdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdFx0Z290byBvdXRfcmVzZXQ7XG4gXHR9XG4gXG4gXHRwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7XG5AQCAtMzcyNyw3ICYjNDM7Mzc2MSw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdFx0ZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XG4gXG4gXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdGdvdG8gb3V0X3JlbW92ZTtcbiBcbiBcdGlmICghbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsXG4gXHRcdFx0ICAgICAgIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuQEAgLTM3NDQsNyAmIzQzOzM3NzgsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXG4gXHRlcnIgPSBwaHlfc2V0dXBfcG9ydHMocGh5ZGV2KTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0Z290byBvdXRfcmVtb3ZlO1xuIFxuIFx0cGh5X2FkdmVydGlzZV9zdXBwb3J0ZWQocGh5ZGV2KTtcbiBcbkBAIC0zNzUzLDcgJiM0MzszNzg3LDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0ICovXG4gXHRlcnIgPSBnZW5waHlfYzQ1X3JlYWRfZWVlX2FkdihwaHlkZXYsIHBoeWRldi1cdTAwM2VhZHZlcnRpc2luZ19lZWUpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRnb3RvIG91dF9zZnBfcmVsZWFzZTtcbiBcbiBcdC8qIEdldCB0aGUgRUVFIG1vZGVzIHdlIHdhbnQgdG8gcHJvaGliaXQuICovXG4gXHRvZl9zZXRfcGh5X2VlZV9icm9rZW4ocGh5ZGV2KTtcbkBAIC0zNzkzLDkgJiM0MzszODI3LDYgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRcdFx0IHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpO1xuIFx0fVxuIFxuLVx0LyogU2V0IHRoZSBzdGF0ZSB0byBSRUFEWSBieSBkZWZhdWx0ICovXG4tXHRwaHlkZXYtXHUwMDNlc3RhdGUgPSBQSFlfUkVBRFk7XG4tXG4gXHQvKiBSZWdpc3RlciB0aGUgUEhZIExFRCB0cmlnZ2VycyAqL1xuIFx0aWYgKCFwaHlkZXYtXHUwMDNlaXNfb25fc2ZwX21vZHVsZSlcbiBcdFx0cGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihwaHlkZXYpO1xuQEAgLTM4MDYsMjAgJiM0MzszODM3LDI3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXHUwMDI2XHUwMDI2ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKSB7XG4gXHRcdGVyciA9IG9mX3BoeV9sZWRzKHBoeWRldik7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRcdGdvdG8gb3V0X3VucmVnX2xlZF90cmlnZ2VycztcbiBcdH1cbiBcbiYjNDM7XHQvKiBTZXQgdGhlIHN0YXRlIHRvIFJFQURZIGJ5IGRlZmF1bHQgKi9cbiYjNDM7XHRwaHlkZXYtXHUwMDNlc3RhdGUgPSBQSFlfUkVBRFk7XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gXG4tb3V0OlxuLVx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuLVx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuJiM0MztvdXRfdW5yZWdfbGVkX3RyaWdnZXJzOlxuJiM0MztcdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4mIzQzO1x0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbiBcbiYjNDM7b3V0X3NmcF9yZWxlYXNlOlxuJiM0MztcdHBoeV9zZnBfcmVsZWFzZShwaHlkZXYpO1xuIFx0cGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTtcbiBcbi1cdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4tXHRcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xuJiM0MztvdXRfcmVtb3ZlOlxuJiM0MztcdGlmIChwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZSlcbiYjNDM7XHRcdHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKHBoeWRldik7XG4gXG4mIzQzO291dF9yZXNldDpcbiBcdC8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4gXG5AQCAtMzg0MCw5ICYjNDM7Mzg3OCw3IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXG4gXHRwaHlkZXYtXHUwMDNlc3RhdGUgPSBQSFlfRE9XTjtcbiBcbi1cdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cdTAwM2VzZnBfYnVzKTtcbi1cdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbi1cbiYjNDM7XHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmNcbmluZGV4IDRlYjc3MTZiYjlkNmMuLmZmNmU1MTgzOTViZTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jXG5AQCAtMTI2LDYgJiM0MzsxMjYsNyBAQCBpbnQgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuIFx0d2hpbGUgKGktLSlcbiBcdFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoXHUwMDI2cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xuIFx0a2ZyZWUocGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xuJiM0MztcdHBoeS1cdTAwM2VwaHlfbGVkX3RyaWdnZXJzID0gTlVMTDtcbiBvdXRfdW5yZWdfbGluazpcbiBcdHBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKHBoeS1cdTAwM2VsZWRfbGlua190cmlnZ2VyKTtcbiBvdXRfZnJlZV9saW5rOlxuQEAgLTE0MSwxMCAmIzQzOzE0MiwxMiBAQCB2b2lkIHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuIHtcbiBcdGludCBpO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGh5LVx1MDAzZXBoeV9udW1fbGVkX3RyaWdnZXJzOyBpJiM0MzsmIzQzOylcbi1cdFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoXHUwMDI2cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xuLVx0a2ZyZWUocGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xuLVx0cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMO1xuJiM0MztcdGlmIChwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vycykge1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGh5LVx1MDAzZXBoeV9udW1fbGVkX3RyaWdnZXJzOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoXHUwMDI2cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xuJiM0MztcdFx0a2ZyZWUocGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xuJiM0MztcdFx0cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdGlmIChwaHktXHUwMDNlbGVkX2xpbmtfdHJpZ2dlcikge1xuIFx0XHRwaHlfbGVkX3RyaWdnZXJfdW5yZWdpc3RlcihwaHktXHUwMDNlbGVkX2xpbmtfdHJpZ2dlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDc6Mzk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtTRlAmIzM0OywKICAgICYjMzQ7VVNCX05FVF9EUklWRVJTJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfU01TQzk1WFgmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7TEVEX1RSSUdHRVJfUEhZJiMzNDssCiAgICAmIzM0O1BIWUxJQl9MRURTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X3Byb2JlJiMzNDssCiAgICAmIzM0O3BoeV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgYW5kIGVycm9yIGhhbmRsaW5nIHBhdGhzIGluIHRoZSBQSFkgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsIHJvdXRpbmVzIChgcGh5X3Byb2JlYCwgYHBoeV9yZW1vdmVgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9zZnBfcHJvYmVgKSBhbmQgZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHBhcnQgb2YgdGhlIGNvcmUgUEhZIGxpYnJhcnkgKGBwaHlsaWJgKSB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBlbXVsYXRlZCBVU0IgbmV0d29yayBhZGFwdGVycyAoZS5nLiwgYHNtc2M5NXh4YCwgYGxhbjc4eHhgKSB0aGF0IHJlZ2lzdGVyIE1ESU8gYnVzZXMgYW5kIFBIWSBkZXZpY2VzLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIHZhbHVhYmxlIHRvIGVuc3VyZSByb2J1c3RuZXNzIG9mIFBIWSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDM5ZDI5ZmEyYzM3OTMzZGJhYTY0ZmZkODE2OTBlNjE4OTRlYmVjZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDIxIDA3OjM5OjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKaW5kZXggOTRiMmU4NWUwMGEzNy4uOGNiMGQ2MGZjYmJhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCkBAIC0xNzIzLDEyICYjNDM7MTcyMyw0MSBAQCBzdGF0aWMgaW50IHBoeV9zZnBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJCXBoeWRldi0mZ3Q7c2ZwX2J1cyA9IE5VTEw7CiAJfQogCi0JaWYgKCFyZXQgJmFtcDsmYW1wOyBwaHlkZXYtJmd0O3NmcF9idXMpCiYjNDM7CWlmICghcmV0ICZhbXA7JmFtcDsgcGh5ZGV2LSZndDtzZnBfYnVzKSB7CiAJCXJldCA9IHBoeV9zZXR1cF9zZnBfcG9ydChwaHlkZXYpOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7CiYjNDM7CQkJcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKJiM0MzsJCX0KJiM0MzsJfQogCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIHBoeV9zZnBfcmVsZWFzZSAtIHJlbGVhc2UgcmVzb3VyY2VzIHNldCB1cCBieSBwaHlfc2ZwX3Byb2JlKCkKJiM0MzsgKiBAcGh5ZGV2OiB0aGUgUEhZIGRldmljZQomIzQzOyAqCiYjNDM7ICogUmVsZWFzZSB0aGUgU0ZQIHJlc291cmNlcyBzZXQgdXAgYnkgYSBzdWNjZXNzZnVsIHBoeV9zZnBfcHJvYmUoKS4gVW5yZWdpc3RlcgomIzQzOyAqIHRoZSB1cHN0cmVhbSBiZWZvcmUgZGVzdHJveWluZyBpdHMgcGh5X3BvcnQsIHNvIFNGUCB1cHN0cmVhbSBjYWxsYmFja3MgY2Fubm90CiYjNDM7ICogcmFjZSB3aXRoIHBvcnQgZGVzdHJ1Y3Rpb24uCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgcGh5X3NmcF9yZWxlYXNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQsICp0bXA7CiYjNDM7CiYjNDM7CXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7CiYjNDM7CXBoeWRldi0mZ3Q7c2ZwX2J1cyA9IE5VTEw7CiYjNDM7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3J0LCB0bXAsICZhbXA7cGh5ZGV2LSZndDtwb3J0cywgaGVhZCkgewomIzQzOwkJaWYgKCFwb3J0LSZndDtpc19zZnApCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlwaHlfZGVsX3BvcnQocGh5ZGV2LCBwb3J0KTsKJiM0MzsJCXBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KQogewogCXJldHVybiBwaHlkcnYtJmd0O2NvbmZpZ19pbnRyICZhbXA7JmFtcDsgcGh5ZHJ2LSZndDtoYW5kbGVfaW50ZXJydXB0OwpAQCAtMzQ1NCw2ICYjNDM7MzQ4Myw3IEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKIAlzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQgPSBwaHlfcG9ydF9hbGxvYygpOwogCXVuc2lnbmVkIGxvbmcgbW9kZTsKJiM0MzsJaW50IHJldDsKIAogCWlmICghcG9ydCkKIAkJcmV0dXJuIC1FTk9NRU07CkBAIC0zNDgwLDkgJiM0MzszNTEwLDExIEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJcG9ydC0mZ3Q7cGFpcnMgPSBtYXhfdChpbnQsIHBvcnQtJmd0O3BhaXJzLAogCQkJCSAgICBldGh0b29sX2xpbmttb2RlX25fcGFpcnMobW9kZSkpOwogCi0JcGh5X2FkZF9wb3J0KHBoeWRldiwgcG9ydCk7CiYjNDM7CXJldCA9IHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcGh5X3BvcnRfZGVzdHJveShwb3J0KTsKIAotCXJldHVybiAwOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IG9mX3BoeV9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQpAQCAtMzU0NywxMyAmIzQzOzM1NzksMTMgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAlpZiAoIXBoeWRldi0mZ3Q7aXNfZ2VucGh5X2RyaXZlbikgewogCQlyZXQgPSBwaHlfc2ZwX3Byb2JlKHBoeWRldik7CiAJCWlmIChyZXQpCi0JCQlnb3RvIG91dDsKJiM0MzsJCQlnb3RvIGVycl9wb3J0czsKIAl9CiAKIAlpZiAocGh5ZGV2LSZndDtuX3BvcnRzICZsdDsgcGh5ZGV2LSZndDttYXhfbl9wb3J0cykgewogCQlyZXQgPSBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChwaHlkZXYpOwogCQlpZiAocmV0KQotCQkJZ290byBvdXQ7CiYjNDM7CQkJZ290byBlcnJfc2ZwOwogCX0KIAogCWxpbmttb2RlX3plcm8ocG9ydHNfc3VwcG9ydGVkKTsKQEAgLTM1ODAsNyAmIzQzOzM2MTIsOSBAQCBzdGF0aWMgaW50IHBoeV9zZXR1cF9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCiAJcmV0dXJuIDA7CiAKLW91dDoKJiM0MztlcnJfc2ZwOgomIzQzOwlwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTsKJiM0MztlcnJfcG9ydHM6CiAJcGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTsKIAlyZXR1cm4gcmV0OwogfQpAQCAtMzcwNiw3ICYjNDM7Mzc0MCw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlpZiAocGh5ZGV2LSZndDtkcnYtJmd0O3Byb2JlKSB7CiAJCWVyciA9IHBoeWRldi0mZ3Q7ZHJ2LSZndDtwcm9iZShwaHlkZXYpOwogCQlpZiAoZXJyKQotCQkJZ290byBvdXQ7CiYjNDM7CQkJZ290byBvdXRfcmVzZXQ7CiAJfQogCiAJcGh5X2Rpc2FibGVfaW50ZXJydXB0cyhwaHlkZXYpOwpAQCAtMzcyNyw3ICYjNDM7Mzc2MSw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7CiAKIAlpZiAoZXJyKQotCQlnb3RvIG91dDsKJiM0MzsJCWdvdG8gb3V0X3JlbW92ZTsKIAogCWlmICghbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsCiAJCQkgICAgICAgcGh5ZGV2LSZndDtzdXBwb3J0ZWQpKQpAQCAtMzc0NCw3ICYjNDM7Mzc3OCw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAogCWVyciA9IHBoeV9zZXR1cF9wb3J0cyhwaHlkZXYpOwogCWlmIChlcnIpCi0JCWdvdG8gb3V0OwomIzQzOwkJZ290byBvdXRfcmVtb3ZlOwogCiAJcGh5X2FkdmVydGlzZV9zdXBwb3J0ZWQocGh5ZGV2KTsKIApAQCAtMzc1Myw3ICYjNDM7Mzc4Nyw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAkgKi8KIAllcnIgPSBnZW5waHlfYzQ1X3JlYWRfZWVlX2FkdihwaHlkZXYsIHBoeWRldi0mZ3Q7YWR2ZXJ0aXNpbmdfZWVlKTsKIAlpZiAoZXJyKQotCQlnb3RvIG91dDsKJiM0MzsJCWdvdG8gb3V0X3NmcF9yZWxlYXNlOwogCiAJLyogR2V0IHRoZSBFRUUgbW9kZXMgd2Ugd2FudCB0byBwcm9oaWJpdC4gKi8KIAlvZl9zZXRfcGh5X2VlZV9icm9rZW4ocGh5ZGV2KTsKQEAgLTM3OTMsOSAmIzQzOzM4MjcsNiBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCQkJIHBoeWRldi0mZ3Q7c3VwcG9ydGVkKTsKIAl9CiAKLQkvKiBTZXQgdGhlIHN0YXRlIHRvIFJFQURZIGJ5IGRlZmF1bHQgKi8KLQlwaHlkZXYtJmd0O3N0YXRlID0gUEhZX1JFQURZOwotCiAJLyogUmVnaXN0ZXIgdGhlIFBIWSBMRUQgdHJpZ2dlcnMgKi8KIAlpZiAoIXBoeWRldi0mZ3Q7aXNfb25fc2ZwX21vZHVsZSkKIAkJcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihwaHlkZXYpOwpAQCAtMzgwNiwyMCAmIzQzOzM4MzcsMjcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQogCWlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgJmFtcDsmYW1wOyAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkgewogCQllcnIgPSBvZl9waHlfbGVkcyhwaHlkZXYpOwogCQlpZiAoZXJyKQotCQkJZ290byBvdXQ7CiYjNDM7CQkJZ290byBvdXRfdW5yZWdfbGVkX3RyaWdnZXJzOwogCX0KIAomIzQzOwkvKiBTZXQgdGhlIHN0YXRlIHRvIFJFQURZIGJ5IGRlZmF1bHQgKi8KJiM0MzsJcGh5ZGV2LSZndDtzdGF0ZSA9IFBIWV9SRUFEWTsKJiM0MzsKIAlyZXR1cm4gMDsKIAotb3V0OgotCXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7Ci0JcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKJiM0MztvdXRfdW5yZWdfbGVkX3RyaWdnZXJzOgomIzQzOwlpZiAoIXBoeWRldi0mZ3Q7aXNfb25fc2ZwX21vZHVsZSkKJiM0MzsJCXBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpOwogCiYjNDM7b3V0X3NmcF9yZWxlYXNlOgomIzQzOwlwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTsKIAlwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpOwogCi0JaWYgKCFwaHlkZXYtJmd0O2lzX29uX3NmcF9tb2R1bGUpCi0JCXBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpOwomIzQzO291dF9yZW1vdmU6CiYjNDM7CWlmIChwaHlkZXYtJmd0O2Rydi0mZ3Q7cmVtb3ZlKQomIzQzOwkJcGh5ZGV2LSZndDtkcnYtJmd0O3JlbW92ZShwaHlkZXYpOwogCiYjNDM7b3V0X3Jlc2V0OgogCS8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovCiAJcGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpOwogCkBAIC0zODQwLDkgJiM0MzszODc4LDcgQEAgc3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikKIAogCXBoeWRldi0mZ3Q7c3RhdGUgPSBQSFlfRE9XTjsKIAotCXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7Ci0JcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKLQomIzQzOwlwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTsKIAlwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpOwogCiAJaWYgKHBoeWRldi0mZ3Q7ZHJ2ICZhbXA7JmFtcDsgcGh5ZGV2LSZndDtkcnYtJmd0O3JlbW92ZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jCmluZGV4IDRlYjc3MTZiYjlkNmMuLmZmNmU1MTgzOTViZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYwpAQCAtMTI2LDYgJiM0MzsxMjYsNyBAQCBpbnQgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KQogCXdoaWxlIChpLS0pCiAJCXBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKCZhbXA7cGh5LSZndDtwaHlfbGVkX3RyaWdnZXJzW2ldKTsKIAlrZnJlZShwaHktJmd0O3BoeV9sZWRfdHJpZ2dlcnMpOwomIzQzOwlwaHktJmd0O3BoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMOwogb3V0X3VucmVnX2xpbms6CiAJcGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIocGh5LSZndDtsZWRfbGlua190cmlnZ2VyKTsKIG91dF9mcmVlX2xpbms6CkBAIC0xNDEsMTAgJiM0MzsxNDIsMTIgQEAgdm9pZCBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSkKIHsKIAlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBwaHktJmd0O3BoeV9udW1fbGVkX3RyaWdnZXJzOyBpJiM0MzsmIzQzOykKLQkJcGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoJmFtcDtwaHktJmd0O3BoeV9sZWRfdHJpZ2dlcnNbaV0pOwotCWtmcmVlKHBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2Vycyk7Ci0JcGh5LSZndDtwaHlfbGVkX3RyaWdnZXJzID0gTlVMTDsKJiM0MzsJaWYgKHBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2VycykgewomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IHBoeS0mZ3Q7cGh5X251bV9sZWRfdHJpZ2dlcnM7IGkmIzQzOyYjNDM7KQomIzQzOwkJCXBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKCZhbXA7cGh5LSZndDtwaHlfbGVkX3RyaWdnZXJzW2ldKTsKJiM0MzsJCWtmcmVlKHBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2Vycyk7CiYjNDM7CQlwaHktJmd0O3BoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMOwomIzQzOwl9CiAKIAlpZiAocGh5LSZndDtsZWRfbGlua190cmlnZ2VyKSB7CiAJCXBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKHBoeS0mZ3Q7bGVkX2xpbmtfdHJpZ2dlcik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUEhZIERldmljZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmNgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBuZXR3b3JraW5nLXJlbGF0ZWQgZml4LCB3aGljaCBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0by4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRyZXNzaW5nIHJlc291cmNlIGxlYWtzIGFuZCBpbXByb3ZpbmcgZXJyb3IgaGFuZGxpbmcgaW4gc2V2ZXJhbCBrZXkgUEhZIGZ1bmN0aW9uczogYHBoeV9zZnBfcHJvYmVgLCBgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnRgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9wcm9iZWAsIGFuZCBgcGh5X3JlbW92ZWAuIEdvb2QsIHRob3NlIGFyZSBjcml0aWNhbCBlbnRyeSBhbmQgZXhpdCBwb2ludHMuIEFkZGluZyBhIG5ldyBgcGh5X3NmcF9yZWxlYXNlYCBmdW5jdGlvbiBpcyBhIG5vdGFibGUgYWRkaXRpb24gYXMgd2VsbCDigJMgc291bmRzIGxpa2UgaXQmIzM5O3MgcGFydCBvZiB0aGUgY2xlYW51cCBwcm9jZWR1cmVzIGZvciB0aGUgU0ZQIGZ1bmN0aW9uYWxpdHkuCgpUaGUgY2hhbmdlcyBpbiBgcGh5X2xlZF90cmlnZ2Vycy5jYCBhcmUgcGFydGljdWxhcmx5IGludGVyZXN0aW5nLiBUaGV5JiMzOTtyZSBwcmV2ZW50aW5nIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIGRvdWJsZSBmcmVlcy4gU2V0dGluZyBgcGh5LSZndDtwaHlfbGVkX3RyaWdnZXJzID0gTlVMTGAgYW5kIGluY2x1ZGluZyBhIGNoZWNrIGJlZm9yZSB1bnJlZ2lzdGVyaW5nIGlzIHRoZSByaWdodCBhcHByb2FjaCB0byBlbnN1cmUgdGhlcmUmIzM5O3Mgbm8gZGFuZ2xpbmcgcG9pbnRlci4gU21hcnQsIGFuZCBhIGNvbW1vbiBwYXR0ZXJuIHRvIGF2b2lkIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuCgpOb3csIHRoZSBxdWVzdGlvbiBpcywgaG93IGVhc2lseSBjYW4gSSB0cmlnZ2VyIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gUEhZIGRldmljZXMgYXJlIGZ1bmRhbWVudGFsbHkgcGFydCBvZiB0aGUgbmV0d29yayBzdGFjay4gSSBrbm93IGVudmlyb25tZW50cyBsaWtlIFFFTVUgY2FuIGVtdWxhdGUgbmV0d29yayBkZXZpY2VzLCBhbmQgdGhvc2UgZW11bGF0ZWQgZGV2aWNlcyBvZnRlbiB1dGlsaXplIFBIWXMsIGV2ZW4gaWYgdGhleSBkb24mIzM5O3QgKmRpcmVjdGx5KiB1c2UgdGhlIHBoeWxpYiBBUEkuIEZvciBleGFtcGxlLCBlMTAwMCBhbmQgdmlydGlvLW5ldCBhcmUgZ29vZCBjYW5kaWRhdGVzLiBUaG91Z2ggdmlydGlvLW5ldCB1c3VhbGx5IGRvZXNuJiMzOTt0IG5lZWQgcGh5bGliLCB0aGVyZSBtYXkgYmUgc29tZSBlbXVsYXRlZCBkZXZpY2VzIHdoaWNoIHVzZSB0aGVtLCBvciBkdW1teSBQSFlzIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuCgpXYWl0IGEgc2Vjb25k4oCmIGBwaHlfcHJvYmVgIGlzIGNhbGxlZCB3aGVuIGEgUEhZIGRldmljZSBpcyBwcm9iZWQuIFNvLCBpdCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBmcm9tIG1hbnkga2VybmVsLXNpZGUgY29kZSBwYXRocy4KCkNhbiBJIGdldCB0byBgcGh5X3Byb2JlYCB0aHJvdWdoIHN5emthbGxlcj8gVGhhdCYjMzk7cyB0aGUgcmVhbCB0ZXN0LiBTeXprYWxsZXIgY2FuIGdlbmVyYXRlIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIGxpa2UgdmV0aCwgdHVuLCBvciB1c2UgbmV0ZGV2c2ltIHdoaWNoIHZlcnkgd2VsbCBtaWdodCB1c2UgUEhZcy4gQWxzbywgdGhlIGBtZGlvYCBidXMgaXMgYSBrZXkgZWxlbWVudCB3aGljaCBpcyBmcmVxdWVudGx5IHBvcHVsYXRlZCBpbiB0ZXN0aW5nLiBZZXMsIEkmIzM5O20gcHJldHR5IHN1cmUgaXQgaXMuIEFscmlnaHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgcGh5X3Byb2JlYCBpcywgaW4gZmFjdCwgcmVhY2hhYmxlLiBMZXQgbWUgY2hlY2sgdGhlIHN5emthbGxlciBjb3JwdXMgYW5kIHNvbWUgb2YgbXkgcGFzdCB3b3JrIHRvIGNvbmZpcm0gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzcxMT1FWFBPUlRfU1lNQk9MX0dQTChmd25vZGVfZ2V0X3BoeV9ub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM3MTMtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM3MTQ6ICogcGh5X3Byb2JlIC0gcHJvYmUgYW5kIGluaXQgYSBQSFkgZGV2aWNlXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM3MTUtICogQGRldjogZGV2aWNlIHRvIHByb2JlIGFuZCBpbml0XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNzE4LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozNzE5OnN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzcyMC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zOTAwPXN0YXRpYyBpbnQgcGh5X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RyaXZlciAqbmV3X2RyaXZlcixcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM5MjYtXHRuZXdfZHJpdmVyLVx1MDAzZW1kaW9kcnYuZHJpdmVyLmJ1cyA9IFx1MDAyNm1kaW9fYnVzX3R5cGU7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM5Mjc6XHRuZXdfZHJpdmVyLVx1MDAzZW1kaW9kcnYuZHJpdmVyLnByb2JlID0gcGh5X3Byb2JlO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zOTI4LVx0bmV3X2RyaXZlci1cdTAwM2VtZGlvZHJ2LmRyaXZlci5yZW1vdmUgPSBwaHlfcmVtb3ZlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NzMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTURJTyBCdXMgUHJvYmUgQ2hhbGxlbmdlKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IHRvIHRyaWdnZXIgYHBoeV9wcm9iZWAgZm9yIGEgUEhZIGRyaXZlciB1c2luZyBzeXprYWxsZXIuIFRoZSBjb3JlIGlzc3VlIGlzIHRoYXQgTURJTyBidXMgZGV2aWNlcyBhcmUgdXN1YWxseSBjcmVhdGVkIHZpYSBkZXZpY2UgdHJlZSBvciBzcGVjaWZpYyBkcml2ZXJzLCB3aGljaCBtYWtlcyBkaXJlY3QgY29udHJvbCBmcm9tIHN5emthbGxlciB0cmlja3kuIGBzeXpfZ2VuZXRsaW5rYCBpcyBhbiBvcHRpb24gZm9yIGRldmljZSBjcmVhdGlvbiwgYnV0IGl0IGRvZXNuJiMzOTt0IHNlZW0gZGlyZWN0bHkgYXBwbGljYWJsZSBoZXJlLgoKSSBpbml0aWFsbHkgY29uc2lkZXJlZCBgbmV0ZGV2c2ltYCwgYG1hYzgwMjExX2h3c2ltYCwgYW5kIGB2a21zYCwgYnV0IHRob3NlIGRvbiYjMzk7dCBzZWVtIHRvIHV0aWxpemUgcGh5bGliIGRpcmVjdGx5LiBUaGVuIEkgdGhvdWdodCBhYm91dCBgdHVuYCBhbmQgYHRhcGAgaW50ZXJmYWNlcywgYnV0IHRoZXkgYXJlIHVucmVsYXRlZC4gVGhlIGtleSBpcyB0byBmaW5kIGlmIHRoZXJlJiMzOTtzIGFueSBzb2Z0d2FyZSBlbXVsYXRlZCBNRElPIGJ1cyB0aGF0IHN5emthbGxlciBjb3VsZCB1c2UuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgaWYgYG1kaW9fYnVzX3R5cGVgIGRldmljZXMgY2FuIGJlIGluc3RhbnRpYXRlZCBieSB1c2Vyc3BhY2UgZGlyZWN0bHkuIEkga25vdyB1c2Vyc3BhY2UgZG9lc24mIzM5O3QgKnR5cGljYWxseSogY3JlYXRlIE1ESU8gZGV2aWNlcyB1bmxlc3MgdGhlcmUmIzM5O3MgYW4gZXhwbGljaXQgaW50ZXJmYWNlLiBUaGUgdGhvdWdodCB0aGVuIHNoaWZ0ZWQgYmFjayB0byBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBwYXJ0aWN1bGFybHkgdGhlIGBkdW1teV9oY2RgLiBDb3VsZCB0aGVyZSBiZSBVU0IgbmV0d29yayBhZGFwdGVycyB0aGF0LCBiZWhpbmQgdGhlIHNjZW5lcywgbGV2ZXJhZ2UgcGh5bGliPyBUaGlzIHNlZW1zIHByb21pc2luZywgc28gbGV0JiMzOTtzIGNoZWNrIGludG8gdGhhdCBhbmdsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yNy0jaW5jbHVkZSBcdTAwM2NsaW51eC9pZl92bGFuLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6Mjg6I2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjktI2luY2x1ZGUgXHUwMDNjbmV0L3NlbGZ0ZXN0cy5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMTUtI2luY2x1ZGUgXCYjMzQ7YXNpeC5oXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzoxNjojaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMTctXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMC0jaW5jbHVkZSBcdTAwM2NsaW51eC9tZGlvLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjE6I2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjItI2luY2x1ZGUgXHUwMDNjbmV0L2lwNl9jaGVja3N1bS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvaGV4LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jOjE0OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYy0xNS0jaW5jbHVkZSBcdTAwM2NsaW51eC91c2IuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTIzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM6MjQ6I2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTI1LSNpbmNsdWRlIFx1MDAzY25ldC9zZWxmdGVzdHMuaFx1MDAzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzODYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBIWSBEcml2ZXIgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gdGhpcyBwYXRjaC4gVGhpbmtpbmcgdGhyb3VnaCB0aGlzLCBteSBleHBlcnQgZXllIGltbWVkaWF0ZWx5IHNlZXMgdGhhdCBkcml2ZXJzIGxpa2UgYGxhbjc4eHhgLCBgc21zYzk1eHhgLCBgYXg4ODE3MmFgLCBhbmQgYHI4MTUyYCBhcmUgYWxsIFVTQiBuZXR3b3JrIGFkYXB0ZXJzIHRoYXQgbWFrZSB1c2Ugb2YgYHBoeS5oYC4gVGhlIGJlYXV0eSBvZiBzeXprYWxsZXIgYW5kIGl0cyBgZHVtbXlfaGNkYCBlbXVsYXRpb24gdmlhIGBzeXpfdXNiX2Nvbm5lY3RgIGlzIHRoYXQgSSBjYW4gYWJzb2x1dGVseSB0cmlnZ2VyIHRoZSBwcm9iaW5nIG9mIHRob3NlIFVTQiBuZXR3b3JrIGRyaXZlcnMuIFRoYXQsIGluIHR1cm4sIHJlZ2lzdGVycyBNRElPIGJ1c2VzIGFuZCBQSFkgZGV2aWNlcywgZGlyZWN0bHkgaGl0dGluZyBgcGh5X3Byb2JlYC4gU28sIHRoaXMgY29kZSBpcyBkZWZpbml0aXZlbHkgcmVhY2hhYmxlIGV2ZW4gaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgd2hpY2ggaXMgZ3JlYXQgZm9yIGZ1enppbmcuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhlIHBhdGNoIGl0c2VsZi4gVGhlIGNoYW5nZXMgdG91Y2ggY29yZSBQSFkgbGlicmFyeSBmdW5jdGlvbnM6IHNwZWNpZmljYWxseSwgYHBoeV9wcm9iZWAsIGBwaHlfc2ZwX3Byb2JlYCwgYHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0YCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfcmVtb3ZlYCwgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgLCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY2hhbmdlcyBhcmUsIHNvIHRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRvIGV4YW1pbmUgaW4gZGV0YWlsLgoKRnJvbSBteSBpbml0aWFsIGdsYW5jZSwgdGhlIHBhdGNoIGFkZHJlc3NlcyBzb21lIGVycm9yIGhhbmRsaW5nIGluIGBwaHlfcHJvYmVgLCBhZGRzIGBwaHlfc2ZwX3JlbGVhc2VgLCBhbmQgZml4ZXMgYSBOVUxMIGNoZWNrIGluIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgLgoKVGhlIGtleSBmdW5jdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZTogYHBoeV9wcm9iZWAsIGBwaHlfc2ZwX3Byb2JlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAsIGBwaHlfc2ZwX3JlbGVhc2VgLCBgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcmAsIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYC4gV2FpdOKApiBhIGZldyBvZiB0aGVzZSBsb29rIGxpa2UgdGhleSYjMzk7cmUgc3RhdGljLgoKSG9sZCBvbiwgSSBzZWUgdGhhdCBgcGh5X3NmcF9yZWxlYXNlYCBpcyBzdGF0aWMuIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAgaXMgYWxzbyBzdGF0aWMsIGFzIGlzIGBwaHlfc2V0dXBfcG9ydHNgLiBgcGh5X3Byb2JlYCBpcyBhbHNvIHN0YXRpYyAodXNlZCBhcyBhIGNhbGxiYWNrKS4gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiBgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcmAgYW5kIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgIGFyZSBleHBvcnRlZCBvciBub24tc3RhdGljLCBJIHNob3VsZCBjb25maXJtIHRoYXQgcmlnaHQgYXdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jPTgxPXN0YXRpYyB2b2lkIHBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKHN0cnVjdCBwaHlfbGVkX3RyaWdnZXIgKnBsdClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jLTg1LVxuZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYzo4NjppbnQgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYy04Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYy0xMzgtfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYzoxMzk6RVhQT1JUX1NZTUJPTF9HUEwocGh5X2xlZF90cmlnZ2Vyc19yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jLTE0MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDc1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUEhZIERyaXZlciYjMzk7cyBBUEkgRXhwb3N1cmUqKgoKT2theSwgc28gSSYjMzk7bSBnb2luZyB0aHJvdWdoIHRoaXMgY29kZSBhbmQgdGhpbmtpbmcgYWJvdXQgd2hpY2ggZnVuY3Rpb25zIHdlIHNob3VsZCBleHBvc2UgaW4gdGhlIEFQSSwga2VlcGluZyBpbiBtaW5kIHRoZSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeXBvaW50cy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoYXQgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYCBhcmUgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2Qg4oCTIHRoZXkgZml0IHRoZSBiaWxsLgoKTm93LCBgcGh5X3Byb2JlYC4uLiBJdCYjMzk7cyBzdGF0aWMsIHdoaWNoIHVzdWFsbHkgcmFpc2VzIGEgcmVkIGZsYWcsIGJ1dCBpdCYjMzk7cyB0aGUgY29yZSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhpcyBkcml2ZXIuIFdhaXQgYSBtaW51dGUhIEkgcmVtZW1iZXIgdGhlIGd1aWRlbGluZXM6IGF2b2lkIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIHRoYXQgYXJlIGlubGluZWQuIEJ1dCBgcGh5X3Byb2JlYCBpcyBhc3NpZ25lZCB0byBgbmV3X2RyaXZlci0mZ3Q7bWRpb2Rydi5kcml2ZXIucHJvYmVgLCB3aGljaCBtZWFucyBpdHMgYWRkcmVzcyBpcyB0YWtlbi4gVGhhdCBtZWFucyBpdCAqd29uJiMzOTt0KiBiZSBpbmxpbmVkIGFuZCBpdCYjMzk7cyBzYWZlIHRvIGluY2x1ZGUuIEV4Y2VsbGVudC4KCldoYXQgYWJvdXQgYHBoeV9zZnBfcHJvYmVgPyBIbW0sIGFsc28gc3RhdGljLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBpZiBpdCYjMzk7cyBsYXJnZSBlbm91Z2ggdG8gYXZvaWQgaW5saW5pbmcuIExldCBtZSBza2lwIHRoaXMuIEFuZCBgcGh5X3NldHVwX3BvcnRzYCBpcyBzdGF0aWMgdG9vLCBzbyBkZWZpbml0ZWx5IG5vdC4KClNvLCBsZXQmIzM5O3Mga2VlcCB0aGUgb25lcyB0aGF0IGFyZSBub24tc3RhdGljIGFuZCBgcGh5X3Byb2JlYC4KCkFjdHVhbGx5LCB3YWl0LCBJIHJlbWVtYmVyZWQgdGhlIHByZXZpb3VzIHR3bywgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYCBhcmUgb2theSwgdG9vLgoKV2hhdCBhYm91dCBgcGh5X2RldmljZV9yZWdpc3RlcmA/IFRoZSBwYXRjaCBkb2VzbiYjMzk7dCB0b3VjaCBpdCwgc28gaXQmIzM5O3MgcHJvYmFibHkgYWxyZWFkeSBmaW5lLgoKT2theSwgbGV0JiMzOTtzIHN1bW1hcml6ZTogSSYjMzk7bGwgaW5jbHVkZSBgcGh5X3Byb2JlYCwgYHBoeV9yZW1vdmVgLCBgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcmAsIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSBtaW5pbWFsIHNldCBmb3Igbm93LgoKTm93LCBsZXQmIzM5O3MgY2hlY2sgS2NvbmZpZyBmb3IgYENPTkZJR19QSFlMSUJfTEVEU2AgdG8gZW5zdXJlIHdlIGNvdmVyIGFsbCB0aGUgbmVjZXNzYXJ5IGJhc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEhZTElCX0xFRFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVx0ZGVmX2Jvb2wgT0ZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI4NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgUEhZTElCIGFuZCBMRUQgRGVmaW5pdGlvbnMqKgoKT2theSwgc28gYFBIWUxJQl9MRURTYCBpcyBkZWZpbmVkIGFzIGEgYGRlZl9ib29sIE9GYC4gVGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgZW5vdWdoOyBpdCYjMzk7cyBhIGJvb2xlYW4gb3B0aW9uIGNvbnRyb2xsZWQgYnkgc29tZXRoaW5nIGVsc2UuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhpcyB0cmlnZ2VycyBpcyBhYm91dCBpdHMgZGVwZW5kZW5jeS4gV2hhdCBpcyBkcml2aW5nIHRoZSBkZXBlbmRlbmN5PyBOb3csIHdoZXJlIGlzIGl0IGRlZmluZWQ/IFRoaXMgY2FsbHMgdG8gbWluZCBgQ09ORklHX1BIWUxJQmAuIEkgd29uZGVyLCBpcyBgQ09ORklHX1BIWUxJQmAgdGhlIGxpa2VseSBwYXJlbnQgY29uZmlnIG9wdGlvbiB0aGF0IGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGBQSFlMSUJfTEVEU2AgZ2V0cyBidWlsdD8gSSYjMzk7bSBiZXR0aW5nIHRoYXQgYFBIWUxJQl9MRURTYCYjMzk7IHN0YXR1cyBkZXBlbmRzIG9uIGBDT05GSUdfUEhZTElCYCBiZWluZyBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEhZTElCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWc9Nj1jb25maWcgUEhZTElOS1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTU6bWVudWNvbmZpZyBQSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2LVx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ2PWNvbmZpZyBPUEVOX0FMTElBTkNFX0hFTFBFUlNcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ5OmNvbmZpZyBQSFlMSUJfTEVEU1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTAtXHRkZWZfYm9vbCBPRlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjUyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBQSFlMSUIgYW5kIE5ldHdvcmsgQWRhcHRlcnMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdG8gaGFuZGxlIHRoaXMgbmV0d29ya2luZyBzY2VuYXJpby4gRmlyc3QsIEkga25vdyBgUEhZTElCYCBpcyBnb2luZyB0byBiZSBlc3NlbnRpYWwgZm9yIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGxheWVyIHN0dWZmLiBObyBxdWVzdGlvbiBhYm91dCB0aGF0LiBUaGVuLCB0byB0cmlnZ2VyIHRoaXMgc2V0dXAsIHdlJiMzOTtsbCBsaWtlbHkgbmVlZCB0byB1c2UgYSBVU0IgbmV0d29yayBhZGFwdGVyLiBTbywgbG9va2luZyBhdCB0aGUgcG9zc2liaWxpdGllcywgdGhlIGZpcnN0IHRoaW5nIHRoYXQgY29tZXMgdG8gbWluZCBpcyBlaXRoZXIgZW5hYmxpbmcgYFVTQl9ORVRfRFJJVkVSU2AsIG9yIHRhcmdldGluZyBzcGVjaWZpYyBkcml2ZXJzIGxpa2UgYFVTQl9MQU43OFhYYCBvciBgVVNCX1NNU0M5NVhYYC4gR2l2ZW4gbXkgZXhpc3Rpbmcga25vd2xlZGdlLCBJIHRoaW5rIGNoZWNraW5nIG91dCBgVVNCX0xBTjc4WFhgIG1ha2VzIHRoZSBtb3N0IHNlbnNlIGFzIGEgc3RhcnRpbmcgcG9pbnQuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGRyaXZlciBhbmQgc2VlIHdoYXQgaXQgb2ZmZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0xBTjc4WFgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZz05OT1jb25maWcgVVNCX1JUTDgxNTJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTItXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTM6Y29uZmlnIFVTQl9MQU43OFhYXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTQtXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgTEFONzhYWCBCYXNlZCBVU0IgRXRoZXJuZXQgQWRhcHRlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAwOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgVVNCX1NNU0M5NVhYYCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gVGhlIG1lbnRpb24gb2YgYFVTQl9TTVNDOTVYWGAgaW1tZWRpYXRlbHkgZmxhZ3MgYSBmZXcga2V5IGFyZWFzIEkgbmVlZCB0byBjb25zaWRlci4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBVU0ItdG8tRXRoZXJuZXQgY29udHJvbGxlciwgbGlrZWx5IGEgY2hpcCBmcm9tIFNNU0MgKG5vdyBNaWNyb2NoaXAsIG9mIGNvdXJzZSkuIE15IGZpcnN0IG1lbnRhbCBjaGVja2xpc3Qgc3RhcnRzIHJ1bm5pbmc6IHdoYXQmIzM5O3MgdGhlIHNwZWNpZmljIGRyaXZlciBpbXBsZW1lbnRhdGlvbiB3ZSYjMzk7cmUgdXNpbmc/IElzIGl0IGEgc3RhbmRhcmQgZHJpdmVyLCBhIGN1c3RvbSBwb3J0LCBvciBzb21ldGhpbmcgaW4gYmV0d2Vlbj8gVW5kZXJzdGFuZGluZyB0aGUgZHJpdmVyIGlzIHBhcmFtb3VudCwgZXNwZWNpYWxseSBpZiB3ZSYjMzk7cmUgZGVidWdnaW5nIGEgcG90ZW50aWFsIGlzc3VlLgoKSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaGFyZHdhcmUgaXRzZWxmLiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgcmV2aXNpb24gb2YgdGhlIFNNU0M5NXh4PyBUaGVyZSBjYW4gYmUgc3VidGxlIGRpZmZlcmVuY2VzIGluIHJlZ2lzdGVyIG1hcHBpbmdzIG9yIGZlYXR1cmUgc2V0cyBhY3Jvc3MgcmV2aXNpb25zLCBzbyBrbm93aW5nIHRoZSBleGFjdCBwYXJ0IG51bWJlciB3b3VsZCBiZSBoZWxwZnVsLiBJIG5lZWQgdG8ga2VlcCBVU0IgZW51bWVyYXRpb24gaW4gbWluZCwgdG9vLiBBcmUgd2Ugc2VlaW5nIGNvbnNpc3RlbnQgZGV2aWNlIHJlY29nbml0aW9uIG9uIHRoZSBob3N0PyBBbnkgZXJyb3JzIGR1cmluZyB0aGUgaW5pdGlhbCBVU0Igc2V0dXA/IFRoZXNlIGFyZSBhbGwgdHlwaWNhbCBzdGFydGluZyBwb2ludHMuCgpOZXh0LCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIHNvZnR3YXJlIHNpZGUuIFdoYXQgb3BlcmF0aW5nIHN5c3RlbSBhcmUgd2UgcnVubmluZz8gTGludXgsIFdpbmRvd3MsIHNvbWV0aGluZyBlbHNlPyBFYWNoIHBsYXRmb3JtIGhhcyBpdHMgb3duIHNldCBvZiBkcml2ZXJzIGFuZCBwb3RlbnRpYWwgcXVpcmtzIGZvciBVU0ItRXRoZXJuZXQgYWRhcHRlcnMuIEkgYWxzbyBuZWVkIHRvIHRoaW5rIGFib3V0IHRoZSBuZXR3b3JrIHN0YWNrLiBBcmUgd2UgdXNpbmcgc3RhbmRhcmQgVENQL0lQIGNvbmZpZ3VyYXRpb25zLCBvciBhcmUgdGhlcmUgY3VzdG9tIG5ldHdvcmtpbmcgZmVhdHVyZXMgYXQgcGxheT8gQXJlIHRoZXJlIGFueSBrbm93biBpc3N1ZXMgd2l0aCB0aGUgZHJpdmVyIG9uIHRoYXQgT1Mgb3Iga2VybmVsIHZlcnNpb24/CgpGaW5hbGx5LCBhcmUgdGhlcmUgYW55IGNsdWVzIGFib3V0IHdoYXQgd2UmIzM5O3JlIGFjdHVhbGx5ICp0cnlpbmcqIHRvIGFjY29tcGxpc2g/IEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhlIHByb2JsZW0gaXMgY3JpdGljYWwuIEFyZSB3ZSBzZWVpbmcgcGVyZm9ybWFuY2UgaXNzdWVzLCBjb25uZWN0aXZpdHkgZHJvcHMsIG9yIG91dHJpZ2h0IGRldmljZSBmYWlsdXJlcz8gVGhhdCBjb250ZXh0IHdpbGwgaW5mbHVlbmNlIHRoZSBhcmVhcyBJIHByaW9yaXRpemUuIE15IGluaXRpYWwgZm9jdXMgd2lsbCBiZSBvbiB2YWxpZGF0aW5nIHRoZSBiYXNpY3Mgb2YgVVNCIHNldHVwIGFuZCBkZXZpY2UgY29tbXVuaWNhdGlvbiwgYmVmb3JlIEkgY29uc2lkZXIgYW55dGhpbmcgdG9vIGVzb3RlcmljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfU01TQzk1WFgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgVVNCIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGlzbiYjMzk7dCBgc21zYzk1eHhgIGEgVVNCIEV0aGVybmV0IGRyaXZlcj8gQW5kIGlmIGl0IGlzLCB0aGUgbG9naWNhbCBwbGFjZSB0byBjaGVjayBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zIHdvdWxkIGJlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSB0eXBpY2FsIHBsYWNlIGZvciBVU0IgbmV0d29yayBkZXZpY2UgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBuYXZpZ2F0ZSB0aGVyZSBhbmQgdmVyaWZ5IHRoYXQgdGhpcyBhc3N1bXB0aW9uIGhvbGRzIHRydWUsIGFuZCBjb25maXJtIHRoZSBkcml2ZXImIzM5O3MgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGlmIGl0IGlzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21zYzk1eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NjQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBVU0IgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBzZWUuIEkmIzM5O20gcHJldHR5IHN1cmUgSSByZW1lbWJlciB0aGUgYHNtc2M5NXh4YCBkcml2ZXIgYmVpbmcgaW4gdGhlIFVTQiBuZXR3b3JraW5nIHNlY3Rpb24sIGJ1dCB0aGUgS2NvbmZpZyBmaWxlcyBhcmUgb2Z0ZW4gYSBiaXQgY29udm9sdXRlZC4gSSYjMzk7bGwgYmV0IGl0JiMzOTtzIHVuZGVyIGEgc2xpZ2h0bHkgZGlmZmVyZW50IG5hbWUgaW4gYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYC4gVGltZSB0byBjb25maXJtIHRoYXQgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBhbnkgZGVlcGVyLiBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBhZ2FpbnN0IGBkcml2ZXJzL25ldC91c2IvTWFrZWZpbGVgIHRvIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluIHRoZSBidWlsZCB0YXJnZXRzIGFyZSBjb3JyZWN0LiBJdCYjMzk7cyBlYXN5IHRvIGdldCBsb3N0IGluIHRoZXNlIGxhcmdlIGtlcm5lbCBidWlsZHMsIHNvIGl0JiMzOTtzIGJlc3QgdG8gYmUgc3lzdGVtYXRpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21zYzk1eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlPTIxPW9iai0kKENPTkZJR19VU0JfTkVUX1NNU0M3NVhYKVx0JiM0Mzs9IHNtc2M3NXh4Lm9cbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfVVNCX05FVF9TTVNDOTVYWClcdCYjNDM7PSBzbXNjOTV4eC5vXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtMjMtb2JqLSQoQ09ORklHX1VTQl9ORVRfR0w2MjBBKVx0JiM0Mzs9IGdsNjIwYS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDA5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqTmF2aWdhdGluZyB0aGUgVVNCIE5ldHdvcmsgRGV2aWNlIERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYFVTQl9ORVRfU01TQzk1WFhgLiBSaWdodCwgdGhhdCYjMzk7cyBhIHNwZWNpZmljIFVTQiBuZXR3b3JrIGRldmljZSBkcml2ZXIuIEJlZm9yZSBJIGRpdmUgZGVlcCBpbnRvIHRoZSBTTVNDOTVYWCBkZXRhaWxzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBoaWdoZXItbGV2ZWwgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBgVVNCX05FVF9EUklWRVJTYCBzZXR0aW5nLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBnZW5lcmFsIFVTQiBuZXR3b3JrIGRyaXZlciBzdXBwb3J0IGlzIGV2ZW4gZW5hYmxlZCBiZWZvcmUgSSBjYW4gd29ycnkgYWJvdXQgdGhlIHNwZWNpZmljcyBvZiB0aGUgU01TQzk1WFggbW9kdWxlLiBJIG5lZWQgdGhlIGJpZyBwaWN0dXJlIGJlZm9yZSB6b29taW5nIGluIG9uIHRoZSBkZXRhaWxzLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZGVidWdnaW5nIG9yIGNvbmZpZ3VyYXRpb24gZWZmb3J0IGluIHRoaXMgc3BhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfTkVUX0RSSVZFUlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZz01PWNvbW1lbnQgXCYjMzQ7SG9zdC1zaWRlIFVTQiBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgVVNCIE5ldHdvcmsgQWRhcHRlciBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNy1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjg6bWVudWNvbmZpZyBVU0JfTkVUX0RSSVZFUlNcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtVU0IgTmV0d29yayBBZGFwdGVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMyNwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipJbnRlcm5hbCBDb2RlIFJldmlldzogTmV0d29ya2luZyBEcml2ZXIgSW5jbHVzaW9uKioKCkFscmlnaHQsIGxldCBtZSBxdWlja2x5IHN1bW1hcml6ZSB3aGF0IEkmIzM5O20gbG9va2luZyBhdC4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhYm91dCBpbnRlZ3JhdGluZyBzb21lIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eS4gSSBzZWUgYSBmZXcga2V5IGRyaXZlcnMgYmVpbmcgYnJvdWdodCBpbnRvIGNvbnNpZGVyYXRpb246IGBQSFlMSUJgLCB3aGljaCBpcyBjcnVjaWFsIGZvciB0aGUgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlLCBuYXR1cmFsbHkuIFRoZW4gd2UgaGF2ZSB0aGUgbW9yZSBzcGVjaWZpYyBgVVNCX05FVF9EUklWRVJTYCwgYW5kIHdpdGhpbiB0aGF0LCB0aGUgYFVTQl9ORVRfU01TQzk1WFhgIGFuZCBgVVNCX0xBTjc4WFhgIGRyaXZlcnMuIFRoZXNlIHR3byBhcmUgaW1wb3J0YW50LCBjbGVhcmx5IHRoZXkgYXJlIHRoZSBzcGVjaWZpYyBuZXR3b3JraW5nIGhhcmR3YXJlIHdlJiMzOTtyZSB0YXJnZXRpbmcuCgpXYWl0IGEgbWludXRlLCBpdCBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIGEgcmVmZXJlbmNlIHRvIGBzZnBfYnVzYCBpbiB0aGlzIHBhdGNoIGFzIHdlbGwuIFRoYXTigJlzIGludGVyZXN0aW5nLiBHaXZlbiB0aGF0IFNGUCBpcyBhIHN0YW5kYXJkLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGhlcmUuIEkgd2FudCB0byBxdWlja2x5IHZlcmlmeSBpZiBgU0ZQYCBpdHNlbGYgaXMgZXZlbiBkZWZpbmVkIGFzIGEgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIG9uIHRoZSByaWdodCB0cmFjayBhbmQgbm90IG1pc3NpbmcgYSBzdWJ0bGUgZGVwZW5kZW5jeSBzb21ld2hlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTRlAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz02NT1jb25maWcgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNzItXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo3Mzpjb25maWcgU0ZQXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy03NC1cdHRyaXN0YXRlIFwmIzM0O1NGUCBjYWdlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA3MzYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1MzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgUmVhc29uaW5nIGZvciBTZWxlY3RpbmcgUEhZbGliIEZ1bmN0aW9ucyBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIHRoaW5raW5nIGFib3V0IHdoYXQgdG8gdGFyZ2V0IGZvciBmdXp6aW5nLiBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgU0ZQYCBpcyBpbmRlZWQgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBJIG5lZWQgdG8gY29uc2lkZXI7IEkmIzM5O2xsIGJlIHN1cmUgdG8gaW5jbHVkZSB0aGF0LgoKSSYjMzk7dmUgYm9pbGVkIGRvd24gdGhlIGtleSBjb25maWd1cmF0aW9ucyB0byBmb2N1cyBvbjogYFBIWUxJQmAsIGBTRlBgLCBgVVNCX05FVF9EUklWRVJTYCwgYFVTQl9ORVRfU01TQzk1WFhgLCBhbmQgYFVTQl9MQU43OFhYYC4gVGhlc2Ugc2VlbSByZWxldmFudCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjb3JlIFBIWSBsaWJyYXJ5IGFuZCBob3cgaXQmIzM5O3MgdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2l0aCBlbXVsYXRlZCBVU0IgbmV0d29yayBhZGFwdGVycy4KCk5vdywgY29uc2lkZXJpbmcgdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLCBJJiMzOTt2ZSBpZGVudGlmaWVkIGEgZmV3IGtleSBvbmVzIHRoYXQgc3RhbmQgb3V0IGFzIGdvb2QgY2FuZGlkYXRlczogYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgLCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuCgpJIGRvdWJsZS1jaGVja2VkIGBwaHlfcHJvYmVgOyBpdCYjMzk7cyBkZWNsYXJlZCBgc3RhdGljYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBidXQgY3J1Y2lhbGx5LCBpdHMgYWRkcmVzcyBpcyB0YWtlbiBhbmQgcGFzc2VkIHRvIGBuZXdfZHJpdmVyLSZndDttZGlvZHJ2LmRyaXZlci5wcm9iZSA9IHBoeV9wcm9iZTtgLiBUaGlzIG1lYW5zIGl0JiMzOTtzIG5vdCBnb2luZyB0byBiZSBpbmxpbmVkIGFuZCBpcyB0aGVyZWZvcmUgYSBnb29kIHRhcmdldC4gSSBub3RlZCB0aGF0IGBwaHlfc2ZwX3Byb2JlYCBpcyBhbHNvIHN0YXRpYywgYnV0IHRoYXQmIzM5O3MgY2FsbGVkIGZyb20gYHBoeV9zZXR1cF9wb3J0c2AsIHdoaWNoIGl0c2VsZiBpcyBzdGF0aWMgYW5kIGlzIGNhbGxlZCBmcm9tIGBwaHlfcHJvYmVgLiBgcGh5X3JlbW92ZWAgYWxzbyBpcyBzdGF0aWMsIGJ1dCBhZ2FpbiwgaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNvIGl0JiMzOTtzIGEgZ29vZCB0YXJnZXQuIGBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyYCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAgYXJlIGV4cG9ydGVkLCB3aGljaCBtYWtlcyB0aGVtIGVhc3kgdG8gcmVhY2guCgpNeSByZWFzb25pbmcgaXMgdGhpczogdGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgcmVzb3VyY2UgbGVha3MgYW5kIGVycm9yIGhhbmRsaW5nIGlzc3VlcyB3aXRoaW4gdGhlIFBIWSBkZXZpY2UgcHJvYmUgYW5kIHJlbW92YWwgcm91dGluZXMgLSBgcGh5X3Byb2JlYCwgYHBoeV9yZW1vdmVgLCBgcGh5X3NldHVwX3BvcnRzYCwgYW5kIGBwaHlfc2ZwX3Byb2JlYCAtIGFuZCBpdCYjMzk7cyBhbHNvIGZpeGluZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZm91bmRhdGlvbmFsIHRvIHRoZSBQSFkgbGlicmFyeSAoYHBoeWxpYmApLiBUaGlzIGxpYnJhcnkgZ2V0cyB1c2VkIGV2ZW4gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRocm91Z2ggZW11bGF0ZWQgVVNCIG5ldHdvcmsgYWRhcHRlcnMgbGlrZSBgc21zYzk1eHhgIGFuZCBgbGFuNzh4eGAgdGhhdCwgaW4gdHVybiwgcmVnaXN0ZXIgTURJTyBidXNlcyBhbmQgUEhZIGRldmljZXMuIEZ1enppbmcgdGhlc2UgcGF0aHMgd2lsbCBiZSB2YWx1YWJsZSBmb3IgaGFyZGVuaW5nIHRoZSBQSFkgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBwcm9jZXNzZXMsIHBhcnRpY3VsYXJseSBnaXZlbiB0aGUgdmFyaW91cyBleGVjdXRpb24gcGF0aHMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgdGFrZSBpbiBkaWZmZXJlbnQgc2NlbmFyaW9zLgoKU28sIGluIHN1bW1hcnksIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgdGhlIGZpdmUgbGlzdGVkIHByZXZpb3VzbHkuCgpJIGFsc28gdmVyaWZpZWQgdGhhdCBgU0ZQYCBpcyBuZWVkZWQuIFRoZSBwYXRjaCBtb2RpZmllcyBgcGh5X3NmcF9wcm9iZWAgYW5kIGBwaHlfc2ZwX3JlbGVhc2VgLCBib3RoIG9mIHdoaWNoIGludGVyYWN0IHdpdGggYHBoeWRldi0mZ3Q7c2ZwX2J1c2AuIEl0IGxvb2tzIGxpa2UgYHBoeWRldi0mZ3Q7c2ZwX2J1c2AgaXMgaW5kZWVkIG9ubHkgYXZhaWxhYmxlIHdoZW4gYFNGUGAgaXMgZW5hYmxlZCwgd2hpY2ggcmVpbmZvcmNlcyB0aGUgbmVlZCB0byBpbmNsdWRlIHRoYXQgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2ZwX2J1cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcGh5LmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9waHkuaD0zMzA9c3RydWN0IHBoeV9wb3J0O1xuaW5jbHVkZS9saW51eC9waHkuaDozMzE6c3RydWN0IHNmcF9idXM7XG5pbmNsdWRlL2xpbnV4L3BoeS5oLTMzMi1zdHJ1Y3Qgc2ZwX3Vwc3RyZWFtX29wcztcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTU1Mj1zdHJ1Y3QgcGh5X29hdGMxNF9zcWlfY2FwYWJpbGl0eSB7XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC01OTQtICogQHBoeWxpbms6IFBvaW50ZXIgdG8gcGh5bGluayBpbnN0YW5jZSBmb3IgdGhpcyBQSFlcbmluY2x1ZGUvbGludXgvcGh5Lmg6NTk1OiAqIEBzZnBfYnVzX2F0dGFjaGVkOiBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgU0ZQIGJ1cyBoYXMgYmVlbiBhdHRhY2hlZFxuaW5jbHVkZS9saW51eC9waHkuaDo1OTY6ICogQHNmcF9idXM6IFNGUCBidXMgYXR0YWNoZWQgdG8gdGhpcyBQSFkmIzM5O3MgZmliZXIgcG9ydFxuaW5jbHVkZS9saW51eC9waHkuaC01OTctICogQGF0dGFjaGVkX2RldjogVGhlIGF0dGFjaGVkIGVuZXQgZHJpdmVyJiMzOTtzIGRldmljZSBpbnN0YW5jZSBwdHJcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTY2OD1zdHJ1Y3QgcGh5X2RldmljZSB7XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC03ODUtXHQvKiBUaGlzIG1heSBiZSBtb2RpZmllZCB1bmRlciB0aGUgcnRubCBsb2NrICovXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjc4NjpcdGJvb2wgc2ZwX2J1c19hdHRhY2hlZDtcbmluY2x1ZGUvbGludXgvcGh5Lmg6Nzg3Olx0c3RydWN0IHNmcF9idXMgKnNmcF9idXM7XG5pbmNsdWRlL2xpbnV4L3BoeS5oLTc4OC1cdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjI1NAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IExpbmUgb2YgSW5xdWlyeTogU0ZQIEJ1cyBBc3NvY2lhdGlvbioqCgpPa2F5LCBzbyBpdCBzdHJpa2VzIG1lIHRoYXQgdGhlIGBzZnBfYnVzYCBjb25zdHJ1Y3QgaXMgY29uc2lzdGVudGx5IGxpbmtlZCB0byB0aGUgYHN0cnVjdCBwaHlfZGV2aWNlYC4gTm93LCB0aGUgU0ZQIGNvbmZpZ3VyYXRpb24sIHRoZSBhY3R1YWwgKmVuYWJsaW5nKiBvZiB0aGUgU0ZQIGJ1cyBjb2RlLCB0aGF0JiMzOTtzIHdoYXQgSSB3YW50IHRvIHVuZGVyc3RhbmQuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoaXMuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGV4cGxvcmUgYHNmcF9idXNfZGVsX3Vwc3RyZWFtYCDigJMgd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyBkZWNsYXJlZCB3aXRoaW4gYGluY2x1ZGUvbGludXgvc2ZwLmhgLiBUaW1lIHRvIHNlZSB3aGF0IHdlIGNhbiBnbGVhbiBmcm9tIHRoYXQgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NmcF9idXNfZGVsX3Vwc3RyZWFtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9zZnAuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NmcC5oPTU5ND1pbnQgc2ZwX2J1c19hZGRfdXBzdHJlYW0oc3RydWN0IHNmcF9idXMgKmJ1cywgdm9pZCAqdXBzdHJlYW0sXG5pbmNsdWRlL2xpbnV4L3NmcC5oLTU5NS1cdFx0XHQgY29uc3Qgc3RydWN0IHNmcF91cHN0cmVhbV9vcHMgKm9wcyk7XG5pbmNsdWRlL2xpbnV4L3NmcC5oOjU5Njp2b2lkIHNmcF9idXNfZGVsX3Vwc3RyZWFtKHN0cnVjdCBzZnBfYnVzICpidXMpO1xuaW5jbHVkZS9saW51eC9zZnAuaC01OTctY29uc3QgY2hhciAqc2ZwX2dldF9uYW1lKHN0cnVjdCBzZnBfYnVzICpidXMpO1xuLS1cbmluY2x1ZGUvbGludXgvc2ZwLmg9NjUzPXN0YXRpYyBpbmxpbmUgaW50IHNmcF9idXNfYWRkX3Vwc3RyZWFtKHN0cnVjdCBzZnBfYnVzICpidXMsIHZvaWQgKnVwc3RyZWFtLFxuLS1cbmluY2x1ZGUvbGludXgvc2ZwLmgtNjU4LVxuaW5jbHVkZS9saW51eC9zZnAuaDo2NTk6c3RhdGljIGlubGluZSB2b2lkIHNmcF9idXNfZGVsX3Vwc3RyZWFtKHN0cnVjdCBzZnBfYnVzICpidXMpXG5pbmNsdWRlL2xpbnV4L3NmcC5oLTY2MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzExCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gb2YgU0ZQIGFuZCBQSFlMSUJfTEVEUyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIHRoZSBgU0ZQYCBkZWZpbml0aW9uIGlzIGxvY2F0ZWQgaW4gYGluY2x1ZGUvbGludXgvc2ZwLmhgLiYjMzQ7IElmIGBTRlBgIGlzbiYjMzk7dCBlbmFibGVkLCBJIHN1c3BlY3QgdGhlIGNvZGUgcmVsYXRlZCB0byBpdCB3aWxsIGxpa2VseSBiZSBhIG5vLW9wLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4KClRoZSBuZXh0IHRoaW5nIGlzIHRvIGRldGVybWluZSBpZiBgU0ZQYCBpcyBldmVuIG5lY2Vzc2FyeSBoZXJlLiBBaCwgcmlnaHQsIHRvIHRydWx5IGV4ZXJjaXNlIHRoZSBTRlAgcGF0aHMgZHVyaW5nIHRlc3RpbmcsIEkgKmRvKiBuZWVkIHRoZSBgU0ZQYCBjb25maWcgZW5hYmxlZC4gSXQgbWFrZXMgc2Vuc2UuCgpOZXh0IG9uIHRoZSBsaXN0IGlzIGBQSFlMSUJfTEVEU2AuIFRoZSBwYXRjaCB0b3VjaGVzIGBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyYCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAsIHNvIEkgbmVlZCB0byBjaGVjayB0aG9zZS4gTGV0JiMzOTtzIHRyYWNlIHRob3NlIGNhbGxzIGJhY2ssIHN0YXJ0aW5nIHdpdGggbG9va2luZyBhdCBgZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY2AuIE9rYXksIG5vdyB0aGUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgZW50aXJlIGBwaHlfbGVkX3RyaWdnZXJzLmNgIGZpbGUgKml0c2VsZiogY29uZGl0aW9uYWxseSBjb21waWxlZD8gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfbGVkX3RyaWdnZXJzLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTE0PWxpYnBoeS0kKENPTkZJR19TV1BIWSlcdFx0JiM0Mzs9IHN3cGh5Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxNTpsaWJwaHktJChDT05GSUdfTEVEX1RSSUdHRVJfUEhZKVx0JiM0Mzs9IHBoeV9sZWRfdHJpZ2dlcnMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE2LWxpYnBoeS0kKENPTkZJR19PUEVOX0FMTElBTkNFX0hFTFBFUlMpICYjNDM7PSBvcGVuX2FsbGlhbmNlX2hlbHBlcnMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzI0OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgUEhZIExFRCBUcmlnZ2VyIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgKkNPTkZJR19MRURfVFJJR0dFUl9QSFkqLiBUaGF0JiMzOTtzIHRoZSBvbmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRlbHZlIGludG8gdGhlIGBMRURfVFJJR0dFUl9QSFlgIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBzdGF0ZSBvZiB0aGF0IHBhcnRpY3VsYXIgdHJpZ2dlci4gSSYjMzk7bGwgbmVlZCB0byBrbm93IGlmIGl0JiMzOTtzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBzZXQgdG8gc29tZSBzcGVjaWZpYyBiZWhhdmlvciByZWxhdGVkIHRvIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTEVEIGlzIGJlaW5nIGRyaXZlbiBieSB0aGUgUEhZJiMzOTtzIGFjdGl2aXR5LiBUaGUgZ29hbCBoZXJlIGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgY3VycmVudCBzeXN0ZW0gY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGFueSBuZXR3b3JrIFBIWSYjMzk7cyBMRURzLiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgaWYgYW55IGNoYW5nZXMgYXJlIG5lZWRlZCwgb3IgaWYgdGhlcmUmIzM5O3MgYSBwcm9ibGVtLCBhbmQgaWYgc28sIHVuZGVyc3RhbmQgd2h5IHRoYXQgcHJvYmxlbSBpcyBvY2N1cnJpbmcgd2l0aCB0aGUgY3VycmVudCBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBMRURfVFJJR0dFUl9QSFkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0yNz1jb25maWcgUEhZX1BBQ0tBR0Vcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yOS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjMwOmNvbmZpZyBMRURfVFJJR0dFUl9QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IExFRCB0cmlnZ2VycyBmb3IgdHJhY2tpbmcgbGluayBzdGF0ZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzU3NgoJCQkJCQkJb3V0cHV0OiAyNDgKCQkJCQkJCXRob3VnaHRzOiAyNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBDaGVja2xpc3QqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBwaHlfbGVkX3RyaWdnZXJzLmNgIGZpbGUgYW5kIG5lZWQgdG8gdXBkYXRlIHRoZSBjb25maWd1cmF0aW9uLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGBMRURfVFJJR0dFUl9QSFlgIGlzIHRoZSBrZXkuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCYjMzk7cyBpbmNsdWRlZC4KClJpZ2h0LCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIHJldmlldyBvZiB0aGUgY29uZmlncyByZWxhdGVkIHRvIHRoaXMgYXJlYTogYFBIWUxJQmAsIGBTRlBgLCBgVVNCX05FVF9EUklWRVJTYCwgYFVTQl9ORVRfU01TQzk1WFhgLCBgVVNCX0xBTjc4WFhgLCBhbmQgb2YgY291cnNlIGBMRURfVFJJR0dFUl9QSFlgLgoKSGFuZyBvbiBhIHNlYy4uLiBJIHJlbWVtYmVyIHNlZWluZyBgUEhZTElCX0xFRFNgIG1lbnRpb25lZCBpbiB0aGUgcGF0Y2gsIHNwZWNpZmljYWxseSBpbiBhbiBgaWZgIHN0YXRlbWVudCBsaWtlIHRoaXMgYGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgJmFtcDsmYW1wOyAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkge2AuIEkgc2hvdWxkIHByb2JhYmx5IGluY2x1ZGUgdGhhdCBvbmUgYXMgd2VsbCB0byBiZSBzYWZlLiBCZXR0ZXIgdG8gYmUgdGhvcm91Z2guCgpOb3csIGxldCBtZSBqdXN0IHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIG1haW4gZnVuY3Rpb25zIGludm9sdmVkIGhlcmUuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgLCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoZXNlIGFyZSBteSBwcmltYXJ5IGVudHJ5IHBvaW50cywgcmlnaHQ/CgpIbW0sIHRoZXJlJiMzOTtzIHRoYXQgYHBoeV9zZnBfcHJvYmVgIGZ1bmN0aW9uLiBJdCYjMzk7cyBzdGF0aWMsIHNvIGl0ICptaWdodCogYmUgaW5saW5lZC4gRm9yIG5vdywgSSYjMzk7bGwgc3RpY2sgdG8gdGhlIGNvcmUgZnVuY3Rpb25zIHRvIGtlZXAgaXQgZm9jdXNlZC4KClJpZ2h0LCB3aXRoIGFsbCB0aGF0IHNvcnRlZCwgSSYjMzk7bSByZWFkeSB0byBtb3ZlIGZvcndhcmQuIExldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7U0ZQJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfRFJJVkVSUyYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX1NNU0M5NVhYJiMzNDssCiAgICAmIzM0O1VTQl9MQU43OFhYJiMzNDssCiAgICAmIzM0O0xFRF9UUklHR0VSX1BIWSYjMzQ7LAogICAgJiMzNDtQSFlMSUJfTEVEUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeV9wcm9iZSYjMzQ7LAogICAgJiMzNDtwaHlfcmVtb3ZlJiMzNDssCiAgICAmIzM0O3BoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7cGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHJlc291cmNlIGxlYWtzIGFuZCBlcnJvciBoYW5kbGluZyBwYXRocyBpbiB0aGUgUEhZIGRldmljZSBwcm9iZSBhbmQgcmVtb3ZhbCByb3V0aW5lcyAoYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfc2ZwX3Byb2JlYCkgYW5kIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBjb3JlIFBIWSBsaWJyYXJ5IChgcGh5bGliYCkgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgZW11bGF0ZWQgVVNCIG5ldHdvcmsgYWRhcHRlcnMgKGUuZy4sIGBzbXNjOTV4eGAsIGBsYW43OHh4YCkgdGhhdCByZWdpc3RlciBNRElPIGJ1c2VzIGFuZCBQSFkgZGV2aWNlcy4gRnV6emluZyB0aGVzZSBwYXRocyBpcyB2YWx1YWJsZSB0byBlbnN1cmUgcm9idXN0bmVzcyBvZiBQSFkgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93bi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1NGUCYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0RSSVZFUlMmIzM0OywKICAgICYjMzQ7VVNCX05FVF9TTVNDOTVYWCYjMzQ7LAogICAgJiMzNDtVU0JfTEFONzhYWCYjMzQ7LAogICAgJiMzNDtMRURfVFJJR0dFUl9QSFkmIzM0OywKICAgICYjMzQ7UEhZTElCX0xFRFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfcHJvYmUmIzM0OywKICAgICYjMzQ7cGh5X3JlbW92ZSYjMzQ7LAogICAgJiMzNDtwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyJiMzNDssCiAgICAmIzM0O3BoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyByZXNvdXJjZSBsZWFrcyBhbmQgZXJyb3IgaGFuZGxpbmcgcGF0aHMgaW4gdGhlIFBIWSBkZXZpY2UgcHJvYmUgYW5kIHJlbW92YWwgcm91dGluZXMgKGBwaHlfcHJvYmVgLCBgcGh5X3JlbW92ZWAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3NmcF9wcm9iZWApIGFuZCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgY29yZSBQSFkgbGlicmFyeSAoYHBoeWxpYmApIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGVtdWxhdGVkIFVTQiBuZXR3b3JrIGFkYXB0ZXJzIChlLmcuLCBgc21zYzk1eHhgLCBgbGFuNzh4eGApIHRoYXQgcmVnaXN0ZXIgTURJTyBidXNlcyBhbmQgUEhZIGRldmljZXMuIEZ1enppbmcgdGhlc2UgcGF0aHMgaXMgdmFsdWFibGUgdG8gZW5zdXJlIHJvYnVzdG5lc3Mgb2YgUEhZIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDc6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZm9jdXNlcyBvbiBmaXhpbmcgZXJyb3IgaGFuZGxpbmcgcGF0aHMgYW5kIHJlc291cmNlIGNsZWFudXAgaW4gdGhlIFBIWSBkZXZpY2UgcHJvYmUgYW5kIHJlbW92YWwgcm91dGluZXMgKGUuZy4sIGBwaHlfcHJvYmVgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9zZnBfcHJvYmVgKS4gSXQgYWRkcmVzc2VzIHBvdGVudGlhbCBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlLCBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBieSBlbnN1cmluZyB0aGF0IHJlc291cmNlcyBsaWtlIFNGUCBidXNlcywgUEhZIHBvcnRzLCBhbmQgTEVEIHRyaWdnZXJzIGFyZSBwcm9wZXJseSByZWxlYXNlZCBvciB1bnJlZ2lzdGVyZWQgd2hlbiBpbml0aWFsaXphdGlvbiBmYWlscy4gVGhlc2UgdHlwZXMgb2YgYnVncyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scyBzdWNoIGFzIEtBU0FOIChmb3IgdXNlLWFmdGVyLWZyZWUgYW5kIG91dC1vZi1ib3VuZHMpLCBrbWVtbGVhayAoZm9yIG1lbW9yeSBsZWFrcyksIGFuZCBnZW5lcmFsIGtlcm5lbCBvb3BzL3BhbmljcyAoZm9yIE5VTEwgZGVyZWZlcmVuY2VzKS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgaW52b2x2ZSBjb21wbGV4IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOJiMzOTtzIHNwZWNpYWxpemVkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRyYWNraW5nLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MzlkMjlmYTJjMzc5MzNkYmFhNjRmZmQ4MTY5MGU2MTg5NGViZWNmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMDc6Mzk6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwppbmRleCA5NGIyZTg1ZTAwYTM3Li44Y2IwZDYwZmNiYmE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKQEAgLTE3MjMsMTIgJiM0MzsxNzIzLDQxIEBAIHN0YXRpYyBpbnQgcGh5X3NmcF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCQkJcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKIAl9CiAKLQlpZiAoIXJldCAmYW1wOyZhbXA7IHBoeWRldi0mZ3Q7c2ZwX2J1cykKJiM0MzsJaWYgKCFyZXQgJmFtcDsmYW1wOyBwaHlkZXYtJmd0O3NmcF9idXMpIHsKIAkJcmV0ID0gcGh5X3NldHVwX3NmcF9wb3J0KHBoeWRldik7CiYjNDM7CQlpZiAocmV0KSB7CiYjNDM7CQkJc2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LSZndDtzZnBfYnVzKTsKJiM0MzsJCQlwaHlkZXYtJmd0O3NmcF9idXMgPSBOVUxMOwomIzQzOwkJfQomIzQzOwl9CiAKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7LyoqCiYjNDM7ICogcGh5X3NmcF9yZWxlYXNlIC0gcmVsZWFzZSByZXNvdXJjZXMgc2V0IHVwIGJ5IHBoeV9zZnBfcHJvYmUoKQomIzQzOyAqIEBwaHlkZXY6IHRoZSBQSFkgZGV2aWNlCiYjNDM7ICoKJiM0MzsgKiBSZWxlYXNlIHRoZSBTRlAgcmVzb3VyY2VzIHNldCB1cCBieSBhIHN1Y2Nlc3NmdWwgcGh5X3NmcF9wcm9iZSgpLiBVbnJlZ2lzdGVyCiYjNDM7ICogdGhlIHVwc3RyZWFtIGJlZm9yZSBkZXN0cm95aW5nIGl0cyBwaHlfcG9ydCwgc28gU0ZQIHVwc3RyZWFtIGNhbGxiYWNrcyBjYW5ub3QKJiM0MzsgKiByYWNlIHdpdGggcG9ydCBkZXN0cnVjdGlvbi4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBwaHlfc2ZwX3JlbGVhc2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwaHlfcG9ydCAqcG9ydCwgKnRtcDsKJiM0MzsKJiM0MzsJc2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LSZndDtzZnBfYnVzKTsKJiM0MzsJcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcnQsIHRtcCwgJmFtcDtwaHlkZXYtJmd0O3BvcnRzLCBoZWFkKSB7CiYjNDM7CQlpZiAoIXBvcnQtJmd0O2lzX3NmcCkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCXBoeV9kZWxfcG9ydChwaHlkZXYsIHBvcnQpOwomIzQzOwkJcGh5X3BvcnRfZGVzdHJveShwb3J0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpCiB7CiAJcmV0dXJuIHBoeWRydi0mZ3Q7Y29uZmlnX2ludHIgJmFtcDsmYW1wOyBwaHlkcnYtJmd0O2hhbmRsZV9pbnRlcnJ1cHQ7CkBAIC0zNDU0LDYgJiM0MzszNDgzLDcgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogewogCXN0cnVjdCBwaHlfcG9ydCAqcG9ydCA9IHBoeV9wb3J0X2FsbG9jKCk7CiAJdW5zaWduZWQgbG9uZyBtb2RlOwomIzQzOwlpbnQgcmV0OwogCiAJaWYgKCFwb3J0KQogCQlyZXR1cm4gLUVOT01FTTsKQEAgLTM0ODAsOSAmIzQzOzM1MTAsMTEgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCQlwb3J0LSZndDtwYWlycyA9IG1heF90KGludCwgcG9ydC0mZ3Q7cGFpcnMsCiAJCQkJICAgIGV0aHRvb2xfbGlua21vZGVfbl9wYWlycyhtb2RlKSk7CiAKLQlwaHlfYWRkX3BvcnQocGh5ZGV2LCBwb3J0KTsKJiM0MzsJcmV0ID0gcGh5X2FkZF9wb3J0KHBoeWRldiwgcG9ydCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlwaHlfcG9ydF9kZXN0cm95KHBvcnQpOwogCi0JcmV0dXJuIDA7CiYjNDM7CXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgb2ZfcGh5X3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCkBAIC0zNTQ3LDEzICYjNDM7MzU3OSwxMyBAQCBzdGF0aWMgaW50IHBoeV9zZXR1cF9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCWlmICghcGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuKSB7CiAJCXJldCA9IHBoeV9zZnBfcHJvYmUocGh5ZGV2KTsKIAkJaWYgKHJldCkKLQkJCWdvdG8gb3V0OwomIzQzOwkJCWdvdG8gZXJyX3BvcnRzOwogCX0KIAogCWlmIChwaHlkZXYtJmd0O25fcG9ydHMgJmx0OyBwaHlkZXYtJmd0O21heF9uX3BvcnRzKSB7CiAJCXJldCA9IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHBoeWRldik7CiAJCWlmIChyZXQpCi0JCQlnb3RvIG91dDsKJiM0MzsJCQlnb3RvIGVycl9zZnA7CiAJfQogCiAJbGlua21vZGVfemVybyhwb3J0c19zdXBwb3J0ZWQpOwpAQCAtMzU4MCw3ICYjNDM7MzYxMiw5IEBAIHN0YXRpYyBpbnQgcGh5X3NldHVwX3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAKIAlyZXR1cm4gMDsKIAotb3V0OgomIzQzO2Vycl9zZnA6CiYjNDM7CXBoeV9zZnBfcmVsZWFzZShwaHlkZXYpOwomIzQzO2Vycl9wb3J0czoKIAlwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpOwogCXJldHVybiByZXQ7CiB9CkBAIC0zNzA2LDcgJiM0MzszNzQwLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQogCWlmIChwaHlkZXYtJmd0O2Rydi0mZ3Q7cHJvYmUpIHsKIAkJZXJyID0gcGh5ZGV2LSZndDtkcnYtJmd0O3Byb2JlKHBoeWRldik7CiAJCWlmIChlcnIpCi0JCQlnb3RvIG91dDsKJiM0MzsJCQlnb3RvIG91dF9yZXNldDsKIAl9CiAKIAlwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7CkBAIC0zNzI3LDcgJiM0MzszNzYxLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQogCQllcnIgPSBnZW5waHlfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTsKIAogCWlmIChlcnIpCi0JCWdvdG8gb3V0OwomIzQzOwkJZ290byBvdXRfcmVtb3ZlOwogCiAJaWYgKCFsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCwKIAkJCSAgICAgICBwaHlkZXYtJmd0O3N1cHBvcnRlZCkpCkBAIC0zNzQ0LDcgJiM0MzszNzc4LDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQogCiAJZXJyID0gcGh5X3NldHVwX3BvcnRzKHBoeWRldik7CiAJaWYgKGVycikKLQkJZ290byBvdXQ7CiYjNDM7CQlnb3RvIG91dF9yZW1vdmU7CiAKIAlwaHlfYWR2ZXJ0aXNlX3N1cHBvcnRlZChwaHlkZXYpOwogCkBAIC0zNzUzLDcgJiM0MzszNzg3LDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQogCSAqLwogCWVyciA9IGdlbnBoeV9jNDVfcmVhZF9lZWVfYWR2KHBoeWRldiwgcGh5ZGV2LSZndDthZHZlcnRpc2luZ19lZWUpOwogCWlmIChlcnIpCi0JCWdvdG8gb3V0OwomIzQzOwkJZ290byBvdXRfc2ZwX3JlbGVhc2U7CiAKIAkvKiBHZXQgdGhlIEVFRSBtb2RlcyB3ZSB3YW50IHRvIHByb2hpYml0LiAqLwogCW9mX3NldF9waHlfZWVlX2Jyb2tlbihwaHlkZXYpOwpAQCAtMzc5Myw5ICYjNDM7MzgyNyw2IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJCQkgcGh5ZGV2LSZndDtzdXBwb3J0ZWQpOwogCX0KIAotCS8qIFNldCB0aGUgc3RhdGUgdG8gUkVBRFkgYnkgZGVmYXVsdCAqLwotCXBoeWRldi0mZ3Q7c3RhdGUgPSBQSFlfUkVBRFk7Ci0KIAkvKiBSZWdpc3RlciB0aGUgUEhZIExFRCB0cmlnZ2VycyAqLwogCWlmICghcGh5ZGV2LSZndDtpc19vbl9zZnBfbW9kdWxlKQogCQlwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyKHBoeWRldik7CkBAIC0zODA2LDIwICYjNDM7MzgzNywyNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJaWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSAmYW1wOyZhbXA7ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKSB7CiAJCWVyciA9IG9mX3BoeV9sZWRzKHBoeWRldik7CiAJCWlmIChlcnIpCi0JCQlnb3RvIG91dDsKJiM0MzsJCQlnb3RvIG91dF91bnJlZ19sZWRfdHJpZ2dlcnM7CiAJfQogCiYjNDM7CS8qIFNldCB0aGUgc3RhdGUgdG8gUkVBRFkgYnkgZGVmYXVsdCAqLwomIzQzOwlwaHlkZXYtJmd0O3N0YXRlID0gUEhZX1JFQURZOwomIzQzOwogCXJldHVybiAwOwogCi1vdXQ6Ci0Jc2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LSZndDtzZnBfYnVzKTsKLQlwaHlkZXYtJmd0O3NmcF9idXMgPSBOVUxMOwomIzQzO291dF91bnJlZ19sZWRfdHJpZ2dlcnM6CiYjNDM7CWlmICghcGh5ZGV2LSZndDtpc19vbl9zZnBfbW9kdWxlKQomIzQzOwkJcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyKHBoeWRldik7CiAKJiM0MztvdXRfc2ZwX3JlbGVhc2U6CiYjNDM7CXBoeV9zZnBfcmVsZWFzZShwaHlkZXYpOwogCXBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7CiAKLQlpZiAoIXBoeWRldi0mZ3Q7aXNfb25fc2ZwX21vZHVsZSkKLQkJcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyKHBoeWRldik7CiYjNDM7b3V0X3JlbW92ZToKJiM0MzsJaWYgKHBoeWRldi0mZ3Q7ZHJ2LSZndDtyZW1vdmUpCiYjNDM7CQlwaHlkZXYtJmd0O2Rydi0mZ3Q7cmVtb3ZlKHBoeWRldik7CiAKJiM0MztvdXRfcmVzZXQ6CiAJLyogUmUtYXNzZXJ0IHRoZSByZXNldCBzaWduYWwgb24gZXJyb3IgKi8KIAlwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7CiAKQEAgLTM4NDAsOSAmIzQzOzM4NzgsNyBAQCBzdGF0aWMgaW50IHBoeV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQogCiAJcGh5ZGV2LSZndDtzdGF0ZSA9IFBIWV9ET1dOOwogCi0Jc2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LSZndDtzZnBfYnVzKTsKLQlwaHlkZXYtJmd0O3NmcF9idXMgPSBOVUxMOwotCiYjNDM7CXBoeV9zZnBfcmVsZWFzZShwaHlkZXYpOwogCXBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7CiAKIAlpZiAocGh5ZGV2LSZndDtkcnYgJmFtcDsmYW1wOyBwaHlkZXYtJmd0O2Rydi0mZ3Q7cmVtb3ZlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMKaW5kZXggNGViNzcxNmJiOWQ2Yy4uZmY2ZTUxODM5NWJlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jCkBAIC0xMjYsNiAmIzQzOzEyNiw3IEBAIGludCBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpCiAJd2hpbGUgKGktLSkKIAkJcGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoJmFtcDtwaHktJmd0O3BoeV9sZWRfdHJpZ2dlcnNbaV0pOwogCWtmcmVlKHBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2Vycyk7CiYjNDM7CXBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2VycyA9IE5VTEw7CiBvdXRfdW5yZWdfbGluazoKIAlwaHlfbGVkX3RyaWdnZXJfdW5yZWdpc3RlcihwaHktJmd0O2xlZF9saW5rX3RyaWdnZXIpOwogb3V0X2ZyZWVfbGluazoKQEAgLTE0MSwxMCAmIzQzOzE0MiwxMiBAQCB2b2lkIHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KQogewogCWludCBpOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IHBoeS0mZ3Q7cGh5X251bV9sZWRfdHJpZ2dlcnM7IGkmIzQzOyYjNDM7KQotCQlwaHlfbGVkX3RyaWdnZXJfdW5yZWdpc3RlcigmYW1wO3BoeS0mZ3Q7cGh5X2xlZF90cmlnZ2Vyc1tpXSk7Ci0Ja2ZyZWUocGh5LSZndDtwaHlfbGVkX3RyaWdnZXJzKTsKLQlwaHktJmd0O3BoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMOwomIzQzOwlpZiAocGh5LSZndDtwaHlfbGVkX3RyaWdnZXJzKSB7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgcGh5LSZndDtwaHlfbnVtX2xlZF90cmlnZ2VyczsgaSYjNDM7JiM0MzspCiYjNDM7CQkJcGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoJmFtcDtwaHktJmd0O3BoeV9sZWRfdHJpZ2dlcnNbaV0pOwomIzQzOwkJa2ZyZWUocGh5LSZndDtwaHlfbGVkX3RyaWdnZXJzKTsKJiM0MzsJCXBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2VycyA9IE5VTEw7CiYjNDM7CX0KIAogCWlmIChwaHktJmd0O2xlZF9saW5rX3RyaWdnZXIpIHsKIAkJcGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIocGh5LSZndDtsZWRfbGlua190cmlnZ2VyKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzUKCQkJCQkJCW91dHB1dDogMjE3CgkJCQkJCQl0aG91Z2h0czogNDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgYWZ0ZXIgcmV2aWV3aW5nIHRoaXMgcGF0Y2gsIG15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0JiMzOTtzIGZvY3VzaW5nIG9uICpyb2J1c3RuZXNzKiBhbmQgKmNsZWFubGluZXNzKiB3aXRoaW4gdGhlIFBIWSBkcml2ZXIgY29kZS4gSXQmIzM5O3MgdG91Y2hpbmcgYHBoeV9kZXZpY2UuY2AgYW5kIGBwaHlfbGVkX3RyaWdnZXJzLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBwb3RlbnRpYWwgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkmIzM5O20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uLgoKVGhlIGNvcmUgY2hhbmdlcyBhcmUgY29uY2VudHJhdGVkIGFyb3VuZCBmaXhpbmcgZXJyb3IgaGFuZGxpbmcgcm91dGluZXMuIFNwZWNpZmljYWxseSwgYHBoeV9zZnBfcHJvYmVgLCBgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnRgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9wcm9iZWAsIGFuZCBgcGh5X3JlbW92ZWAgaGF2ZSBhbGwgYmVlbiB0b3VjaGVkIHVwLiBUaGUgZ29hbCBoZXJlIGlzIHRvIHBsdWcgcG90ZW50aWFsIHJlc291cmNlIGxlYWtzLCBwcmV2ZW50IHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcywgYW5kIGF2b2lkIHRob3NlIGRyZWFkZWQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyB0aGF0IGNhbiBjYXVzZSBpbnN0YWJpbGl0eS4gQSBrZXkgYWRkaXRpb24gaXMgYHBoeV9zZnBfcmVsZWFzZWAsIHdoaWNoIHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgY2xlYW4tdXAgb2YgU0ZQIHJlc291cmNlcy4gVGhlIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgIGNoYW5nZSBsb29rcyBsaWtlIGEgc2FmZXR5IG5ldDogdmVyaWZ5aW5nIHRoZSBleGlzdGVuY2Ugb2YgYHBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2Vyc2AgYmVmb3JlIGZyZWVpbmcgaXQgYXZvaWRzIGEgcG90ZW50aWFsIGRvdWJsZS1mcmVlIGlzc3VlLgoKSSBzZWUgbm8gZXZpZGVuY2UgdGhhdCB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIG5ldyBzdHJ1Y3R1cmVzIGV4cG9zZWQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IHJpc2tzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvciBhbnkgaW5mb3JtYXRpb24gbGVha3MuIFRoZXNlIGFyZSBzb2xpZCBjb2RpbmcgcHJhY3RpY2VzLgoKTGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIGluZGl2aWR1YWwgY2hhbmdlczoKCiogICBgcGh5X3NmcF9wcm9iZWA6IEVuc3VyZXMgYHBoeWRldi0mZ3Q7c2ZwX2J1c2AgaXMgY2xlYW5lZCB1cCBpZiBgcGh5X3NldHVwX3NmcF9wb3J0YCBmYWlscy4KKiAgIGBwaHlfc2ZwX3JlbGVhc2VgOiBBIG5lY2Vzc2FyeSBhZGRpdGlvbiBmb3IgcHJvcGVyIFNGUCByZXNvdXJjZSByZWxlYXNlLgoqICAgYHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0YDogTm93IGRlc3Ryb3lzIHRoZSBwb3J0IGlmIGBwaHlfYWRkX3BvcnRgIGZhaWxzLgoqICAgYHBoeV9zZXR1cF9wb3J0c2A6IEltcHJvdmVkIGVycm9yIGxhYmVscyBhbmQgY2xlYW51cCBwcm9jZWR1cmVzLgoqICAgYHBoeV9wcm9iZWA6IEVuaGFuY2VkIGVycm9yIGxhYmVscyBhbmQgY2xlYW51cCBwcm9jZWR1cmVzLCBsaWtlIGBvdXRfdW5yZWdfbGVkX3RyaWdnZXJzYCwgYG91dF9zZnBfcmVsZWFzZWAsIGBvdXRfcmVtb3ZlYCwgYW5kIGBvdXRfcmVzZXRgLgoqICAgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgOiBDbGVhcnMgYHBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2Vyc2AgYWZ0ZXIgZnJlZWluZyBpdC4KKiAgIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgOiBDaGVja3MgaWYgYHBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2Vyc2AgaXMgbm9uLU5VTEwgYmVmb3JlIGZyZWVpbmcsIHdoaWNoIGlzIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nLgoKR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGVzZSBtb2RpZmljYXRpb25zLCBzcGVjaWZpY2FsbHkgdGhlIGxhY2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgYW55IGluZm9ybWF0aW9uIGxlYWtzLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC4gU3RhbmRhcmQgZGVidWdnaW5nIHRvb2xzLCBwYXJ0aWN1bGFybHkgS0FTQU4gYW5kIGttZW1sZWFrLCBhcmUgcGVyZmVjdGx5IHN1ZmZpY2llbnQgZm9yIGlkZW50aWZ5aW5nIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUgZXJyb3JzLCBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyB3aXRoaW4gdGhpcyBwYXRjaC4gS01TQU4gaXMgbm90IG5lY2Vzc2FyeSBoZXJlLiBUaGlzIGlzIGEgZ29vZCBleGFtcGxlIG9mIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBhbmQgaW1wcm92ZWQgZXJyb3IgaGFuZGxpbmcsIHdoaWNoIHNob3VsZCBlbmhhbmNlIHRoZSBkcml2ZXImIzM5O3MgcmVsaWFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZvY3VzZXMgb24gZml4aW5nIGVycm9yIGhhbmRsaW5nIHBhdGhzIGFuZCByZXNvdXJjZSBjbGVhbnVwIGluIHRoZSBQSFkgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsIHJvdXRpbmVzIChlLmcuLCBgcGh5X3Byb2JlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfc2ZwX3Byb2JlYCkuIEl0IGFkZHJlc3NlcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSwgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYnkgZW5zdXJpbmcgdGhhdCByZXNvdXJjZXMgbGlrZSBTRlAgYnVzZXMsIFBIWSBwb3J0cywgYW5kIExFRCB0cmlnZ2VycyBhcmUgcHJvcGVybHkgcmVsZWFzZWQgb3IgdW5yZWdpc3RlcmVkIHdoZW4gaW5pdGlhbGl6YXRpb24gZmFpbHMuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMgc3VjaCBhcyBLQVNBTiAoZm9yIHVzZS1hZnRlci1mcmVlIGFuZCBvdXQtb2YtYm91bmRzKSwga21lbWxlYWsgKGZvciBtZW1vcnkgbGVha3MpLCBhbmQgZ2VuZXJhbCBrZXJuZWwgb29wcy9wYW5pY3MgKGZvciBOVUxMIGRlcmVmZXJlbmNlcykuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgY29tcGxleCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiYjMzk7cyBzcGVjaWFsaXplZCB1bmluaXRpYWxpemVkIG1lbW9yeSB0cmFja2luZy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZvY3VzZXMgb24gZml4aW5nIGVycm9yIGhhbmRsaW5nIHBhdGhzIGFuZCByZXNvdXJjZSBjbGVhbnVwIGluIHRoZSBQSFkgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsIHJvdXRpbmVzIChlLmcuLCBgcGh5X3Byb2JlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfc2ZwX3Byb2JlYCkuIEl0IGFkZHJlc3NlcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSwgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYnkgZW5zdXJpbmcgdGhhdCByZXNvdXJjZXMgbGlrZSBTRlAgYnVzZXMsIFBIWSBwb3J0cywgYW5kIExFRCB0cmlnZ2VycyBhcmUgcHJvcGVybHkgcmVsZWFzZWQgb3IgdW5yZWdpc3RlcmVkIHdoZW4gaW5pdGlhbGl6YXRpb24gZmFpbHMuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMgc3VjaCBhcyBLQVNBTiAoZm9yIHVzZS1hZnRlci1mcmVlIGFuZCBvdXQtb2YtYm91bmRzKSwga21lbWxlYWsgKGZvciBtZW1vcnkgbGVha3MpLCBhbmQgZ2VuZXJhbCBrZXJuZWwgb29wcy9wYW5pY3MgKGZvciBOVUxMIGRlcmVmZXJlbmNlcykuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgY29tcGxleCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiYjMzk7cyBzcGVjaWFsaXplZCB1bmluaXRpYWxpemVkIG1lbW9yeSB0cmFja2luZy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6Mzk6NDYuNjYwMTgzNDM2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwMjIxMTA4MDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiU0ZQXCIsXG4gICAgXCJVU0JfTkVUX0RSSVZFUlNcIixcbiAgICBcIlVTQl9ORVRfU01TQzk1WFhcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJMRURfVFJJR0dFUl9QSFlcIixcbiAgICBcIlBIWUxJQl9MRURTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X3Byb2JlXCIsXG4gICAgXCJwaHlfcmVtb3ZlXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZvY3VzZXMgb24gZml4aW5nIGVycm9yIGhhbmRsaW5nIHBhdGhzIGFuZCByZXNvdXJjZSBjbGVhbnVwIGluIHRoZSBQSFkgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsIHJvdXRpbmVzIChlLmcuLCBgcGh5X3Byb2JlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfc2ZwX3Byb2JlYCkuIEl0IGFkZHJlc3NlcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSwgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYnkgZW5zdXJpbmcgdGhhdCByZXNvdXJjZXMgbGlrZSBTRlAgYnVzZXMsIFBIWSBwb3J0cywgYW5kIExFRCB0cmlnZ2VycyBhcmUgcHJvcGVybHkgcmVsZWFzZWQgb3IgdW5yZWdpc3RlcmVkIHdoZW4gaW5pdGlhbGl6YXRpb24gZmFpbHMuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMgc3VjaCBhcyBLQVNBTiAoZm9yIHVzZS1hZnRlci1mcmVlIGFuZCBvdXQtb2YtYm91bmRzKSwga21lbWxlYWsgKGZvciBtZW1vcnkgbGVha3MpLCBhbmQgZ2VuZXJhbCBrZXJuZWwgb29wcy9wYW5pY3MgKGZvciBOVUxMIGRlcmVmZXJlbmNlcykuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgY29tcGxleCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTidzIHNwZWNpYWxpemVkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRyYWNraW5nLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHJlc291cmNlIGxlYWtzIGFuZCBlcnJvciBoYW5kbGluZyBwYXRocyBpbiB0aGUgUEhZIGRldmljZSBwcm9iZSBhbmQgcmVtb3ZhbCByb3V0aW5lcyAoYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfc2ZwX3Byb2JlYCkgYW5kIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBjb3JlIFBIWSBsaWJyYXJ5IChgcGh5bGliYCkgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgZW11bGF0ZWQgVVNCIG5ldHdvcmsgYWRhcHRlcnMgKGUuZy4sIGBzbXNjOTV4eGAsIGBsYW43OHh4YCkgdGhhdCByZWdpc3RlciBNRElPIGJ1c2VzIGFuZCBQSFkgZGV2aWNlcy4gRnV6emluZyB0aGVzZSBwYXRocyBpcyB2YWx1YWJsZSB0byBlbnN1cmUgcm9idXN0bmVzcyBvZiBQSFkgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93bi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6Mzk6NDYuNjYwMTk0NTM2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzAzNzE1NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MzlkMjlmYTJjMzc5MzNkYmFhNjRmZmQ4MTY5MGU2MTg5NGViZWNmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDIxIDA3OjM5OjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuaW5kZXggOTRiMmU4NWUwMGEzNy4uOGNiMGQ2MGZjYmJhOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbkBAIC0xNzIzLDEyICsxNzIzLDQxIEBAIHN0YXRpYyBpbnQgcGh5X3NmcF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZXNmcF9idXMpXFxuK1xcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IHBoeWRldi1cXHUwMDNlc2ZwX2J1cykge1xcbiBcXHRcXHRyZXQgPSBwaHlfc2V0dXBfc2ZwX3BvcnQocGh5ZGV2KTtcXG4rXFx0XFx0aWYgKHJldCkge1xcbitcXHRcXHRcXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXFx1MDAzZXNmcF9idXMpO1xcbitcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBwaHlfc2ZwX3JlbGVhc2UgLSByZWxlYXNlIHJlc291cmNlcyBzZXQgdXAgYnkgcGh5X3NmcF9wcm9iZSgpXFxuKyAqIEBwaHlkZXY6IHRoZSBQSFkgZGV2aWNlXFxuKyAqXFxuKyAqIFJlbGVhc2UgdGhlIFNGUCByZXNvdXJjZXMgc2V0IHVwIGJ5IGEgc3VjY2Vzc2Z1bCBwaHlfc2ZwX3Byb2JlKCkuIFVucmVnaXN0ZXJcXG4rICogdGhlIHVwc3RyZWFtIGJlZm9yZSBkZXN0cm95aW5nIGl0cyBwaHlfcG9ydCwgc28gU0ZQIHVwc3RyZWFtIGNhbGxiYWNrcyBjYW5ub3RcXG4rICogcmFjZSB3aXRoIHBvcnQgZGVzdHJ1Y3Rpb24uXFxuKyAqL1xcbitzdGF0aWMgdm9pZCBwaHlfc2ZwX3JlbGVhc2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQsICp0bXA7XFxuK1xcbitcXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXFx1MDAzZXNmcF9idXMpO1xcbitcXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbitcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcnQsIHRtcCwgXFx1MDAyNnBoeWRldi1cXHUwMDNlcG9ydHMsIGhlYWQpIHtcXG4rXFx0XFx0aWYgKCFwb3J0LVxcdTAwM2Vpc19zZnApXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0cGh5X2RlbF9wb3J0KHBoeWRldiwgcG9ydCk7XFxuK1xcdFxcdHBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcXG4ge1xcbiBcXHRyZXR1cm4gcGh5ZHJ2LVxcdTAwM2Vjb25maWdfaW50ciBcXHUwMDI2XFx1MDAyNiBwaHlkcnYtXFx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XFxuQEAgLTM0NTQsNiArMzQ4Myw3IEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQgPSBwaHlfcG9ydF9hbGxvYygpO1xcbiBcXHR1bnNpZ25lZCBsb25nIG1vZGU7XFxuK1xcdGludCByZXQ7XFxuIFxcbiBcXHRpZiAoIXBvcnQpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbkBAIC0zNDgwLDkgKzM1MTAsMTEgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHRcXHRwb3J0LVxcdTAwM2VwYWlycyA9IG1heF90KGludCwgcG9ydC1cXHUwMDNlcGFpcnMsXFxuIFxcdFxcdFxcdFxcdCAgICBldGh0b29sX2xpbmttb2RlX25fcGFpcnMobW9kZSkpO1xcbiBcXG4tXFx0cGh5X2FkZF9wb3J0KHBoeWRldiwgcG9ydCk7XFxuK1xcdHJldCA9IHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRwaHlfcG9ydF9kZXN0cm95KHBvcnQpO1xcbiBcXG4tXFx0cmV0dXJuIDA7XFxuK1xcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgb2ZfcGh5X3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuQEAgLTM1NDcsMTMgKzM1NzksMTMgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcXG4gXFx0XFx0cmV0ID0gcGh5X3NmcF9wcm9iZShwaHlkZXYpO1xcbiBcXHRcXHRpZiAocmV0KVxcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0XFx0Z290byBlcnJfcG9ydHM7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChwaHlkZXYtXFx1MDAzZW5fcG9ydHMgXFx1MDAzYyBwaHlkZXYtXFx1MDAzZW1heF9uX3BvcnRzKSB7XFxuIFxcdFxcdHJldCA9IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHBoeWRldik7XFxuIFxcdFxcdGlmIChyZXQpXFxuLVxcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHRcXHRnb3RvIGVycl9zZnA7XFxuIFxcdH1cXG4gXFxuIFxcdGxpbmttb2RlX3plcm8ocG9ydHNfc3VwcG9ydGVkKTtcXG5AQCAtMzU4MCw3ICszNjEyLDkgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFxuIFxcdHJldHVybiAwO1xcbiBcXG4tb3V0OlxcbitlcnJfc2ZwOlxcbitcXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcXG4rZXJyX3BvcnRzOlxcbiBcXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuQEAgLTM3MDYsNyArMzc0MCw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0aWYgKHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2Vwcm9iZSkge1xcbiBcXHRcXHRlcnIgPSBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcHJvYmUocGh5ZGV2KTtcXG4gXFx0XFx0aWYgKGVycilcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdGdvdG8gb3V0X3Jlc2V0O1xcbiBcXHR9XFxuIFxcbiBcXHRwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7XFxuQEAgLTM3MjcsNyArMzc2MSw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0XFx0ZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XFxuIFxcbiBcXHRpZiAoZXJyKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0Z290byBvdXRfcmVtb3ZlO1xcbiBcXG4gXFx0aWYgKCFsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCxcXG4gXFx0XFx0XFx0ICAgICAgIHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkKSlcXG5AQCAtMzc0NCw3ICszNzc4LDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXG4gXFx0ZXJyID0gcGh5X3NldHVwX3BvcnRzKHBoeWRldik7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHRnb3RvIG91dF9yZW1vdmU7XFxuIFxcbiBcXHRwaHlfYWR2ZXJ0aXNlX3N1cHBvcnRlZChwaHlkZXYpO1xcbiBcXG5AQCAtMzc1Myw3ICszNzg3LDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHQgKi9cXG4gXFx0ZXJyID0gZ2VucGh5X2M0NV9yZWFkX2VlZV9hZHYocGh5ZGV2LCBwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nX2VlZSk7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHRnb3RvIG91dF9zZnBfcmVsZWFzZTtcXG4gXFxuIFxcdC8qIEdldCB0aGUgRUVFIG1vZGVzIHdlIHdhbnQgdG8gcHJvaGliaXQuICovXFxuIFxcdG9mX3NldF9waHlfZWVlX2Jyb2tlbihwaHlkZXYpO1xcbkBAIC0zNzkzLDkgKzM4MjcsNiBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdFxcdFxcdFxcdCBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCk7XFxuIFxcdH1cXG4gXFxuLVxcdC8qIFNldCB0aGUgc3RhdGUgdG8gUkVBRFkgYnkgZGVmYXVsdCAqL1xcbi1cXHRwaHlkZXYtXFx1MDAzZXN0YXRlID0gUEhZX1JFQURZO1xcbi1cXG4gXFx0LyogUmVnaXN0ZXIgdGhlIFBIWSBMRUQgdHJpZ2dlcnMgKi9cXG4gXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXFxuIFxcdFxcdHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXIocGh5ZGV2KTtcXG5AQCAtMzgwNiwyMCArMzgzNywyNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXFx1MDAyNlxcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHtcXG4gXFx0XFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcXG4gXFx0XFx0aWYgKGVycilcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdGdvdG8gb3V0X3VucmVnX2xlZF90cmlnZ2VycztcXG4gXFx0fVxcbiBcXG4rXFx0LyogU2V0IHRoZSBzdGF0ZSB0byBSRUFEWSBieSBkZWZhdWx0ICovXFxuK1xcdHBoeWRldi1cXHUwMDNlc3RhdGUgPSBQSFlfUkVBRFk7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuLW91dDpcXG4tXFx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVxcdTAwM2VzZnBfYnVzKTtcXG4tXFx0cGh5ZGV2LVxcdTAwM2VzZnBfYnVzID0gTlVMTDtcXG4rb3V0X3VucmVnX2xlZF90cmlnZ2VyczpcXG4rXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXFxuK1xcdFxcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xcbiBcXG4rb3V0X3NmcF9yZWxlYXNlOlxcbitcXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcXG4gXFx0cGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTtcXG4gXFxuLVxcdGlmICghcGh5ZGV2LVxcdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxcbi1cXHRcXHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcXG4rb3V0X3JlbW92ZTpcXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VyZW1vdmUpXFxuK1xcdFxcdHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VyZW1vdmUocGh5ZGV2KTtcXG4gXFxuK291dF9yZXNldDpcXG4gXFx0LyogUmUtYXNzZXJ0IHRoZSByZXNldCBzaWduYWwgb24gZXJyb3IgKi9cXG4gXFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xcbiBcXG5AQCAtMzg0MCw5ICszODc4LDcgQEAgc3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFxuIFxcdHBoeWRldi1cXHUwMDNlc3RhdGUgPSBQSFlfRE9XTjtcXG4gXFxuLVxcdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cXHUwMDNlc2ZwX2J1cyk7XFxuLVxcdHBoeWRldi1cXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XFxuLVxcbitcXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcXG4gXFx0cGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTtcXG4gXFxuIFxcdGlmIChwaHlkZXYtXFx1MDAzZWRydiBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcmVtb3ZlKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY1xcbmluZGV4IDRlYjc3MTZiYjlkNmMuLmZmNmU1MTgzOTViZTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmNcXG5AQCAtMTI2LDYgKzEyNiw3IEBAIGludCBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXFxuIFxcdHdoaWxlIChpLS0pXFxuIFxcdFxcdHBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKFxcdTAwMjZwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xcbiBcXHRrZnJlZShwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xcbitcXHRwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMO1xcbiBvdXRfdW5yZWdfbGluazpcXG4gXFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIocGh5LVxcdTAwM2VsZWRfbGlua190cmlnZ2VyKTtcXG4gb3V0X2ZyZWVfbGluazpcXG5AQCAtMTQxLDEwICsxNDIsMTIgQEAgdm9pZCBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwaHktXFx1MDAzZXBoeV9udW1fbGVkX3RyaWdnZXJzOyBpKyspXFxuLVxcdFxcdHBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKFxcdTAwMjZwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xcbi1cXHRrZnJlZShwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xcbi1cXHRwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMO1xcbitcXHRpZiAocGh5LVxcdTAwM2VwaHlfbGVkX3RyaWdnZXJzKSB7XFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwaHktXFx1MDAzZXBoeV9udW1fbGVkX3RyaWdnZXJzOyBpKyspXFxuK1xcdFxcdFxcdHBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKFxcdTAwMjZwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xcbitcXHRcXHRrZnJlZShwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xcbitcXHRcXHRwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAocGh5LVxcdTAwM2VsZWRfbGlua190cmlnZ2VyKSB7XFxuIFxcdFxcdHBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKHBoeS1cXHUwMDNlbGVkX2xpbmtfdHJpZ2dlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjM5OjQ3LjEzMTQyMTQ0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjg5NjQyNjcwNTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiU0ZQXCIsXG4gICAgXCJVU0JfTkVUX0RSSVZFUlNcIixcbiAgICBcIlVTQl9ORVRfU01TQzk1WFhcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJMRURfVFJJR0dFUl9QSFlcIixcbiAgICBcIlBIWUxJQl9MRURTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X3Byb2JlXCIsXG4gICAgXCJwaHlfcmVtb3ZlXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyByZXNvdXJjZSBsZWFrcyBhbmQgZXJyb3IgaGFuZGxpbmcgcGF0aHMgaW4gdGhlIFBIWSBkZXZpY2UgcHJvYmUgYW5kIHJlbW92YWwgcm91dGluZXMgKGBwaHlfcHJvYmVgLCBgcGh5X3JlbW92ZWAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3NmcF9wcm9iZWApIGFuZCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgY29yZSBQSFkgbGlicmFyeSAoYHBoeWxpYmApIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGVtdWxhdGVkIFVTQiBuZXR3b3JrIGFkYXB0ZXJzIChlLmcuLCBgc21zYzk1eHhgLCBgbGFuNzh4eGApIHRoYXQgcmVnaXN0ZXIgTURJTyBidXNlcyBhbmQgUEhZIGRldmljZXMuIEZ1enppbmcgdGhlc2UgcGF0aHMgaXMgdmFsdWFibGUgdG8gZW5zdXJlIHJvYnVzdG5lc3Mgb2YgUEhZIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQzOWQyOWZhMmMzNzkzM2RiYWE2NGZmZDgxNjkwZTYxODk0ZWJlY2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAwNzozOTo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li44Y2IwZDYwZmNiYmE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTE3MjMsMTIgKzE3MjMsNDEgQEAgc3RhdGljIGludCBwaHlfc2ZwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdFx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuIFx0fVxuIFxuLVx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VzZnBfYnVzKVxuK1x0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VzZnBfYnVzKSB7XG4gXHRcdHJldCA9IHBoeV9zZXR1cF9zZnBfcG9ydChwaHlkZXYpO1xuK1x0XHRpZiAocmV0KSB7XG4rXHRcdFx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuK1x0XHRcdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbitcdFx0fVxuK1x0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rLyoqXG4rICogcGh5X3NmcF9yZWxlYXNlIC0gcmVsZWFzZSByZXNvdXJjZXMgc2V0IHVwIGJ5IHBoeV9zZnBfcHJvYmUoKVxuKyAqIEBwaHlkZXY6IHRoZSBQSFkgZGV2aWNlXG4rICpcbisgKiBSZWxlYXNlIHRoZSBTRlAgcmVzb3VyY2VzIHNldCB1cCBieSBhIHN1Y2Nlc3NmdWwgcGh5X3NmcF9wcm9iZSgpLiBVbnJlZ2lzdGVyXG4rICogdGhlIHVwc3RyZWFtIGJlZm9yZSBkZXN0cm95aW5nIGl0cyBwaHlfcG9ydCwgc28gU0ZQIHVwc3RyZWFtIGNhbGxiYWNrcyBjYW5ub3RcbisgKiByYWNlIHdpdGggcG9ydCBkZXN0cnVjdGlvbi5cbisgKi9cbitzdGF0aWMgdm9pZCBwaHlfc2ZwX3JlbGVhc2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQsICp0bXA7XG4rXG4rXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4rXHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4rXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9ydCwgdG1wLCBcdTAwMjZwaHlkZXYtXHUwMDNlcG9ydHMsIGhlYWQpIHtcbitcdFx0aWYgKCFwb3J0LVx1MDAzZWlzX3NmcClcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0cGh5X2RlbF9wb3J0KHBoeWRldiwgcG9ydCk7XG4rXHRcdHBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXG4ge1xuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG5AQCAtMzQ1NCw2ICszNDgzLDcgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdHN0cnVjdCBwaHlfcG9ydCAqcG9ydCA9IHBoeV9wb3J0X2FsbG9jKCk7XG4gXHR1bnNpZ25lZCBsb25nIG1vZGU7XG4rXHRpbnQgcmV0O1xuIFxuIFx0aWYgKCFwb3J0KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbkBAIC0zNDgwLDkgKzM1MTAsMTEgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHRwb3J0LVx1MDAzZXBhaXJzID0gbWF4X3QoaW50LCBwb3J0LVx1MDAzZXBhaXJzLFxuIFx0XHRcdFx0ICAgIGV0aHRvb2xfbGlua21vZGVfbl9wYWlycyhtb2RlKSk7XG4gXG4tXHRwaHlfYWRkX3BvcnQocGh5ZGV2LCBwb3J0KTtcbitcdHJldCA9IHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpO1xuK1x0aWYgKHJldClcbitcdFx0cGh5X3BvcnRfZGVzdHJveShwb3J0KTtcbiBcbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGludCBvZl9waHlfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbkBAIC0zNTQ3LDEzICszNTc5LDEzIEBAIHN0YXRpYyBpbnQgcGh5X3NldHVwX3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XG4gXHRcdHJldCA9IHBoeV9zZnBfcHJvYmUocGh5ZGV2KTtcbiBcdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIG91dDtcbitcdFx0XHRnb3RvIGVycl9wb3J0cztcbiBcdH1cbiBcbiBcdGlmIChwaHlkZXYtXHUwMDNlbl9wb3J0cyBcdTAwM2MgcGh5ZGV2LVx1MDAzZW1heF9uX3BvcnRzKSB7XG4gXHRcdHJldCA9IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHBoeWRldik7XG4gXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0Z290byBlcnJfc2ZwO1xuIFx0fVxuIFxuIFx0bGlua21vZGVfemVybyhwb3J0c19zdXBwb3J0ZWQpO1xuQEAgLTM1ODAsNyArMzYxMiw5IEBAIHN0YXRpYyBpbnQgcGh5X3NldHVwX3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1vdXQ6XG4rZXJyX3NmcDpcbitcdHBoeV9zZnBfcmVsZWFzZShwaHlkZXYpO1xuK2Vycl9wb3J0czpcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbkBAIC0zNzA2LDcgKzM3NDAsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydi1cdTAwM2Vwcm9iZSkge1xuIFx0XHRlcnIgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXByb2JlKHBoeWRldik7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0Z290byBvdXRfcmVzZXQ7XG4gXHR9XG4gXG4gXHRwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7XG5AQCAtMzcyNyw3ICszNzYxLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRlcnIgPSBnZW5waHlfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcbiBcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuK1x0XHRnb3RvIG91dF9yZW1vdmU7XG4gXG4gXHRpZiAoIWxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULFxuIFx0XHRcdCAgICAgICBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKSlcbkBAIC0zNzQ0LDcgKzM3NzgsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXG4gXHRlcnIgPSBwaHlfc2V0dXBfcG9ydHMocGh5ZGV2KTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuK1x0XHRnb3RvIG91dF9yZW1vdmU7XG4gXG4gXHRwaHlfYWR2ZXJ0aXNlX3N1cHBvcnRlZChwaHlkZXYpO1xuIFxuQEAgLTM3NTMsNyArMzc4Nyw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdCAqL1xuIFx0ZXJyID0gZ2VucGh5X2M0NV9yZWFkX2VlZV9hZHYocGh5ZGV2LCBwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuK1x0XHRnb3RvIG91dF9zZnBfcmVsZWFzZTtcbiBcbiBcdC8qIEdldCB0aGUgRUVFIG1vZGVzIHdlIHdhbnQgdG8gcHJvaGliaXQuICovXG4gXHRvZl9zZXRfcGh5X2VlZV9icm9rZW4ocGh5ZGV2KTtcbkBAIC0zNzkzLDkgKzM4MjcsNiBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdFx0XHQgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCk7XG4gXHR9XG4gXG4tXHQvKiBTZXQgdGhlIHN0YXRlIHRvIFJFQURZIGJ5IGRlZmF1bHQgKi9cbi1cdHBoeWRldi1cdTAwM2VzdGF0ZSA9IFBIWV9SRUFEWTtcbi1cbiBcdC8qIFJlZ2lzdGVyIHRoZSBQSFkgTEVEIHRyaWdnZXJzICovXG4gXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuIFx0XHRwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyKHBoeWRldik7XG5AQCAtMzgwNiwyMCArMzgzNywyNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZTElCX0xFRFMpIFx1MDAyNlx1MDAyNiAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkge1xuIFx0XHRlcnIgPSBvZl9waHlfbGVkcyhwaHlkZXYpO1xuIFx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdGdvdG8gb3V0X3VucmVnX2xlZF90cmlnZ2VycztcbiBcdH1cbiBcbitcdC8qIFNldCB0aGUgc3RhdGUgdG8gUkVBRFkgYnkgZGVmYXVsdCAqL1xuK1x0cGh5ZGV2LVx1MDAzZXN0YXRlID0gUEhZX1JFQURZO1xuK1xuIFx0cmV0dXJuIDA7XG4gXG4tb3V0OlxuLVx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuLVx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuK291dF91bnJlZ19sZWRfdHJpZ2dlcnM6XG4rXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuK1x0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbiBcbitvdXRfc2ZwX3JlbGVhc2U6XG4rXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXG4tXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuLVx0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbitvdXRfcmVtb3ZlOlxuK1x0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKVxuK1x0XHRwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZShwaHlkZXYpO1xuIFxuK291dF9yZXNldDpcbiBcdC8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4gXG5AQCAtMzg0MCw5ICszODc4LDcgQEAgc3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcbiBcdHBoeWRldi1cdTAwM2VzdGF0ZSA9IFBIWV9ET1dOO1xuIFxuLVx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuLVx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuLVxuK1x0cGh5X3NmcF9yZWxlYXNlKHBoeWRldik7XG4gXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VkcnYgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jXG5pbmRleCA0ZWI3NzE2YmI5ZDZjLi5mZjZlNTE4Mzk1YmUwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY1xuQEAgLTEyNiw2ICsxMjYsNyBAQCBpbnQgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuIFx0d2hpbGUgKGktLSlcbiBcdFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoXHUwMDI2cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xuIFx0a2ZyZWUocGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xuK1x0cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMO1xuIG91dF91bnJlZ19saW5rOlxuIFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIocGh5LVx1MDAzZWxlZF9saW5rX3RyaWdnZXIpO1xuIG91dF9mcmVlX2xpbms6XG5AQCAtMTQxLDEwICsxNDIsMTIgQEAgdm9pZCBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbiB7XG4gXHRpbnQgaTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBoeS1cdTAwM2VwaHlfbnVtX2xlZF90cmlnZ2VyczsgaSsrKVxuLVx0XHRwaHlfbGVkX3RyaWdnZXJfdW5yZWdpc3RlcihcdTAwMjZwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vyc1tpXSk7XG4tXHRrZnJlZShwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vycyk7XG4tXHRwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2VycyA9IE5VTEw7XG4rXHRpZiAocGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpIHtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGh5LVx1MDAzZXBoeV9udW1fbGVkX3RyaWdnZXJzOyBpKyspXG4rXHRcdFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoXHUwMDI2cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xuK1x0XHRrZnJlZShwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vycyk7XG4rXHRcdHBoeS1cdTAwM2VwaHlfbGVkX3RyaWdnZXJzID0gTlVMTDtcbitcdH1cbiBcbiBcdGlmIChwaHktXHUwMDNlbGVkX2xpbmtfdHJpZ2dlcikge1xuIFx0XHRwaHlfbGVkX3RyaWdnZXJfdW5yZWdpc3RlcihwaHktXHUwMDNlbGVkX2xpbmtfdHJpZ2dlcik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzozOTo0Ny4xMzE0MjI5NzdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzQ4OTkzNDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBIWSBEZXZpY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmNgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBuZXR3b3JraW5nLXJlbGF0ZWQgZml4LCB3aGljaCBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0by4gSXQgbG9va3MgbGlrZSBpdCdzIGFkZHJlc3NpbmcgcmVzb3VyY2UgbGVha3MgYW5kIGltcHJvdmluZyBlcnJvciBoYW5kbGluZyBpbiBzZXZlcmFsIGtleSBQSFkgZnVuY3Rpb25zOiBgcGh5X3NmcF9wcm9iZWAsIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3Byb2JlYCwgYW5kIGBwaHlfcmVtb3ZlYC4gR29vZCwgdGhvc2UgYXJlIGNyaXRpY2FsIGVudHJ5IGFuZCBleGl0IHBvaW50cy4gQWRkaW5nIGEgbmV3IGBwaHlfc2ZwX3JlbGVhc2VgIGZ1bmN0aW9uIGlzIGEgbm90YWJsZSBhZGRpdGlvbiBhcyB3ZWxsIOKAkyBzb3VuZHMgbGlrZSBpdCdzIHBhcnQgb2YgdGhlIGNsZWFudXAgcHJvY2VkdXJlcyBmb3IgdGhlIFNGUCBmdW5jdGlvbmFsaXR5LlxuXG5UaGUgY2hhbmdlcyBpbiBgcGh5X2xlZF90cmlnZ2Vycy5jYCBhcmUgcGFydGljdWxhcmx5IGludGVyZXN0aW5nLiBUaGV5J3JlIHByZXZlbnRpbmcgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgZG91YmxlIGZyZWVzLiBTZXR0aW5nIGBwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2VycyA9IE5VTExgIGFuZCBpbmNsdWRpbmcgYSBjaGVjayBiZWZvcmUgdW5yZWdpc3RlcmluZyBpcyB0aGUgcmlnaHQgYXBwcm9hY2ggdG8gZW5zdXJlIHRoZXJlJ3Mgbm8gZGFuZ2xpbmcgcG9pbnRlci4gU21hcnQsIGFuZCBhIGNvbW1vbiBwYXR0ZXJuIHRvIGF2b2lkIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBob3cgZWFzaWx5IGNhbiBJIHRyaWdnZXIgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBQSFkgZGV2aWNlcyBhcmUgZnVuZGFtZW50YWxseSBwYXJ0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJIGtub3cgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBjYW4gZW11bGF0ZSBuZXR3b3JrIGRldmljZXMsIGFuZCB0aG9zZSBlbXVsYXRlZCBkZXZpY2VzIG9mdGVuIHV0aWxpemUgUEhZcywgZXZlbiBpZiB0aGV5IGRvbid0ICpkaXJlY3RseSogdXNlIHRoZSBwaHlsaWIgQVBJLiBGb3IgZXhhbXBsZSwgZTEwMDAgYW5kIHZpcnRpby1uZXQgYXJlIGdvb2QgY2FuZGlkYXRlcy4gVGhvdWdoIHZpcnRpby1uZXQgdXN1YWxseSBkb2Vzbid0IG5lZWQgcGh5bGliLCB0aGVyZSBtYXkgYmUgc29tZSBlbXVsYXRlZCBkZXZpY2VzIHdoaWNoIHVzZSB0aGVtLCBvciBkdW1teSBQSFlzIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuXG5cbldhaXQgYSBzZWNvbmTigKYgYHBoeV9wcm9iZWAgaXMgY2FsbGVkIHdoZW4gYSBQSFkgZGV2aWNlIGlzIHByb2JlZC4gU28sIGl0IGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGZyb20gbWFueSBrZXJuZWwtc2lkZSBjb2RlIHBhdGhzLlxuXG5DYW4gSSBnZXQgdG8gYHBoeV9wcm9iZWAgdGhyb3VnaCBzeXprYWxsZXI/IFRoYXQncyB0aGUgcmVhbCB0ZXN0LiBTeXprYWxsZXIgY2FuIGdlbmVyYXRlIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIGxpa2UgdmV0aCwgdHVuLCBvciB1c2UgbmV0ZGV2c2ltIHdoaWNoIHZlcnkgd2VsbCBtaWdodCB1c2UgUEhZcy4gQWxzbywgdGhlIGBtZGlvYCBidXMgaXMgYSBrZXkgZWxlbWVudCB3aGljaCBpcyBmcmVxdWVudGx5IHBvcHVsYXRlZCBpbiB0ZXN0aW5nLiBZZXMsIEknbSBwcmV0dHkgc3VyZSBpdCBpcy4gQWxyaWdodCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBwaHlfcHJvYmVgIGlzLCBpbiBmYWN0LCByZWFjaGFibGUuIExldCBtZSBjaGVjayB0aGUgc3l6a2FsbGVyIGNvcnB1cyBhbmQgc29tZSBvZiBteSBwYXN0IHdvcmsgdG8gY29uZmlybSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjc4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6Mzk6NTMuODgwNDIwMTc1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDIzMzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzcxMT1FWFBPUlRfU1lNQk9MX0dQTChmd25vZGVfZ2V0X3BoeV9ub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzcxMy0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM3MTQ6ICogcGh5X3Byb2JlIC0gcHJvYmUgYW5kIGluaXQgYSBQSFkgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNzE1LSAqIEBkZXY6IGRldmljZSB0byBwcm9iZSBhbmQgaW5pdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNzE4LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzcxOTpzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNzIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzkwMD1zdGF0aWMgaW50IHBoeV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBoeV9kcml2ZXIgKm5ld19kcml2ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM5MjYtXFx0bmV3X2RyaXZlci1cXHUwMDNlbWRpb2Rydi5kcml2ZXIuYnVzID0gXFx1MDAyNm1kaW9fYnVzX3R5cGU7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozOTI3OlxcdG5ld19kcml2ZXItXFx1MDAzZW1kaW9kcnYuZHJpdmVyLnByb2JlID0gcGh5X3Byb2JlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzkyOC1cXHRuZXdfZHJpdmVyLVxcdTAwM2VtZGlvZHJ2LmRyaXZlci5yZW1vdmUgPSBwaHlfcmVtb3ZlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzozOTo1My45Mzc4NTE2ODlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzA5OTEyNDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1ESU8gQnVzIFByb2JlIENoYWxsZW5nZSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gdHJpZ2dlciBgcGh5X3Byb2JlYCBmb3IgYSBQSFkgZHJpdmVyIHVzaW5nIHN5emthbGxlci4gVGhlIGNvcmUgaXNzdWUgaXMgdGhhdCBNRElPIGJ1cyBkZXZpY2VzIGFyZSB1c3VhbGx5IGNyZWF0ZWQgdmlhIGRldmljZSB0cmVlIG9yIHNwZWNpZmljIGRyaXZlcnMsIHdoaWNoIG1ha2VzIGRpcmVjdCBjb250cm9sIGZyb20gc3l6a2FsbGVyIHRyaWNreS4gYHN5el9nZW5ldGxpbmtgIGlzIGFuIG9wdGlvbiBmb3IgZGV2aWNlIGNyZWF0aW9uLCBidXQgaXQgZG9lc24ndCBzZWVtIGRpcmVjdGx5IGFwcGxpY2FibGUgaGVyZS5cblxuSSBpbml0aWFsbHkgY29uc2lkZXJlZCBgbmV0ZGV2c2ltYCwgYG1hYzgwMjExX2h3c2ltYCwgYW5kIGB2a21zYCwgYnV0IHRob3NlIGRvbid0IHNlZW0gdG8gdXRpbGl6ZSBwaHlsaWIgZGlyZWN0bHkuIFRoZW4gSSB0aG91Z2h0IGFib3V0IGB0dW5gIGFuZCBgdGFwYCBpbnRlcmZhY2VzLCBidXQgdGhleSBhcmUgdW5yZWxhdGVkLiBUaGUga2V5IGlzIHRvIGZpbmQgaWYgdGhlcmUncyBhbnkgc29mdHdhcmUgZW11bGF0ZWQgTURJTyBidXMgdGhhdCBzeXprYWxsZXIgY291bGQgdXNlLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgaWYgYG1kaW9fYnVzX3R5cGVgIGRldmljZXMgY2FuIGJlIGluc3RhbnRpYXRlZCBieSB1c2Vyc3BhY2UgZGlyZWN0bHkuIEkga25vdyB1c2Vyc3BhY2UgZG9lc24ndCAqdHlwaWNhbGx5KiBjcmVhdGUgTURJTyBkZXZpY2VzIHVubGVzcyB0aGVyZSdzIGFuIGV4cGxpY2l0IGludGVyZmFjZS4gVGhlIHRob3VnaHQgdGhlbiBzaGlmdGVkIGJhY2sgdG8gc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBwYXJ0aWN1bGFybHkgdGhlIGBkdW1teV9oY2RgLiBDb3VsZCB0aGVyZSBiZSBVU0IgbmV0d29yayBhZGFwdGVycyB0aGF0LCBiZWhpbmQgdGhlIHNjZW5lcywgbGV2ZXJhZ2UgcGh5bGliPyBUaGlzIHNlZW1zIHByb21pc2luZywgc28gbGV0J3MgY2hlY2sgaW50byB0aGF0IGFuZ2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDczLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjM5OjU5LjY0Nzc2NzQyNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mzg0NDc5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yNy0jaW5jbHVkZSBcXHUwMDNjbGludXgvaWZfdmxhbi5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6Mjg6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjktI2luY2x1ZGUgXFx1MDAzY25ldC9zZWxmdGVzdHMuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTE1LSNpbmNsdWRlIFxcXCJhc2l4LmhcXFwiXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MTY6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjE6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjItI2luY2x1ZGUgXFx1MDAzY25ldC9pcDZfY2hlY2tzdW0uaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTEzLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9oZXguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYzoxNDojaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMtMTUtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzYi5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMjMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21kaW8uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoyNDojaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMjUtI2luY2x1ZGUgXFx1MDAzY25ldC9zZWxmdGVzdHMuaFxcdTAwM2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6Mzk6NTkuNzExNjE3OTU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY0NTY4NDExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUEhZIERyaXZlciBDaGFuZ2VzKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBoYW5kbGUgb24gdGhpcyBwYXRjaC4gVGhpbmtpbmcgdGhyb3VnaCB0aGlzLCBteSBleHBlcnQgZXllIGltbWVkaWF0ZWx5IHNlZXMgdGhhdCBkcml2ZXJzIGxpa2UgYGxhbjc4eHhgLCBgc21zYzk1eHhgLCBgYXg4ODE3MmFgLCBhbmQgYHI4MTUyYCBhcmUgYWxsIFVTQiBuZXR3b3JrIGFkYXB0ZXJzIHRoYXQgbWFrZSB1c2Ugb2YgYHBoeS5oYC4gVGhlIGJlYXV0eSBvZiBzeXprYWxsZXIgYW5kIGl0cyBgZHVtbXlfaGNkYCBlbXVsYXRpb24gdmlhIGBzeXpfdXNiX2Nvbm5lY3RgIGlzIHRoYXQgSSBjYW4gYWJzb2x1dGVseSB0cmlnZ2VyIHRoZSBwcm9iaW5nIG9mIHRob3NlIFVTQiBuZXR3b3JrIGRyaXZlcnMuIFRoYXQsIGluIHR1cm4sIHJlZ2lzdGVycyBNRElPIGJ1c2VzIGFuZCBQSFkgZGV2aWNlcywgZGlyZWN0bHkgaGl0dGluZyBgcGh5X3Byb2JlYC4gU28sIHRoaXMgY29kZSBpcyBkZWZpbml0aXZlbHkgcmVhY2hhYmxlIGV2ZW4gaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgd2hpY2ggaXMgZ3JlYXQgZm9yIGZ1enppbmcuXG5cbk5vdywgbGV0J3MgZHJpbGwgZG93biBpbnRvIHRoZSBwYXRjaCBpdHNlbGYuIFRoZSBjaGFuZ2VzIHRvdWNoIGNvcmUgUEhZIGxpYnJhcnkgZnVuY3Rpb25zOiBzcGVjaWZpY2FsbHksIGBwaHlfcHJvYmVgLCBgcGh5X3NmcF9wcm9iZWAsIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3JlbW92ZWAsIGBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyYCwgYW5kIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGNoYW5nZXMgYXJlLCBzbyB0aGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB0byBleGFtaW5lIGluIGRldGFpbC5cblxuRnJvbSBteSBpbml0aWFsIGdsYW5jZSwgdGhlIHBhdGNoIGFkZHJlc3NlcyBzb21lIGVycm9yIGhhbmRsaW5nIGluIGBwaHlfcHJvYmVgLCBhZGRzIGBwaHlfc2ZwX3JlbGVhc2VgLCBhbmQgZml4ZXMgYSBOVUxMIGNoZWNrIGluIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgLlxuXG5UaGUga2V5IGZ1bmN0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlOiBgcGh5X3Byb2JlYCwgYHBoeV9zZnBfcHJvYmVgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0YCwgYHBoeV9zZnBfcmVsZWFzZWAsIGBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyYCwgYW5kIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgLiBXYWl04oCmIGEgZmV3IG9mIHRoZXNlIGxvb2sgbGlrZSB0aGV5J3JlIHN0YXRpYy5cblxuSG9sZCBvbiwgSSBzZWUgdGhhdCBgcGh5X3NmcF9yZWxlYXNlYCBpcyBzdGF0aWMuIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAgaXMgYWxzbyBzdGF0aWMsIGFzIGlzIGBwaHlfc2V0dXBfcG9ydHNgLiBgcGh5X3Byb2JlYCBpcyBhbHNvIHN0YXRpYyAodXNlZCBhcyBhIGNhbGxiYWNrKS4gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiBgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcmAgYW5kIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgIGFyZSBleHBvcnRlZCBvciBub24tc3RhdGljLCBJIHNob3VsZCBjb25maXJtIHRoYXQgcmlnaHQgYXdheS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDowNi4zNTczMDQ5NzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyMDcyMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jPTgxPXN0YXRpYyB2b2lkIHBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKHN0cnVjdCBwaHlfbGVkX3RyaWdnZXIgKnBsdClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMtODUtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYzo4NjppbnQgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMtODcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYy0xMzgtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmM6MTM5OkVYUE9SVF9TWU1CT0xfR1BMKHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMtMTQwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDowNi41NDkzODI1NTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODgyMzkwNjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUEhZIERyaXZlcidzIEFQSSBFeHBvc3VyZSoqXG5cbk9rYXksIHNvIEknbSBnb2luZyB0aHJvdWdoIHRoaXMgY29kZSBhbmQgdGhpbmtpbmcgYWJvdXQgd2hpY2ggZnVuY3Rpb25zIHdlIHNob3VsZCBleHBvc2UgaW4gdGhlIEFQSSwga2VlcGluZyBpbiBtaW5kIHRoZSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeXBvaW50cy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoYXQgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYCBhcmUgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2Qg4oCTIHRoZXkgZml0IHRoZSBiaWxsLlxuXG5Ob3csIGBwaHlfcHJvYmVgLi4uIEl0J3Mgc3RhdGljLCB3aGljaCB1c3VhbGx5IHJhaXNlcyBhIHJlZCBmbGFnLCBidXQgaXQncyB0aGUgY29yZSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhpcyBkcml2ZXIuIFdhaXQgYSBtaW51dGUhIEkgcmVtZW1iZXIgdGhlIGd1aWRlbGluZXM6IGF2b2lkIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIHRoYXQgYXJlIGlubGluZWQuIEJ1dCBgcGh5X3Byb2JlYCBpcyBhc3NpZ25lZCB0byBgbmV3X2RyaXZlci1cdTAwM2VtZGlvZHJ2LmRyaXZlci5wcm9iZWAsIHdoaWNoIG1lYW5zIGl0cyBhZGRyZXNzIGlzIHRha2VuLiBUaGF0IG1lYW5zIGl0ICp3b24ndCogYmUgaW5saW5lZCBhbmQgaXQncyBzYWZlIHRvIGluY2x1ZGUuIEV4Y2VsbGVudC5cblxuV2hhdCBhYm91dCBgcGh5X3NmcF9wcm9iZWA/IEhtbSwgYWxzbyBzdGF0aWMuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIGl0J3MgbGFyZ2UgZW5vdWdoIHRvIGF2b2lkIGlubGluaW5nLiBMZXQgbWUgc2tpcCB0aGlzLiBBbmQgYHBoeV9zZXR1cF9wb3J0c2AgaXMgc3RhdGljIHRvbywgc28gZGVmaW5pdGVseSBub3QuXG5cblNvLCBsZXQncyBrZWVwIHRoZSBvbmVzIHRoYXQgYXJlIG5vbi1zdGF0aWMgYW5kIGBwaHlfcHJvYmVgLlxuXG5BY3R1YWxseSwgd2FpdCwgSSByZW1lbWJlcmVkIHRoZSBwcmV2aW91cyB0d28sIGBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyYCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAgYXJlIG9rYXksIHRvby5cblxuV2hhdCBhYm91dCBgcGh5X2RldmljZV9yZWdpc3RlcmA/IFRoZSBwYXRjaCBkb2Vzbid0IHRvdWNoIGl0LCBzbyBpdCdzIHByb2JhYmx5IGFscmVhZHkgZmluZS5cblxuT2theSwgbGV0J3Mgc3VtbWFyaXplOiBJJ2xsIGluY2x1ZGUgYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgLCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbWluaW1hbCBzZXQgZm9yIG5vdy5cblxuTm93LCBsZXQncyBjaGVjayBLY29uZmlnIGZvciBgQ09ORklHX1BIWUxJQl9MRURTYCB0byBlbnN1cmUgd2UgY292ZXIgYWxsIHRoZSBuZWNlc3NhcnkgYmFzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NzUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6MTIuNDMxNzc2NTkzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTc5MjIxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEhZTElCX0xFRFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDY9Y29uZmlnIE9QRU5fQUxMSUFOQ0VfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDk6Y29uZmlnIFBIWUxJQl9MRURTXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTAtXFx0ZGVmX2Jvb2wgT0ZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6MTIuNDg3NTgwMDM3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzA4NDE1NjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIFBIWUxJQiBhbmQgTEVEIERlZmluaXRpb25zKipcblxuT2theSwgc28gYFBIWUxJQl9MRURTYCBpcyBkZWZpbmVkIGFzIGEgYGRlZl9ib29sIE9GYC4gVGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2g7IGl0J3MgYSBib29sZWFuIG9wdGlvbiBjb250cm9sbGVkIGJ5IHNvbWV0aGluZyBlbHNlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoaXMgdHJpZ2dlcnMgaXMgYWJvdXQgaXRzIGRlcGVuZGVuY3kuIFdoYXQgaXMgZHJpdmluZyB0aGUgZGVwZW5kZW5jeT8gTm93LCB3aGVyZSBpcyBpdCBkZWZpbmVkPyBUaGlzIGNhbGxzIHRvIG1pbmQgYENPTkZJR19QSFlMSUJgLiBJIHdvbmRlciwgaXMgYENPTkZJR19QSFlMSUJgIHRoZSBsaWtlbHkgcGFyZW50IGNvbmZpZyBvcHRpb24gdGhhdCBjb250cm9scyB3aGV0aGVyIG9yIG5vdCBgUEhZTElCX0xFRFNgIGdldHMgYnVpbHQ/IEknbSBiZXR0aW5nIHRoYXQgYFBIWUxJQl9MRURTYCcgc3RhdHVzIGRlcGVuZHMgb24gYENPTkZJR19QSFlMSUJgIGJlaW5nIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyODUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDoyMi43OTU5OTg4MjJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTk5NTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQSFlMSUJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9Nj1jb25maWcgUEhZTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTU6bWVudWNvbmZpZyBQSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiUEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ2PWNvbmZpZyBPUEVOX0FMTElBTkNFX0hFTFBFUlNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ5OmNvbmZpZyBQSFlMSUJfTEVEU1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVxcdGRlZl9ib29sIE9GXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjQwOjIyLjg1NTAwNTE0NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI3NjkxNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gUEhZTElCIGFuZCBOZXR3b3JrIEFkYXB0ZXJzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBoYW5kbGUgdGhpcyBuZXR3b3JraW5nIHNjZW5hcmlvLiBGaXJzdCwgSSBrbm93IGBQSFlMSUJgIGlzIGdvaW5nIHRvIGJlIGVzc2VudGlhbCBmb3IgdGhlIHVuZGVybHlpbmcgcGh5c2ljYWwgbGF5ZXIgc3R1ZmYuIE5vIHF1ZXN0aW9uIGFib3V0IHRoYXQuIFRoZW4sIHRvIHRyaWdnZXIgdGhpcyBzZXR1cCwgd2UnbGwgbGlrZWx5IG5lZWQgdG8gdXNlIGEgVVNCIG5ldHdvcmsgYWRhcHRlci4gU28sIGxvb2tpbmcgYXQgdGhlIHBvc3NpYmlsaXRpZXMsIHRoZSBmaXJzdCB0aGluZyB0aGF0IGNvbWVzIHRvIG1pbmQgaXMgZWl0aGVyIGVuYWJsaW5nIGBVU0JfTkVUX0RSSVZFUlNgLCBvciB0YXJnZXRpbmcgc3BlY2lmaWMgZHJpdmVycyBsaWtlIGBVU0JfTEFONzhYWGAgb3IgYFVTQl9TTVNDOTVYWGAuIEdpdmVuIG15IGV4aXN0aW5nIGtub3dsZWRnZSwgSSB0aGluayBjaGVja2luZyBvdXQgYFVTQl9MQU43OFhYYCBtYWtlcyB0aGUgbW9zdCBzZW5zZSBhcyBhIHN0YXJ0aW5nIHBvaW50LiBMZXQncyBkaWcgaW50byB0aGF0IGRyaXZlciBhbmQgc2VlIHdoYXQgaXQgb2ZmZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjUyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6MjYuOTgyNzAwMTg2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjQxMzE1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0xBTjc4WFhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWc9OTk9Y29uZmlnIFVTQl9SVEw4MTUyXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTItXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTEzOmNvbmZpZyBVU0JfTEFONzhYWFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExNC1cXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIExBTjc4WFggQmFzZWQgVVNCIEV0aGVybmV0IEFkYXB0ZXJzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDoyNy4wMzUxMjEwNDFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUxODIxNTQyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBVU0JfU01TQzk1WFhgKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gVGhlIG1lbnRpb24gb2YgYFVTQl9TTVNDOTVYWGAgaW1tZWRpYXRlbHkgZmxhZ3MgYSBmZXcga2V5IGFyZWFzIEkgbmVlZCB0byBjb25zaWRlci4gV2UncmUgdGFsa2luZyBhYm91dCBhIFVTQi10by1FdGhlcm5ldCBjb250cm9sbGVyLCBsaWtlbHkgYSBjaGlwIGZyb20gU01TQyAobm93IE1pY3JvY2hpcCwgb2YgY291cnNlKS4gTXkgZmlyc3QgbWVudGFsIGNoZWNrbGlzdCBzdGFydHMgcnVubmluZzogd2hhdCdzIHRoZSBzcGVjaWZpYyBkcml2ZXIgaW1wbGVtZW50YXRpb24gd2UncmUgdXNpbmc/IElzIGl0IGEgc3RhbmRhcmQgZHJpdmVyLCBhIGN1c3RvbSBwb3J0LCBvciBzb21ldGhpbmcgaW4gYmV0d2Vlbj8gVW5kZXJzdGFuZGluZyB0aGUgZHJpdmVyIGlzIHBhcmFtb3VudCwgZXNwZWNpYWxseSBpZiB3ZSdyZSBkZWJ1Z2dpbmcgYSBwb3RlbnRpYWwgaXNzdWUuXG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUgaGFyZHdhcmUgaXRzZWxmLiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgcmV2aXNpb24gb2YgdGhlIFNNU0M5NXh4PyBUaGVyZSBjYW4gYmUgc3VidGxlIGRpZmZlcmVuY2VzIGluIHJlZ2lzdGVyIG1hcHBpbmdzIG9yIGZlYXR1cmUgc2V0cyBhY3Jvc3MgcmV2aXNpb25zLCBzbyBrbm93aW5nIHRoZSBleGFjdCBwYXJ0IG51bWJlciB3b3VsZCBiZSBoZWxwZnVsLiBJIG5lZWQgdG8ga2VlcCBVU0IgZW51bWVyYXRpb24gaW4gbWluZCwgdG9vLiBBcmUgd2Ugc2VlaW5nIGNvbnNpc3RlbnQgZGV2aWNlIHJlY29nbml0aW9uIG9uIHRoZSBob3N0PyBBbnkgZXJyb3JzIGR1cmluZyB0aGUgaW5pdGlhbCBVU0Igc2V0dXA/IFRoZXNlIGFyZSBhbGwgdHlwaWNhbCBzdGFydGluZyBwb2ludHMuXG5cbk5leHQsIEkgbmVlZCB0byBjb25zaWRlciB0aGUgc29mdHdhcmUgc2lkZS4gV2hhdCBvcGVyYXRpbmcgc3lzdGVtIGFyZSB3ZSBydW5uaW5nPyBMaW51eCwgV2luZG93cywgc29tZXRoaW5nIGVsc2U/IEVhY2ggcGxhdGZvcm0gaGFzIGl0cyBvd24gc2V0IG9mIGRyaXZlcnMgYW5kIHBvdGVudGlhbCBxdWlya3MgZm9yIFVTQi1FdGhlcm5ldCBhZGFwdGVycy4gSSBhbHNvIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIG5ldHdvcmsgc3RhY2suIEFyZSB3ZSB1c2luZyBzdGFuZGFyZCBUQ1AvSVAgY29uZmlndXJhdGlvbnMsIG9yIGFyZSB0aGVyZSBjdXN0b20gbmV0d29ya2luZyBmZWF0dXJlcyBhdCBwbGF5PyBBcmUgdGhlcmUgYW55IGtub3duIGlzc3VlcyB3aXRoIHRoZSBkcml2ZXIgb24gdGhhdCBPUyBvciBrZXJuZWwgdmVyc2lvbj9cblxuRmluYWxseSwgYXJlIHRoZXJlIGFueSBjbHVlcyBhYm91dCB3aGF0IHdlJ3JlIGFjdHVhbGx5ICp0cnlpbmcqIHRvIGFjY29tcGxpc2g/IEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhlIHByb2JsZW0gaXMgY3JpdGljYWwuIEFyZSB3ZSBzZWVpbmcgcGVyZm9ybWFuY2UgaXNzdWVzLCBjb25uZWN0aXZpdHkgZHJvcHMsIG9yIG91dHJpZ2h0IGRldmljZSBmYWlsdXJlcz8gVGhhdCBjb250ZXh0IHdpbGwgaW5mbHVlbmNlIHRoZSBhcmVhcyBJIHByaW9yaXRpemUuIE15IGluaXRpYWwgZm9jdXMgd2lsbCBiZSBvbiB2YWxpZGF0aW5nIHRoZSBiYXNpY3Mgb2YgVVNCIHNldHVwIGFuZCBkZXZpY2UgY29tbXVuaWNhdGlvbiwgYmVmb3JlIEkgY29uc2lkZXIgYW55dGhpbmcgdG9vIGVzb3RlcmljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDA5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6MzEuNTUzMzQyNDQxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODY0ODA4NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9TTVNDOTVYWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6MzEuNjEyMDA4MzE1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjI2MDY2MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBVU0IgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIGlzbid0IGBzbXNjOTV4eGAgYSBVU0IgRXRoZXJuZXQgZHJpdmVyPyBBbmQgaWYgaXQgaXMsIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGNoZWNrIGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgd291bGQgYmUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgdHlwaWNhbCBwbGFjZSBmb3IgVVNCIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBuYXZpZ2F0ZSB0aGVyZSBhbmQgdmVyaWZ5IHRoYXQgdGhpcyBhc3N1bXB0aW9uIGhvbGRzIHRydWUsIGFuZCBjb25maXJtIHRoZSBkcml2ZXIncyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaWYgaXQgaXMuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDozNC44NzQ2MTg0MTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MDYyNjY1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbXNjOTV4eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6MzQuOTIyNjkzODZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYxNzM0OTU2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgVVNCIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIHNlZS4gSSdtIHByZXR0eSBzdXJlIEkgcmVtZW1iZXIgdGhlIGBzbXNjOTV4eGAgZHJpdmVyIGJlaW5nIGluIHRoZSBVU0IgbmV0d29ya2luZyBzZWN0aW9uLCBidXQgdGhlIEtjb25maWcgZmlsZXMgYXJlIG9mdGVuIGEgYml0IGNvbnZvbHV0ZWQuIEknbGwgYmV0IGl0J3MgdW5kZXIgYSBzbGlnaHRseSBkaWZmZXJlbnQgbmFtZSBpbiBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLiBUaW1lIHRvIGNvbmZpcm0gdGhhdCBiZWZvcmUgSSBzdGFydCBkaWdnaW5nIGFueSBkZWVwZXIuIExldCBtZSBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGF0IGFnYWluc3QgYGRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZWAgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhlIGJ1aWxkIHRhcmdldHMgYXJlIGNvcnJlY3QuIEl0J3MgZWFzeSB0byBnZXQgbG9zdCBpbiB0aGVzZSBsYXJnZSBrZXJuZWwgYnVpbGRzLCBzbyBpdCdzIGJlc3QgdG8gYmUgc3lzdGVtYXRpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY2NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjQwOjM4LjU0MDA0NzA3NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc5MjI2NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21zYzk1eHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0yMT1vYmotJChDT05GSUdfVVNCX05FVF9TTVNDNzVYWClcXHQrPSBzbXNjNzV4eC5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjIyOm9iai0kKENPTkZJR19VU0JfTkVUX1NNU0M5NVhYKVxcdCs9IHNtc2M5NXh4Lm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtMjMtb2JqLSQoQ09ORklHX1VTQl9ORVRfR0w2MjBBKVxcdCs9IGdsNjIwYS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjQwOjM4LjU4Nzk3NTQzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjg1NTE1OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFVTQiBOZXR3b3JrIERldmljZSBEcml2ZXIgTGFuZHNjYXBlKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBzb21ldGhpbmcgcmVsYXRlZCB0byBgVVNCX05FVF9TTVNDOTVYWGAuIFJpZ2h0LCB0aGF0J3MgYSBzcGVjaWZpYyBVU0IgbmV0d29yayBkZXZpY2UgZHJpdmVyLiBCZWZvcmUgSSBkaXZlIGRlZXAgaW50byB0aGUgU01TQzk1WFggZGV0YWlscywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBjaGVjayB0aGUgaGlnaGVyLWxldmVsIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSB0aGUgYFVTQl9ORVRfRFJJVkVSU2Agc2V0dGluZy4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGUgZ2VuZXJhbCBVU0IgbmV0d29yayBkcml2ZXIgc3VwcG9ydCBpcyBldmVuIGVuYWJsZWQgYmVmb3JlIEkgY2FuIHdvcnJ5IGFib3V0IHRoZSBzcGVjaWZpY3Mgb2YgdGhlIFNNU0M5NVhYIG1vZHVsZS4gSSBuZWVkIHRoZSBiaWcgcGljdHVyZSBiZWZvcmUgem9vbWluZyBpbiBvbiB0aGUgZGV0YWlscy4gVGhhdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZGVidWdnaW5nIG9yIGNvbmZpZ3VyYXRpb24gZWZmb3J0IGluIHRoaXMgc3BhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDA5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6NDEuOTU2NTMwMDUxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTEwODM2OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9ORVRfRFJJVkVSU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZz01PWNvbW1lbnQgXFxcIkhvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTctXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6ODptZW51Y29uZmlnIFVTQl9ORVRfRFJJVkVSU1xcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlVTQiBOZXR3b3JrIEFkYXB0ZXJzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDo0Mi4yNjc2MjA3MDlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgxNDQ4NTA2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkludGVybmFsIENvZGUgUmV2aWV3OiBOZXR3b3JraW5nIERyaXZlciBJbmNsdXNpb24qKlxuXG5BbHJpZ2h0LCBsZXQgbWUgcXVpY2tseSBzdW1tYXJpemUgd2hhdCBJJ20gbG9va2luZyBhdC4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhYm91dCBpbnRlZ3JhdGluZyBzb21lIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eS4gSSBzZWUgYSBmZXcga2V5IGRyaXZlcnMgYmVpbmcgYnJvdWdodCBpbnRvIGNvbnNpZGVyYXRpb246IGBQSFlMSUJgLCB3aGljaCBpcyBjcnVjaWFsIGZvciB0aGUgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlLCBuYXR1cmFsbHkuIFRoZW4gd2UgaGF2ZSB0aGUgbW9yZSBzcGVjaWZpYyBgVVNCX05FVF9EUklWRVJTYCwgYW5kIHdpdGhpbiB0aGF0LCB0aGUgYFVTQl9ORVRfU01TQzk1WFhgIGFuZCBgVVNCX0xBTjc4WFhgIGRyaXZlcnMuIFRoZXNlIHR3byBhcmUgaW1wb3J0YW50LCBjbGVhcmx5IHRoZXkgYXJlIHRoZSBzcGVjaWZpYyBuZXR3b3JraW5nIGhhcmR3YXJlIHdlJ3JlIHRhcmdldGluZy5cblxuV2FpdCBhIG1pbnV0ZSwgaXQgbG9va3MgbGlrZSB0aGVyZSdzIGEgcmVmZXJlbmNlIHRvIGBzZnBfYnVzYCBpbiB0aGlzIHBhdGNoIGFzIHdlbGwuIFRoYXTigJlzIGludGVyZXN0aW5nLiBHaXZlbiB0aGF0IFNGUCBpcyBhIHN0YW5kYXJkLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGhlcmUuIEkgd2FudCB0byBxdWlja2x5IHZlcmlmeSBpZiBgU0ZQYCBpdHNlbGYgaXMgZXZlbiBkZWZpbmVkIGFzIGEgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UncmUgb24gdGhlIHJpZ2h0IHRyYWNrIGFuZCBub3QgbWlzc2luZyBhIHN1YnRsZSBkZXBlbmRlbmN5IHNvbWV3aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMjcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDo0Ni4wODIxMDk4OTJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NjAzMTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTRlBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NjU9Y29uZmlnIFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNzItXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NzM6Y29uZmlnIFNGUFxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTc0LVxcdHRyaXN0YXRlIFxcXCJTRlAgY2FnZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDo0Ni4xMzg3MTkwOTZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODUyMTM0MTU1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgZm9yIFNlbGVjdGluZyBQSFlsaWIgRnVuY3Rpb25zIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSd2ZSBiZWVuIHRoaW5raW5nIGFib3V0IHdoYXQgdG8gdGFyZ2V0IGZvciBmdXp6aW5nLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBTRlBgIGlzIGluZGVlZCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byBjb25zaWRlcjsgSSdsbCBiZSBzdXJlIHRvIGluY2x1ZGUgdGhhdC5cblxuSSd2ZSBib2lsZWQgZG93biB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRvIGZvY3VzIG9uOiBgUEhZTElCYCwgYFNGUGAsIGBVU0JfTkVUX0RSSVZFUlNgLCBgVVNCX05FVF9TTVNDOTVYWGAsIGFuZCBgVVNCX0xBTjc4WFhgLiBUaGVzZSBzZWVtIHJlbGV2YW50IGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNvcmUgUEhZIGxpYnJhcnkgYW5kIGhvdyBpdCdzIHVzZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdpdGggZW11bGF0ZWQgVVNCIG5ldHdvcmsgYWRhcHRlcnMuXG5cbk5vdywgY29uc2lkZXJpbmcgdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLCBJJ3ZlIGlkZW50aWZpZWQgYSBmZXcga2V5IG9uZXMgdGhhdCBzdGFuZCBvdXQgYXMgZ29vZCBjYW5kaWRhdGVzOiBgcGh5X3Byb2JlYCwgYHBoeV9yZW1vdmVgLCBgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcmAsIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYC5cblxuSSBkb3VibGUtY2hlY2tlZCBgcGh5X3Byb2JlYDsgaXQncyBkZWNsYXJlZCBgc3RhdGljYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBidXQgY3J1Y2lhbGx5LCBpdHMgYWRkcmVzcyBpcyB0YWtlbiBhbmQgcGFzc2VkIHRvIGBuZXdfZHJpdmVyLVx1MDAzZW1kaW9kcnYuZHJpdmVyLnByb2JlID0gcGh5X3Byb2JlO2AuIFRoaXMgbWVhbnMgaXQncyBub3QgZ29pbmcgdG8gYmUgaW5saW5lZCBhbmQgaXMgdGhlcmVmb3JlIGEgZ29vZCB0YXJnZXQuIEkgbm90ZWQgdGhhdCBgcGh5X3NmcF9wcm9iZWAgaXMgYWxzbyBzdGF0aWMsIGJ1dCB0aGF0J3MgY2FsbGVkIGZyb20gYHBoeV9zZXR1cF9wb3J0c2AsIHdoaWNoIGl0c2VsZiBpcyBzdGF0aWMgYW5kIGlzIGNhbGxlZCBmcm9tIGBwaHlfcHJvYmVgLiBgcGh5X3JlbW92ZWAgYWxzbyBpcyBzdGF0aWMsIGJ1dCBhZ2FpbiwgaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNvIGl0J3MgYSBnb29kIHRhcmdldC4gYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYCBhcmUgZXhwb3J0ZWQsIHdoaWNoIG1ha2VzIHRoZW0gZWFzeSB0byByZWFjaC5cblxuTXkgcmVhc29uaW5nIGlzIHRoaXM6IHRoZSBwYXRjaCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIHJlc291cmNlIGxlYWtzIGFuZCBlcnJvciBoYW5kbGluZyBpc3N1ZXMgd2l0aGluIHRoZSBQSFkgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsIHJvdXRpbmVzIC0gYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGFuZCBgcGh5X3NmcF9wcm9iZWAgLSBhbmQgaXQncyBhbHNvIGZpeGluZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZm91bmRhdGlvbmFsIHRvIHRoZSBQSFkgbGlicmFyeSAoYHBoeWxpYmApLiBUaGlzIGxpYnJhcnkgZ2V0cyB1c2VkIGV2ZW4gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRocm91Z2ggZW11bGF0ZWQgVVNCIG5ldHdvcmsgYWRhcHRlcnMgbGlrZSBgc21zYzk1eHhgIGFuZCBgbGFuNzh4eGAgdGhhdCwgaW4gdHVybiwgcmVnaXN0ZXIgTURJTyBidXNlcyBhbmQgUEhZIGRldmljZXMuIEZ1enppbmcgdGhlc2UgcGF0aHMgd2lsbCBiZSB2YWx1YWJsZSBmb3IgaGFyZGVuaW5nIHRoZSBQSFkgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBwcm9jZXNzZXMsIHBhcnRpY3VsYXJseSBnaXZlbiB0aGUgdmFyaW91cyBleGVjdXRpb24gcGF0aHMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgdGFrZSBpbiBkaWZmZXJlbnQgc2NlbmFyaW9zLlxuXG5TbywgaW4gc3VtbWFyeSwgdGhlIGNvbmZpZ3VyYXRpb25zIGFyZSB0aGUgZml2ZSBsaXN0ZWQgcHJldmlvdXNseS5cblxuSSBhbHNvIHZlcmlmaWVkIHRoYXQgYFNGUGAgaXMgbmVlZGVkLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHBoeV9zZnBfcHJvYmVgIGFuZCBgcGh5X3NmcF9yZWxlYXNlYCwgYm90aCBvZiB3aGljaCBpbnRlcmFjdCB3aXRoIGBwaHlkZXYtXHUwMDNlc2ZwX2J1c2AuIEl0IGxvb2tzIGxpa2UgYHBoeWRldi1cdTAwM2VzZnBfYnVzYCBpcyBpbmRlZWQgb25seSBhdmFpbGFibGUgd2hlbiBgU0ZQYCBpcyBlbmFibGVkLCB3aGljaCByZWluZm9yY2VzIHRoZSBuZWVkIHRvIGluY2x1ZGUgdGhhdCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDczNiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDo1NC42NjAwNjM0NFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkxNjQxMDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2ZwX2J1c1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3BoeS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvcGh5Lmg9MzMwPXN0cnVjdCBwaHlfcG9ydDtcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjMzMTpzdHJ1Y3Qgc2ZwX2J1cztcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTMzMi1zdHJ1Y3Qgc2ZwX3Vwc3RyZWFtX29wcztcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9NTUyPXN0cnVjdCBwaHlfb2F0YzE0X3NxaV9jYXBhYmlsaXR5IHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtNTk0LSAqIEBwaHlsaW5rOiBQb2ludGVyIHRvIHBoeWxpbmsgaW5zdGFuY2UgZm9yIHRoaXMgUEhZXFxuaW5jbHVkZS9saW51eC9waHkuaDo1OTU6ICogQHNmcF9idXNfYXR0YWNoZWQ6IEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBTRlAgYnVzIGhhcyBiZWVuIGF0dGFjaGVkXFxuaW5jbHVkZS9saW51eC9waHkuaDo1OTY6ICogQHNmcF9idXM6IFNGUCBidXMgYXR0YWNoZWQgdG8gdGhpcyBQSFkncyBmaWJlciBwb3J0XFxuaW5jbHVkZS9saW51eC9waHkuaC01OTctICogQGF0dGFjaGVkX2RldjogVGhlIGF0dGFjaGVkIGVuZXQgZHJpdmVyJ3MgZGV2aWNlIGluc3RhbmNlIHB0clxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD02Njg9c3RydWN0IHBoeV9kZXZpY2Uge1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC03ODUtXFx0LyogVGhpcyBtYXkgYmUgbW9kaWZpZWQgdW5kZXIgdGhlIHJ0bmwgbG9jayAqL1xcbmluY2x1ZGUvbGludXgvcGh5Lmg6Nzg2OlxcdGJvb2wgc2ZwX2J1c19hdHRhY2hlZDtcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjc4NzpcXHRzdHJ1Y3Qgc2ZwX2J1cyAqc2ZwX2J1cztcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTc4OC1cXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6NTQuNzE5MjM0ODM0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTY2MTkzMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBJbnF1aXJ5OiBTRlAgQnVzIEFzc29jaWF0aW9uKipcblxuT2theSwgc28gaXQgc3RyaWtlcyBtZSB0aGF0IHRoZSBgc2ZwX2J1c2AgY29uc3RydWN0IGlzIGNvbnNpc3RlbnRseSBsaW5rZWQgdG8gdGhlIGBzdHJ1Y3QgcGh5X2RldmljZWAuIE5vdywgdGhlIFNGUCBjb25maWd1cmF0aW9uLCB0aGUgYWN0dWFsICplbmFibGluZyogb2YgdGhlIFNGUCBidXMgY29kZSwgdGhhdCdzIHdoYXQgSSB3YW50IHRvIHVuZGVyc3RhbmQuIExldCdzIGRlbHZlIGludG8gdGhpcy4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZXhwbG9yZSBgc2ZwX2J1c19kZWxfdXBzdHJlYW1gIOKAkyB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGRlY2xhcmVkIHdpdGhpbiBgaW5jbHVkZS9saW51eC9zZnAuaGAuIFRpbWUgdG8gc2VlIHdoYXQgd2UgY2FuIGdsZWFuIGZyb20gdGhhdCBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIyNTQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDo1OC41NzU4NTcyMTNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODkwMzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNmcF9idXNfZGVsX3Vwc3RyZWFtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvc2ZwLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9zZnAuaD01OTQ9aW50IHNmcF9idXNfYWRkX3Vwc3RyZWFtKHN0cnVjdCBzZnBfYnVzICpidXMsIHZvaWQgKnVwc3RyZWFtLFxcbmluY2x1ZGUvbGludXgvc2ZwLmgtNTk1LVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3Qgc2ZwX3Vwc3RyZWFtX29wcyAqb3BzKTtcXG5pbmNsdWRlL2xpbnV4L3NmcC5oOjU5Njp2b2lkIHNmcF9idXNfZGVsX3Vwc3RyZWFtKHN0cnVjdCBzZnBfYnVzICpidXMpO1xcbmluY2x1ZGUvbGludXgvc2ZwLmgtNTk3LWNvbnN0IGNoYXIgKnNmcF9nZXRfbmFtZShzdHJ1Y3Qgc2ZwX2J1cyAqYnVzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2ZwLmg9NjUzPXN0YXRpYyBpbmxpbmUgaW50IHNmcF9idXNfYWRkX3Vwc3RyZWFtKHN0cnVjdCBzZnBfYnVzICpidXMsIHZvaWQgKnVwc3RyZWFtLFxcbi0tXFxuaW5jbHVkZS9saW51eC9zZnAuaC02NTgtXFxuaW5jbHVkZS9saW51eC9zZnAuaDo2NTk6c3RhdGljIGlubGluZSB2b2lkIHNmcF9idXNfZGVsX3Vwc3RyZWFtKHN0cnVjdCBzZnBfYnVzICpidXMpXFxuaW5jbHVkZS9saW51eC9zZnAuaC02NjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDo1OC42MjQ3NTQwNDdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA5MDI3Mjk1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIG9mIFNGUCBhbmQgUEhZTElCX0xFRFMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJSaWdodCwgdGhlIGBTRlBgIGRlZmluaXRpb24gaXMgbG9jYXRlZCBpbiBgaW5jbHVkZS9saW51eC9zZnAuaGAuXCIgSWYgYFNGUGAgaXNuJ3QgZW5hYmxlZCwgSSBzdXNwZWN0IHRoZSBjb2RlIHJlbGF0ZWQgdG8gaXQgd2lsbCBsaWtlbHkgYmUgYSBuby1vcCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQuXG5cblRoZSBuZXh0IHRoaW5nIGlzIHRvIGRldGVybWluZSBpZiBgU0ZQYCBpcyBldmVuIG5lY2Vzc2FyeSBoZXJlLiBBaCwgcmlnaHQsIHRvIHRydWx5IGV4ZXJjaXNlIHRoZSBTRlAgcGF0aHMgZHVyaW5nIHRlc3RpbmcsIEkgKmRvKiBuZWVkIHRoZSBgU0ZQYCBjb25maWcgZW5hYmxlZC4gSXQgbWFrZXMgc2Vuc2UuXG5cbk5leHQgb24gdGhlIGxpc3QgaXMgYFBIWUxJQl9MRURTYC4gVGhlIHBhdGNoIHRvdWNoZXMgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYCwgc28gSSBuZWVkIHRvIGNoZWNrIHRob3NlLiBMZXQncyB0cmFjZSB0aG9zZSBjYWxscyBiYWNrLCBzdGFydGluZyB3aXRoIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmNgLiBPa2F5LCBub3cgdGhlIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGVudGlyZSBgcGh5X2xlZF90cmlnZ2Vycy5jYCBmaWxlICppdHNlbGYqIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQ/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjcxMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MTowNC43MTUwMzE0OTNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMDM5MTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9sZWRfdHJpZ2dlcnMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTE0PWxpYnBoeS0kKENPTkZJR19TV1BIWSlcXHRcXHQrPSBzd3BoeS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjE1OmxpYnBoeS0kKENPTkZJR19MRURfVFJJR0dFUl9QSFkpXFx0Kz0gcGh5X2xlZF90cmlnZ2Vycy5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE2LWxpYnBoeS0kKENPTkZJR19PUEVOX0FMTElBTkNFX0hFTFBFUlMpICs9IG9wZW5fYWxsaWFuY2VfaGVscGVycy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjQxOjA0Ljc3ODA3NTQzN1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjE4MDY2MDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFBIWSBMRUQgVHJpZ2dlciBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgKkNPTkZJR19MRURfVFJJR0dFUl9QSFkqLiBUaGF0J3MgdGhlIG9uZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGVsdmUgaW50byB0aGUgYExFRF9UUklHR0VSX1BIWWAgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHN0YXRlIG9mIHRoYXQgcGFydGljdWxhciB0cmlnZ2VyLiBJJ2xsIG5lZWQgdG8ga25vdyBpZiBpdCdzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBzZXQgdG8gc29tZSBzcGVjaWZpYyBiZWhhdmlvciByZWxhdGVkIHRvIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTEVEIGlzIGJlaW5nIGRyaXZlbiBieSB0aGUgUEhZJ3MgYWN0aXZpdHkuIFRoZSBnb2FsIGhlcmUgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBjdXJyZW50IHN5c3RlbSBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gYW55IG5ldHdvcmsgUEhZJ3MgTEVEcy4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIGlmIGFueSBjaGFuZ2VzIGFyZSBuZWVkZWQsIG9yIGlmIHRoZXJlJ3MgYSBwcm9ibGVtLCBhbmQgaWYgc28sIHVuZGVyc3RhbmQgd2h5IHRoYXQgcHJvYmxlbSBpcyBvY2N1cnJpbmcgd2l0aCB0aGUgY3VycmVudCBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjQ4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDE6MDguOTk2MTQ0MzA4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTE5MjMwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIExFRF9UUklHR0VSX1BIWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0yNz1jb25maWcgUEhZX1BBQ0tBR0VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTI5LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjMwOmNvbmZpZyBMRURfVFJJR0dFUl9QSFlcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zMS1cXHRib29sIFxcXCJTdXBwb3J0IExFRCB0cmlnZ2VycyBmb3IgdHJhY2tpbmcgbGluayBzdGF0ZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDE6MDkuMTg4MDczNzQ4WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1MDIwMTEzMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDaGVja2xpc3QqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgcGh5X2xlZF90cmlnZ2Vycy5jYCBmaWxlIGFuZCBuZWVkIHRvIHVwZGF0ZSB0aGUgY29uZmlndXJhdGlvbi4gRmlyc3QgdGhpbmdzIGZpcnN0LCBgTEVEX1RSSUdHRVJfUEhZYCBpcyB0aGUga2V5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQncyBpbmNsdWRlZC5cblxuUmlnaHQsIGxldCdzIGp1c3QgZG8gYSBxdWljayByZXZpZXcgb2YgdGhlIGNvbmZpZ3MgcmVsYXRlZCB0byB0aGlzIGFyZWE6IGBQSFlMSUJgLCBgU0ZQYCwgYFVTQl9ORVRfRFJJVkVSU2AsIGBVU0JfTkVUX1NNU0M5NVhYYCwgYFVTQl9MQU43OFhYYCwgYW5kIG9mIGNvdXJzZSBgTEVEX1RSSUdHRVJfUEhZYC5cblxuSGFuZyBvbiBhIHNlYy4uLiBJIHJlbWVtYmVyIHNlZWluZyBgUEhZTElCX0xFRFNgIG1lbnRpb25lZCBpbiB0aGUgcGF0Y2gsIHNwZWNpZmljYWxseSBpbiBhbiBgaWZgIHN0YXRlbWVudCBsaWtlIHRoaXMgYGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXHUwMDI2XHUwMDI2ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKSB7YC4gSSBzaG91bGQgcHJvYmFibHkgaW5jbHVkZSB0aGF0IG9uZSBhcyB3ZWxsIHRvIGJlIHNhZmUuIEJldHRlciB0byBiZSB0aG9yb3VnaC5cblxuTm93LCBsZXQgbWUganVzdCBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBtYWluIGZ1bmN0aW9ucyBpbnZvbHZlZCBoZXJlLiBJJ20gdGhpbmtpbmcgYWJvdXQgYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgLCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoZXNlIGFyZSBteSBwcmltYXJ5IGVudHJ5IHBvaW50cywgcmlnaHQ/XG5cbkhtbSwgdGhlcmUncyB0aGF0IGBwaHlfc2ZwX3Byb2JlYCBmdW5jdGlvbi4gSXQncyBzdGF0aWMsIHNvIGl0ICptaWdodCogYmUgaW5saW5lZC4gRm9yIG5vdywgSSdsbCBzdGljayB0byB0aGUgY29yZSBmdW5jdGlvbnMgdG8ga2VlcCBpdCBmb2N1c2VkLlxuXG5SaWdodCwgd2l0aCBhbGwgdGhhdCBzb3J0ZWQsIEknbSByZWFkeSB0byBtb3ZlIGZvcndhcmQuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1NzYsIk91dHB1dFRva2VucyI6MjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjQxOjE2LjY5MDA4OTIwN1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzOTk4NzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlNGUFwiLFxuICAgIFwiVVNCX05FVF9EUklWRVJTXCIsXG4gICAgXCJVU0JfTkVUX1NNU0M5NVhYXCIsXG4gICAgXCJVU0JfTEFONzhYWFwiLFxuICAgIFwiTEVEX1RSSUdHRVJfUEhZXCIsXG4gICAgXCJQSFlMSUJfTEVEU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV9wcm9iZVwiLFxuICAgIFwicGh5X3JlbW92ZVwiLFxuICAgIFwicGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlclwiLFxuICAgIFwicGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgYW5kIGVycm9yIGhhbmRsaW5nIHBhdGhzIGluIHRoZSBQSFkgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsIHJvdXRpbmVzIChgcGh5X3Byb2JlYCwgYHBoeV9yZW1vdmVgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9zZnBfcHJvYmVgKSBhbmQgZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHBhcnQgb2YgdGhlIGNvcmUgUEhZIGxpYnJhcnkgKGBwaHlsaWJgKSB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBlbXVsYXRlZCBVU0IgbmV0d29yayBhZGFwdGVycyAoZS5nLiwgYHNtc2M5NXh4YCwgYGxhbjc4eHhgKSB0aGF0IHJlZ2lzdGVyIE1ESU8gYnVzZXMgYW5kIFBIWSBkZXZpY2VzLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIHZhbHVhYmxlIHRvIGVuc3VyZSByb2J1c3RuZXNzIG9mIFBIWSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiU0ZQXCIsXG4gICAgXCJVU0JfTkVUX0RSSVZFUlNcIixcbiAgICBcIlVTQl9ORVRfU01TQzk1WFhcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJMRURfVFJJR0dFUl9QSFlcIixcbiAgICBcIlBIWUxJQl9MRURTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X3Byb2JlXCIsXG4gICAgXCJwaHlfcmVtb3ZlXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyByZXNvdXJjZSBsZWFrcyBhbmQgZXJyb3IgaGFuZGxpbmcgcGF0aHMgaW4gdGhlIFBIWSBkZXZpY2UgcHJvYmUgYW5kIHJlbW92YWwgcm91dGluZXMgKGBwaHlfcHJvYmVgLCBgcGh5X3JlbW92ZWAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3NmcF9wcm9iZWApIGFuZCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgY29yZSBQSFkgbGlicmFyeSAoYHBoeWxpYmApIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGVtdWxhdGVkIFVTQiBuZXR3b3JrIGFkYXB0ZXJzIChlLmcuLCBgc21zYzk1eHhgLCBgbGFuNzh4eGApIHRoYXQgcmVnaXN0ZXIgTURJTyBidXNlcyBhbmQgUEhZIGRldmljZXMuIEZ1enppbmcgdGhlc2UgcGF0aHMgaXMgdmFsdWFibGUgdG8gZW5zdXJlIHJvYnVzdG5lc3Mgb2YgUEhZIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjQxOjE2Ljc3NDA5NjQ2OFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMDcxNzg3NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MToxNi43NzQ2ODkwMzhaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAxMDY1ODExOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZvY3VzZXMgb24gZml4aW5nIGVycm9yIGhhbmRsaW5nIHBhdGhzIGFuZCByZXNvdXJjZSBjbGVhbnVwIGluIHRoZSBQSFkgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsIHJvdXRpbmVzIChlLmcuLCBgcGh5X3Byb2JlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfc2ZwX3Byb2JlYCkuIEl0IGFkZHJlc3NlcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSwgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYnkgZW5zdXJpbmcgdGhhdCByZXNvdXJjZXMgbGlrZSBTRlAgYnVzZXMsIFBIWSBwb3J0cywgYW5kIExFRCB0cmlnZ2VycyBhcmUgcHJvcGVybHkgcmVsZWFzZWQgb3IgdW5yZWdpc3RlcmVkIHdoZW4gaW5pdGlhbGl6YXRpb24gZmFpbHMuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMgc3VjaCBhcyBLQVNBTiAoZm9yIHVzZS1hZnRlci1mcmVlIGFuZCBvdXQtb2YtYm91bmRzKSwga21lbWxlYWsgKGZvciBtZW1vcnkgbGVha3MpLCBhbmQgZ2VuZXJhbCBrZXJuZWwgb29wcy9wYW5pY3MgKGZvciBOVUxMIGRlcmVmZXJlbmNlcykuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgY29tcGxleCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTidzIHNwZWNpYWxpemVkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRyYWNraW5nLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQzOWQyOWZhMmMzNzkzM2RiYWE2NGZmZDgxNjkwZTYxODk0ZWJlY2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAwNzozOTo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li44Y2IwZDYwZmNiYmE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTE3MjMsMTIgKzE3MjMsNDEgQEAgc3RhdGljIGludCBwaHlfc2ZwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdFx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuIFx0fVxuIFxuLVx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VzZnBfYnVzKVxuK1x0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VzZnBfYnVzKSB7XG4gXHRcdHJldCA9IHBoeV9zZXR1cF9zZnBfcG9ydChwaHlkZXYpO1xuK1x0XHRpZiAocmV0KSB7XG4rXHRcdFx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuK1x0XHRcdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbitcdFx0fVxuK1x0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rLyoqXG4rICogcGh5X3NmcF9yZWxlYXNlIC0gcmVsZWFzZSByZXNvdXJjZXMgc2V0IHVwIGJ5IHBoeV9zZnBfcHJvYmUoKVxuKyAqIEBwaHlkZXY6IHRoZSBQSFkgZGV2aWNlXG4rICpcbisgKiBSZWxlYXNlIHRoZSBTRlAgcmVzb3VyY2VzIHNldCB1cCBieSBhIHN1Y2Nlc3NmdWwgcGh5X3NmcF9wcm9iZSgpLiBVbnJlZ2lzdGVyXG4rICogdGhlIHVwc3RyZWFtIGJlZm9yZSBkZXN0cm95aW5nIGl0cyBwaHlfcG9ydCwgc28gU0ZQIHVwc3RyZWFtIGNhbGxiYWNrcyBjYW5ub3RcbisgKiByYWNlIHdpdGggcG9ydCBkZXN0cnVjdGlvbi5cbisgKi9cbitzdGF0aWMgdm9pZCBwaHlfc2ZwX3JlbGVhc2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQsICp0bXA7XG4rXG4rXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4rXHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4rXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9ydCwgdG1wLCBcdTAwMjZwaHlkZXYtXHUwMDNlcG9ydHMsIGhlYWQpIHtcbitcdFx0aWYgKCFwb3J0LVx1MDAzZWlzX3NmcClcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0cGh5X2RlbF9wb3J0KHBoeWRldiwgcG9ydCk7XG4rXHRcdHBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXG4ge1xuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG5AQCAtMzQ1NCw2ICszNDgzLDcgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdHN0cnVjdCBwaHlfcG9ydCAqcG9ydCA9IHBoeV9wb3J0X2FsbG9jKCk7XG4gXHR1bnNpZ25lZCBsb25nIG1vZGU7XG4rXHRpbnQgcmV0O1xuIFxuIFx0aWYgKCFwb3J0KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbkBAIC0zNDgwLDkgKzM1MTAsMTEgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHRwb3J0LVx1MDAzZXBhaXJzID0gbWF4X3QoaW50LCBwb3J0LVx1MDAzZXBhaXJzLFxuIFx0XHRcdFx0ICAgIGV0aHRvb2xfbGlua21vZGVfbl9wYWlycyhtb2RlKSk7XG4gXG4tXHRwaHlfYWRkX3BvcnQocGh5ZGV2LCBwb3J0KTtcbitcdHJldCA9IHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpO1xuK1x0aWYgKHJldClcbitcdFx0cGh5X3BvcnRfZGVzdHJveShwb3J0KTtcbiBcbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGludCBvZl9waHlfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbkBAIC0zNTQ3LDEzICszNTc5LDEzIEBAIHN0YXRpYyBpbnQgcGh5X3NldHVwX3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XG4gXHRcdHJldCA9IHBoeV9zZnBfcHJvYmUocGh5ZGV2KTtcbiBcdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIG91dDtcbitcdFx0XHRnb3RvIGVycl9wb3J0cztcbiBcdH1cbiBcbiBcdGlmIChwaHlkZXYtXHUwMDNlbl9wb3J0cyBcdTAwM2MgcGh5ZGV2LVx1MDAzZW1heF9uX3BvcnRzKSB7XG4gXHRcdHJldCA9IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHBoeWRldik7XG4gXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0Z290byBlcnJfc2ZwO1xuIFx0fVxuIFxuIFx0bGlua21vZGVfemVybyhwb3J0c19zdXBwb3J0ZWQpO1xuQEAgLTM1ODAsNyArMzYxMiw5IEBAIHN0YXRpYyBpbnQgcGh5X3NldHVwX3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1vdXQ6XG4rZXJyX3NmcDpcbitcdHBoeV9zZnBfcmVsZWFzZShwaHlkZXYpO1xuK2Vycl9wb3J0czpcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbkBAIC0zNzA2LDcgKzM3NDAsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydi1cdTAwM2Vwcm9iZSkge1xuIFx0XHRlcnIgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXByb2JlKHBoeWRldik7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0Z290byBvdXRfcmVzZXQ7XG4gXHR9XG4gXG4gXHRwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7XG5AQCAtMzcyNyw3ICszNzYxLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRlcnIgPSBnZW5waHlfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcbiBcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuK1x0XHRnb3RvIG91dF9yZW1vdmU7XG4gXG4gXHRpZiAoIWxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULFxuIFx0XHRcdCAgICAgICBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKSlcbkBAIC0zNzQ0LDcgKzM3NzgsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXG4gXHRlcnIgPSBwaHlfc2V0dXBfcG9ydHMocGh5ZGV2KTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuK1x0XHRnb3RvIG91dF9yZW1vdmU7XG4gXG4gXHRwaHlfYWR2ZXJ0aXNlX3N1cHBvcnRlZChwaHlkZXYpO1xuIFxuQEAgLTM3NTMsNyArMzc4Nyw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdCAqL1xuIFx0ZXJyID0gZ2VucGh5X2M0NV9yZWFkX2VlZV9hZHYocGh5ZGV2LCBwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuK1x0XHRnb3RvIG91dF9zZnBfcmVsZWFzZTtcbiBcbiBcdC8qIEdldCB0aGUgRUVFIG1vZGVzIHdlIHdhbnQgdG8gcHJvaGliaXQuICovXG4gXHRvZl9zZXRfcGh5X2VlZV9icm9rZW4ocGh5ZGV2KTtcbkBAIC0zNzkzLDkgKzM4MjcsNiBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdFx0XHQgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCk7XG4gXHR9XG4gXG4tXHQvKiBTZXQgdGhlIHN0YXRlIHRvIFJFQURZIGJ5IGRlZmF1bHQgKi9cbi1cdHBoeWRldi1cdTAwM2VzdGF0ZSA9IFBIWV9SRUFEWTtcbi1cbiBcdC8qIFJlZ2lzdGVyIHRoZSBQSFkgTEVEIHRyaWdnZXJzICovXG4gXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuIFx0XHRwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyKHBoeWRldik7XG5AQCAtMzgwNiwyMCArMzgzNywyNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZTElCX0xFRFMpIFx1MDAyNlx1MDAyNiAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkge1xuIFx0XHRlcnIgPSBvZl9waHlfbGVkcyhwaHlkZXYpO1xuIFx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdGdvdG8gb3V0X3VucmVnX2xlZF90cmlnZ2VycztcbiBcdH1cbiBcbitcdC8qIFNldCB0aGUgc3RhdGUgdG8gUkVBRFkgYnkgZGVmYXVsdCAqL1xuK1x0cGh5ZGV2LVx1MDAzZXN0YXRlID0gUEhZX1JFQURZO1xuK1xuIFx0cmV0dXJuIDA7XG4gXG4tb3V0OlxuLVx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuLVx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuK291dF91bnJlZ19sZWRfdHJpZ2dlcnM6XG4rXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuK1x0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbiBcbitvdXRfc2ZwX3JlbGVhc2U6XG4rXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXG4tXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuLVx0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbitvdXRfcmVtb3ZlOlxuK1x0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKVxuK1x0XHRwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZShwaHlkZXYpO1xuIFxuK291dF9yZXNldDpcbiBcdC8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4gXG5AQCAtMzg0MCw5ICszODc4LDcgQEAgc3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcbiBcdHBoeWRldi1cdTAwM2VzdGF0ZSA9IFBIWV9ET1dOO1xuIFxuLVx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuLVx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuLVxuK1x0cGh5X3NmcF9yZWxlYXNlKHBoeWRldik7XG4gXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VkcnYgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jXG5pbmRleCA0ZWI3NzE2YmI5ZDZjLi5mZjZlNTE4Mzk1YmUwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY1xuQEAgLTEyNiw2ICsxMjYsNyBAQCBpbnQgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuIFx0d2hpbGUgKGktLSlcbiBcdFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoXHUwMDI2cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xuIFx0a2ZyZWUocGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xuK1x0cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMO1xuIG91dF91bnJlZ19saW5rOlxuIFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIocGh5LVx1MDAzZWxlZF9saW5rX3RyaWdnZXIpO1xuIG91dF9mcmVlX2xpbms6XG5AQCAtMTQxLDEwICsxNDIsMTIgQEAgdm9pZCBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbiB7XG4gXHRpbnQgaTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBoeS1cdTAwM2VwaHlfbnVtX2xlZF90cmlnZ2VyczsgaSsrKVxuLVx0XHRwaHlfbGVkX3RyaWdnZXJfdW5yZWdpc3RlcihcdTAwMjZwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vyc1tpXSk7XG4tXHRrZnJlZShwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vycyk7XG4tXHRwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2VycyA9IE5VTEw7XG4rXHRpZiAocGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpIHtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGh5LVx1MDAzZXBoeV9udW1fbGVkX3RyaWdnZXJzOyBpKyspXG4rXHRcdFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoXHUwMDI2cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xuK1x0XHRrZnJlZShwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vycyk7XG4rXHRcdHBoeS1cdTAwM2VwaHlfbGVkX3RyaWdnZXJzID0gTlVMTDtcbitcdH1cbiBcbiBcdGlmIChwaHktXHUwMDNlbGVkX2xpbmtfdHJpZ2dlcikge1xuIFx0XHRwaHlfbGVkX3RyaWdnZXJfdW5yZWdpc3RlcihwaHktXHUwMDNlbGVkX2xpbmtfdHJpZ2dlcik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MToxNi43NzQ2ODk3NThaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAxMDY1NTcxNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGFmdGVyIHJldmlld2luZyB0aGlzIHBhdGNoLCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCdzIGZvY3VzaW5nIG9uICpyb2J1c3RuZXNzKiBhbmQgKmNsZWFubGluZXNzKiB3aXRoaW4gdGhlIFBIWSBkcml2ZXIgY29kZS4gSXQncyB0b3VjaGluZyBgcGh5X2RldmljZS5jYCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnMuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIHBvdGVudGlhbCBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMsIHNvIHRoYXQncyB3aGVyZSBJJ20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uLlxuXG5UaGUgY29yZSBjaGFuZ2VzIGFyZSBjb25jZW50cmF0ZWQgYXJvdW5kIGZpeGluZyBlcnJvciBoYW5kbGluZyByb3V0aW5lcy4gU3BlY2lmaWNhbGx5LCBgcGh5X3NmcF9wcm9iZWAsIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3Byb2JlYCwgYW5kIGBwaHlfcmVtb3ZlYCBoYXZlIGFsbCBiZWVuIHRvdWNoZWQgdXAuIFRoZSBnb2FsIGhlcmUgaXMgdG8gcGx1ZyBwb3RlbnRpYWwgcmVzb3VyY2UgbGVha3MsIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zLCBhbmQgYXZvaWQgdGhvc2UgZHJlYWRlZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIHRoYXQgY2FuIGNhdXNlIGluc3RhYmlsaXR5LiBBIGtleSBhZGRpdGlvbiBpcyBgcGh5X3NmcF9yZWxlYXNlYCwgd2hpY2ggcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBjbGVhbi11cCBvZiBTRlAgcmVzb3VyY2VzLiBUaGUgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAgY2hhbmdlIGxvb2tzIGxpa2UgYSBzYWZldHkgbmV0OiB2ZXJpZnlpbmcgdGhlIGV4aXN0ZW5jZSBvZiBgcGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNgIGJlZm9yZSBmcmVlaW5nIGl0IGF2b2lkcyBhIHBvdGVudGlhbCBkb3VibGUtZnJlZSBpc3N1ZS5cblxuSSBzZWUgbm8gZXZpZGVuY2UgdGhhdCB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIG5ldyBzdHJ1Y3R1cmVzIGV4cG9zZWQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IHJpc2tzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvciBhbnkgaW5mb3JtYXRpb24gbGVha3MuIFRoZXNlIGFyZSBzb2xpZCBjb2RpbmcgcHJhY3RpY2VzLlxuXG5MZXQncyBicmVhayBkb3duIHRoZSBpbmRpdmlkdWFsIGNoYW5nZXM6XG5cbiogICBgcGh5X3NmcF9wcm9iZWA6IEVuc3VyZXMgYHBoeWRldi1cdTAwM2VzZnBfYnVzYCBpcyBjbGVhbmVkIHVwIGlmIGBwaHlfc2V0dXBfc2ZwX3BvcnRgIGZhaWxzLlxuKiAgIGBwaHlfc2ZwX3JlbGVhc2VgOiBBIG5lY2Vzc2FyeSBhZGRpdGlvbiBmb3IgcHJvcGVyIFNGUCByZXNvdXJjZSByZWxlYXNlLlxuKiAgIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGA6IE5vdyBkZXN0cm95cyB0aGUgcG9ydCBpZiBgcGh5X2FkZF9wb3J0YCBmYWlscy5cbiogICBgcGh5X3NldHVwX3BvcnRzYDogSW1wcm92ZWQgZXJyb3IgbGFiZWxzIGFuZCBjbGVhbnVwIHByb2NlZHVyZXMuXG4qICAgYHBoeV9wcm9iZWA6IEVuaGFuY2VkIGVycm9yIGxhYmVscyBhbmQgY2xlYW51cCBwcm9jZWR1cmVzLCBsaWtlIGBvdXRfdW5yZWdfbGVkX3RyaWdnZXJzYCwgYG91dF9zZnBfcmVsZWFzZWAsIGBvdXRfcmVtb3ZlYCwgYW5kIGBvdXRfcmVzZXRgLlxuKiAgIGBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyYDogQ2xlYXJzIGBwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vyc2AgYWZ0ZXIgZnJlZWluZyBpdC5cbiogICBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYDogQ2hlY2tzIGlmIGBwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vyc2AgaXMgbm9uLU5VTEwgYmVmb3JlIGZyZWVpbmcsIHdoaWNoIGlzIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMsIHNwZWNpZmljYWxseSB0aGUgbGFjayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBhbnkgaW5mb3JtYXRpb24gbGVha3MsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuIFN0YW5kYXJkIGRlYnVnZ2luZyB0b29scywgcGFydGljdWxhcmx5IEtBU0FOIGFuZCBrbWVtbGVhaywgYXJlIHBlcmZlY3RseSBzdWZmaWNpZW50IGZvciBpZGVudGlmeWluZyBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlIGVycm9ycywgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgd2l0aGluIHRoaXMgcGF0Y2guIEtNU0FOIGlzIG5vdCBuZWNlc3NhcnkgaGVyZS4gVGhpcyBpcyBhIGdvb2QgZXhhbXBsZSBvZiBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgYW5kIGltcHJvdmVkIGVycm9yIGhhbmRsaW5nLCB3aGljaCBzaG91bGQgZW5oYW5jZSB0aGUgZHJpdmVyJ3MgcmVsaWFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzUsIk91dHB1dFRva2VucyI6MjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDU0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDE6MjYuODgxMjUxNzc1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmb2N1c2VzIG9uIGZpeGluZyBlcnJvciBoYW5kbGluZyBwYXRocyBhbmQgcmVzb3VyY2UgY2xlYW51cCBpbiB0aGUgUEhZIGRldmljZSBwcm9iZSBhbmQgcmVtb3ZhbCByb3V0aW5lcyAoZS5nLiwgYHBoeV9wcm9iZWAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3NmcF9wcm9iZWApLiBJdCBhZGRyZXNzZXMgcG90ZW50aWFsIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGJ5IGVuc3VyaW5nIHRoYXQgcmVzb3VyY2VzIGxpa2UgU0ZQIGJ1c2VzLCBQSFkgcG9ydHMsIGFuZCBMRUQgdHJpZ2dlcnMgYXJlIHByb3Blcmx5IHJlbGVhc2VkIG9yIHVucmVnaXN0ZXJlZCB3aGVuIGluaXRpYWxpemF0aW9uIGZhaWxzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzIHN1Y2ggYXMgS0FTQU4gKGZvciB1c2UtYWZ0ZXItZnJlZSBhbmQgb3V0LW9mLWJvdW5kcyksIGttZW1sZWFrIChmb3IgbWVtb3J5IGxlYWtzKSwgYW5kIGdlbmVyYWwga2VybmVsIG9vcHMvcGFuaWNzIChmb3IgTlVMTCBkZXJlZmVyZW5jZXMpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBpbnZvbHZlIGNvbXBsZXggdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4ncyBzcGVjaWFsaXplZCB1bmluaXRpYWxpemVkIG1lbW9yeSB0cmFja2luZy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmb2N1c2VzIG9uIGZpeGluZyBlcnJvciBoYW5kbGluZyBwYXRocyBhbmQgcmVzb3VyY2UgY2xlYW51cCBpbiB0aGUgUEhZIGRldmljZSBwcm9iZSBhbmQgcmVtb3ZhbCByb3V0aW5lcyAoZS5nLiwgYHBoeV9wcm9iZWAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3NmcF9wcm9iZWApLiBJdCBhZGRyZXNzZXMgcG90ZW50aWFsIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGJ5IGVuc3VyaW5nIHRoYXQgcmVzb3VyY2VzIGxpa2UgU0ZQIGJ1c2VzLCBQSFkgcG9ydHMsIGFuZCBMRUQgdHJpZ2dlcnMgYXJlIHByb3Blcmx5IHJlbGVhc2VkIG9yIHVucmVnaXN0ZXJlZCB3aGVuIGluaXRpYWxpemF0aW9uIGZhaWxzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzIHN1Y2ggYXMgS0FTQU4gKGZvciB1c2UtYWZ0ZXItZnJlZSBhbmQgb3V0LW9mLWJvdW5kcyksIGttZW1sZWFrIChmb3IgbWVtb3J5IGxlYWtzKSwgYW5kIGdlbmVyYWwga2VybmVsIG9vcHMvcGFuaWNzIChmb3IgTlVMTCBkZXJlZmVyZW5jZXMpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBpbnZvbHZlIGNvbXBsZXggdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4ncyBzcGVjaWFsaXplZCB1bmluaXRpYWxpemVkIG1lbW9yeSB0cmFja2luZy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowd8rxd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-21 07:21:23 +0000 UTC FinishedAt: 2026-08-21 07:41:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e264c048709469096f3927fcd35a2c45f9e38eb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "SFP", "USB_NET_DRIVERS", "USB_NET_SMSC95XX", "USB_LAN78XX", "LED_TRIGGER_PHY", "PHYLIB_LEDS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e264c048709469096f3927fcd35a2c45f9e38eb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "SFP", "USB_NET_DRIVERS", "USB_NET_SMSC95XX", "USB_LAN78XX", "LED_TRIGGER_PHY", "PHYLIB_LEDS" ], "series_id": "37aa0a65-4ec9-4b1c-b1d5-cb339e083323" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phy_probe", "phy_remove", "phy_led_triggers_register", "phy_led_triggers_unregister" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtTRlAmIzM0OywKICAgICYjMzQ7VVNCX05FVF9EUklWRVJTJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfU01TQzk1WFgmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7TEVEX1RSSUdHRVJfUEhZJiMzNDssCiAgICAmIzM0O1BIWUxJQl9MRURTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X3Byb2JlJiMzNDssCiAgICAmIzM0O3BoeV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXImIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmb2N1c2VzIG9uIGZpeGluZyBlcnJvciBoYW5kbGluZyBwYXRocyBhbmQgcmVzb3VyY2UgY2xlYW51cCBpbiB0aGUgUEhZIGRldmljZSBwcm9iZSBhbmQgcmVtb3ZhbCByb3V0aW5lcyAoZS5nLiwgYHBoeV9wcm9iZWAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3NmcF9wcm9iZWApLiBJdCBhZGRyZXNzZXMgcG90ZW50aWFsIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGJ5IGVuc3VyaW5nIHRoYXQgcmVzb3VyY2VzIGxpa2UgU0ZQIGJ1c2VzLCBQSFkgcG9ydHMsIGFuZCBMRUQgdHJpZ2dlcnMgYXJlIHByb3Blcmx5IHJlbGVhc2VkIG9yIHVucmVnaXN0ZXJlZCB3aGVuIGluaXRpYWxpemF0aW9uIGZhaWxzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzIHN1Y2ggYXMgS0FTQU4gKGZvciB1c2UtYWZ0ZXItZnJlZSBhbmQgb3V0LW9mLWJvdW5kcyksIGttZW1sZWFrIChmb3IgbWVtb3J5IGxlYWtzKSwgYW5kIGdlbmVyYWwga2VybmVsIG9vcHMvcGFuaWNzIChmb3IgTlVMTCBkZXJlZmVyZW5jZXMpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBpbnZvbHZlIGNvbXBsZXggdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4mIzM5O3Mgc3BlY2lhbGl6ZWQgdW5pbml0aWFsaXplZCBtZW1vcnkgdHJhY2tpbmcuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHJlc291cmNlIGxlYWtzIGFuZCBlcnJvciBoYW5kbGluZyBwYXRocyBpbiB0aGUgUEhZIGRldmljZSBwcm9iZSBhbmQgcmVtb3ZhbCByb3V0aW5lcyAoYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfc2ZwX3Byb2JlYCkgYW5kIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBjb3JlIFBIWSBsaWJyYXJ5IChgcGh5bGliYCkgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgZW11bGF0ZWQgVVNCIG5ldHdvcmsgYWRhcHRlcnMgKGUuZy4sIGBzbXNjOTV4eGAsIGBsYW43OHh4YCkgdGhhdCByZWdpc3RlciBNRElPIGJ1c2VzIGFuZCBQSFkgZGV2aWNlcy4gRnV6emluZyB0aGVzZSBwYXRocyBpcyB2YWx1YWJsZSB0byBlbnN1cmUgcm9idXN0bmVzcyBvZiBQSFkgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93bi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQzOWQyOWZhMmMzNzkzM2RiYWE2NGZmZDgxNjkwZTYxODk0ZWJlY2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAwNzozOTo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggOTRiMmU4NWUwMGEzNy4uOGNiMGQ2MGZjYmJhOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0xNzIzLDEyICYjNDM7MTcyMyw0MSBAQCBzdGF0aWMgaW50IHBoeV9zZnBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0XHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4gXHR9XG4gXG4tXHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZXNmcF9idXMpXG4mIzQzO1x0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VzZnBfYnVzKSB7XG4gXHRcdHJldCA9IHBoeV9zZXR1cF9zZnBfcG9ydChwaHlkZXYpO1xuJiM0MztcdFx0aWYgKHJldCkge1xuJiM0MztcdFx0XHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4mIzQzO1x0XHRcdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIHBoeV9zZnBfcmVsZWFzZSAtIHJlbGVhc2UgcmVzb3VyY2VzIHNldCB1cCBieSBwaHlfc2ZwX3Byb2JlKClcbiYjNDM7ICogQHBoeWRldjogdGhlIFBIWSBkZXZpY2VcbiYjNDM7ICpcbiYjNDM7ICogUmVsZWFzZSB0aGUgU0ZQIHJlc291cmNlcyBzZXQgdXAgYnkgYSBzdWNjZXNzZnVsIHBoeV9zZnBfcHJvYmUoKS4gVW5yZWdpc3RlclxuJiM0MzsgKiB0aGUgdXBzdHJlYW0gYmVmb3JlIGRlc3Ryb3lpbmcgaXRzIHBoeV9wb3J0LCBzbyBTRlAgdXBzdHJlYW0gY2FsbGJhY2tzIGNhbm5vdFxuJiM0MzsgKiByYWNlIHdpdGggcG9ydCBkZXN0cnVjdGlvbi5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIHBoeV9zZnBfcmVsZWFzZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBoeV9wb3J0ICpwb3J0LCAqdG1wO1xuJiM0MztcbiYjNDM7XHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4mIzQzO1x0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuJiM0MztcbiYjNDM7XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9ydCwgdG1wLCBcdTAwMjZwaHlkZXYtXHUwMDNlcG9ydHMsIGhlYWQpIHtcbiYjNDM7XHRcdGlmICghcG9ydC1cdTAwM2Vpc19zZnApXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdHBoeV9kZWxfcG9ydChwaHlkZXYsIHBvcnQpO1xuJiM0MztcdFx0cGh5X3BvcnRfZGVzdHJveShwb3J0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcbiB7XG4gXHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbkBAIC0zNDU0LDYgJiM0MzszNDgzLDcgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdHN0cnVjdCBwaHlfcG9ydCAqcG9ydCA9IHBoeV9wb3J0X2FsbG9jKCk7XG4gXHR1bnNpZ25lZCBsb25nIG1vZGU7XG4mIzQzO1x0aW50IHJldDtcbiBcbiBcdGlmICghcG9ydClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG5AQCAtMzQ4MCw5ICYjNDM7MzUxMCwxMSBAQCBzdGF0aWMgaW50IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdHBvcnQtXHUwMDNlcGFpcnMgPSBtYXhfdChpbnQsIHBvcnQtXHUwMDNlcGFpcnMsXG4gXHRcdFx0XHQgICAgZXRodG9vbF9saW5rbW9kZV9uX3BhaXJzKG1vZGUpKTtcbiBcbi1cdHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpO1xuJiM0MztcdHJldCA9IHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRwaHlfcG9ydF9kZXN0cm95KHBvcnQpO1xuIFxuLVx0cmV0dXJuIDA7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGludCBvZl9waHlfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbkBAIC0zNTQ3LDEzICYjNDM7MzU3OSwxMyBAQCBzdGF0aWMgaW50IHBoeV9zZXR1cF9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0aWYgKCFwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuIFx0XHRyZXQgPSBwaHlfc2ZwX3Byb2JlKHBoeWRldik7XG4gXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRcdGdvdG8gZXJyX3BvcnRzO1xuIFx0fVxuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VuX3BvcnRzIFx1MDAzYyBwaHlkZXYtXHUwMDNlbWF4X25fcG9ydHMpIHtcbiBcdFx0cmV0ID0gcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQocGh5ZGV2KTtcbiBcdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdFx0Z290byBlcnJfc2ZwO1xuIFx0fVxuIFxuIFx0bGlua21vZGVfemVybyhwb3J0c19zdXBwb3J0ZWQpO1xuQEAgLTM1ODAsNyAmIzQzOzM2MTIsOSBAQCBzdGF0aWMgaW50IHBoeV9zZXR1cF9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFxuIFx0cmV0dXJuIDA7XG4gXG4tb3V0OlxuJiM0MztlcnJfc2ZwOlxuJiM0MztcdHBoeV9zZnBfcmVsZWFzZShwaHlkZXYpO1xuJiM0MztlcnJfcG9ydHM6XG4gXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMzcwNiw3ICYjNDM7Mzc0MCw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGlmIChwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXByb2JlKSB7XG4gXHRcdGVyciA9IHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcHJvYmUocGh5ZGV2KTtcbiBcdFx0aWYgKGVycilcbi1cdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdFx0Z290byBvdXRfcmVzZXQ7XG4gXHR9XG4gXG4gXHRwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7XG5AQCAtMzcyNyw3ICYjNDM7Mzc2MSw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdFx0ZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XG4gXG4gXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdGdvdG8gb3V0X3JlbW92ZTtcbiBcbiBcdGlmICghbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsXG4gXHRcdFx0ICAgICAgIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuQEAgLTM3NDQsNyAmIzQzOzM3NzgsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXG4gXHRlcnIgPSBwaHlfc2V0dXBfcG9ydHMocGh5ZGV2KTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0Z290byBvdXRfcmVtb3ZlO1xuIFxuIFx0cGh5X2FkdmVydGlzZV9zdXBwb3J0ZWQocGh5ZGV2KTtcbiBcbkBAIC0zNzUzLDcgJiM0MzszNzg3LDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0ICovXG4gXHRlcnIgPSBnZW5waHlfYzQ1X3JlYWRfZWVlX2FkdihwaHlkZXYsIHBoeWRldi1cdTAwM2VhZHZlcnRpc2luZ19lZWUpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRnb3RvIG91dF9zZnBfcmVsZWFzZTtcbiBcbiBcdC8qIEdldCB0aGUgRUVFIG1vZGVzIHdlIHdhbnQgdG8gcHJvaGliaXQuICovXG4gXHRvZl9zZXRfcGh5X2VlZV9icm9rZW4ocGh5ZGV2KTtcbkBAIC0zNzkzLDkgJiM0MzszODI3LDYgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRcdFx0IHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpO1xuIFx0fVxuIFxuLVx0LyogU2V0IHRoZSBzdGF0ZSB0byBSRUFEWSBieSBkZWZhdWx0ICovXG4tXHRwaHlkZXYtXHUwMDNlc3RhdGUgPSBQSFlfUkVBRFk7XG4tXG4gXHQvKiBSZWdpc3RlciB0aGUgUEhZIExFRCB0cmlnZ2VycyAqL1xuIFx0aWYgKCFwaHlkZXYtXHUwMDNlaXNfb25fc2ZwX21vZHVsZSlcbiBcdFx0cGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihwaHlkZXYpO1xuQEAgLTM4MDYsMjAgJiM0MzszODM3LDI3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXHUwMDI2XHUwMDI2ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKSB7XG4gXHRcdGVyciA9IG9mX3BoeV9sZWRzKHBoeWRldik7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRcdGdvdG8gb3V0X3VucmVnX2xlZF90cmlnZ2VycztcbiBcdH1cbiBcbiYjNDM7XHQvKiBTZXQgdGhlIHN0YXRlIHRvIFJFQURZIGJ5IGRlZmF1bHQgKi9cbiYjNDM7XHRwaHlkZXYtXHUwMDNlc3RhdGUgPSBQSFlfUkVBRFk7XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gXG4tb3V0OlxuLVx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuLVx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuJiM0MztvdXRfdW5yZWdfbGVkX3RyaWdnZXJzOlxuJiM0MztcdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4mIzQzO1x0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbiBcbiYjNDM7b3V0X3NmcF9yZWxlYXNlOlxuJiM0MztcdHBoeV9zZnBfcmVsZWFzZShwaHlkZXYpO1xuIFx0cGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTtcbiBcbi1cdGlmICghcGh5ZGV2LVx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXG4tXHRcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xuJiM0MztvdXRfcmVtb3ZlOlxuJiM0MztcdGlmIChwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZSlcbiYjNDM7XHRcdHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKHBoeWRldik7XG4gXG4mIzQzO291dF9yZXNldDpcbiBcdC8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4gXG5AQCAtMzg0MCw5ICYjNDM7Mzg3OCw3IEBAIHN0YXRpYyBpbnQgcGh5X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXG4gXHRwaHlkZXYtXHUwMDNlc3RhdGUgPSBQSFlfRE9XTjtcbiBcbi1cdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cdTAwM2VzZnBfYnVzKTtcbi1cdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbi1cbiYjNDM7XHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VyZW1vdmUpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmNcbmluZGV4IDRlYjc3MTZiYjlkNmMuLmZmNmU1MTgzOTViZTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jXG5AQCAtMTI2LDYgJiM0MzsxMjYsNyBAQCBpbnQgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuIFx0d2hpbGUgKGktLSlcbiBcdFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoXHUwMDI2cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xuIFx0a2ZyZWUocGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xuJiM0MztcdHBoeS1cdTAwM2VwaHlfbGVkX3RyaWdnZXJzID0gTlVMTDtcbiBvdXRfdW5yZWdfbGluazpcbiBcdHBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKHBoeS1cdTAwM2VsZWRfbGlua190cmlnZ2VyKTtcbiBvdXRfZnJlZV9saW5rOlxuQEAgLTE0MSwxMCAmIzQzOzE0MiwxMiBAQCB2b2lkIHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuIHtcbiBcdGludCBpO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGh5LVx1MDAzZXBoeV9udW1fbGVkX3RyaWdnZXJzOyBpJiM0MzsmIzQzOylcbi1cdFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoXHUwMDI2cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xuLVx0a2ZyZWUocGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xuLVx0cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMO1xuJiM0MztcdGlmIChwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vycykge1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGh5LVx1MDAzZXBoeV9udW1fbGVkX3RyaWdnZXJzOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoXHUwMDI2cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xuJiM0MztcdFx0a2ZyZWUocGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xuJiM0MztcdFx0cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdGlmIChwaHktXHUwMDNlbGVkX2xpbmtfdHJpZ2dlcikge1xuIFx0XHRwaHlfbGVkX3RyaWdnZXJfdW5yZWdpc3RlcihwaHktXHUwMDNlbGVkX2xpbmtfdHJpZ2dlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDc6Mzk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtTRlAmIzM0OywKICAgICYjMzQ7VVNCX05FVF9EUklWRVJTJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfU01TQzk1WFgmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7TEVEX1RSSUdHRVJfUEhZJiMzNDssCiAgICAmIzM0O1BIWUxJQl9MRURTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X3Byb2JlJiMzNDssCiAgICAmIzM0O3BoeV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgYW5kIGVycm9yIGhhbmRsaW5nIHBhdGhzIGluIHRoZSBQSFkgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsIHJvdXRpbmVzIChgcGh5X3Byb2JlYCwgYHBoeV9yZW1vdmVgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9zZnBfcHJvYmVgKSBhbmQgZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHBhcnQgb2YgdGhlIGNvcmUgUEhZIGxpYnJhcnkgKGBwaHlsaWJgKSB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBlbXVsYXRlZCBVU0IgbmV0d29yayBhZGFwdGVycyAoZS5nLiwgYHNtc2M5NXh4YCwgYGxhbjc4eHhgKSB0aGF0IHJlZ2lzdGVyIE1ESU8gYnVzZXMgYW5kIFBIWSBkZXZpY2VzLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIHZhbHVhYmxlIHRvIGVuc3VyZSByb2J1c3RuZXNzIG9mIFBIWSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDM5ZDI5ZmEyYzM3OTMzZGJhYTY0ZmZkODE2OTBlNjE4OTRlYmVjZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDIxIDA3OjM5OjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKaW5kZXggOTRiMmU4NWUwMGEzNy4uOGNiMGQ2MGZjYmJhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCkBAIC0xNzIzLDEyICYjNDM7MTcyMyw0MSBAQCBzdGF0aWMgaW50IHBoeV9zZnBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJCXBoeWRldi0mZ3Q7c2ZwX2J1cyA9IE5VTEw7CiAJfQogCi0JaWYgKCFyZXQgJmFtcDsmYW1wOyBwaHlkZXYtJmd0O3NmcF9idXMpCiYjNDM7CWlmICghcmV0ICZhbXA7JmFtcDsgcGh5ZGV2LSZndDtzZnBfYnVzKSB7CiAJCXJldCA9IHBoeV9zZXR1cF9zZnBfcG9ydChwaHlkZXYpOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7CiYjNDM7CQkJcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKJiM0MzsJCX0KJiM0MzsJfQogCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIHBoeV9zZnBfcmVsZWFzZSAtIHJlbGVhc2UgcmVzb3VyY2VzIHNldCB1cCBieSBwaHlfc2ZwX3Byb2JlKCkKJiM0MzsgKiBAcGh5ZGV2OiB0aGUgUEhZIGRldmljZQomIzQzOyAqCiYjNDM7ICogUmVsZWFzZSB0aGUgU0ZQIHJlc291cmNlcyBzZXQgdXAgYnkgYSBzdWNjZXNzZnVsIHBoeV9zZnBfcHJvYmUoKS4gVW5yZWdpc3RlcgomIzQzOyAqIHRoZSB1cHN0cmVhbSBiZWZvcmUgZGVzdHJveWluZyBpdHMgcGh5X3BvcnQsIHNvIFNGUCB1cHN0cmVhbSBjYWxsYmFja3MgY2Fubm90CiYjNDM7ICogcmFjZSB3aXRoIHBvcnQgZGVzdHJ1Y3Rpb24uCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgcGh5X3NmcF9yZWxlYXNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQsICp0bXA7CiYjNDM7CiYjNDM7CXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7CiYjNDM7CXBoeWRldi0mZ3Q7c2ZwX2J1cyA9IE5VTEw7CiYjNDM7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3J0LCB0bXAsICZhbXA7cGh5ZGV2LSZndDtwb3J0cywgaGVhZCkgewomIzQzOwkJaWYgKCFwb3J0LSZndDtpc19zZnApCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlwaHlfZGVsX3BvcnQocGh5ZGV2LCBwb3J0KTsKJiM0MzsJCXBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KQogewogCXJldHVybiBwaHlkcnYtJmd0O2NvbmZpZ19pbnRyICZhbXA7JmFtcDsgcGh5ZHJ2LSZndDtoYW5kbGVfaW50ZXJydXB0OwpAQCAtMzQ1NCw2ICYjNDM7MzQ4Myw3IEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKIAlzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQgPSBwaHlfcG9ydF9hbGxvYygpOwogCXVuc2lnbmVkIGxvbmcgbW9kZTsKJiM0MzsJaW50IHJldDsKIAogCWlmICghcG9ydCkKIAkJcmV0dXJuIC1FTk9NRU07CkBAIC0zNDgwLDkgJiM0MzszNTEwLDExIEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJcG9ydC0mZ3Q7cGFpcnMgPSBtYXhfdChpbnQsIHBvcnQtJmd0O3BhaXJzLAogCQkJCSAgICBldGh0b29sX2xpbmttb2RlX25fcGFpcnMobW9kZSkpOwogCi0JcGh5X2FkZF9wb3J0KHBoeWRldiwgcG9ydCk7CiYjNDM7CXJldCA9IHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcGh5X3BvcnRfZGVzdHJveShwb3J0KTsKIAotCXJldHVybiAwOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IG9mX3BoeV9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQpAQCAtMzU0NywxMyAmIzQzOzM1NzksMTMgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAlpZiAoIXBoeWRldi0mZ3Q7aXNfZ2VucGh5X2RyaXZlbikgewogCQlyZXQgPSBwaHlfc2ZwX3Byb2JlKHBoeWRldik7CiAJCWlmIChyZXQpCi0JCQlnb3RvIG91dDsKJiM0MzsJCQlnb3RvIGVycl9wb3J0czsKIAl9CiAKIAlpZiAocGh5ZGV2LSZndDtuX3BvcnRzICZsdDsgcGh5ZGV2LSZndDttYXhfbl9wb3J0cykgewogCQlyZXQgPSBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChwaHlkZXYpOwogCQlpZiAocmV0KQotCQkJZ290byBvdXQ7CiYjNDM7CQkJZ290byBlcnJfc2ZwOwogCX0KIAogCWxpbmttb2RlX3plcm8ocG9ydHNfc3VwcG9ydGVkKTsKQEAgLTM1ODAsNyAmIzQzOzM2MTIsOSBAQCBzdGF0aWMgaW50IHBoeV9zZXR1cF9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCiAJcmV0dXJuIDA7CiAKLW91dDoKJiM0MztlcnJfc2ZwOgomIzQzOwlwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTsKJiM0MztlcnJfcG9ydHM6CiAJcGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTsKIAlyZXR1cm4gcmV0OwogfQpAQCAtMzcwNiw3ICYjNDM7Mzc0MCw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlpZiAocGh5ZGV2LSZndDtkcnYtJmd0O3Byb2JlKSB7CiAJCWVyciA9IHBoeWRldi0mZ3Q7ZHJ2LSZndDtwcm9iZShwaHlkZXYpOwogCQlpZiAoZXJyKQotCQkJZ290byBvdXQ7CiYjNDM7CQkJZ290byBvdXRfcmVzZXQ7CiAJfQogCiAJcGh5X2Rpc2FibGVfaW50ZXJydXB0cyhwaHlkZXYpOwpAQCAtMzcyNyw3ICYjNDM7Mzc2MSw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7CiAKIAlpZiAoZXJyKQotCQlnb3RvIG91dDsKJiM0MzsJCWdvdG8gb3V0X3JlbW92ZTsKIAogCWlmICghbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsCiAJCQkgICAgICAgcGh5ZGV2LSZndDtzdXBwb3J0ZWQpKQpAQCAtMzc0NCw3ICYjNDM7Mzc3OCw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAogCWVyciA9IHBoeV9zZXR1cF9wb3J0cyhwaHlkZXYpOwogCWlmIChlcnIpCi0JCWdvdG8gb3V0OwomIzQzOwkJZ290byBvdXRfcmVtb3ZlOwogCiAJcGh5X2FkdmVydGlzZV9zdXBwb3J0ZWQocGh5ZGV2KTsKIApAQCAtMzc1Myw3ICYjNDM7Mzc4Nyw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAkgKi8KIAllcnIgPSBnZW5waHlfYzQ1X3JlYWRfZWVlX2FkdihwaHlkZXYsIHBoeWRldi0mZ3Q7YWR2ZXJ0aXNpbmdfZWVlKTsKIAlpZiAoZXJyKQotCQlnb3RvIG91dDsKJiM0MzsJCWdvdG8gb3V0X3NmcF9yZWxlYXNlOwogCiAJLyogR2V0IHRoZSBFRUUgbW9kZXMgd2Ugd2FudCB0byBwcm9oaWJpdC4gKi8KIAlvZl9zZXRfcGh5X2VlZV9icm9rZW4ocGh5ZGV2KTsKQEAgLTM3OTMsOSAmIzQzOzM4MjcsNiBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCQkJIHBoeWRldi0mZ3Q7c3VwcG9ydGVkKTsKIAl9CiAKLQkvKiBTZXQgdGhlIHN0YXRlIHRvIFJFQURZIGJ5IGRlZmF1bHQgKi8KLQlwaHlkZXYtJmd0O3N0YXRlID0gUEhZX1JFQURZOwotCiAJLyogUmVnaXN0ZXIgdGhlIFBIWSBMRUQgdHJpZ2dlcnMgKi8KIAlpZiAoIXBoeWRldi0mZ3Q7aXNfb25fc2ZwX21vZHVsZSkKIAkJcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihwaHlkZXYpOwpAQCAtMzgwNiwyMCAmIzQzOzM4MzcsMjcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQogCWlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgJmFtcDsmYW1wOyAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkgewogCQllcnIgPSBvZl9waHlfbGVkcyhwaHlkZXYpOwogCQlpZiAoZXJyKQotCQkJZ290byBvdXQ7CiYjNDM7CQkJZ290byBvdXRfdW5yZWdfbGVkX3RyaWdnZXJzOwogCX0KIAomIzQzOwkvKiBTZXQgdGhlIHN0YXRlIHRvIFJFQURZIGJ5IGRlZmF1bHQgKi8KJiM0MzsJcGh5ZGV2LSZndDtzdGF0ZSA9IFBIWV9SRUFEWTsKJiM0MzsKIAlyZXR1cm4gMDsKIAotb3V0OgotCXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7Ci0JcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKJiM0MztvdXRfdW5yZWdfbGVkX3RyaWdnZXJzOgomIzQzOwlpZiAoIXBoeWRldi0mZ3Q7aXNfb25fc2ZwX21vZHVsZSkKJiM0MzsJCXBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpOwogCiYjNDM7b3V0X3NmcF9yZWxlYXNlOgomIzQzOwlwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTsKIAlwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpOwogCi0JaWYgKCFwaHlkZXYtJmd0O2lzX29uX3NmcF9tb2R1bGUpCi0JCXBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpOwomIzQzO291dF9yZW1vdmU6CiYjNDM7CWlmIChwaHlkZXYtJmd0O2Rydi0mZ3Q7cmVtb3ZlKQomIzQzOwkJcGh5ZGV2LSZndDtkcnYtJmd0O3JlbW92ZShwaHlkZXYpOwogCiYjNDM7b3V0X3Jlc2V0OgogCS8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovCiAJcGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpOwogCkBAIC0zODQwLDkgJiM0MzszODc4LDcgQEAgc3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikKIAogCXBoeWRldi0mZ3Q7c3RhdGUgPSBQSFlfRE9XTjsKIAotCXNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi0mZ3Q7c2ZwX2J1cyk7Ci0JcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKLQomIzQzOwlwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTsKIAlwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpOwogCiAJaWYgKHBoeWRldi0mZ3Q7ZHJ2ICZhbXA7JmFtcDsgcGh5ZGV2LSZndDtkcnYtJmd0O3JlbW92ZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jCmluZGV4IDRlYjc3MTZiYjlkNmMuLmZmNmU1MTgzOTViZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYwpAQCAtMTI2LDYgJiM0MzsxMjYsNyBAQCBpbnQgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KQogCXdoaWxlIChpLS0pCiAJCXBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKCZhbXA7cGh5LSZndDtwaHlfbGVkX3RyaWdnZXJzW2ldKTsKIAlrZnJlZShwaHktJmd0O3BoeV9sZWRfdHJpZ2dlcnMpOwomIzQzOwlwaHktJmd0O3BoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMOwogb3V0X3VucmVnX2xpbms6CiAJcGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIocGh5LSZndDtsZWRfbGlua190cmlnZ2VyKTsKIG91dF9mcmVlX2xpbms6CkBAIC0xNDEsMTAgJiM0MzsxNDIsMTIgQEAgdm9pZCBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSkKIHsKIAlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBwaHktJmd0O3BoeV9udW1fbGVkX3RyaWdnZXJzOyBpJiM0MzsmIzQzOykKLQkJcGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoJmFtcDtwaHktJmd0O3BoeV9sZWRfdHJpZ2dlcnNbaV0pOwotCWtmcmVlKHBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2Vycyk7Ci0JcGh5LSZndDtwaHlfbGVkX3RyaWdnZXJzID0gTlVMTDsKJiM0MzsJaWYgKHBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2VycykgewomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IHBoeS0mZ3Q7cGh5X251bV9sZWRfdHJpZ2dlcnM7IGkmIzQzOyYjNDM7KQomIzQzOwkJCXBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKCZhbXA7cGh5LSZndDtwaHlfbGVkX3RyaWdnZXJzW2ldKTsKJiM0MzsJCWtmcmVlKHBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2Vycyk7CiYjNDM7CQlwaHktJmd0O3BoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMOwomIzQzOwl9CiAKIAlpZiAocGh5LSZndDtsZWRfbGlua190cmlnZ2VyKSB7CiAJCXBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKHBoeS0mZ3Q7bGVkX2xpbmtfdHJpZ2dlcik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUEhZIERldmljZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmNgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBuZXR3b3JraW5nLXJlbGF0ZWQgZml4LCB3aGljaCBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0by4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRyZXNzaW5nIHJlc291cmNlIGxlYWtzIGFuZCBpbXByb3ZpbmcgZXJyb3IgaGFuZGxpbmcgaW4gc2V2ZXJhbCBrZXkgUEhZIGZ1bmN0aW9uczogYHBoeV9zZnBfcHJvYmVgLCBgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnRgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9wcm9iZWAsIGFuZCBgcGh5X3JlbW92ZWAuIEdvb2QsIHRob3NlIGFyZSBjcml0aWNhbCBlbnRyeSBhbmQgZXhpdCBwb2ludHMuIEFkZGluZyBhIG5ldyBgcGh5X3NmcF9yZWxlYXNlYCBmdW5jdGlvbiBpcyBhIG5vdGFibGUgYWRkaXRpb24gYXMgd2VsbCDigJMgc291bmRzIGxpa2UgaXQmIzM5O3MgcGFydCBvZiB0aGUgY2xlYW51cCBwcm9jZWR1cmVzIGZvciB0aGUgU0ZQIGZ1bmN0aW9uYWxpdHkuCgpUaGUgY2hhbmdlcyBpbiBgcGh5X2xlZF90cmlnZ2Vycy5jYCBhcmUgcGFydGljdWxhcmx5IGludGVyZXN0aW5nLiBUaGV5JiMzOTtyZSBwcmV2ZW50aW5nIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIGRvdWJsZSBmcmVlcy4gU2V0dGluZyBgcGh5LSZndDtwaHlfbGVkX3RyaWdnZXJzID0gTlVMTGAgYW5kIGluY2x1ZGluZyBhIGNoZWNrIGJlZm9yZSB1bnJlZ2lzdGVyaW5nIGlzIHRoZSByaWdodCBhcHByb2FjaCB0byBlbnN1cmUgdGhlcmUmIzM5O3Mgbm8gZGFuZ2xpbmcgcG9pbnRlci4gU21hcnQsIGFuZCBhIGNvbW1vbiBwYXR0ZXJuIHRvIGF2b2lkIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuCgpOb3csIHRoZSBxdWVzdGlvbiBpcywgaG93IGVhc2lseSBjYW4gSSB0cmlnZ2VyIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gUEhZIGRldmljZXMgYXJlIGZ1bmRhbWVudGFsbHkgcGFydCBvZiB0aGUgbmV0d29yayBzdGFjay4gSSBrbm93IGVudmlyb25tZW50cyBsaWtlIFFFTVUgY2FuIGVtdWxhdGUgbmV0d29yayBkZXZpY2VzLCBhbmQgdGhvc2UgZW11bGF0ZWQgZGV2aWNlcyBvZnRlbiB1dGlsaXplIFBIWXMsIGV2ZW4gaWYgdGhleSBkb24mIzM5O3QgKmRpcmVjdGx5KiB1c2UgdGhlIHBoeWxpYiBBUEkuIEZvciBleGFtcGxlLCBlMTAwMCBhbmQgdmlydGlvLW5ldCBhcmUgZ29vZCBjYW5kaWRhdGVzLiBUaG91Z2ggdmlydGlvLW5ldCB1c3VhbGx5IGRvZXNuJiMzOTt0IG5lZWQgcGh5bGliLCB0aGVyZSBtYXkgYmUgc29tZSBlbXVsYXRlZCBkZXZpY2VzIHdoaWNoIHVzZSB0aGVtLCBvciBkdW1teSBQSFlzIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuCgpXYWl0IGEgc2Vjb25k4oCmIGBwaHlfcHJvYmVgIGlzIGNhbGxlZCB3aGVuIGEgUEhZIGRldmljZSBpcyBwcm9iZWQuIFNvLCBpdCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBmcm9tIG1hbnkga2VybmVsLXNpZGUgY29kZSBwYXRocy4KCkNhbiBJIGdldCB0byBgcGh5X3Byb2JlYCB0aHJvdWdoIHN5emthbGxlcj8gVGhhdCYjMzk7cyB0aGUgcmVhbCB0ZXN0LiBTeXprYWxsZXIgY2FuIGdlbmVyYXRlIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIGxpa2UgdmV0aCwgdHVuLCBvciB1c2UgbmV0ZGV2c2ltIHdoaWNoIHZlcnkgd2VsbCBtaWdodCB1c2UgUEhZcy4gQWxzbywgdGhlIGBtZGlvYCBidXMgaXMgYSBrZXkgZWxlbWVudCB3aGljaCBpcyBmcmVxdWVudGx5IHBvcHVsYXRlZCBpbiB0ZXN0aW5nLiBZZXMsIEkmIzM5O20gcHJldHR5IHN1cmUgaXQgaXMuIEFscmlnaHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgcGh5X3Byb2JlYCBpcywgaW4gZmFjdCwgcmVhY2hhYmxlLiBMZXQgbWUgY2hlY2sgdGhlIHN5emthbGxlciBjb3JwdXMgYW5kIHNvbWUgb2YgbXkgcGFzdCB3b3JrIHRvIGNvbmZpcm0gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzcxMT1FWFBPUlRfU1lNQk9MX0dQTChmd25vZGVfZ2V0X3BoeV9ub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM3MTMtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM3MTQ6ICogcGh5X3Byb2JlIC0gcHJvYmUgYW5kIGluaXQgYSBQSFkgZGV2aWNlXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM3MTUtICogQGRldjogZGV2aWNlIHRvIHByb2JlIGFuZCBpbml0XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNzE4LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozNzE5OnN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzcyMC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zOTAwPXN0YXRpYyBpbnQgcGh5X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RyaXZlciAqbmV3X2RyaXZlcixcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM5MjYtXHRuZXdfZHJpdmVyLVx1MDAzZW1kaW9kcnYuZHJpdmVyLmJ1cyA9IFx1MDAyNm1kaW9fYnVzX3R5cGU7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM5Mjc6XHRuZXdfZHJpdmVyLVx1MDAzZW1kaW9kcnYuZHJpdmVyLnByb2JlID0gcGh5X3Byb2JlO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zOTI4LVx0bmV3X2RyaXZlci1cdTAwM2VtZGlvZHJ2LmRyaXZlci5yZW1vdmUgPSBwaHlfcmVtb3ZlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NzMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTURJTyBCdXMgUHJvYmUgQ2hhbGxlbmdlKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IHRvIHRyaWdnZXIgYHBoeV9wcm9iZWAgZm9yIGEgUEhZIGRyaXZlciB1c2luZyBzeXprYWxsZXIuIFRoZSBjb3JlIGlzc3VlIGlzIHRoYXQgTURJTyBidXMgZGV2aWNlcyBhcmUgdXN1YWxseSBjcmVhdGVkIHZpYSBkZXZpY2UgdHJlZSBvciBzcGVjaWZpYyBkcml2ZXJzLCB3aGljaCBtYWtlcyBkaXJlY3QgY29udHJvbCBmcm9tIHN5emthbGxlciB0cmlja3kuIGBzeXpfZ2VuZXRsaW5rYCBpcyBhbiBvcHRpb24gZm9yIGRldmljZSBjcmVhdGlvbiwgYnV0IGl0IGRvZXNuJiMzOTt0IHNlZW0gZGlyZWN0bHkgYXBwbGljYWJsZSBoZXJlLgoKSSBpbml0aWFsbHkgY29uc2lkZXJlZCBgbmV0ZGV2c2ltYCwgYG1hYzgwMjExX2h3c2ltYCwgYW5kIGB2a21zYCwgYnV0IHRob3NlIGRvbiYjMzk7dCBzZWVtIHRvIHV0aWxpemUgcGh5bGliIGRpcmVjdGx5LiBUaGVuIEkgdGhvdWdodCBhYm91dCBgdHVuYCBhbmQgYHRhcGAgaW50ZXJmYWNlcywgYnV0IHRoZXkgYXJlIHVucmVsYXRlZC4gVGhlIGtleSBpcyB0byBmaW5kIGlmIHRoZXJlJiMzOTtzIGFueSBzb2Z0d2FyZSBlbXVsYXRlZCBNRElPIGJ1cyB0aGF0IHN5emthbGxlciBjb3VsZCB1c2UuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgaWYgYG1kaW9fYnVzX3R5cGVgIGRldmljZXMgY2FuIGJlIGluc3RhbnRpYXRlZCBieSB1c2Vyc3BhY2UgZGlyZWN0bHkuIEkga25vdyB1c2Vyc3BhY2UgZG9lc24mIzM5O3QgKnR5cGljYWxseSogY3JlYXRlIE1ESU8gZGV2aWNlcyB1bmxlc3MgdGhlcmUmIzM5O3MgYW4gZXhwbGljaXQgaW50ZXJmYWNlLiBUaGUgdGhvdWdodCB0aGVuIHNoaWZ0ZWQgYmFjayB0byBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBwYXJ0aWN1bGFybHkgdGhlIGBkdW1teV9oY2RgLiBDb3VsZCB0aGVyZSBiZSBVU0IgbmV0d29yayBhZGFwdGVycyB0aGF0LCBiZWhpbmQgdGhlIHNjZW5lcywgbGV2ZXJhZ2UgcGh5bGliPyBUaGlzIHNlZW1zIHByb21pc2luZywgc28gbGV0JiMzOTtzIGNoZWNrIGludG8gdGhhdCBhbmdsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yNy0jaW5jbHVkZSBcdTAwM2NsaW51eC9pZl92bGFuLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6Mjg6I2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjktI2luY2x1ZGUgXHUwMDNjbmV0L3NlbGZ0ZXN0cy5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMTUtI2luY2x1ZGUgXCYjMzQ7YXNpeC5oXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzoxNjojaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMTctXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMC0jaW5jbHVkZSBcdTAwM2NsaW51eC9tZGlvLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjE6I2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjItI2luY2x1ZGUgXHUwMDNjbmV0L2lwNl9jaGVja3N1bS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvaGV4LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jOjE0OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYy0xNS0jaW5jbHVkZSBcdTAwM2NsaW51eC91c2IuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTIzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM6MjQ6I2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTI1LSNpbmNsdWRlIFx1MDAzY25ldC9zZWxmdGVzdHMuaFx1MDAzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzODYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBIWSBEcml2ZXIgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gdGhpcyBwYXRjaC4gVGhpbmtpbmcgdGhyb3VnaCB0aGlzLCBteSBleHBlcnQgZXllIGltbWVkaWF0ZWx5IHNlZXMgdGhhdCBkcml2ZXJzIGxpa2UgYGxhbjc4eHhgLCBgc21zYzk1eHhgLCBgYXg4ODE3MmFgLCBhbmQgYHI4MTUyYCBhcmUgYWxsIFVTQiBuZXR3b3JrIGFkYXB0ZXJzIHRoYXQgbWFrZSB1c2Ugb2YgYHBoeS5oYC4gVGhlIGJlYXV0eSBvZiBzeXprYWxsZXIgYW5kIGl0cyBgZHVtbXlfaGNkYCBlbXVsYXRpb24gdmlhIGBzeXpfdXNiX2Nvbm5lY3RgIGlzIHRoYXQgSSBjYW4gYWJzb2x1dGVseSB0cmlnZ2VyIHRoZSBwcm9iaW5nIG9mIHRob3NlIFVTQiBuZXR3b3JrIGRyaXZlcnMuIFRoYXQsIGluIHR1cm4sIHJlZ2lzdGVycyBNRElPIGJ1c2VzIGFuZCBQSFkgZGV2aWNlcywgZGlyZWN0bHkgaGl0dGluZyBgcGh5X3Byb2JlYC4gU28sIHRoaXMgY29kZSBpcyBkZWZpbml0aXZlbHkgcmVhY2hhYmxlIGV2ZW4gaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgd2hpY2ggaXMgZ3JlYXQgZm9yIGZ1enppbmcuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhlIHBhdGNoIGl0c2VsZi4gVGhlIGNoYW5nZXMgdG91Y2ggY29yZSBQSFkgbGlicmFyeSBmdW5jdGlvbnM6IHNwZWNpZmljYWxseSwgYHBoeV9wcm9iZWAsIGBwaHlfc2ZwX3Byb2JlYCwgYHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0YCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfcmVtb3ZlYCwgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgLCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY2hhbmdlcyBhcmUsIHNvIHRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRvIGV4YW1pbmUgaW4gZGV0YWlsLgoKRnJvbSBteSBpbml0aWFsIGdsYW5jZSwgdGhlIHBhdGNoIGFkZHJlc3NlcyBzb21lIGVycm9yIGhhbmRsaW5nIGluIGBwaHlfcHJvYmVgLCBhZGRzIGBwaHlfc2ZwX3JlbGVhc2VgLCBhbmQgZml4ZXMgYSBOVUxMIGNoZWNrIGluIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgLgoKVGhlIGtleSBmdW5jdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZTogYHBoeV9wcm9iZWAsIGBwaHlfc2ZwX3Byb2JlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAsIGBwaHlfc2ZwX3JlbGVhc2VgLCBgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcmAsIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYC4gV2FpdOKApiBhIGZldyBvZiB0aGVzZSBsb29rIGxpa2UgdGhleSYjMzk7cmUgc3RhdGljLgoKSG9sZCBvbiwgSSBzZWUgdGhhdCBgcGh5X3NmcF9yZWxlYXNlYCBpcyBzdGF0aWMuIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAgaXMgYWxzbyBzdGF0aWMsIGFzIGlzIGBwaHlfc2V0dXBfcG9ydHNgLiBgcGh5X3Byb2JlYCBpcyBhbHNvIHN0YXRpYyAodXNlZCBhcyBhIGNhbGxiYWNrKS4gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiBgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcmAgYW5kIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgIGFyZSBleHBvcnRlZCBvciBub24tc3RhdGljLCBJIHNob3VsZCBjb25maXJtIHRoYXQgcmlnaHQgYXdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jPTgxPXN0YXRpYyB2b2lkIHBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKHN0cnVjdCBwaHlfbGVkX3RyaWdnZXIgKnBsdClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jLTg1LVxuZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYzo4NjppbnQgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYy04Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYy0xMzgtfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYzoxMzk6RVhQT1JUX1NZTUJPTF9HUEwocGh5X2xlZF90cmlnZ2Vyc19yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jLTE0MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDc1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUEhZIERyaXZlciYjMzk7cyBBUEkgRXhwb3N1cmUqKgoKT2theSwgc28gSSYjMzk7bSBnb2luZyB0aHJvdWdoIHRoaXMgY29kZSBhbmQgdGhpbmtpbmcgYWJvdXQgd2hpY2ggZnVuY3Rpb25zIHdlIHNob3VsZCBleHBvc2UgaW4gdGhlIEFQSSwga2VlcGluZyBpbiBtaW5kIHRoZSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeXBvaW50cy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoYXQgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYCBhcmUgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2Qg4oCTIHRoZXkgZml0IHRoZSBiaWxsLgoKTm93LCBgcGh5X3Byb2JlYC4uLiBJdCYjMzk7cyBzdGF0aWMsIHdoaWNoIHVzdWFsbHkgcmFpc2VzIGEgcmVkIGZsYWcsIGJ1dCBpdCYjMzk7cyB0aGUgY29yZSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhpcyBkcml2ZXIuIFdhaXQgYSBtaW51dGUhIEkgcmVtZW1iZXIgdGhlIGd1aWRlbGluZXM6IGF2b2lkIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIHRoYXQgYXJlIGlubGluZWQuIEJ1dCBgcGh5X3Byb2JlYCBpcyBhc3NpZ25lZCB0byBgbmV3X2RyaXZlci0mZ3Q7bWRpb2Rydi5kcml2ZXIucHJvYmVgLCB3aGljaCBtZWFucyBpdHMgYWRkcmVzcyBpcyB0YWtlbi4gVGhhdCBtZWFucyBpdCAqd29uJiMzOTt0KiBiZSBpbmxpbmVkIGFuZCBpdCYjMzk7cyBzYWZlIHRvIGluY2x1ZGUuIEV4Y2VsbGVudC4KCldoYXQgYWJvdXQgYHBoeV9zZnBfcHJvYmVgPyBIbW0sIGFsc28gc3RhdGljLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBpZiBpdCYjMzk7cyBsYXJnZSBlbm91Z2ggdG8gYXZvaWQgaW5saW5pbmcuIExldCBtZSBza2lwIHRoaXMuIEFuZCBgcGh5X3NldHVwX3BvcnRzYCBpcyBzdGF0aWMgdG9vLCBzbyBkZWZpbml0ZWx5IG5vdC4KClNvLCBsZXQmIzM5O3Mga2VlcCB0aGUgb25lcyB0aGF0IGFyZSBub24tc3RhdGljIGFuZCBgcGh5X3Byb2JlYC4KCkFjdHVhbGx5LCB3YWl0LCBJIHJlbWVtYmVyZWQgdGhlIHByZXZpb3VzIHR3bywgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYCBhcmUgb2theSwgdG9vLgoKV2hhdCBhYm91dCBgcGh5X2RldmljZV9yZWdpc3RlcmA/IFRoZSBwYXRjaCBkb2VzbiYjMzk7dCB0b3VjaCBpdCwgc28gaXQmIzM5O3MgcHJvYmFibHkgYWxyZWFkeSBmaW5lLgoKT2theSwgbGV0JiMzOTtzIHN1bW1hcml6ZTogSSYjMzk7bGwgaW5jbHVkZSBgcGh5X3Byb2JlYCwgYHBoeV9yZW1vdmVgLCBgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcmAsIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSBtaW5pbWFsIHNldCBmb3Igbm93LgoKTm93LCBsZXQmIzM5O3MgY2hlY2sgS2NvbmZpZyBmb3IgYENPTkZJR19QSFlMSUJfTEVEU2AgdG8gZW5zdXJlIHdlIGNvdmVyIGFsbCB0aGUgbmVjZXNzYXJ5IGJhc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEhZTElCX0xFRFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVx0ZGVmX2Jvb2wgT0ZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI4NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgUEhZTElCIGFuZCBMRUQgRGVmaW5pdGlvbnMqKgoKT2theSwgc28gYFBIWUxJQl9MRURTYCBpcyBkZWZpbmVkIGFzIGEgYGRlZl9ib29sIE9GYC4gVGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgZW5vdWdoOyBpdCYjMzk7cyBhIGJvb2xlYW4gb3B0aW9uIGNvbnRyb2xsZWQgYnkgc29tZXRoaW5nIGVsc2UuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhpcyB0cmlnZ2VycyBpcyBhYm91dCBpdHMgZGVwZW5kZW5jeS4gV2hhdCBpcyBkcml2aW5nIHRoZSBkZXBlbmRlbmN5PyBOb3csIHdoZXJlIGlzIGl0IGRlZmluZWQ/IFRoaXMgY2FsbHMgdG8gbWluZCBgQ09ORklHX1BIWUxJQmAuIEkgd29uZGVyLCBpcyBgQ09ORklHX1BIWUxJQmAgdGhlIGxpa2VseSBwYXJlbnQgY29uZmlnIG9wdGlvbiB0aGF0IGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGBQSFlMSUJfTEVEU2AgZ2V0cyBidWlsdD8gSSYjMzk7bSBiZXR0aW5nIHRoYXQgYFBIWUxJQl9MRURTYCYjMzk7IHN0YXR1cyBkZXBlbmRzIG9uIGBDT05GSUdfUEhZTElCYCBiZWluZyBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEhZTElCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWc9Nj1jb25maWcgUEhZTElOS1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTU6bWVudWNvbmZpZyBQSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2LVx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ2PWNvbmZpZyBPUEVOX0FMTElBTkNFX0hFTFBFUlNcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ5OmNvbmZpZyBQSFlMSUJfTEVEU1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTAtXHRkZWZfYm9vbCBPRlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjUyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBQSFlMSUIgYW5kIE5ldHdvcmsgQWRhcHRlcnMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdG8gaGFuZGxlIHRoaXMgbmV0d29ya2luZyBzY2VuYXJpby4gRmlyc3QsIEkga25vdyBgUEhZTElCYCBpcyBnb2luZyB0byBiZSBlc3NlbnRpYWwgZm9yIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGxheWVyIHN0dWZmLiBObyBxdWVzdGlvbiBhYm91dCB0aGF0LiBUaGVuLCB0byB0cmlnZ2VyIHRoaXMgc2V0dXAsIHdlJiMzOTtsbCBsaWtlbHkgbmVlZCB0byB1c2UgYSBVU0IgbmV0d29yayBhZGFwdGVyLiBTbywgbG9va2luZyBhdCB0aGUgcG9zc2liaWxpdGllcywgdGhlIGZpcnN0IHRoaW5nIHRoYXQgY29tZXMgdG8gbWluZCBpcyBlaXRoZXIgZW5hYmxpbmcgYFVTQl9ORVRfRFJJVkVSU2AsIG9yIHRhcmdldGluZyBzcGVjaWZpYyBkcml2ZXJzIGxpa2UgYFVTQl9MQU43OFhYYCBvciBgVVNCX1NNU0M5NVhYYC4gR2l2ZW4gbXkgZXhpc3Rpbmcga25vd2xlZGdlLCBJIHRoaW5rIGNoZWNraW5nIG91dCBgVVNCX0xBTjc4WFhgIG1ha2VzIHRoZSBtb3N0IHNlbnNlIGFzIGEgc3RhcnRpbmcgcG9pbnQuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGRyaXZlciBhbmQgc2VlIHdoYXQgaXQgb2ZmZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0xBTjc4WFgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZz05OT1jb25maWcgVVNCX1JUTDgxNTJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTItXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTM6Y29uZmlnIFVTQl9MQU43OFhYXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTQtXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgTEFONzhYWCBCYXNlZCBVU0IgRXRoZXJuZXQgQWRhcHRlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAwOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgVVNCX1NNU0M5NVhYYCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gVGhlIG1lbnRpb24gb2YgYFVTQl9TTVNDOTVYWGAgaW1tZWRpYXRlbHkgZmxhZ3MgYSBmZXcga2V5IGFyZWFzIEkgbmVlZCB0byBjb25zaWRlci4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBVU0ItdG8tRXRoZXJuZXQgY29udHJvbGxlciwgbGlrZWx5IGEgY2hpcCBmcm9tIFNNU0MgKG5vdyBNaWNyb2NoaXAsIG9mIGNvdXJzZSkuIE15IGZpcnN0IG1lbnRhbCBjaGVja2xpc3Qgc3RhcnRzIHJ1bm5pbmc6IHdoYXQmIzM5O3MgdGhlIHNwZWNpZmljIGRyaXZlciBpbXBsZW1lbnRhdGlvbiB3ZSYjMzk7cmUgdXNpbmc/IElzIGl0IGEgc3RhbmRhcmQgZHJpdmVyLCBhIGN1c3RvbSBwb3J0LCBvciBzb21ldGhpbmcgaW4gYmV0d2Vlbj8gVW5kZXJzdGFuZGluZyB0aGUgZHJpdmVyIGlzIHBhcmFtb3VudCwgZXNwZWNpYWxseSBpZiB3ZSYjMzk7cmUgZGVidWdnaW5nIGEgcG90ZW50aWFsIGlzc3VlLgoKSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaGFyZHdhcmUgaXRzZWxmLiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgcmV2aXNpb24gb2YgdGhlIFNNU0M5NXh4PyBUaGVyZSBjYW4gYmUgc3VidGxlIGRpZmZlcmVuY2VzIGluIHJlZ2lzdGVyIG1hcHBpbmdzIG9yIGZlYXR1cmUgc2V0cyBhY3Jvc3MgcmV2aXNpb25zLCBzbyBrbm93aW5nIHRoZSBleGFjdCBwYXJ0IG51bWJlciB3b3VsZCBiZSBoZWxwZnVsLiBJIG5lZWQgdG8ga2VlcCBVU0IgZW51bWVyYXRpb24gaW4gbWluZCwgdG9vLiBBcmUgd2Ugc2VlaW5nIGNvbnNpc3RlbnQgZGV2aWNlIHJlY29nbml0aW9uIG9uIHRoZSBob3N0PyBBbnkgZXJyb3JzIGR1cmluZyB0aGUgaW5pdGlhbCBVU0Igc2V0dXA/IFRoZXNlIGFyZSBhbGwgdHlwaWNhbCBzdGFydGluZyBwb2ludHMuCgpOZXh0LCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIHNvZnR3YXJlIHNpZGUuIFdoYXQgb3BlcmF0aW5nIHN5c3RlbSBhcmUgd2UgcnVubmluZz8gTGludXgsIFdpbmRvd3MsIHNvbWV0aGluZyBlbHNlPyBFYWNoIHBsYXRmb3JtIGhhcyBpdHMgb3duIHNldCBvZiBkcml2ZXJzIGFuZCBwb3RlbnRpYWwgcXVpcmtzIGZvciBVU0ItRXRoZXJuZXQgYWRhcHRlcnMuIEkgYWxzbyBuZWVkIHRvIHRoaW5rIGFib3V0IHRoZSBuZXR3b3JrIHN0YWNrLiBBcmUgd2UgdXNpbmcgc3RhbmRhcmQgVENQL0lQIGNvbmZpZ3VyYXRpb25zLCBvciBhcmUgdGhlcmUgY3VzdG9tIG5ldHdvcmtpbmcgZmVhdHVyZXMgYXQgcGxheT8gQXJlIHRoZXJlIGFueSBrbm93biBpc3N1ZXMgd2l0aCB0aGUgZHJpdmVyIG9uIHRoYXQgT1Mgb3Iga2VybmVsIHZlcnNpb24/CgpGaW5hbGx5LCBhcmUgdGhlcmUgYW55IGNsdWVzIGFib3V0IHdoYXQgd2UmIzM5O3JlIGFjdHVhbGx5ICp0cnlpbmcqIHRvIGFjY29tcGxpc2g/IEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhlIHByb2JsZW0gaXMgY3JpdGljYWwuIEFyZSB3ZSBzZWVpbmcgcGVyZm9ybWFuY2UgaXNzdWVzLCBjb25uZWN0aXZpdHkgZHJvcHMsIG9yIG91dHJpZ2h0IGRldmljZSBmYWlsdXJlcz8gVGhhdCBjb250ZXh0IHdpbGwgaW5mbHVlbmNlIHRoZSBhcmVhcyBJIHByaW9yaXRpemUuIE15IGluaXRpYWwgZm9jdXMgd2lsbCBiZSBvbiB2YWxpZGF0aW5nIHRoZSBiYXNpY3Mgb2YgVVNCIHNldHVwIGFuZCBkZXZpY2UgY29tbXVuaWNhdGlvbiwgYmVmb3JlIEkgY29uc2lkZXIgYW55dGhpbmcgdG9vIGVzb3RlcmljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfU01TQzk1WFgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgVVNCIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGlzbiYjMzk7dCBgc21zYzk1eHhgIGEgVVNCIEV0aGVybmV0IGRyaXZlcj8gQW5kIGlmIGl0IGlzLCB0aGUgbG9naWNhbCBwbGFjZSB0byBjaGVjayBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zIHdvdWxkIGJlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSB0eXBpY2FsIHBsYWNlIGZvciBVU0IgbmV0d29yayBkZXZpY2UgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBuYXZpZ2F0ZSB0aGVyZSBhbmQgdmVyaWZ5IHRoYXQgdGhpcyBhc3N1bXB0aW9uIGhvbGRzIHRydWUsIGFuZCBjb25maXJtIHRoZSBkcml2ZXImIzM5O3MgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGlmIGl0IGlzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21zYzk1eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NjQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBVU0IgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBzZWUuIEkmIzM5O20gcHJldHR5IHN1cmUgSSByZW1lbWJlciB0aGUgYHNtc2M5NXh4YCBkcml2ZXIgYmVpbmcgaW4gdGhlIFVTQiBuZXR3b3JraW5nIHNlY3Rpb24sIGJ1dCB0aGUgS2NvbmZpZyBmaWxlcyBhcmUgb2Z0ZW4gYSBiaXQgY29udm9sdXRlZC4gSSYjMzk7bGwgYmV0IGl0JiMzOTtzIHVuZGVyIGEgc2xpZ2h0bHkgZGlmZmVyZW50IG5hbWUgaW4gYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYC4gVGltZSB0byBjb25maXJtIHRoYXQgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBhbnkgZGVlcGVyLiBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBhZ2FpbnN0IGBkcml2ZXJzL25ldC91c2IvTWFrZWZpbGVgIHRvIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluIHRoZSBidWlsZCB0YXJnZXRzIGFyZSBjb3JyZWN0LiBJdCYjMzk7cyBlYXN5IHRvIGdldCBsb3N0IGluIHRoZXNlIGxhcmdlIGtlcm5lbCBidWlsZHMsIHNvIGl0JiMzOTtzIGJlc3QgdG8gYmUgc3lzdGVtYXRpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21zYzk1eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlPTIxPW9iai0kKENPTkZJR19VU0JfTkVUX1NNU0M3NVhYKVx0JiM0Mzs9IHNtc2M3NXh4Lm9cbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfVVNCX05FVF9TTVNDOTVYWClcdCYjNDM7PSBzbXNjOTV4eC5vXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtMjMtb2JqLSQoQ09ORklHX1VTQl9ORVRfR0w2MjBBKVx0JiM0Mzs9IGdsNjIwYS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDA5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqTmF2aWdhdGluZyB0aGUgVVNCIE5ldHdvcmsgRGV2aWNlIERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYFVTQl9ORVRfU01TQzk1WFhgLiBSaWdodCwgdGhhdCYjMzk7cyBhIHNwZWNpZmljIFVTQiBuZXR3b3JrIGRldmljZSBkcml2ZXIuIEJlZm9yZSBJIGRpdmUgZGVlcCBpbnRvIHRoZSBTTVNDOTVYWCBkZXRhaWxzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBoaWdoZXItbGV2ZWwgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBgVVNCX05FVF9EUklWRVJTYCBzZXR0aW5nLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBnZW5lcmFsIFVTQiBuZXR3b3JrIGRyaXZlciBzdXBwb3J0IGlzIGV2ZW4gZW5hYmxlZCBiZWZvcmUgSSBjYW4gd29ycnkgYWJvdXQgdGhlIHNwZWNpZmljcyBvZiB0aGUgU01TQzk1WFggbW9kdWxlLiBJIG5lZWQgdGhlIGJpZyBwaWN0dXJlIGJlZm9yZSB6b29taW5nIGluIG9uIHRoZSBkZXRhaWxzLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZGVidWdnaW5nIG9yIGNvbmZpZ3VyYXRpb24gZWZmb3J0IGluIHRoaXMgc3BhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfTkVUX0RSSVZFUlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZz01PWNvbW1lbnQgXCYjMzQ7SG9zdC1zaWRlIFVTQiBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgVVNCIE5ldHdvcmsgQWRhcHRlciBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNy1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjg6bWVudWNvbmZpZyBVU0JfTkVUX0RSSVZFUlNcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtVU0IgTmV0d29yayBBZGFwdGVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMyNwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipJbnRlcm5hbCBDb2RlIFJldmlldzogTmV0d29ya2luZyBEcml2ZXIgSW5jbHVzaW9uKioKCkFscmlnaHQsIGxldCBtZSBxdWlja2x5IHN1bW1hcml6ZSB3aGF0IEkmIzM5O20gbG9va2luZyBhdC4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhYm91dCBpbnRlZ3JhdGluZyBzb21lIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eS4gSSBzZWUgYSBmZXcga2V5IGRyaXZlcnMgYmVpbmcgYnJvdWdodCBpbnRvIGNvbnNpZGVyYXRpb246IGBQSFlMSUJgLCB3aGljaCBpcyBjcnVjaWFsIGZvciB0aGUgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlLCBuYXR1cmFsbHkuIFRoZW4gd2UgaGF2ZSB0aGUgbW9yZSBzcGVjaWZpYyBgVVNCX05FVF9EUklWRVJTYCwgYW5kIHdpdGhpbiB0aGF0LCB0aGUgYFVTQl9ORVRfU01TQzk1WFhgIGFuZCBgVVNCX0xBTjc4WFhgIGRyaXZlcnMuIFRoZXNlIHR3byBhcmUgaW1wb3J0YW50LCBjbGVhcmx5IHRoZXkgYXJlIHRoZSBzcGVjaWZpYyBuZXR3b3JraW5nIGhhcmR3YXJlIHdlJiMzOTtyZSB0YXJnZXRpbmcuCgpXYWl0IGEgbWludXRlLCBpdCBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIGEgcmVmZXJlbmNlIHRvIGBzZnBfYnVzYCBpbiB0aGlzIHBhdGNoIGFzIHdlbGwuIFRoYXTigJlzIGludGVyZXN0aW5nLiBHaXZlbiB0aGF0IFNGUCBpcyBhIHN0YW5kYXJkLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGhlcmUuIEkgd2FudCB0byBxdWlja2x5IHZlcmlmeSBpZiBgU0ZQYCBpdHNlbGYgaXMgZXZlbiBkZWZpbmVkIGFzIGEgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIG9uIHRoZSByaWdodCB0cmFjayBhbmQgbm90IG1pc3NpbmcgYSBzdWJ0bGUgZGVwZW5kZW5jeSBzb21ld2hlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTRlAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz02NT1jb25maWcgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNzItXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo3Mzpjb25maWcgU0ZQXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy03NC1cdHRyaXN0YXRlIFwmIzM0O1NGUCBjYWdlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA3MzYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1MzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgUmVhc29uaW5nIGZvciBTZWxlY3RpbmcgUEhZbGliIEZ1bmN0aW9ucyBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIHRoaW5raW5nIGFib3V0IHdoYXQgdG8gdGFyZ2V0IGZvciBmdXp6aW5nLiBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgU0ZQYCBpcyBpbmRlZWQgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBJIG5lZWQgdG8gY29uc2lkZXI7IEkmIzM5O2xsIGJlIHN1cmUgdG8gaW5jbHVkZSB0aGF0LgoKSSYjMzk7dmUgYm9pbGVkIGRvd24gdGhlIGtleSBjb25maWd1cmF0aW9ucyB0byBmb2N1cyBvbjogYFBIWUxJQmAsIGBTRlBgLCBgVVNCX05FVF9EUklWRVJTYCwgYFVTQl9ORVRfU01TQzk1WFhgLCBhbmQgYFVTQl9MQU43OFhYYC4gVGhlc2Ugc2VlbSByZWxldmFudCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjb3JlIFBIWSBsaWJyYXJ5IGFuZCBob3cgaXQmIzM5O3MgdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2l0aCBlbXVsYXRlZCBVU0IgbmV0d29yayBhZGFwdGVycy4KCk5vdywgY29uc2lkZXJpbmcgdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLCBJJiMzOTt2ZSBpZGVudGlmaWVkIGEgZmV3IGtleSBvbmVzIHRoYXQgc3RhbmQgb3V0IGFzIGdvb2QgY2FuZGlkYXRlczogYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgLCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuCgpJIGRvdWJsZS1jaGVja2VkIGBwaHlfcHJvYmVgOyBpdCYjMzk7cyBkZWNsYXJlZCBgc3RhdGljYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBidXQgY3J1Y2lhbGx5LCBpdHMgYWRkcmVzcyBpcyB0YWtlbiBhbmQgcGFzc2VkIHRvIGBuZXdfZHJpdmVyLSZndDttZGlvZHJ2LmRyaXZlci5wcm9iZSA9IHBoeV9wcm9iZTtgLiBUaGlzIG1lYW5zIGl0JiMzOTtzIG5vdCBnb2luZyB0byBiZSBpbmxpbmVkIGFuZCBpcyB0aGVyZWZvcmUgYSBnb29kIHRhcmdldC4gSSBub3RlZCB0aGF0IGBwaHlfc2ZwX3Byb2JlYCBpcyBhbHNvIHN0YXRpYywgYnV0IHRoYXQmIzM5O3MgY2FsbGVkIGZyb20gYHBoeV9zZXR1cF9wb3J0c2AsIHdoaWNoIGl0c2VsZiBpcyBzdGF0aWMgYW5kIGlzIGNhbGxlZCBmcm9tIGBwaHlfcHJvYmVgLiBgcGh5X3JlbW92ZWAgYWxzbyBpcyBzdGF0aWMsIGJ1dCBhZ2FpbiwgaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNvIGl0JiMzOTtzIGEgZ29vZCB0YXJnZXQuIGBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyYCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAgYXJlIGV4cG9ydGVkLCB3aGljaCBtYWtlcyB0aGVtIGVhc3kgdG8gcmVhY2guCgpNeSByZWFzb25pbmcgaXMgdGhpczogdGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgcmVzb3VyY2UgbGVha3MgYW5kIGVycm9yIGhhbmRsaW5nIGlzc3VlcyB3aXRoaW4gdGhlIFBIWSBkZXZpY2UgcHJvYmUgYW5kIHJlbW92YWwgcm91dGluZXMgLSBgcGh5X3Byb2JlYCwgYHBoeV9yZW1vdmVgLCBgcGh5X3NldHVwX3BvcnRzYCwgYW5kIGBwaHlfc2ZwX3Byb2JlYCAtIGFuZCBpdCYjMzk7cyBhbHNvIGZpeGluZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZm91bmRhdGlvbmFsIHRvIHRoZSBQSFkgbGlicmFyeSAoYHBoeWxpYmApLiBUaGlzIGxpYnJhcnkgZ2V0cyB1c2VkIGV2ZW4gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRocm91Z2ggZW11bGF0ZWQgVVNCIG5ldHdvcmsgYWRhcHRlcnMgbGlrZSBgc21zYzk1eHhgIGFuZCBgbGFuNzh4eGAgdGhhdCwgaW4gdHVybiwgcmVnaXN0ZXIgTURJTyBidXNlcyBhbmQgUEhZIGRldmljZXMuIEZ1enppbmcgdGhlc2UgcGF0aHMgd2lsbCBiZSB2YWx1YWJsZSBmb3IgaGFyZGVuaW5nIHRoZSBQSFkgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBwcm9jZXNzZXMsIHBhcnRpY3VsYXJseSBnaXZlbiB0aGUgdmFyaW91cyBleGVjdXRpb24gcGF0aHMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgdGFrZSBpbiBkaWZmZXJlbnQgc2NlbmFyaW9zLgoKU28sIGluIHN1bW1hcnksIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgdGhlIGZpdmUgbGlzdGVkIHByZXZpb3VzbHkuCgpJIGFsc28gdmVyaWZpZWQgdGhhdCBgU0ZQYCBpcyBuZWVkZWQuIFRoZSBwYXRjaCBtb2RpZmllcyBgcGh5X3NmcF9wcm9iZWAgYW5kIGBwaHlfc2ZwX3JlbGVhc2VgLCBib3RoIG9mIHdoaWNoIGludGVyYWN0IHdpdGggYHBoeWRldi0mZ3Q7c2ZwX2J1c2AuIEl0IGxvb2tzIGxpa2UgYHBoeWRldi0mZ3Q7c2ZwX2J1c2AgaXMgaW5kZWVkIG9ubHkgYXZhaWxhYmxlIHdoZW4gYFNGUGAgaXMgZW5hYmxlZCwgd2hpY2ggcmVpbmZvcmNlcyB0aGUgbmVlZCB0byBpbmNsdWRlIHRoYXQgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2ZwX2J1cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcGh5LmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9waHkuaD0zMzA9c3RydWN0IHBoeV9wb3J0O1xuaW5jbHVkZS9saW51eC9waHkuaDozMzE6c3RydWN0IHNmcF9idXM7XG5pbmNsdWRlL2xpbnV4L3BoeS5oLTMzMi1zdHJ1Y3Qgc2ZwX3Vwc3RyZWFtX29wcztcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTU1Mj1zdHJ1Y3QgcGh5X29hdGMxNF9zcWlfY2FwYWJpbGl0eSB7XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC01OTQtICogQHBoeWxpbms6IFBvaW50ZXIgdG8gcGh5bGluayBpbnN0YW5jZSBmb3IgdGhpcyBQSFlcbmluY2x1ZGUvbGludXgvcGh5Lmg6NTk1OiAqIEBzZnBfYnVzX2F0dGFjaGVkOiBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgU0ZQIGJ1cyBoYXMgYmVlbiBhdHRhY2hlZFxuaW5jbHVkZS9saW51eC9waHkuaDo1OTY6ICogQHNmcF9idXM6IFNGUCBidXMgYXR0YWNoZWQgdG8gdGhpcyBQSFkmIzM5O3MgZmliZXIgcG9ydFxuaW5jbHVkZS9saW51eC9waHkuaC01OTctICogQGF0dGFjaGVkX2RldjogVGhlIGF0dGFjaGVkIGVuZXQgZHJpdmVyJiMzOTtzIGRldmljZSBpbnN0YW5jZSBwdHJcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTY2OD1zdHJ1Y3QgcGh5X2RldmljZSB7XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC03ODUtXHQvKiBUaGlzIG1heSBiZSBtb2RpZmllZCB1bmRlciB0aGUgcnRubCBsb2NrICovXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjc4NjpcdGJvb2wgc2ZwX2J1c19hdHRhY2hlZDtcbmluY2x1ZGUvbGludXgvcGh5Lmg6Nzg3Olx0c3RydWN0IHNmcF9idXMgKnNmcF9idXM7XG5pbmNsdWRlL2xpbnV4L3BoeS5oLTc4OC1cdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjI1NAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IExpbmUgb2YgSW5xdWlyeTogU0ZQIEJ1cyBBc3NvY2lhdGlvbioqCgpPa2F5LCBzbyBpdCBzdHJpa2VzIG1lIHRoYXQgdGhlIGBzZnBfYnVzYCBjb25zdHJ1Y3QgaXMgY29uc2lzdGVudGx5IGxpbmtlZCB0byB0aGUgYHN0cnVjdCBwaHlfZGV2aWNlYC4gTm93LCB0aGUgU0ZQIGNvbmZpZ3VyYXRpb24sIHRoZSBhY3R1YWwgKmVuYWJsaW5nKiBvZiB0aGUgU0ZQIGJ1cyBjb2RlLCB0aGF0JiMzOTtzIHdoYXQgSSB3YW50IHRvIHVuZGVyc3RhbmQuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoaXMuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGV4cGxvcmUgYHNmcF9idXNfZGVsX3Vwc3RyZWFtYCDigJMgd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyBkZWNsYXJlZCB3aXRoaW4gYGluY2x1ZGUvbGludXgvc2ZwLmhgLiBUaW1lIHRvIHNlZSB3aGF0IHdlIGNhbiBnbGVhbiBmcm9tIHRoYXQgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NmcF9idXNfZGVsX3Vwc3RyZWFtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9zZnAuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NmcC5oPTU5ND1pbnQgc2ZwX2J1c19hZGRfdXBzdHJlYW0oc3RydWN0IHNmcF9idXMgKmJ1cywgdm9pZCAqdXBzdHJlYW0sXG5pbmNsdWRlL2xpbnV4L3NmcC5oLTU5NS1cdFx0XHQgY29uc3Qgc3RydWN0IHNmcF91cHN0cmVhbV9vcHMgKm9wcyk7XG5pbmNsdWRlL2xpbnV4L3NmcC5oOjU5Njp2b2lkIHNmcF9idXNfZGVsX3Vwc3RyZWFtKHN0cnVjdCBzZnBfYnVzICpidXMpO1xuaW5jbHVkZS9saW51eC9zZnAuaC01OTctY29uc3QgY2hhciAqc2ZwX2dldF9uYW1lKHN0cnVjdCBzZnBfYnVzICpidXMpO1xuLS1cbmluY2x1ZGUvbGludXgvc2ZwLmg9NjUzPXN0YXRpYyBpbmxpbmUgaW50IHNmcF9idXNfYWRkX3Vwc3RyZWFtKHN0cnVjdCBzZnBfYnVzICpidXMsIHZvaWQgKnVwc3RyZWFtLFxuLS1cbmluY2x1ZGUvbGludXgvc2ZwLmgtNjU4LVxuaW5jbHVkZS9saW51eC9zZnAuaDo2NTk6c3RhdGljIGlubGluZSB2b2lkIHNmcF9idXNfZGVsX3Vwc3RyZWFtKHN0cnVjdCBzZnBfYnVzICpidXMpXG5pbmNsdWRlL2xpbnV4L3NmcC5oLTY2MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzExCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gb2YgU0ZQIGFuZCBQSFlMSUJfTEVEUyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIHRoZSBgU0ZQYCBkZWZpbml0aW9uIGlzIGxvY2F0ZWQgaW4gYGluY2x1ZGUvbGludXgvc2ZwLmhgLiYjMzQ7IElmIGBTRlBgIGlzbiYjMzk7dCBlbmFibGVkLCBJIHN1c3BlY3QgdGhlIGNvZGUgcmVsYXRlZCB0byBpdCB3aWxsIGxpa2VseSBiZSBhIG5vLW9wLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4KClRoZSBuZXh0IHRoaW5nIGlzIHRvIGRldGVybWluZSBpZiBgU0ZQYCBpcyBldmVuIG5lY2Vzc2FyeSBoZXJlLiBBaCwgcmlnaHQsIHRvIHRydWx5IGV4ZXJjaXNlIHRoZSBTRlAgcGF0aHMgZHVyaW5nIHRlc3RpbmcsIEkgKmRvKiBuZWVkIHRoZSBgU0ZQYCBjb25maWcgZW5hYmxlZC4gSXQgbWFrZXMgc2Vuc2UuCgpOZXh0IG9uIHRoZSBsaXN0IGlzIGBQSFlMSUJfTEVEU2AuIFRoZSBwYXRjaCB0b3VjaGVzIGBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyYCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAsIHNvIEkgbmVlZCB0byBjaGVjayB0aG9zZS4gTGV0JiMzOTtzIHRyYWNlIHRob3NlIGNhbGxzIGJhY2ssIHN0YXJ0aW5nIHdpdGggbG9va2luZyBhdCBgZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY2AuIE9rYXksIG5vdyB0aGUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgZW50aXJlIGBwaHlfbGVkX3RyaWdnZXJzLmNgIGZpbGUgKml0c2VsZiogY29uZGl0aW9uYWxseSBjb21waWxlZD8gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfbGVkX3RyaWdnZXJzLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTE0PWxpYnBoeS0kKENPTkZJR19TV1BIWSlcdFx0JiM0Mzs9IHN3cGh5Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxNTpsaWJwaHktJChDT05GSUdfTEVEX1RSSUdHRVJfUEhZKVx0JiM0Mzs9IHBoeV9sZWRfdHJpZ2dlcnMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE2LWxpYnBoeS0kKENPTkZJR19PUEVOX0FMTElBTkNFX0hFTFBFUlMpICYjNDM7PSBvcGVuX2FsbGlhbmNlX2hlbHBlcnMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzI0OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgUEhZIExFRCBUcmlnZ2VyIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgKkNPTkZJR19MRURfVFJJR0dFUl9QSFkqLiBUaGF0JiMzOTtzIHRoZSBvbmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRlbHZlIGludG8gdGhlIGBMRURfVFJJR0dFUl9QSFlgIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBzdGF0ZSBvZiB0aGF0IHBhcnRpY3VsYXIgdHJpZ2dlci4gSSYjMzk7bGwgbmVlZCB0byBrbm93IGlmIGl0JiMzOTtzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBzZXQgdG8gc29tZSBzcGVjaWZpYyBiZWhhdmlvciByZWxhdGVkIHRvIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTEVEIGlzIGJlaW5nIGRyaXZlbiBieSB0aGUgUEhZJiMzOTtzIGFjdGl2aXR5LiBUaGUgZ29hbCBoZXJlIGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgY3VycmVudCBzeXN0ZW0gY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGFueSBuZXR3b3JrIFBIWSYjMzk7cyBMRURzLiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgaWYgYW55IGNoYW5nZXMgYXJlIG5lZWRlZCwgb3IgaWYgdGhlcmUmIzM5O3MgYSBwcm9ibGVtLCBhbmQgaWYgc28sIHVuZGVyc3RhbmQgd2h5IHRoYXQgcHJvYmxlbSBpcyBvY2N1cnJpbmcgd2l0aCB0aGUgY3VycmVudCBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBMRURfVFJJR0dFUl9QSFkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0yNz1jb25maWcgUEhZX1BBQ0tBR0Vcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yOS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjMwOmNvbmZpZyBMRURfVFJJR0dFUl9QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IExFRCB0cmlnZ2VycyBmb3IgdHJhY2tpbmcgbGluayBzdGF0ZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzU3NgoJCQkJCQkJb3V0cHV0OiAyNDgKCQkJCQkJCXRob3VnaHRzOiAyNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBDaGVja2xpc3QqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBwaHlfbGVkX3RyaWdnZXJzLmNgIGZpbGUgYW5kIG5lZWQgdG8gdXBkYXRlIHRoZSBjb25maWd1cmF0aW9uLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGBMRURfVFJJR0dFUl9QSFlgIGlzIHRoZSBrZXkuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCYjMzk7cyBpbmNsdWRlZC4KClJpZ2h0LCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIHJldmlldyBvZiB0aGUgY29uZmlncyByZWxhdGVkIHRvIHRoaXMgYXJlYTogYFBIWUxJQmAsIGBTRlBgLCBgVVNCX05FVF9EUklWRVJTYCwgYFVTQl9ORVRfU01TQzk1WFhgLCBgVVNCX0xBTjc4WFhgLCBhbmQgb2YgY291cnNlIGBMRURfVFJJR0dFUl9QSFlgLgoKSGFuZyBvbiBhIHNlYy4uLiBJIHJlbWVtYmVyIHNlZWluZyBgUEhZTElCX0xFRFNgIG1lbnRpb25lZCBpbiB0aGUgcGF0Y2gsIHNwZWNpZmljYWxseSBpbiBhbiBgaWZgIHN0YXRlbWVudCBsaWtlIHRoaXMgYGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgJmFtcDsmYW1wOyAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkge2AuIEkgc2hvdWxkIHByb2JhYmx5IGluY2x1ZGUgdGhhdCBvbmUgYXMgd2VsbCB0byBiZSBzYWZlLiBCZXR0ZXIgdG8gYmUgdGhvcm91Z2guCgpOb3csIGxldCBtZSBqdXN0IHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIG1haW4gZnVuY3Rpb25zIGludm9sdmVkIGhlcmUuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgLCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoZXNlIGFyZSBteSBwcmltYXJ5IGVudHJ5IHBvaW50cywgcmlnaHQ/CgpIbW0sIHRoZXJlJiMzOTtzIHRoYXQgYHBoeV9zZnBfcHJvYmVgIGZ1bmN0aW9uLiBJdCYjMzk7cyBzdGF0aWMsIHNvIGl0ICptaWdodCogYmUgaW5saW5lZC4gRm9yIG5vdywgSSYjMzk7bGwgc3RpY2sgdG8gdGhlIGNvcmUgZnVuY3Rpb25zIHRvIGtlZXAgaXQgZm9jdXNlZC4KClJpZ2h0LCB3aXRoIGFsbCB0aGF0IHNvcnRlZCwgSSYjMzk7bSByZWFkeSB0byBtb3ZlIGZvcndhcmQuIExldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7U0ZQJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfRFJJVkVSUyYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX1NNU0M5NVhYJiMzNDssCiAgICAmIzM0O1VTQl9MQU43OFhYJiMzNDssCiAgICAmIzM0O0xFRF9UUklHR0VSX1BIWSYjMzQ7LAogICAgJiMzNDtQSFlMSUJfTEVEUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeV9wcm9iZSYjMzQ7LAogICAgJiMzNDtwaHlfcmVtb3ZlJiMzNDssCiAgICAmIzM0O3BoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7cGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHJlc291cmNlIGxlYWtzIGFuZCBlcnJvciBoYW5kbGluZyBwYXRocyBpbiB0aGUgUEhZIGRldmljZSBwcm9iZSBhbmQgcmVtb3ZhbCByb3V0aW5lcyAoYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfc2ZwX3Byb2JlYCkgYW5kIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBjb3JlIFBIWSBsaWJyYXJ5IChgcGh5bGliYCkgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgZW11bGF0ZWQgVVNCIG5ldHdvcmsgYWRhcHRlcnMgKGUuZy4sIGBzbXNjOTV4eGAsIGBsYW43OHh4YCkgdGhhdCByZWdpc3RlciBNRElPIGJ1c2VzIGFuZCBQSFkgZGV2aWNlcy4gRnV6emluZyB0aGVzZSBwYXRocyBpcyB2YWx1YWJsZSB0byBlbnN1cmUgcm9idXN0bmVzcyBvZiBQSFkgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93bi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1NGUCYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0RSSVZFUlMmIzM0OywKICAgICYjMzQ7VVNCX05FVF9TTVNDOTVYWCYjMzQ7LAogICAgJiMzNDtVU0JfTEFONzhYWCYjMzQ7LAogICAgJiMzNDtMRURfVFJJR0dFUl9QSFkmIzM0OywKICAgICYjMzQ7UEhZTElCX0xFRFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfcHJvYmUmIzM0OywKICAgICYjMzQ7cGh5X3JlbW92ZSYjMzQ7LAogICAgJiMzNDtwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyJiMzNDssCiAgICAmIzM0O3BoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyByZXNvdXJjZSBsZWFrcyBhbmQgZXJyb3IgaGFuZGxpbmcgcGF0aHMgaW4gdGhlIFBIWSBkZXZpY2UgcHJvYmUgYW5kIHJlbW92YWwgcm91dGluZXMgKGBwaHlfcHJvYmVgLCBgcGh5X3JlbW92ZWAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3NmcF9wcm9iZWApIGFuZCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgY29yZSBQSFkgbGlicmFyeSAoYHBoeWxpYmApIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGVtdWxhdGVkIFVTQiBuZXR3b3JrIGFkYXB0ZXJzIChlLmcuLCBgc21zYzk1eHhgLCBgbGFuNzh4eGApIHRoYXQgcmVnaXN0ZXIgTURJTyBidXNlcyBhbmQgUEhZIGRldmljZXMuIEZ1enppbmcgdGhlc2UgcGF0aHMgaXMgdmFsdWFibGUgdG8gZW5zdXJlIHJvYnVzdG5lc3Mgb2YgUEhZIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDc6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZm9jdXNlcyBvbiBmaXhpbmcgZXJyb3IgaGFuZGxpbmcgcGF0aHMgYW5kIHJlc291cmNlIGNsZWFudXAgaW4gdGhlIFBIWSBkZXZpY2UgcHJvYmUgYW5kIHJlbW92YWwgcm91dGluZXMgKGUuZy4sIGBwaHlfcHJvYmVgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9zZnBfcHJvYmVgKS4gSXQgYWRkcmVzc2VzIHBvdGVudGlhbCBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlLCBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBieSBlbnN1cmluZyB0aGF0IHJlc291cmNlcyBsaWtlIFNGUCBidXNlcywgUEhZIHBvcnRzLCBhbmQgTEVEIHRyaWdnZXJzIGFyZSBwcm9wZXJseSByZWxlYXNlZCBvciB1bnJlZ2lzdGVyZWQgd2hlbiBpbml0aWFsaXphdGlvbiBmYWlscy4gVGhlc2UgdHlwZXMgb2YgYnVncyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scyBzdWNoIGFzIEtBU0FOIChmb3IgdXNlLWFmdGVyLWZyZWUgYW5kIG91dC1vZi1ib3VuZHMpLCBrbWVtbGVhayAoZm9yIG1lbW9yeSBsZWFrcyksIGFuZCBnZW5lcmFsIGtlcm5lbCBvb3BzL3BhbmljcyAoZm9yIE5VTEwgZGVyZWZlcmVuY2VzKS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgaW52b2x2ZSBjb21wbGV4IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOJiMzOTtzIHNwZWNpYWxpemVkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRyYWNraW5nLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MzlkMjlmYTJjMzc5MzNkYmFhNjRmZmQ4MTY5MGU2MTg5NGViZWNmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMDc6Mzk6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwppbmRleCA5NGIyZTg1ZTAwYTM3Li44Y2IwZDYwZmNiYmE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKQEAgLTE3MjMsMTIgJiM0MzsxNzIzLDQxIEBAIHN0YXRpYyBpbnQgcGh5X3NmcF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCQkJcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKIAl9CiAKLQlpZiAoIXJldCAmYW1wOyZhbXA7IHBoeWRldi0mZ3Q7c2ZwX2J1cykKJiM0MzsJaWYgKCFyZXQgJmFtcDsmYW1wOyBwaHlkZXYtJmd0O3NmcF9idXMpIHsKIAkJcmV0ID0gcGh5X3NldHVwX3NmcF9wb3J0KHBoeWRldik7CiYjNDM7CQlpZiAocmV0KSB7CiYjNDM7CQkJc2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LSZndDtzZnBfYnVzKTsKJiM0MzsJCQlwaHlkZXYtJmd0O3NmcF9idXMgPSBOVUxMOwomIzQzOwkJfQomIzQzOwl9CiAKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7LyoqCiYjNDM7ICogcGh5X3NmcF9yZWxlYXNlIC0gcmVsZWFzZSByZXNvdXJjZXMgc2V0IHVwIGJ5IHBoeV9zZnBfcHJvYmUoKQomIzQzOyAqIEBwaHlkZXY6IHRoZSBQSFkgZGV2aWNlCiYjNDM7ICoKJiM0MzsgKiBSZWxlYXNlIHRoZSBTRlAgcmVzb3VyY2VzIHNldCB1cCBieSBhIHN1Y2Nlc3NmdWwgcGh5X3NmcF9wcm9iZSgpLiBVbnJlZ2lzdGVyCiYjNDM7ICogdGhlIHVwc3RyZWFtIGJlZm9yZSBkZXN0cm95aW5nIGl0cyBwaHlfcG9ydCwgc28gU0ZQIHVwc3RyZWFtIGNhbGxiYWNrcyBjYW5ub3QKJiM0MzsgKiByYWNlIHdpdGggcG9ydCBkZXN0cnVjdGlvbi4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBwaHlfc2ZwX3JlbGVhc2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwaHlfcG9ydCAqcG9ydCwgKnRtcDsKJiM0MzsKJiM0MzsJc2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LSZndDtzZnBfYnVzKTsKJiM0MzsJcGh5ZGV2LSZndDtzZnBfYnVzID0gTlVMTDsKJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcnQsIHRtcCwgJmFtcDtwaHlkZXYtJmd0O3BvcnRzLCBoZWFkKSB7CiYjNDM7CQlpZiAoIXBvcnQtJmd0O2lzX3NmcCkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCXBoeV9kZWxfcG9ydChwaHlkZXYsIHBvcnQpOwomIzQzOwkJcGh5X3BvcnRfZGVzdHJveShwb3J0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpCiB7CiAJcmV0dXJuIHBoeWRydi0mZ3Q7Y29uZmlnX2ludHIgJmFtcDsmYW1wOyBwaHlkcnYtJmd0O2hhbmRsZV9pbnRlcnJ1cHQ7CkBAIC0zNDU0LDYgJiM0MzszNDgzLDcgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogewogCXN0cnVjdCBwaHlfcG9ydCAqcG9ydCA9IHBoeV9wb3J0X2FsbG9jKCk7CiAJdW5zaWduZWQgbG9uZyBtb2RlOwomIzQzOwlpbnQgcmV0OwogCiAJaWYgKCFwb3J0KQogCQlyZXR1cm4gLUVOT01FTTsKQEAgLTM0ODAsOSAmIzQzOzM1MTAsMTEgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCQlwb3J0LSZndDtwYWlycyA9IG1heF90KGludCwgcG9ydC0mZ3Q7cGFpcnMsCiAJCQkJICAgIGV0aHRvb2xfbGlua21vZGVfbl9wYWlycyhtb2RlKSk7CiAKLQlwaHlfYWRkX3BvcnQocGh5ZGV2LCBwb3J0KTsKJiM0MzsJcmV0ID0gcGh5X2FkZF9wb3J0KHBoeWRldiwgcG9ydCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlwaHlfcG9ydF9kZXN0cm95KHBvcnQpOwogCi0JcmV0dXJuIDA7CiYjNDM7CXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgb2ZfcGh5X3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCkBAIC0zNTQ3LDEzICYjNDM7MzU3OSwxMyBAQCBzdGF0aWMgaW50IHBoeV9zZXR1cF9wb3J0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCWlmICghcGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuKSB7CiAJCXJldCA9IHBoeV9zZnBfcHJvYmUocGh5ZGV2KTsKIAkJaWYgKHJldCkKLQkJCWdvdG8gb3V0OwomIzQzOwkJCWdvdG8gZXJyX3BvcnRzOwogCX0KIAogCWlmIChwaHlkZXYtJmd0O25fcG9ydHMgJmx0OyBwaHlkZXYtJmd0O21heF9uX3BvcnRzKSB7CiAJCXJldCA9IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHBoeWRldik7CiAJCWlmIChyZXQpCi0JCQlnb3RvIG91dDsKJiM0MzsJCQlnb3RvIGVycl9zZnA7CiAJfQogCiAJbGlua21vZGVfemVybyhwb3J0c19zdXBwb3J0ZWQpOwpAQCAtMzU4MCw3ICYjNDM7MzYxMiw5IEBAIHN0YXRpYyBpbnQgcGh5X3NldHVwX3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAKIAlyZXR1cm4gMDsKIAotb3V0OgomIzQzO2Vycl9zZnA6CiYjNDM7CXBoeV9zZnBfcmVsZWFzZShwaHlkZXYpOwomIzQzO2Vycl9wb3J0czoKIAlwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpOwogCXJldHVybiByZXQ7CiB9CkBAIC0zNzA2LDcgJiM0MzszNzQwLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQogCWlmIChwaHlkZXYtJmd0O2Rydi0mZ3Q7cHJvYmUpIHsKIAkJZXJyID0gcGh5ZGV2LSZndDtkcnYtJmd0O3Byb2JlKHBoeWRldik7CiAJCWlmIChlcnIpCi0JCQlnb3RvIG91dDsKJiM0MzsJCQlnb3RvIG91dF9yZXNldDsKIAl9CiAKIAlwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7CkBAIC0zNzI3LDcgJiM0MzszNzYxLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQogCQllcnIgPSBnZW5waHlfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTsKIAogCWlmIChlcnIpCi0JCWdvdG8gb3V0OwomIzQzOwkJZ290byBvdXRfcmVtb3ZlOwogCiAJaWYgKCFsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCwKIAkJCSAgICAgICBwaHlkZXYtJmd0O3N1cHBvcnRlZCkpCkBAIC0zNzQ0LDcgJiM0MzszNzc4LDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQogCiAJZXJyID0gcGh5X3NldHVwX3BvcnRzKHBoeWRldik7CiAJaWYgKGVycikKLQkJZ290byBvdXQ7CiYjNDM7CQlnb3RvIG91dF9yZW1vdmU7CiAKIAlwaHlfYWR2ZXJ0aXNlX3N1cHBvcnRlZChwaHlkZXYpOwogCkBAIC0zNzUzLDcgJiM0MzszNzg3LDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQogCSAqLwogCWVyciA9IGdlbnBoeV9jNDVfcmVhZF9lZWVfYWR2KHBoeWRldiwgcGh5ZGV2LSZndDthZHZlcnRpc2luZ19lZWUpOwogCWlmIChlcnIpCi0JCWdvdG8gb3V0OwomIzQzOwkJZ290byBvdXRfc2ZwX3JlbGVhc2U7CiAKIAkvKiBHZXQgdGhlIEVFRSBtb2RlcyB3ZSB3YW50IHRvIHByb2hpYml0LiAqLwogCW9mX3NldF9waHlfZWVlX2Jyb2tlbihwaHlkZXYpOwpAQCAtMzc5Myw5ICYjNDM7MzgyNyw2IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJCQkgcGh5ZGV2LSZndDtzdXBwb3J0ZWQpOwogCX0KIAotCS8qIFNldCB0aGUgc3RhdGUgdG8gUkVBRFkgYnkgZGVmYXVsdCAqLwotCXBoeWRldi0mZ3Q7c3RhdGUgPSBQSFlfUkVBRFk7Ci0KIAkvKiBSZWdpc3RlciB0aGUgUEhZIExFRCB0cmlnZ2VycyAqLwogCWlmICghcGh5ZGV2LSZndDtpc19vbl9zZnBfbW9kdWxlKQogCQlwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyKHBoeWRldik7CkBAIC0zODA2LDIwICYjNDM7MzgzNywyNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJaWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSAmYW1wOyZhbXA7ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKSB7CiAJCWVyciA9IG9mX3BoeV9sZWRzKHBoeWRldik7CiAJCWlmIChlcnIpCi0JCQlnb3RvIG91dDsKJiM0MzsJCQlnb3RvIG91dF91bnJlZ19sZWRfdHJpZ2dlcnM7CiAJfQogCiYjNDM7CS8qIFNldCB0aGUgc3RhdGUgdG8gUkVBRFkgYnkgZGVmYXVsdCAqLwomIzQzOwlwaHlkZXYtJmd0O3N0YXRlID0gUEhZX1JFQURZOwomIzQzOwogCXJldHVybiAwOwogCi1vdXQ6Ci0Jc2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LSZndDtzZnBfYnVzKTsKLQlwaHlkZXYtJmd0O3NmcF9idXMgPSBOVUxMOwomIzQzO291dF91bnJlZ19sZWRfdHJpZ2dlcnM6CiYjNDM7CWlmICghcGh5ZGV2LSZndDtpc19vbl9zZnBfbW9kdWxlKQomIzQzOwkJcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyKHBoeWRldik7CiAKJiM0MztvdXRfc2ZwX3JlbGVhc2U6CiYjNDM7CXBoeV9zZnBfcmVsZWFzZShwaHlkZXYpOwogCXBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7CiAKLQlpZiAoIXBoeWRldi0mZ3Q7aXNfb25fc2ZwX21vZHVsZSkKLQkJcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyKHBoeWRldik7CiYjNDM7b3V0X3JlbW92ZToKJiM0MzsJaWYgKHBoeWRldi0mZ3Q7ZHJ2LSZndDtyZW1vdmUpCiYjNDM7CQlwaHlkZXYtJmd0O2Rydi0mZ3Q7cmVtb3ZlKHBoeWRldik7CiAKJiM0MztvdXRfcmVzZXQ6CiAJLyogUmUtYXNzZXJ0IHRoZSByZXNldCBzaWduYWwgb24gZXJyb3IgKi8KIAlwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7CiAKQEAgLTM4NDAsOSAmIzQzOzM4NzgsNyBAQCBzdGF0aWMgaW50IHBoeV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQogCiAJcGh5ZGV2LSZndDtzdGF0ZSA9IFBIWV9ET1dOOwogCi0Jc2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LSZndDtzZnBfYnVzKTsKLQlwaHlkZXYtJmd0O3NmcF9idXMgPSBOVUxMOwotCiYjNDM7CXBoeV9zZnBfcmVsZWFzZShwaHlkZXYpOwogCXBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7CiAKIAlpZiAocGh5ZGV2LSZndDtkcnYgJmFtcDsmYW1wOyBwaHlkZXYtJmd0O2Rydi0mZ3Q7cmVtb3ZlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMKaW5kZXggNGViNzcxNmJiOWQ2Yy4uZmY2ZTUxODM5NWJlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jCkBAIC0xMjYsNiAmIzQzOzEyNiw3IEBAIGludCBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpCiAJd2hpbGUgKGktLSkKIAkJcGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoJmFtcDtwaHktJmd0O3BoeV9sZWRfdHJpZ2dlcnNbaV0pOwogCWtmcmVlKHBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2Vycyk7CiYjNDM7CXBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2VycyA9IE5VTEw7CiBvdXRfdW5yZWdfbGluazoKIAlwaHlfbGVkX3RyaWdnZXJfdW5yZWdpc3RlcihwaHktJmd0O2xlZF9saW5rX3RyaWdnZXIpOwogb3V0X2ZyZWVfbGluazoKQEAgLTE0MSwxMCAmIzQzOzE0MiwxMiBAQCB2b2lkIHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KQogewogCWludCBpOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IHBoeS0mZ3Q7cGh5X251bV9sZWRfdHJpZ2dlcnM7IGkmIzQzOyYjNDM7KQotCQlwaHlfbGVkX3RyaWdnZXJfdW5yZWdpc3RlcigmYW1wO3BoeS0mZ3Q7cGh5X2xlZF90cmlnZ2Vyc1tpXSk7Ci0Ja2ZyZWUocGh5LSZndDtwaHlfbGVkX3RyaWdnZXJzKTsKLQlwaHktJmd0O3BoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMOwomIzQzOwlpZiAocGh5LSZndDtwaHlfbGVkX3RyaWdnZXJzKSB7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgcGh5LSZndDtwaHlfbnVtX2xlZF90cmlnZ2VyczsgaSYjNDM7JiM0MzspCiYjNDM7CQkJcGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoJmFtcDtwaHktJmd0O3BoeV9sZWRfdHJpZ2dlcnNbaV0pOwomIzQzOwkJa2ZyZWUocGh5LSZndDtwaHlfbGVkX3RyaWdnZXJzKTsKJiM0MzsJCXBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2VycyA9IE5VTEw7CiYjNDM7CX0KIAogCWlmIChwaHktJmd0O2xlZF9saW5rX3RyaWdnZXIpIHsKIAkJcGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIocGh5LSZndDtsZWRfbGlua190cmlnZ2VyKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzUKCQkJCQkJCW91dHB1dDogMjE3CgkJCQkJCQl0aG91Z2h0czogNDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgYWZ0ZXIgcmV2aWV3aW5nIHRoaXMgcGF0Y2gsIG15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0JiMzOTtzIGZvY3VzaW5nIG9uICpyb2J1c3RuZXNzKiBhbmQgKmNsZWFubGluZXNzKiB3aXRoaW4gdGhlIFBIWSBkcml2ZXIgY29kZS4gSXQmIzM5O3MgdG91Y2hpbmcgYHBoeV9kZXZpY2UuY2AgYW5kIGBwaHlfbGVkX3RyaWdnZXJzLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBwb3RlbnRpYWwgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkmIzM5O20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uLgoKVGhlIGNvcmUgY2hhbmdlcyBhcmUgY29uY2VudHJhdGVkIGFyb3VuZCBmaXhpbmcgZXJyb3IgaGFuZGxpbmcgcm91dGluZXMuIFNwZWNpZmljYWxseSwgYHBoeV9zZnBfcHJvYmVgLCBgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnRgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9wcm9iZWAsIGFuZCBgcGh5X3JlbW92ZWAgaGF2ZSBhbGwgYmVlbiB0b3VjaGVkIHVwLiBUaGUgZ29hbCBoZXJlIGlzIHRvIHBsdWcgcG90ZW50aWFsIHJlc291cmNlIGxlYWtzLCBwcmV2ZW50IHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcywgYW5kIGF2b2lkIHRob3NlIGRyZWFkZWQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyB0aGF0IGNhbiBjYXVzZSBpbnN0YWJpbGl0eS4gQSBrZXkgYWRkaXRpb24gaXMgYHBoeV9zZnBfcmVsZWFzZWAsIHdoaWNoIHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgY2xlYW4tdXAgb2YgU0ZQIHJlc291cmNlcy4gVGhlIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgIGNoYW5nZSBsb29rcyBsaWtlIGEgc2FmZXR5IG5ldDogdmVyaWZ5aW5nIHRoZSBleGlzdGVuY2Ugb2YgYHBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2Vyc2AgYmVmb3JlIGZyZWVpbmcgaXQgYXZvaWRzIGEgcG90ZW50aWFsIGRvdWJsZS1mcmVlIGlzc3VlLgoKSSBzZWUgbm8gZXZpZGVuY2UgdGhhdCB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIG5ldyBzdHJ1Y3R1cmVzIGV4cG9zZWQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IHJpc2tzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvciBhbnkgaW5mb3JtYXRpb24gbGVha3MuIFRoZXNlIGFyZSBzb2xpZCBjb2RpbmcgcHJhY3RpY2VzLgoKTGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIGluZGl2aWR1YWwgY2hhbmdlczoKCiogICBgcGh5X3NmcF9wcm9iZWA6IEVuc3VyZXMgYHBoeWRldi0mZ3Q7c2ZwX2J1c2AgaXMgY2xlYW5lZCB1cCBpZiBgcGh5X3NldHVwX3NmcF9wb3J0YCBmYWlscy4KKiAgIGBwaHlfc2ZwX3JlbGVhc2VgOiBBIG5lY2Vzc2FyeSBhZGRpdGlvbiBmb3IgcHJvcGVyIFNGUCByZXNvdXJjZSByZWxlYXNlLgoqICAgYHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0YDogTm93IGRlc3Ryb3lzIHRoZSBwb3J0IGlmIGBwaHlfYWRkX3BvcnRgIGZhaWxzLgoqICAgYHBoeV9zZXR1cF9wb3J0c2A6IEltcHJvdmVkIGVycm9yIGxhYmVscyBhbmQgY2xlYW51cCBwcm9jZWR1cmVzLgoqICAgYHBoeV9wcm9iZWA6IEVuaGFuY2VkIGVycm9yIGxhYmVscyBhbmQgY2xlYW51cCBwcm9jZWR1cmVzLCBsaWtlIGBvdXRfdW5yZWdfbGVkX3RyaWdnZXJzYCwgYG91dF9zZnBfcmVsZWFzZWAsIGBvdXRfcmVtb3ZlYCwgYW5kIGBvdXRfcmVzZXRgLgoqICAgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgOiBDbGVhcnMgYHBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2Vyc2AgYWZ0ZXIgZnJlZWluZyBpdC4KKiAgIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgOiBDaGVja3MgaWYgYHBoeS0mZ3Q7cGh5X2xlZF90cmlnZ2Vyc2AgaXMgbm9uLU5VTEwgYmVmb3JlIGZyZWVpbmcsIHdoaWNoIGlzIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nLgoKR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGVzZSBtb2RpZmljYXRpb25zLCBzcGVjaWZpY2FsbHkgdGhlIGxhY2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgYW55IGluZm9ybWF0aW9uIGxlYWtzLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC4gU3RhbmRhcmQgZGVidWdnaW5nIHRvb2xzLCBwYXJ0aWN1bGFybHkgS0FTQU4gYW5kIGttZW1sZWFrLCBhcmUgcGVyZmVjdGx5IHN1ZmZpY2llbnQgZm9yIGlkZW50aWZ5aW5nIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUgZXJyb3JzLCBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyB3aXRoaW4gdGhpcyBwYXRjaC4gS01TQU4gaXMgbm90IG5lY2Vzc2FyeSBoZXJlLiBUaGlzIGlzIGEgZ29vZCBleGFtcGxlIG9mIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBhbmQgaW1wcm92ZWQgZXJyb3IgaGFuZGxpbmcsIHdoaWNoIHNob3VsZCBlbmhhbmNlIHRoZSBkcml2ZXImIzM5O3MgcmVsaWFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZvY3VzZXMgb24gZml4aW5nIGVycm9yIGhhbmRsaW5nIHBhdGhzIGFuZCByZXNvdXJjZSBjbGVhbnVwIGluIHRoZSBQSFkgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsIHJvdXRpbmVzIChlLmcuLCBgcGh5X3Byb2JlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfc2ZwX3Byb2JlYCkuIEl0IGFkZHJlc3NlcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSwgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYnkgZW5zdXJpbmcgdGhhdCByZXNvdXJjZXMgbGlrZSBTRlAgYnVzZXMsIFBIWSBwb3J0cywgYW5kIExFRCB0cmlnZ2VycyBhcmUgcHJvcGVybHkgcmVsZWFzZWQgb3IgdW5yZWdpc3RlcmVkIHdoZW4gaW5pdGlhbGl6YXRpb24gZmFpbHMuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMgc3VjaCBhcyBLQVNBTiAoZm9yIHVzZS1hZnRlci1mcmVlIGFuZCBvdXQtb2YtYm91bmRzKSwga21lbWxlYWsgKGZvciBtZW1vcnkgbGVha3MpLCBhbmQgZ2VuZXJhbCBrZXJuZWwgb29wcy9wYW5pY3MgKGZvciBOVUxMIGRlcmVmZXJlbmNlcykuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgY29tcGxleCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiYjMzk7cyBzcGVjaWFsaXplZCB1bmluaXRpYWxpemVkIG1lbW9yeSB0cmFja2luZy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZvY3VzZXMgb24gZml4aW5nIGVycm9yIGhhbmRsaW5nIHBhdGhzIGFuZCByZXNvdXJjZSBjbGVhbnVwIGluIHRoZSBQSFkgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsIHJvdXRpbmVzIChlLmcuLCBgcGh5X3Byb2JlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfc2ZwX3Byb2JlYCkuIEl0IGFkZHJlc3NlcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSwgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYnkgZW5zdXJpbmcgdGhhdCByZXNvdXJjZXMgbGlrZSBTRlAgYnVzZXMsIFBIWSBwb3J0cywgYW5kIExFRCB0cmlnZ2VycyBhcmUgcHJvcGVybHkgcmVsZWFzZWQgb3IgdW5yZWdpc3RlcmVkIHdoZW4gaW5pdGlhbGl6YXRpb24gZmFpbHMuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMgc3VjaCBhcyBLQVNBTiAoZm9yIHVzZS1hZnRlci1mcmVlIGFuZCBvdXQtb2YtYm91bmRzKSwga21lbWxlYWsgKGZvciBtZW1vcnkgbGVha3MpLCBhbmQgZ2VuZXJhbCBrZXJuZWwgb29wcy9wYW5pY3MgKGZvciBOVUxMIGRlcmVmZXJlbmNlcykuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgY29tcGxleCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiYjMzk7cyBzcGVjaWFsaXplZCB1bmluaXRpYWxpemVkIG1lbW9yeSB0cmFja2luZy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6Mzk6NDYuNjYwMTgzNDM2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwMjIxMTA4MDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiU0ZQXCIsXG4gICAgXCJVU0JfTkVUX0RSSVZFUlNcIixcbiAgICBcIlVTQl9ORVRfU01TQzk1WFhcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJMRURfVFJJR0dFUl9QSFlcIixcbiAgICBcIlBIWUxJQl9MRURTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X3Byb2JlXCIsXG4gICAgXCJwaHlfcmVtb3ZlXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZvY3VzZXMgb24gZml4aW5nIGVycm9yIGhhbmRsaW5nIHBhdGhzIGFuZCByZXNvdXJjZSBjbGVhbnVwIGluIHRoZSBQSFkgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsIHJvdXRpbmVzIChlLmcuLCBgcGh5X3Byb2JlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfc2ZwX3Byb2JlYCkuIEl0IGFkZHJlc3NlcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSwgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYnkgZW5zdXJpbmcgdGhhdCByZXNvdXJjZXMgbGlrZSBTRlAgYnVzZXMsIFBIWSBwb3J0cywgYW5kIExFRCB0cmlnZ2VycyBhcmUgcHJvcGVybHkgcmVsZWFzZWQgb3IgdW5yZWdpc3RlcmVkIHdoZW4gaW5pdGlhbGl6YXRpb24gZmFpbHMuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMgc3VjaCBhcyBLQVNBTiAoZm9yIHVzZS1hZnRlci1mcmVlIGFuZCBvdXQtb2YtYm91bmRzKSwga21lbWxlYWsgKGZvciBtZW1vcnkgbGVha3MpLCBhbmQgZ2VuZXJhbCBrZXJuZWwgb29wcy9wYW5pY3MgKGZvciBOVUxMIGRlcmVmZXJlbmNlcykuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgY29tcGxleCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTidzIHNwZWNpYWxpemVkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRyYWNraW5nLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHJlc291cmNlIGxlYWtzIGFuZCBlcnJvciBoYW5kbGluZyBwYXRocyBpbiB0aGUgUEhZIGRldmljZSBwcm9iZSBhbmQgcmVtb3ZhbCByb3V0aW5lcyAoYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfc2ZwX3Byb2JlYCkgYW5kIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBjb3JlIFBIWSBsaWJyYXJ5IChgcGh5bGliYCkgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgZW11bGF0ZWQgVVNCIG5ldHdvcmsgYWRhcHRlcnMgKGUuZy4sIGBzbXNjOTV4eGAsIGBsYW43OHh4YCkgdGhhdCByZWdpc3RlciBNRElPIGJ1c2VzIGFuZCBQSFkgZGV2aWNlcy4gRnV6emluZyB0aGVzZSBwYXRocyBpcyB2YWx1YWJsZSB0byBlbnN1cmUgcm9idXN0bmVzcyBvZiBQSFkgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93bi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6Mzk6NDYuNjYwMTk0NTM2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzAzNzE1NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MzlkMjlmYTJjMzc5MzNkYmFhNjRmZmQ4MTY5MGU2MTg5NGViZWNmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDIxIDA3OjM5OjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuaW5kZXggOTRiMmU4NWUwMGEzNy4uOGNiMGQ2MGZjYmJhOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbkBAIC0xNzIzLDEyICsxNzIzLDQxIEBAIHN0YXRpYyBpbnQgcGh5X3NmcF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZXNmcF9idXMpXFxuK1xcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IHBoeWRldi1cXHUwMDNlc2ZwX2J1cykge1xcbiBcXHRcXHRyZXQgPSBwaHlfc2V0dXBfc2ZwX3BvcnQocGh5ZGV2KTtcXG4rXFx0XFx0aWYgKHJldCkge1xcbitcXHRcXHRcXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXFx1MDAzZXNmcF9idXMpO1xcbitcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBwaHlfc2ZwX3JlbGVhc2UgLSByZWxlYXNlIHJlc291cmNlcyBzZXQgdXAgYnkgcGh5X3NmcF9wcm9iZSgpXFxuKyAqIEBwaHlkZXY6IHRoZSBQSFkgZGV2aWNlXFxuKyAqXFxuKyAqIFJlbGVhc2UgdGhlIFNGUCByZXNvdXJjZXMgc2V0IHVwIGJ5IGEgc3VjY2Vzc2Z1bCBwaHlfc2ZwX3Byb2JlKCkuIFVucmVnaXN0ZXJcXG4rICogdGhlIHVwc3RyZWFtIGJlZm9yZSBkZXN0cm95aW5nIGl0cyBwaHlfcG9ydCwgc28gU0ZQIHVwc3RyZWFtIGNhbGxiYWNrcyBjYW5ub3RcXG4rICogcmFjZSB3aXRoIHBvcnQgZGVzdHJ1Y3Rpb24uXFxuKyAqL1xcbitzdGF0aWMgdm9pZCBwaHlfc2ZwX3JlbGVhc2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQsICp0bXA7XFxuK1xcbitcXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXFx1MDAzZXNmcF9idXMpO1xcbitcXHRwaHlkZXYtXFx1MDAzZXNmcF9idXMgPSBOVUxMO1xcbitcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcnQsIHRtcCwgXFx1MDAyNnBoeWRldi1cXHUwMDNlcG9ydHMsIGhlYWQpIHtcXG4rXFx0XFx0aWYgKCFwb3J0LVxcdTAwM2Vpc19zZnApXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0cGh5X2RlbF9wb3J0KHBoeWRldiwgcG9ydCk7XFxuK1xcdFxcdHBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcXG4ge1xcbiBcXHRyZXR1cm4gcGh5ZHJ2LVxcdTAwM2Vjb25maWdfaW50ciBcXHUwMDI2XFx1MDAyNiBwaHlkcnYtXFx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XFxuQEAgLTM0NTQsNiArMzQ4Myw3IEBAIHN0YXRpYyBpbnQgcGh5X2RlZmF1bHRfc2V0dXBfc2luZ2xlX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQgPSBwaHlfcG9ydF9hbGxvYygpO1xcbiBcXHR1bnNpZ25lZCBsb25nIG1vZGU7XFxuK1xcdGludCByZXQ7XFxuIFxcbiBcXHRpZiAoIXBvcnQpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbkBAIC0zNDgwLDkgKzM1MTAsMTEgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHRcXHRwb3J0LVxcdTAwM2VwYWlycyA9IG1heF90KGludCwgcG9ydC1cXHUwMDNlcGFpcnMsXFxuIFxcdFxcdFxcdFxcdCAgICBldGh0b29sX2xpbmttb2RlX25fcGFpcnMobW9kZSkpO1xcbiBcXG4tXFx0cGh5X2FkZF9wb3J0KHBoeWRldiwgcG9ydCk7XFxuK1xcdHJldCA9IHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRwaHlfcG9ydF9kZXN0cm95KHBvcnQpO1xcbiBcXG4tXFx0cmV0dXJuIDA7XFxuK1xcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgb2ZfcGh5X3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuQEAgLTM1NDcsMTMgKzM1NzksMTMgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcXG4gXFx0XFx0cmV0ID0gcGh5X3NmcF9wcm9iZShwaHlkZXYpO1xcbiBcXHRcXHRpZiAocmV0KVxcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0XFx0Z290byBlcnJfcG9ydHM7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChwaHlkZXYtXFx1MDAzZW5fcG9ydHMgXFx1MDAzYyBwaHlkZXYtXFx1MDAzZW1heF9uX3BvcnRzKSB7XFxuIFxcdFxcdHJldCA9IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHBoeWRldik7XFxuIFxcdFxcdGlmIChyZXQpXFxuLVxcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHRcXHRnb3RvIGVycl9zZnA7XFxuIFxcdH1cXG4gXFxuIFxcdGxpbmttb2RlX3plcm8ocG9ydHNfc3VwcG9ydGVkKTtcXG5AQCAtMzU4MCw3ICszNjEyLDkgQEAgc3RhdGljIGludCBwaHlfc2V0dXBfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFxuIFxcdHJldHVybiAwO1xcbiBcXG4tb3V0OlxcbitlcnJfc2ZwOlxcbitcXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcXG4rZXJyX3BvcnRzOlxcbiBcXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuQEAgLTM3MDYsNyArMzc0MCw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0aWYgKHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2Vwcm9iZSkge1xcbiBcXHRcXHRlcnIgPSBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcHJvYmUocGh5ZGV2KTtcXG4gXFx0XFx0aWYgKGVycilcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdGdvdG8gb3V0X3Jlc2V0O1xcbiBcXHR9XFxuIFxcbiBcXHRwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7XFxuQEAgLTM3MjcsNyArMzc2MSw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0XFx0ZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XFxuIFxcbiBcXHRpZiAoZXJyKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0Z290byBvdXRfcmVtb3ZlO1xcbiBcXG4gXFx0aWYgKCFsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCxcXG4gXFx0XFx0XFx0ICAgICAgIHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkKSlcXG5AQCAtMzc0NCw3ICszNzc4LDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXG4gXFx0ZXJyID0gcGh5X3NldHVwX3BvcnRzKHBoeWRldik7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHRnb3RvIG91dF9yZW1vdmU7XFxuIFxcbiBcXHRwaHlfYWR2ZXJ0aXNlX3N1cHBvcnRlZChwaHlkZXYpO1xcbiBcXG5AQCAtMzc1Myw3ICszNzg3LDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHQgKi9cXG4gXFx0ZXJyID0gZ2VucGh5X2M0NV9yZWFkX2VlZV9hZHYocGh5ZGV2LCBwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nX2VlZSk7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHRnb3RvIG91dF9zZnBfcmVsZWFzZTtcXG4gXFxuIFxcdC8qIEdldCB0aGUgRUVFIG1vZGVzIHdlIHdhbnQgdG8gcHJvaGliaXQuICovXFxuIFxcdG9mX3NldF9waHlfZWVlX2Jyb2tlbihwaHlkZXYpO1xcbkBAIC0zNzkzLDkgKzM4MjcsNiBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdFxcdFxcdFxcdCBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCk7XFxuIFxcdH1cXG4gXFxuLVxcdC8qIFNldCB0aGUgc3RhdGUgdG8gUkVBRFkgYnkgZGVmYXVsdCAqL1xcbi1cXHRwaHlkZXYtXFx1MDAzZXN0YXRlID0gUEhZX1JFQURZO1xcbi1cXG4gXFx0LyogUmVnaXN0ZXIgdGhlIFBIWSBMRUQgdHJpZ2dlcnMgKi9cXG4gXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXFxuIFxcdFxcdHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXIocGh5ZGV2KTtcXG5AQCAtMzgwNiwyMCArMzgzNywyNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXFx1MDAyNlxcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHtcXG4gXFx0XFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcXG4gXFx0XFx0aWYgKGVycilcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdGdvdG8gb3V0X3VucmVnX2xlZF90cmlnZ2VycztcXG4gXFx0fVxcbiBcXG4rXFx0LyogU2V0IHRoZSBzdGF0ZSB0byBSRUFEWSBieSBkZWZhdWx0ICovXFxuK1xcdHBoeWRldi1cXHUwMDNlc3RhdGUgPSBQSFlfUkVBRFk7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuLW91dDpcXG4tXFx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVxcdTAwM2VzZnBfYnVzKTtcXG4tXFx0cGh5ZGV2LVxcdTAwM2VzZnBfYnVzID0gTlVMTDtcXG4rb3V0X3VucmVnX2xlZF90cmlnZ2VyczpcXG4rXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWlzX29uX3NmcF9tb2R1bGUpXFxuK1xcdFxcdHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcihwaHlkZXYpO1xcbiBcXG4rb3V0X3NmcF9yZWxlYXNlOlxcbitcXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcXG4gXFx0cGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTtcXG4gXFxuLVxcdGlmICghcGh5ZGV2LVxcdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxcbi1cXHRcXHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcXG4rb3V0X3JlbW92ZTpcXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VyZW1vdmUpXFxuK1xcdFxcdHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VyZW1vdmUocGh5ZGV2KTtcXG4gXFxuK291dF9yZXNldDpcXG4gXFx0LyogUmUtYXNzZXJ0IHRoZSByZXNldCBzaWduYWwgb24gZXJyb3IgKi9cXG4gXFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xcbiBcXG5AQCAtMzg0MCw5ICszODc4LDcgQEAgc3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFxuIFxcdHBoeWRldi1cXHUwMDNlc3RhdGUgPSBQSFlfRE9XTjtcXG4gXFxuLVxcdHNmcF9idXNfZGVsX3Vwc3RyZWFtKHBoeWRldi1cXHUwMDNlc2ZwX2J1cyk7XFxuLVxcdHBoeWRldi1cXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XFxuLVxcbitcXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcXG4gXFx0cGh5X2NsZWFudXBfcG9ydHMocGh5ZGV2KTtcXG4gXFxuIFxcdGlmIChwaHlkZXYtXFx1MDAzZWRydiBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcmVtb3ZlKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY1xcbmluZGV4IDRlYjc3MTZiYjlkNmMuLmZmNmU1MTgzOTViZTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmNcXG5AQCAtMTI2LDYgKzEyNiw3IEBAIGludCBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXFxuIFxcdHdoaWxlIChpLS0pXFxuIFxcdFxcdHBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKFxcdTAwMjZwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xcbiBcXHRrZnJlZShwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xcbitcXHRwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMO1xcbiBvdXRfdW5yZWdfbGluazpcXG4gXFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIocGh5LVxcdTAwM2VsZWRfbGlua190cmlnZ2VyKTtcXG4gb3V0X2ZyZWVfbGluazpcXG5AQCAtMTQxLDEwICsxNDIsMTIgQEAgdm9pZCBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwaHktXFx1MDAzZXBoeV9udW1fbGVkX3RyaWdnZXJzOyBpKyspXFxuLVxcdFxcdHBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKFxcdTAwMjZwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xcbi1cXHRrZnJlZShwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xcbi1cXHRwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMO1xcbitcXHRpZiAocGh5LVxcdTAwM2VwaHlfbGVkX3RyaWdnZXJzKSB7XFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwaHktXFx1MDAzZXBoeV9udW1fbGVkX3RyaWdnZXJzOyBpKyspXFxuK1xcdFxcdFxcdHBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKFxcdTAwMjZwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xcbitcXHRcXHRrZnJlZShwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xcbitcXHRcXHRwaHktXFx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAocGh5LVxcdTAwM2VsZWRfbGlua190cmlnZ2VyKSB7XFxuIFxcdFxcdHBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKHBoeS1cXHUwMDNlbGVkX2xpbmtfdHJpZ2dlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjM5OjQ3LjEzMTQyMTQ0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjg5NjQyNjcwNTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiU0ZQXCIsXG4gICAgXCJVU0JfTkVUX0RSSVZFUlNcIixcbiAgICBcIlVTQl9ORVRfU01TQzk1WFhcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJMRURfVFJJR0dFUl9QSFlcIixcbiAgICBcIlBIWUxJQl9MRURTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X3Byb2JlXCIsXG4gICAgXCJwaHlfcmVtb3ZlXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyByZXNvdXJjZSBsZWFrcyBhbmQgZXJyb3IgaGFuZGxpbmcgcGF0aHMgaW4gdGhlIFBIWSBkZXZpY2UgcHJvYmUgYW5kIHJlbW92YWwgcm91dGluZXMgKGBwaHlfcHJvYmVgLCBgcGh5X3JlbW92ZWAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3NmcF9wcm9iZWApIGFuZCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgY29yZSBQSFkgbGlicmFyeSAoYHBoeWxpYmApIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGVtdWxhdGVkIFVTQiBuZXR3b3JrIGFkYXB0ZXJzIChlLmcuLCBgc21zYzk1eHhgLCBgbGFuNzh4eGApIHRoYXQgcmVnaXN0ZXIgTURJTyBidXNlcyBhbmQgUEhZIGRldmljZXMuIEZ1enppbmcgdGhlc2UgcGF0aHMgaXMgdmFsdWFibGUgdG8gZW5zdXJlIHJvYnVzdG5lc3Mgb2YgUEhZIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQzOWQyOWZhMmMzNzkzM2RiYWE2NGZmZDgxNjkwZTYxODk0ZWJlY2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAwNzozOTo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li44Y2IwZDYwZmNiYmE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTE3MjMsMTIgKzE3MjMsNDEgQEAgc3RhdGljIGludCBwaHlfc2ZwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdFx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuIFx0fVxuIFxuLVx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VzZnBfYnVzKVxuK1x0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VzZnBfYnVzKSB7XG4gXHRcdHJldCA9IHBoeV9zZXR1cF9zZnBfcG9ydChwaHlkZXYpO1xuK1x0XHRpZiAocmV0KSB7XG4rXHRcdFx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuK1x0XHRcdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbitcdFx0fVxuK1x0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rLyoqXG4rICogcGh5X3NmcF9yZWxlYXNlIC0gcmVsZWFzZSByZXNvdXJjZXMgc2V0IHVwIGJ5IHBoeV9zZnBfcHJvYmUoKVxuKyAqIEBwaHlkZXY6IHRoZSBQSFkgZGV2aWNlXG4rICpcbisgKiBSZWxlYXNlIHRoZSBTRlAgcmVzb3VyY2VzIHNldCB1cCBieSBhIHN1Y2Nlc3NmdWwgcGh5X3NmcF9wcm9iZSgpLiBVbnJlZ2lzdGVyXG4rICogdGhlIHVwc3RyZWFtIGJlZm9yZSBkZXN0cm95aW5nIGl0cyBwaHlfcG9ydCwgc28gU0ZQIHVwc3RyZWFtIGNhbGxiYWNrcyBjYW5ub3RcbisgKiByYWNlIHdpdGggcG9ydCBkZXN0cnVjdGlvbi5cbisgKi9cbitzdGF0aWMgdm9pZCBwaHlfc2ZwX3JlbGVhc2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQsICp0bXA7XG4rXG4rXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4rXHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4rXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9ydCwgdG1wLCBcdTAwMjZwaHlkZXYtXHUwMDNlcG9ydHMsIGhlYWQpIHtcbitcdFx0aWYgKCFwb3J0LVx1MDAzZWlzX3NmcClcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0cGh5X2RlbF9wb3J0KHBoeWRldiwgcG9ydCk7XG4rXHRcdHBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXG4ge1xuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG5AQCAtMzQ1NCw2ICszNDgzLDcgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdHN0cnVjdCBwaHlfcG9ydCAqcG9ydCA9IHBoeV9wb3J0X2FsbG9jKCk7XG4gXHR1bnNpZ25lZCBsb25nIG1vZGU7XG4rXHRpbnQgcmV0O1xuIFxuIFx0aWYgKCFwb3J0KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbkBAIC0zNDgwLDkgKzM1MTAsMTEgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHRwb3J0LVx1MDAzZXBhaXJzID0gbWF4X3QoaW50LCBwb3J0LVx1MDAzZXBhaXJzLFxuIFx0XHRcdFx0ICAgIGV0aHRvb2xfbGlua21vZGVfbl9wYWlycyhtb2RlKSk7XG4gXG4tXHRwaHlfYWRkX3BvcnQocGh5ZGV2LCBwb3J0KTtcbitcdHJldCA9IHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpO1xuK1x0aWYgKHJldClcbitcdFx0cGh5X3BvcnRfZGVzdHJveShwb3J0KTtcbiBcbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGludCBvZl9waHlfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbkBAIC0zNTQ3LDEzICszNTc5LDEzIEBAIHN0YXRpYyBpbnQgcGh5X3NldHVwX3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XG4gXHRcdHJldCA9IHBoeV9zZnBfcHJvYmUocGh5ZGV2KTtcbiBcdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIG91dDtcbitcdFx0XHRnb3RvIGVycl9wb3J0cztcbiBcdH1cbiBcbiBcdGlmIChwaHlkZXYtXHUwMDNlbl9wb3J0cyBcdTAwM2MgcGh5ZGV2LVx1MDAzZW1heF9uX3BvcnRzKSB7XG4gXHRcdHJldCA9IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHBoeWRldik7XG4gXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0Z290byBlcnJfc2ZwO1xuIFx0fVxuIFxuIFx0bGlua21vZGVfemVybyhwb3J0c19zdXBwb3J0ZWQpO1xuQEAgLTM1ODAsNyArMzYxMiw5IEBAIHN0YXRpYyBpbnQgcGh5X3NldHVwX3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1vdXQ6XG4rZXJyX3NmcDpcbitcdHBoeV9zZnBfcmVsZWFzZShwaHlkZXYpO1xuK2Vycl9wb3J0czpcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbkBAIC0zNzA2LDcgKzM3NDAsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydi1cdTAwM2Vwcm9iZSkge1xuIFx0XHRlcnIgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXByb2JlKHBoeWRldik7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0Z290byBvdXRfcmVzZXQ7XG4gXHR9XG4gXG4gXHRwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7XG5AQCAtMzcyNyw3ICszNzYxLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRlcnIgPSBnZW5waHlfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcbiBcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuK1x0XHRnb3RvIG91dF9yZW1vdmU7XG4gXG4gXHRpZiAoIWxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULFxuIFx0XHRcdCAgICAgICBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKSlcbkBAIC0zNzQ0LDcgKzM3NzgsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXG4gXHRlcnIgPSBwaHlfc2V0dXBfcG9ydHMocGh5ZGV2KTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuK1x0XHRnb3RvIG91dF9yZW1vdmU7XG4gXG4gXHRwaHlfYWR2ZXJ0aXNlX3N1cHBvcnRlZChwaHlkZXYpO1xuIFxuQEAgLTM3NTMsNyArMzc4Nyw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdCAqL1xuIFx0ZXJyID0gZ2VucGh5X2M0NV9yZWFkX2VlZV9hZHYocGh5ZGV2LCBwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuK1x0XHRnb3RvIG91dF9zZnBfcmVsZWFzZTtcbiBcbiBcdC8qIEdldCB0aGUgRUVFIG1vZGVzIHdlIHdhbnQgdG8gcHJvaGliaXQuICovXG4gXHRvZl9zZXRfcGh5X2VlZV9icm9rZW4ocGh5ZGV2KTtcbkBAIC0zNzkzLDkgKzM4MjcsNiBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdFx0XHQgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCk7XG4gXHR9XG4gXG4tXHQvKiBTZXQgdGhlIHN0YXRlIHRvIFJFQURZIGJ5IGRlZmF1bHQgKi9cbi1cdHBoeWRldi1cdTAwM2VzdGF0ZSA9IFBIWV9SRUFEWTtcbi1cbiBcdC8qIFJlZ2lzdGVyIHRoZSBQSFkgTEVEIHRyaWdnZXJzICovXG4gXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuIFx0XHRwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyKHBoeWRldik7XG5AQCAtMzgwNiwyMCArMzgzNywyNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZTElCX0xFRFMpIFx1MDAyNlx1MDAyNiAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkge1xuIFx0XHRlcnIgPSBvZl9waHlfbGVkcyhwaHlkZXYpO1xuIFx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdGdvdG8gb3V0X3VucmVnX2xlZF90cmlnZ2VycztcbiBcdH1cbiBcbitcdC8qIFNldCB0aGUgc3RhdGUgdG8gUkVBRFkgYnkgZGVmYXVsdCAqL1xuK1x0cGh5ZGV2LVx1MDAzZXN0YXRlID0gUEhZX1JFQURZO1xuK1xuIFx0cmV0dXJuIDA7XG4gXG4tb3V0OlxuLVx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuLVx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuK291dF91bnJlZ19sZWRfdHJpZ2dlcnM6XG4rXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuK1x0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbiBcbitvdXRfc2ZwX3JlbGVhc2U6XG4rXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXG4tXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuLVx0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbitvdXRfcmVtb3ZlOlxuK1x0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKVxuK1x0XHRwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZShwaHlkZXYpO1xuIFxuK291dF9yZXNldDpcbiBcdC8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4gXG5AQCAtMzg0MCw5ICszODc4LDcgQEAgc3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcbiBcdHBoeWRldi1cdTAwM2VzdGF0ZSA9IFBIWV9ET1dOO1xuIFxuLVx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuLVx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuLVxuK1x0cGh5X3NmcF9yZWxlYXNlKHBoeWRldik7XG4gXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VkcnYgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jXG5pbmRleCA0ZWI3NzE2YmI5ZDZjLi5mZjZlNTE4Mzk1YmUwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY1xuQEAgLTEyNiw2ICsxMjYsNyBAQCBpbnQgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuIFx0d2hpbGUgKGktLSlcbiBcdFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoXHUwMDI2cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xuIFx0a2ZyZWUocGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xuK1x0cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMO1xuIG91dF91bnJlZ19saW5rOlxuIFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIocGh5LVx1MDAzZWxlZF9saW5rX3RyaWdnZXIpO1xuIG91dF9mcmVlX2xpbms6XG5AQCAtMTQxLDEwICsxNDIsMTIgQEAgdm9pZCBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbiB7XG4gXHRpbnQgaTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBoeS1cdTAwM2VwaHlfbnVtX2xlZF90cmlnZ2VyczsgaSsrKVxuLVx0XHRwaHlfbGVkX3RyaWdnZXJfdW5yZWdpc3RlcihcdTAwMjZwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vyc1tpXSk7XG4tXHRrZnJlZShwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vycyk7XG4tXHRwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2VycyA9IE5VTEw7XG4rXHRpZiAocGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpIHtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGh5LVx1MDAzZXBoeV9udW1fbGVkX3RyaWdnZXJzOyBpKyspXG4rXHRcdFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoXHUwMDI2cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xuK1x0XHRrZnJlZShwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vycyk7XG4rXHRcdHBoeS1cdTAwM2VwaHlfbGVkX3RyaWdnZXJzID0gTlVMTDtcbitcdH1cbiBcbiBcdGlmIChwaHktXHUwMDNlbGVkX2xpbmtfdHJpZ2dlcikge1xuIFx0XHRwaHlfbGVkX3RyaWdnZXJfdW5yZWdpc3RlcihwaHktXHUwMDNlbGVkX2xpbmtfdHJpZ2dlcik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzozOTo0Ny4xMzE0MjI5NzdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzQ4OTkzNDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBIWSBEZXZpY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmNgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBuZXR3b3JraW5nLXJlbGF0ZWQgZml4LCB3aGljaCBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0by4gSXQgbG9va3MgbGlrZSBpdCdzIGFkZHJlc3NpbmcgcmVzb3VyY2UgbGVha3MgYW5kIGltcHJvdmluZyBlcnJvciBoYW5kbGluZyBpbiBzZXZlcmFsIGtleSBQSFkgZnVuY3Rpb25zOiBgcGh5X3NmcF9wcm9iZWAsIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3Byb2JlYCwgYW5kIGBwaHlfcmVtb3ZlYC4gR29vZCwgdGhvc2UgYXJlIGNyaXRpY2FsIGVudHJ5IGFuZCBleGl0IHBvaW50cy4gQWRkaW5nIGEgbmV3IGBwaHlfc2ZwX3JlbGVhc2VgIGZ1bmN0aW9uIGlzIGEgbm90YWJsZSBhZGRpdGlvbiBhcyB3ZWxsIOKAkyBzb3VuZHMgbGlrZSBpdCdzIHBhcnQgb2YgdGhlIGNsZWFudXAgcHJvY2VkdXJlcyBmb3IgdGhlIFNGUCBmdW5jdGlvbmFsaXR5LlxuXG5UaGUgY2hhbmdlcyBpbiBgcGh5X2xlZF90cmlnZ2Vycy5jYCBhcmUgcGFydGljdWxhcmx5IGludGVyZXN0aW5nLiBUaGV5J3JlIHByZXZlbnRpbmcgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgZG91YmxlIGZyZWVzLiBTZXR0aW5nIGBwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2VycyA9IE5VTExgIGFuZCBpbmNsdWRpbmcgYSBjaGVjayBiZWZvcmUgdW5yZWdpc3RlcmluZyBpcyB0aGUgcmlnaHQgYXBwcm9hY2ggdG8gZW5zdXJlIHRoZXJlJ3Mgbm8gZGFuZ2xpbmcgcG9pbnRlci4gU21hcnQsIGFuZCBhIGNvbW1vbiBwYXR0ZXJuIHRvIGF2b2lkIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBob3cgZWFzaWx5IGNhbiBJIHRyaWdnZXIgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBQSFkgZGV2aWNlcyBhcmUgZnVuZGFtZW50YWxseSBwYXJ0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJIGtub3cgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBjYW4gZW11bGF0ZSBuZXR3b3JrIGRldmljZXMsIGFuZCB0aG9zZSBlbXVsYXRlZCBkZXZpY2VzIG9mdGVuIHV0aWxpemUgUEhZcywgZXZlbiBpZiB0aGV5IGRvbid0ICpkaXJlY3RseSogdXNlIHRoZSBwaHlsaWIgQVBJLiBGb3IgZXhhbXBsZSwgZTEwMDAgYW5kIHZpcnRpby1uZXQgYXJlIGdvb2QgY2FuZGlkYXRlcy4gVGhvdWdoIHZpcnRpby1uZXQgdXN1YWxseSBkb2Vzbid0IG5lZWQgcGh5bGliLCB0aGVyZSBtYXkgYmUgc29tZSBlbXVsYXRlZCBkZXZpY2VzIHdoaWNoIHVzZSB0aGVtLCBvciBkdW1teSBQSFlzIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuXG5cbldhaXQgYSBzZWNvbmTigKYgYHBoeV9wcm9iZWAgaXMgY2FsbGVkIHdoZW4gYSBQSFkgZGV2aWNlIGlzIHByb2JlZC4gU28sIGl0IGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGZyb20gbWFueSBrZXJuZWwtc2lkZSBjb2RlIHBhdGhzLlxuXG5DYW4gSSBnZXQgdG8gYHBoeV9wcm9iZWAgdGhyb3VnaCBzeXprYWxsZXI/IFRoYXQncyB0aGUgcmVhbCB0ZXN0LiBTeXprYWxsZXIgY2FuIGdlbmVyYXRlIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIGxpa2UgdmV0aCwgdHVuLCBvciB1c2UgbmV0ZGV2c2ltIHdoaWNoIHZlcnkgd2VsbCBtaWdodCB1c2UgUEhZcy4gQWxzbywgdGhlIGBtZGlvYCBidXMgaXMgYSBrZXkgZWxlbWVudCB3aGljaCBpcyBmcmVxdWVudGx5IHBvcHVsYXRlZCBpbiB0ZXN0aW5nLiBZZXMsIEknbSBwcmV0dHkgc3VyZSBpdCBpcy4gQWxyaWdodCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBwaHlfcHJvYmVgIGlzLCBpbiBmYWN0LCByZWFjaGFibGUuIExldCBtZSBjaGVjayB0aGUgc3l6a2FsbGVyIGNvcnB1cyBhbmQgc29tZSBvZiBteSBwYXN0IHdvcmsgdG8gY29uZmlybSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjc4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6Mzk6NTMuODgwNDIwMTc1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDIzMzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzcxMT1FWFBPUlRfU1lNQk9MX0dQTChmd25vZGVfZ2V0X3BoeV9ub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzcxMy0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM3MTQ6ICogcGh5X3Byb2JlIC0gcHJvYmUgYW5kIGluaXQgYSBQSFkgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNzE1LSAqIEBkZXY6IGRldmljZSB0byBwcm9iZSBhbmQgaW5pdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNzE4LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzcxOTpzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNzIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzkwMD1zdGF0aWMgaW50IHBoeV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBoeV9kcml2ZXIgKm5ld19kcml2ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM5MjYtXFx0bmV3X2RyaXZlci1cXHUwMDNlbWRpb2Rydi5kcml2ZXIuYnVzID0gXFx1MDAyNm1kaW9fYnVzX3R5cGU7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozOTI3OlxcdG5ld19kcml2ZXItXFx1MDAzZW1kaW9kcnYuZHJpdmVyLnByb2JlID0gcGh5X3Byb2JlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzkyOC1cXHRuZXdfZHJpdmVyLVxcdTAwM2VtZGlvZHJ2LmRyaXZlci5yZW1vdmUgPSBwaHlfcmVtb3ZlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzozOTo1My45Mzc4NTE2ODlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzA5OTEyNDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1ESU8gQnVzIFByb2JlIENoYWxsZW5nZSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gdHJpZ2dlciBgcGh5X3Byb2JlYCBmb3IgYSBQSFkgZHJpdmVyIHVzaW5nIHN5emthbGxlci4gVGhlIGNvcmUgaXNzdWUgaXMgdGhhdCBNRElPIGJ1cyBkZXZpY2VzIGFyZSB1c3VhbGx5IGNyZWF0ZWQgdmlhIGRldmljZSB0cmVlIG9yIHNwZWNpZmljIGRyaXZlcnMsIHdoaWNoIG1ha2VzIGRpcmVjdCBjb250cm9sIGZyb20gc3l6a2FsbGVyIHRyaWNreS4gYHN5el9nZW5ldGxpbmtgIGlzIGFuIG9wdGlvbiBmb3IgZGV2aWNlIGNyZWF0aW9uLCBidXQgaXQgZG9lc24ndCBzZWVtIGRpcmVjdGx5IGFwcGxpY2FibGUgaGVyZS5cblxuSSBpbml0aWFsbHkgY29uc2lkZXJlZCBgbmV0ZGV2c2ltYCwgYG1hYzgwMjExX2h3c2ltYCwgYW5kIGB2a21zYCwgYnV0IHRob3NlIGRvbid0IHNlZW0gdG8gdXRpbGl6ZSBwaHlsaWIgZGlyZWN0bHkuIFRoZW4gSSB0aG91Z2h0IGFib3V0IGB0dW5gIGFuZCBgdGFwYCBpbnRlcmZhY2VzLCBidXQgdGhleSBhcmUgdW5yZWxhdGVkLiBUaGUga2V5IGlzIHRvIGZpbmQgaWYgdGhlcmUncyBhbnkgc29mdHdhcmUgZW11bGF0ZWQgTURJTyBidXMgdGhhdCBzeXprYWxsZXIgY291bGQgdXNlLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgaWYgYG1kaW9fYnVzX3R5cGVgIGRldmljZXMgY2FuIGJlIGluc3RhbnRpYXRlZCBieSB1c2Vyc3BhY2UgZGlyZWN0bHkuIEkga25vdyB1c2Vyc3BhY2UgZG9lc24ndCAqdHlwaWNhbGx5KiBjcmVhdGUgTURJTyBkZXZpY2VzIHVubGVzcyB0aGVyZSdzIGFuIGV4cGxpY2l0IGludGVyZmFjZS4gVGhlIHRob3VnaHQgdGhlbiBzaGlmdGVkIGJhY2sgdG8gc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBwYXJ0aWN1bGFybHkgdGhlIGBkdW1teV9oY2RgLiBDb3VsZCB0aGVyZSBiZSBVU0IgbmV0d29yayBhZGFwdGVycyB0aGF0LCBiZWhpbmQgdGhlIHNjZW5lcywgbGV2ZXJhZ2UgcGh5bGliPyBUaGlzIHNlZW1zIHByb21pc2luZywgc28gbGV0J3MgY2hlY2sgaW50byB0aGF0IGFuZ2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDczLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjM5OjU5LjY0Nzc2NzQyNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mzg0NDc5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yNy0jaW5jbHVkZSBcXHUwMDNjbGludXgvaWZfdmxhbi5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6Mjg6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjktI2luY2x1ZGUgXFx1MDAzY25ldC9zZWxmdGVzdHMuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTE1LSNpbmNsdWRlIFxcXCJhc2l4LmhcXFwiXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MTY6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjE6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjItI2luY2x1ZGUgXFx1MDAzY25ldC9pcDZfY2hlY2tzdW0uaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTEzLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9oZXguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYzoxNDojaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMtMTUtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzYi5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMjMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21kaW8uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoyNDojaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMjUtI2luY2x1ZGUgXFx1MDAzY25ldC9zZWxmdGVzdHMuaFxcdTAwM2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6Mzk6NTkuNzExNjE3OTU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY0NTY4NDExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUEhZIERyaXZlciBDaGFuZ2VzKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBoYW5kbGUgb24gdGhpcyBwYXRjaC4gVGhpbmtpbmcgdGhyb3VnaCB0aGlzLCBteSBleHBlcnQgZXllIGltbWVkaWF0ZWx5IHNlZXMgdGhhdCBkcml2ZXJzIGxpa2UgYGxhbjc4eHhgLCBgc21zYzk1eHhgLCBgYXg4ODE3MmFgLCBhbmQgYHI4MTUyYCBhcmUgYWxsIFVTQiBuZXR3b3JrIGFkYXB0ZXJzIHRoYXQgbWFrZSB1c2Ugb2YgYHBoeS5oYC4gVGhlIGJlYXV0eSBvZiBzeXprYWxsZXIgYW5kIGl0cyBgZHVtbXlfaGNkYCBlbXVsYXRpb24gdmlhIGBzeXpfdXNiX2Nvbm5lY3RgIGlzIHRoYXQgSSBjYW4gYWJzb2x1dGVseSB0cmlnZ2VyIHRoZSBwcm9iaW5nIG9mIHRob3NlIFVTQiBuZXR3b3JrIGRyaXZlcnMuIFRoYXQsIGluIHR1cm4sIHJlZ2lzdGVycyBNRElPIGJ1c2VzIGFuZCBQSFkgZGV2aWNlcywgZGlyZWN0bHkgaGl0dGluZyBgcGh5X3Byb2JlYC4gU28sIHRoaXMgY29kZSBpcyBkZWZpbml0aXZlbHkgcmVhY2hhYmxlIGV2ZW4gaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgd2hpY2ggaXMgZ3JlYXQgZm9yIGZ1enppbmcuXG5cbk5vdywgbGV0J3MgZHJpbGwgZG93biBpbnRvIHRoZSBwYXRjaCBpdHNlbGYuIFRoZSBjaGFuZ2VzIHRvdWNoIGNvcmUgUEhZIGxpYnJhcnkgZnVuY3Rpb25zOiBzcGVjaWZpY2FsbHksIGBwaHlfcHJvYmVgLCBgcGh5X3NmcF9wcm9iZWAsIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3JlbW92ZWAsIGBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyYCwgYW5kIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGNoYW5nZXMgYXJlLCBzbyB0aGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB0byBleGFtaW5lIGluIGRldGFpbC5cblxuRnJvbSBteSBpbml0aWFsIGdsYW5jZSwgdGhlIHBhdGNoIGFkZHJlc3NlcyBzb21lIGVycm9yIGhhbmRsaW5nIGluIGBwaHlfcHJvYmVgLCBhZGRzIGBwaHlfc2ZwX3JlbGVhc2VgLCBhbmQgZml4ZXMgYSBOVUxMIGNoZWNrIGluIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgLlxuXG5UaGUga2V5IGZ1bmN0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlOiBgcGh5X3Byb2JlYCwgYHBoeV9zZnBfcHJvYmVgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0YCwgYHBoeV9zZnBfcmVsZWFzZWAsIGBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyYCwgYW5kIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgLiBXYWl04oCmIGEgZmV3IG9mIHRoZXNlIGxvb2sgbGlrZSB0aGV5J3JlIHN0YXRpYy5cblxuSG9sZCBvbiwgSSBzZWUgdGhhdCBgcGh5X3NmcF9yZWxlYXNlYCBpcyBzdGF0aWMuIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAgaXMgYWxzbyBzdGF0aWMsIGFzIGlzIGBwaHlfc2V0dXBfcG9ydHNgLiBgcGh5X3Byb2JlYCBpcyBhbHNvIHN0YXRpYyAodXNlZCBhcyBhIGNhbGxiYWNrKS4gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiBgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcmAgYW5kIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgIGFyZSBleHBvcnRlZCBvciBub24tc3RhdGljLCBJIHNob3VsZCBjb25maXJtIHRoYXQgcmlnaHQgYXdheS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDowNi4zNTczMDQ5NzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyMDcyMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jPTgxPXN0YXRpYyB2b2lkIHBoeV9sZWRfdHJpZ2dlcl91bnJlZ2lzdGVyKHN0cnVjdCBwaHlfbGVkX3RyaWdnZXIgKnBsdClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMtODUtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYzo4NjppbnQgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMtODcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuYy0xMzgtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmM6MTM5OkVYUE9SVF9TWU1CT0xfR1BMKHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMtMTQwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDowNi41NDkzODI1NTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODgyMzkwNjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUEhZIERyaXZlcidzIEFQSSBFeHBvc3VyZSoqXG5cbk9rYXksIHNvIEknbSBnb2luZyB0aHJvdWdoIHRoaXMgY29kZSBhbmQgdGhpbmtpbmcgYWJvdXQgd2hpY2ggZnVuY3Rpb25zIHdlIHNob3VsZCBleHBvc2UgaW4gdGhlIEFQSSwga2VlcGluZyBpbiBtaW5kIHRoZSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeXBvaW50cy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoYXQgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYCBhcmUgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2Qg4oCTIHRoZXkgZml0IHRoZSBiaWxsLlxuXG5Ob3csIGBwaHlfcHJvYmVgLi4uIEl0J3Mgc3RhdGljLCB3aGljaCB1c3VhbGx5IHJhaXNlcyBhIHJlZCBmbGFnLCBidXQgaXQncyB0aGUgY29yZSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhpcyBkcml2ZXIuIFdhaXQgYSBtaW51dGUhIEkgcmVtZW1iZXIgdGhlIGd1aWRlbGluZXM6IGF2b2lkIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIHRoYXQgYXJlIGlubGluZWQuIEJ1dCBgcGh5X3Byb2JlYCBpcyBhc3NpZ25lZCB0byBgbmV3X2RyaXZlci1cdTAwM2VtZGlvZHJ2LmRyaXZlci5wcm9iZWAsIHdoaWNoIG1lYW5zIGl0cyBhZGRyZXNzIGlzIHRha2VuLiBUaGF0IG1lYW5zIGl0ICp3b24ndCogYmUgaW5saW5lZCBhbmQgaXQncyBzYWZlIHRvIGluY2x1ZGUuIEV4Y2VsbGVudC5cblxuV2hhdCBhYm91dCBgcGh5X3NmcF9wcm9iZWA/IEhtbSwgYWxzbyBzdGF0aWMuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIGl0J3MgbGFyZ2UgZW5vdWdoIHRvIGF2b2lkIGlubGluaW5nLiBMZXQgbWUgc2tpcCB0aGlzLiBBbmQgYHBoeV9zZXR1cF9wb3J0c2AgaXMgc3RhdGljIHRvbywgc28gZGVmaW5pdGVseSBub3QuXG5cblNvLCBsZXQncyBrZWVwIHRoZSBvbmVzIHRoYXQgYXJlIG5vbi1zdGF0aWMgYW5kIGBwaHlfcHJvYmVgLlxuXG5BY3R1YWxseSwgd2FpdCwgSSByZW1lbWJlcmVkIHRoZSBwcmV2aW91cyB0d28sIGBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyYCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAgYXJlIG9rYXksIHRvby5cblxuV2hhdCBhYm91dCBgcGh5X2RldmljZV9yZWdpc3RlcmA/IFRoZSBwYXRjaCBkb2Vzbid0IHRvdWNoIGl0LCBzbyBpdCdzIHByb2JhYmx5IGFscmVhZHkgZmluZS5cblxuT2theSwgbGV0J3Mgc3VtbWFyaXplOiBJJ2xsIGluY2x1ZGUgYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgLCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbWluaW1hbCBzZXQgZm9yIG5vdy5cblxuTm93LCBsZXQncyBjaGVjayBLY29uZmlnIGZvciBgQ09ORklHX1BIWUxJQl9MRURTYCB0byBlbnN1cmUgd2UgY292ZXIgYWxsIHRoZSBuZWNlc3NhcnkgYmFzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NzUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6MTIuNDMxNzc2NTkzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTc5MjIxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEhZTElCX0xFRFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDY9Y29uZmlnIE9QRU5fQUxMSUFOQ0VfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDk6Y29uZmlnIFBIWUxJQl9MRURTXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTAtXFx0ZGVmX2Jvb2wgT0ZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6MTIuNDg3NTgwMDM3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzA4NDE1NjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIFBIWUxJQiBhbmQgTEVEIERlZmluaXRpb25zKipcblxuT2theSwgc28gYFBIWUxJQl9MRURTYCBpcyBkZWZpbmVkIGFzIGEgYGRlZl9ib29sIE9GYC4gVGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2g7IGl0J3MgYSBib29sZWFuIG9wdGlvbiBjb250cm9sbGVkIGJ5IHNvbWV0aGluZyBlbHNlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoaXMgdHJpZ2dlcnMgaXMgYWJvdXQgaXRzIGRlcGVuZGVuY3kuIFdoYXQgaXMgZHJpdmluZyB0aGUgZGVwZW5kZW5jeT8gTm93LCB3aGVyZSBpcyBpdCBkZWZpbmVkPyBUaGlzIGNhbGxzIHRvIG1pbmQgYENPTkZJR19QSFlMSUJgLiBJIHdvbmRlciwgaXMgYENPTkZJR19QSFlMSUJgIHRoZSBsaWtlbHkgcGFyZW50IGNvbmZpZyBvcHRpb24gdGhhdCBjb250cm9scyB3aGV0aGVyIG9yIG5vdCBgUEhZTElCX0xFRFNgIGdldHMgYnVpbHQ/IEknbSBiZXR0aW5nIHRoYXQgYFBIWUxJQl9MRURTYCcgc3RhdHVzIGRlcGVuZHMgb24gYENPTkZJR19QSFlMSUJgIGJlaW5nIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyODUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDoyMi43OTU5OTg4MjJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTk5NTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQSFlMSUJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9Nj1jb25maWcgUEhZTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTU6bWVudWNvbmZpZyBQSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiUEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ2PWNvbmZpZyBPUEVOX0FMTElBTkNFX0hFTFBFUlNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ5OmNvbmZpZyBQSFlMSUJfTEVEU1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVxcdGRlZl9ib29sIE9GXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjQwOjIyLjg1NTAwNTE0NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI3NjkxNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gUEhZTElCIGFuZCBOZXR3b3JrIEFkYXB0ZXJzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBoYW5kbGUgdGhpcyBuZXR3b3JraW5nIHNjZW5hcmlvLiBGaXJzdCwgSSBrbm93IGBQSFlMSUJgIGlzIGdvaW5nIHRvIGJlIGVzc2VudGlhbCBmb3IgdGhlIHVuZGVybHlpbmcgcGh5c2ljYWwgbGF5ZXIgc3R1ZmYuIE5vIHF1ZXN0aW9uIGFib3V0IHRoYXQuIFRoZW4sIHRvIHRyaWdnZXIgdGhpcyBzZXR1cCwgd2UnbGwgbGlrZWx5IG5lZWQgdG8gdXNlIGEgVVNCIG5ldHdvcmsgYWRhcHRlci4gU28sIGxvb2tpbmcgYXQgdGhlIHBvc3NpYmlsaXRpZXMsIHRoZSBmaXJzdCB0aGluZyB0aGF0IGNvbWVzIHRvIG1pbmQgaXMgZWl0aGVyIGVuYWJsaW5nIGBVU0JfTkVUX0RSSVZFUlNgLCBvciB0YXJnZXRpbmcgc3BlY2lmaWMgZHJpdmVycyBsaWtlIGBVU0JfTEFONzhYWGAgb3IgYFVTQl9TTVNDOTVYWGAuIEdpdmVuIG15IGV4aXN0aW5nIGtub3dsZWRnZSwgSSB0aGluayBjaGVja2luZyBvdXQgYFVTQl9MQU43OFhYYCBtYWtlcyB0aGUgbW9zdCBzZW5zZSBhcyBhIHN0YXJ0aW5nIHBvaW50LiBMZXQncyBkaWcgaW50byB0aGF0IGRyaXZlciBhbmQgc2VlIHdoYXQgaXQgb2ZmZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjUyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6MjYuOTgyNzAwMTg2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjQxMzE1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0xBTjc4WFhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWc9OTk9Y29uZmlnIFVTQl9SVEw4MTUyXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTItXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTEzOmNvbmZpZyBVU0JfTEFONzhYWFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExNC1cXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIExBTjc4WFggQmFzZWQgVVNCIEV0aGVybmV0IEFkYXB0ZXJzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDoyNy4wMzUxMjEwNDFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUxODIxNTQyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBVU0JfU01TQzk1WFhgKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gVGhlIG1lbnRpb24gb2YgYFVTQl9TTVNDOTVYWGAgaW1tZWRpYXRlbHkgZmxhZ3MgYSBmZXcga2V5IGFyZWFzIEkgbmVlZCB0byBjb25zaWRlci4gV2UncmUgdGFsa2luZyBhYm91dCBhIFVTQi10by1FdGhlcm5ldCBjb250cm9sbGVyLCBsaWtlbHkgYSBjaGlwIGZyb20gU01TQyAobm93IE1pY3JvY2hpcCwgb2YgY291cnNlKS4gTXkgZmlyc3QgbWVudGFsIGNoZWNrbGlzdCBzdGFydHMgcnVubmluZzogd2hhdCdzIHRoZSBzcGVjaWZpYyBkcml2ZXIgaW1wbGVtZW50YXRpb24gd2UncmUgdXNpbmc/IElzIGl0IGEgc3RhbmRhcmQgZHJpdmVyLCBhIGN1c3RvbSBwb3J0LCBvciBzb21ldGhpbmcgaW4gYmV0d2Vlbj8gVW5kZXJzdGFuZGluZyB0aGUgZHJpdmVyIGlzIHBhcmFtb3VudCwgZXNwZWNpYWxseSBpZiB3ZSdyZSBkZWJ1Z2dpbmcgYSBwb3RlbnRpYWwgaXNzdWUuXG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUgaGFyZHdhcmUgaXRzZWxmLiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgcmV2aXNpb24gb2YgdGhlIFNNU0M5NXh4PyBUaGVyZSBjYW4gYmUgc3VidGxlIGRpZmZlcmVuY2VzIGluIHJlZ2lzdGVyIG1hcHBpbmdzIG9yIGZlYXR1cmUgc2V0cyBhY3Jvc3MgcmV2aXNpb25zLCBzbyBrbm93aW5nIHRoZSBleGFjdCBwYXJ0IG51bWJlciB3b3VsZCBiZSBoZWxwZnVsLiBJIG5lZWQgdG8ga2VlcCBVU0IgZW51bWVyYXRpb24gaW4gbWluZCwgdG9vLiBBcmUgd2Ugc2VlaW5nIGNvbnNpc3RlbnQgZGV2aWNlIHJlY29nbml0aW9uIG9uIHRoZSBob3N0PyBBbnkgZXJyb3JzIGR1cmluZyB0aGUgaW5pdGlhbCBVU0Igc2V0dXA/IFRoZXNlIGFyZSBhbGwgdHlwaWNhbCBzdGFydGluZyBwb2ludHMuXG5cbk5leHQsIEkgbmVlZCB0byBjb25zaWRlciB0aGUgc29mdHdhcmUgc2lkZS4gV2hhdCBvcGVyYXRpbmcgc3lzdGVtIGFyZSB3ZSBydW5uaW5nPyBMaW51eCwgV2luZG93cywgc29tZXRoaW5nIGVsc2U/IEVhY2ggcGxhdGZvcm0gaGFzIGl0cyBvd24gc2V0IG9mIGRyaXZlcnMgYW5kIHBvdGVudGlhbCBxdWlya3MgZm9yIFVTQi1FdGhlcm5ldCBhZGFwdGVycy4gSSBhbHNvIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIG5ldHdvcmsgc3RhY2suIEFyZSB3ZSB1c2luZyBzdGFuZGFyZCBUQ1AvSVAgY29uZmlndXJhdGlvbnMsIG9yIGFyZSB0aGVyZSBjdXN0b20gbmV0d29ya2luZyBmZWF0dXJlcyBhdCBwbGF5PyBBcmUgdGhlcmUgYW55IGtub3duIGlzc3VlcyB3aXRoIHRoZSBkcml2ZXIgb24gdGhhdCBPUyBvciBrZXJuZWwgdmVyc2lvbj9cblxuRmluYWxseSwgYXJlIHRoZXJlIGFueSBjbHVlcyBhYm91dCB3aGF0IHdlJ3JlIGFjdHVhbGx5ICp0cnlpbmcqIHRvIGFjY29tcGxpc2g/IEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhlIHByb2JsZW0gaXMgY3JpdGljYWwuIEFyZSB3ZSBzZWVpbmcgcGVyZm9ybWFuY2UgaXNzdWVzLCBjb25uZWN0aXZpdHkgZHJvcHMsIG9yIG91dHJpZ2h0IGRldmljZSBmYWlsdXJlcz8gVGhhdCBjb250ZXh0IHdpbGwgaW5mbHVlbmNlIHRoZSBhcmVhcyBJIHByaW9yaXRpemUuIE15IGluaXRpYWwgZm9jdXMgd2lsbCBiZSBvbiB2YWxpZGF0aW5nIHRoZSBiYXNpY3Mgb2YgVVNCIHNldHVwIGFuZCBkZXZpY2UgY29tbXVuaWNhdGlvbiwgYmVmb3JlIEkgY29uc2lkZXIgYW55dGhpbmcgdG9vIGVzb3RlcmljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDA5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6MzEuNTUzMzQyNDQxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODY0ODA4NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9TTVNDOTVYWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6MzEuNjEyMDA4MzE1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjI2MDY2MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBVU0IgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIGlzbid0IGBzbXNjOTV4eGAgYSBVU0IgRXRoZXJuZXQgZHJpdmVyPyBBbmQgaWYgaXQgaXMsIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGNoZWNrIGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgd291bGQgYmUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgdHlwaWNhbCBwbGFjZSBmb3IgVVNCIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBuYXZpZ2F0ZSB0aGVyZSBhbmQgdmVyaWZ5IHRoYXQgdGhpcyBhc3N1bXB0aW9uIGhvbGRzIHRydWUsIGFuZCBjb25maXJtIHRoZSBkcml2ZXIncyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaWYgaXQgaXMuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDozNC44NzQ2MTg0MTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MDYyNjY1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbXNjOTV4eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6MzQuOTIyNjkzODZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYxNzM0OTU2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgVVNCIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIHNlZS4gSSdtIHByZXR0eSBzdXJlIEkgcmVtZW1iZXIgdGhlIGBzbXNjOTV4eGAgZHJpdmVyIGJlaW5nIGluIHRoZSBVU0IgbmV0d29ya2luZyBzZWN0aW9uLCBidXQgdGhlIEtjb25maWcgZmlsZXMgYXJlIG9mdGVuIGEgYml0IGNvbnZvbHV0ZWQuIEknbGwgYmV0IGl0J3MgdW5kZXIgYSBzbGlnaHRseSBkaWZmZXJlbnQgbmFtZSBpbiBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLiBUaW1lIHRvIGNvbmZpcm0gdGhhdCBiZWZvcmUgSSBzdGFydCBkaWdnaW5nIGFueSBkZWVwZXIuIExldCBtZSBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGF0IGFnYWluc3QgYGRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZWAgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhlIGJ1aWxkIHRhcmdldHMgYXJlIGNvcnJlY3QuIEl0J3MgZWFzeSB0byBnZXQgbG9zdCBpbiB0aGVzZSBsYXJnZSBrZXJuZWwgYnVpbGRzLCBzbyBpdCdzIGJlc3QgdG8gYmUgc3lzdGVtYXRpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY2NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjQwOjM4LjU0MDA0NzA3NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc5MjI2NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21zYzk1eHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0yMT1vYmotJChDT05GSUdfVVNCX05FVF9TTVNDNzVYWClcXHQrPSBzbXNjNzV4eC5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjIyOm9iai0kKENPTkZJR19VU0JfTkVUX1NNU0M5NVhYKVxcdCs9IHNtc2M5NXh4Lm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtMjMtb2JqLSQoQ09ORklHX1VTQl9ORVRfR0w2MjBBKVxcdCs9IGdsNjIwYS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjQwOjM4LjU4Nzk3NTQzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjg1NTE1OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFVTQiBOZXR3b3JrIERldmljZSBEcml2ZXIgTGFuZHNjYXBlKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBzb21ldGhpbmcgcmVsYXRlZCB0byBgVVNCX05FVF9TTVNDOTVYWGAuIFJpZ2h0LCB0aGF0J3MgYSBzcGVjaWZpYyBVU0IgbmV0d29yayBkZXZpY2UgZHJpdmVyLiBCZWZvcmUgSSBkaXZlIGRlZXAgaW50byB0aGUgU01TQzk1WFggZGV0YWlscywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBjaGVjayB0aGUgaGlnaGVyLWxldmVsIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSB0aGUgYFVTQl9ORVRfRFJJVkVSU2Agc2V0dGluZy4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGUgZ2VuZXJhbCBVU0IgbmV0d29yayBkcml2ZXIgc3VwcG9ydCBpcyBldmVuIGVuYWJsZWQgYmVmb3JlIEkgY2FuIHdvcnJ5IGFib3V0IHRoZSBzcGVjaWZpY3Mgb2YgdGhlIFNNU0M5NVhYIG1vZHVsZS4gSSBuZWVkIHRoZSBiaWcgcGljdHVyZSBiZWZvcmUgem9vbWluZyBpbiBvbiB0aGUgZGV0YWlscy4gVGhhdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZGVidWdnaW5nIG9yIGNvbmZpZ3VyYXRpb24gZWZmb3J0IGluIHRoaXMgc3BhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDA5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6NDEuOTU2NTMwMDUxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTEwODM2OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9ORVRfRFJJVkVSU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZz01PWNvbW1lbnQgXFxcIkhvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTctXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6ODptZW51Y29uZmlnIFVTQl9ORVRfRFJJVkVSU1xcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlVTQiBOZXR3b3JrIEFkYXB0ZXJzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDo0Mi4yNjc2MjA3MDlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgxNDQ4NTA2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkludGVybmFsIENvZGUgUmV2aWV3OiBOZXR3b3JraW5nIERyaXZlciBJbmNsdXNpb24qKlxuXG5BbHJpZ2h0LCBsZXQgbWUgcXVpY2tseSBzdW1tYXJpemUgd2hhdCBJJ20gbG9va2luZyBhdC4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhYm91dCBpbnRlZ3JhdGluZyBzb21lIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eS4gSSBzZWUgYSBmZXcga2V5IGRyaXZlcnMgYmVpbmcgYnJvdWdodCBpbnRvIGNvbnNpZGVyYXRpb246IGBQSFlMSUJgLCB3aGljaCBpcyBjcnVjaWFsIGZvciB0aGUgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlLCBuYXR1cmFsbHkuIFRoZW4gd2UgaGF2ZSB0aGUgbW9yZSBzcGVjaWZpYyBgVVNCX05FVF9EUklWRVJTYCwgYW5kIHdpdGhpbiB0aGF0LCB0aGUgYFVTQl9ORVRfU01TQzk1WFhgIGFuZCBgVVNCX0xBTjc4WFhgIGRyaXZlcnMuIFRoZXNlIHR3byBhcmUgaW1wb3J0YW50LCBjbGVhcmx5IHRoZXkgYXJlIHRoZSBzcGVjaWZpYyBuZXR3b3JraW5nIGhhcmR3YXJlIHdlJ3JlIHRhcmdldGluZy5cblxuV2FpdCBhIG1pbnV0ZSwgaXQgbG9va3MgbGlrZSB0aGVyZSdzIGEgcmVmZXJlbmNlIHRvIGBzZnBfYnVzYCBpbiB0aGlzIHBhdGNoIGFzIHdlbGwuIFRoYXTigJlzIGludGVyZXN0aW5nLiBHaXZlbiB0aGF0IFNGUCBpcyBhIHN0YW5kYXJkLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGhlcmUuIEkgd2FudCB0byBxdWlja2x5IHZlcmlmeSBpZiBgU0ZQYCBpdHNlbGYgaXMgZXZlbiBkZWZpbmVkIGFzIGEgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UncmUgb24gdGhlIHJpZ2h0IHRyYWNrIGFuZCBub3QgbWlzc2luZyBhIHN1YnRsZSBkZXBlbmRlbmN5IHNvbWV3aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMjcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDo0Ni4wODIxMDk4OTJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NjAzMTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTRlBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NjU9Y29uZmlnIFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNzItXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NzM6Y29uZmlnIFNGUFxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTc0LVxcdHRyaXN0YXRlIFxcXCJTRlAgY2FnZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDo0Ni4xMzg3MTkwOTZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODUyMTM0MTU1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgZm9yIFNlbGVjdGluZyBQSFlsaWIgRnVuY3Rpb25zIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSd2ZSBiZWVuIHRoaW5raW5nIGFib3V0IHdoYXQgdG8gdGFyZ2V0IGZvciBmdXp6aW5nLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBTRlBgIGlzIGluZGVlZCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byBjb25zaWRlcjsgSSdsbCBiZSBzdXJlIHRvIGluY2x1ZGUgdGhhdC5cblxuSSd2ZSBib2lsZWQgZG93biB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRvIGZvY3VzIG9uOiBgUEhZTElCYCwgYFNGUGAsIGBVU0JfTkVUX0RSSVZFUlNgLCBgVVNCX05FVF9TTVNDOTVYWGAsIGFuZCBgVVNCX0xBTjc4WFhgLiBUaGVzZSBzZWVtIHJlbGV2YW50IGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNvcmUgUEhZIGxpYnJhcnkgYW5kIGhvdyBpdCdzIHVzZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdpdGggZW11bGF0ZWQgVVNCIG5ldHdvcmsgYWRhcHRlcnMuXG5cbk5vdywgY29uc2lkZXJpbmcgdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLCBJJ3ZlIGlkZW50aWZpZWQgYSBmZXcga2V5IG9uZXMgdGhhdCBzdGFuZCBvdXQgYXMgZ29vZCBjYW5kaWRhdGVzOiBgcGh5X3Byb2JlYCwgYHBoeV9yZW1vdmVgLCBgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcmAsIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYC5cblxuSSBkb3VibGUtY2hlY2tlZCBgcGh5X3Byb2JlYDsgaXQncyBkZWNsYXJlZCBgc3RhdGljYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBidXQgY3J1Y2lhbGx5LCBpdHMgYWRkcmVzcyBpcyB0YWtlbiBhbmQgcGFzc2VkIHRvIGBuZXdfZHJpdmVyLVx1MDAzZW1kaW9kcnYuZHJpdmVyLnByb2JlID0gcGh5X3Byb2JlO2AuIFRoaXMgbWVhbnMgaXQncyBub3QgZ29pbmcgdG8gYmUgaW5saW5lZCBhbmQgaXMgdGhlcmVmb3JlIGEgZ29vZCB0YXJnZXQuIEkgbm90ZWQgdGhhdCBgcGh5X3NmcF9wcm9iZWAgaXMgYWxzbyBzdGF0aWMsIGJ1dCB0aGF0J3MgY2FsbGVkIGZyb20gYHBoeV9zZXR1cF9wb3J0c2AsIHdoaWNoIGl0c2VsZiBpcyBzdGF0aWMgYW5kIGlzIGNhbGxlZCBmcm9tIGBwaHlfcHJvYmVgLiBgcGh5X3JlbW92ZWAgYWxzbyBpcyBzdGF0aWMsIGJ1dCBhZ2FpbiwgaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNvIGl0J3MgYSBnb29kIHRhcmdldC4gYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYCBhcmUgZXhwb3J0ZWQsIHdoaWNoIG1ha2VzIHRoZW0gZWFzeSB0byByZWFjaC5cblxuTXkgcmVhc29uaW5nIGlzIHRoaXM6IHRoZSBwYXRjaCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIHJlc291cmNlIGxlYWtzIGFuZCBlcnJvciBoYW5kbGluZyBpc3N1ZXMgd2l0aGluIHRoZSBQSFkgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsIHJvdXRpbmVzIC0gYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGFuZCBgcGh5X3NmcF9wcm9iZWAgLSBhbmQgaXQncyBhbHNvIGZpeGluZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZm91bmRhdGlvbmFsIHRvIHRoZSBQSFkgbGlicmFyeSAoYHBoeWxpYmApLiBUaGlzIGxpYnJhcnkgZ2V0cyB1c2VkIGV2ZW4gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRocm91Z2ggZW11bGF0ZWQgVVNCIG5ldHdvcmsgYWRhcHRlcnMgbGlrZSBgc21zYzk1eHhgIGFuZCBgbGFuNzh4eGAgdGhhdCwgaW4gdHVybiwgcmVnaXN0ZXIgTURJTyBidXNlcyBhbmQgUEhZIGRldmljZXMuIEZ1enppbmcgdGhlc2UgcGF0aHMgd2lsbCBiZSB2YWx1YWJsZSBmb3IgaGFyZGVuaW5nIHRoZSBQSFkgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBwcm9jZXNzZXMsIHBhcnRpY3VsYXJseSBnaXZlbiB0aGUgdmFyaW91cyBleGVjdXRpb24gcGF0aHMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgdGFrZSBpbiBkaWZmZXJlbnQgc2NlbmFyaW9zLlxuXG5TbywgaW4gc3VtbWFyeSwgdGhlIGNvbmZpZ3VyYXRpb25zIGFyZSB0aGUgZml2ZSBsaXN0ZWQgcHJldmlvdXNseS5cblxuSSBhbHNvIHZlcmlmaWVkIHRoYXQgYFNGUGAgaXMgbmVlZGVkLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHBoeV9zZnBfcHJvYmVgIGFuZCBgcGh5X3NmcF9yZWxlYXNlYCwgYm90aCBvZiB3aGljaCBpbnRlcmFjdCB3aXRoIGBwaHlkZXYtXHUwMDNlc2ZwX2J1c2AuIEl0IGxvb2tzIGxpa2UgYHBoeWRldi1cdTAwM2VzZnBfYnVzYCBpcyBpbmRlZWQgb25seSBhdmFpbGFibGUgd2hlbiBgU0ZQYCBpcyBlbmFibGVkLCB3aGljaCByZWluZm9yY2VzIHRoZSBuZWVkIHRvIGluY2x1ZGUgdGhhdCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDczNiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDo1NC42NjAwNjM0NFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkxNjQxMDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2ZwX2J1c1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3BoeS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvcGh5Lmg9MzMwPXN0cnVjdCBwaHlfcG9ydDtcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjMzMTpzdHJ1Y3Qgc2ZwX2J1cztcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTMzMi1zdHJ1Y3Qgc2ZwX3Vwc3RyZWFtX29wcztcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9NTUyPXN0cnVjdCBwaHlfb2F0YzE0X3NxaV9jYXBhYmlsaXR5IHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtNTk0LSAqIEBwaHlsaW5rOiBQb2ludGVyIHRvIHBoeWxpbmsgaW5zdGFuY2UgZm9yIHRoaXMgUEhZXFxuaW5jbHVkZS9saW51eC9waHkuaDo1OTU6ICogQHNmcF9idXNfYXR0YWNoZWQ6IEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBTRlAgYnVzIGhhcyBiZWVuIGF0dGFjaGVkXFxuaW5jbHVkZS9saW51eC9waHkuaDo1OTY6ICogQHNmcF9idXM6IFNGUCBidXMgYXR0YWNoZWQgdG8gdGhpcyBQSFkncyBmaWJlciBwb3J0XFxuaW5jbHVkZS9saW51eC9waHkuaC01OTctICogQGF0dGFjaGVkX2RldjogVGhlIGF0dGFjaGVkIGVuZXQgZHJpdmVyJ3MgZGV2aWNlIGluc3RhbmNlIHB0clxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD02Njg9c3RydWN0IHBoeV9kZXZpY2Uge1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC03ODUtXFx0LyogVGhpcyBtYXkgYmUgbW9kaWZpZWQgdW5kZXIgdGhlIHJ0bmwgbG9jayAqL1xcbmluY2x1ZGUvbGludXgvcGh5Lmg6Nzg2OlxcdGJvb2wgc2ZwX2J1c19hdHRhY2hlZDtcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjc4NzpcXHRzdHJ1Y3Qgc2ZwX2J1cyAqc2ZwX2J1cztcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTc4OC1cXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDA6NTQuNzE5MjM0ODM0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTY2MTkzMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBJbnF1aXJ5OiBTRlAgQnVzIEFzc29jaWF0aW9uKipcblxuT2theSwgc28gaXQgc3RyaWtlcyBtZSB0aGF0IHRoZSBgc2ZwX2J1c2AgY29uc3RydWN0IGlzIGNvbnNpc3RlbnRseSBsaW5rZWQgdG8gdGhlIGBzdHJ1Y3QgcGh5X2RldmljZWAuIE5vdywgdGhlIFNGUCBjb25maWd1cmF0aW9uLCB0aGUgYWN0dWFsICplbmFibGluZyogb2YgdGhlIFNGUCBidXMgY29kZSwgdGhhdCdzIHdoYXQgSSB3YW50IHRvIHVuZGVyc3RhbmQuIExldCdzIGRlbHZlIGludG8gdGhpcy4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZXhwbG9yZSBgc2ZwX2J1c19kZWxfdXBzdHJlYW1gIOKAkyB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGRlY2xhcmVkIHdpdGhpbiBgaW5jbHVkZS9saW51eC9zZnAuaGAuIFRpbWUgdG8gc2VlIHdoYXQgd2UgY2FuIGdsZWFuIGZyb20gdGhhdCBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIyNTQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDo1OC41NzU4NTcyMTNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODkwMzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNmcF9idXNfZGVsX3Vwc3RyZWFtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvc2ZwLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9zZnAuaD01OTQ9aW50IHNmcF9idXNfYWRkX3Vwc3RyZWFtKHN0cnVjdCBzZnBfYnVzICpidXMsIHZvaWQgKnVwc3RyZWFtLFxcbmluY2x1ZGUvbGludXgvc2ZwLmgtNTk1LVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3Qgc2ZwX3Vwc3RyZWFtX29wcyAqb3BzKTtcXG5pbmNsdWRlL2xpbnV4L3NmcC5oOjU5Njp2b2lkIHNmcF9idXNfZGVsX3Vwc3RyZWFtKHN0cnVjdCBzZnBfYnVzICpidXMpO1xcbmluY2x1ZGUvbGludXgvc2ZwLmgtNTk3LWNvbnN0IGNoYXIgKnNmcF9nZXRfbmFtZShzdHJ1Y3Qgc2ZwX2J1cyAqYnVzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2ZwLmg9NjUzPXN0YXRpYyBpbmxpbmUgaW50IHNmcF9idXNfYWRkX3Vwc3RyZWFtKHN0cnVjdCBzZnBfYnVzICpidXMsIHZvaWQgKnVwc3RyZWFtLFxcbi0tXFxuaW5jbHVkZS9saW51eC9zZnAuaC02NTgtXFxuaW5jbHVkZS9saW51eC9zZnAuaDo2NTk6c3RhdGljIGlubGluZSB2b2lkIHNmcF9idXNfZGVsX3Vwc3RyZWFtKHN0cnVjdCBzZnBfYnVzICpidXMpXFxuaW5jbHVkZS9saW51eC9zZnAuaC02NjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MDo1OC42MjQ3NTQwNDdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA5MDI3Mjk1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIG9mIFNGUCBhbmQgUEhZTElCX0xFRFMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJSaWdodCwgdGhlIGBTRlBgIGRlZmluaXRpb24gaXMgbG9jYXRlZCBpbiBgaW5jbHVkZS9saW51eC9zZnAuaGAuXCIgSWYgYFNGUGAgaXNuJ3QgZW5hYmxlZCwgSSBzdXNwZWN0IHRoZSBjb2RlIHJlbGF0ZWQgdG8gaXQgd2lsbCBsaWtlbHkgYmUgYSBuby1vcCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQuXG5cblRoZSBuZXh0IHRoaW5nIGlzIHRvIGRldGVybWluZSBpZiBgU0ZQYCBpcyBldmVuIG5lY2Vzc2FyeSBoZXJlLiBBaCwgcmlnaHQsIHRvIHRydWx5IGV4ZXJjaXNlIHRoZSBTRlAgcGF0aHMgZHVyaW5nIHRlc3RpbmcsIEkgKmRvKiBuZWVkIHRoZSBgU0ZQYCBjb25maWcgZW5hYmxlZC4gSXQgbWFrZXMgc2Vuc2UuXG5cbk5leHQgb24gdGhlIGxpc3QgaXMgYFBIWUxJQl9MRURTYC4gVGhlIHBhdGNoIHRvdWNoZXMgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgIGFuZCBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYCwgc28gSSBuZWVkIHRvIGNoZWNrIHRob3NlLiBMZXQncyB0cmFjZSB0aG9zZSBjYWxscyBiYWNrLCBzdGFydGluZyB3aXRoIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmNgLiBPa2F5LCBub3cgdGhlIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGVudGlyZSBgcGh5X2xlZF90cmlnZ2Vycy5jYCBmaWxlICppdHNlbGYqIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQ/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjcxMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MTowNC43MTUwMzE0OTNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMDM5MTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9sZWRfdHJpZ2dlcnMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTE0PWxpYnBoeS0kKENPTkZJR19TV1BIWSlcXHRcXHQrPSBzd3BoeS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjE1OmxpYnBoeS0kKENPTkZJR19MRURfVFJJR0dFUl9QSFkpXFx0Kz0gcGh5X2xlZF90cmlnZ2Vycy5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE2LWxpYnBoeS0kKENPTkZJR19PUEVOX0FMTElBTkNFX0hFTFBFUlMpICs9IG9wZW5fYWxsaWFuY2VfaGVscGVycy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjQxOjA0Ljc3ODA3NTQzN1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjE4MDY2MDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFBIWSBMRUQgVHJpZ2dlciBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgKkNPTkZJR19MRURfVFJJR0dFUl9QSFkqLiBUaGF0J3MgdGhlIG9uZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGVsdmUgaW50byB0aGUgYExFRF9UUklHR0VSX1BIWWAgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHN0YXRlIG9mIHRoYXQgcGFydGljdWxhciB0cmlnZ2VyLiBJJ2xsIG5lZWQgdG8ga25vdyBpZiBpdCdzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBzZXQgdG8gc29tZSBzcGVjaWZpYyBiZWhhdmlvciByZWxhdGVkIHRvIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTEVEIGlzIGJlaW5nIGRyaXZlbiBieSB0aGUgUEhZJ3MgYWN0aXZpdHkuIFRoZSBnb2FsIGhlcmUgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBjdXJyZW50IHN5c3RlbSBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gYW55IG5ldHdvcmsgUEhZJ3MgTEVEcy4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIGlmIGFueSBjaGFuZ2VzIGFyZSBuZWVkZWQsIG9yIGlmIHRoZXJlJ3MgYSBwcm9ibGVtLCBhbmQgaWYgc28sIHVuZGVyc3RhbmQgd2h5IHRoYXQgcHJvYmxlbSBpcyBvY2N1cnJpbmcgd2l0aCB0aGUgY3VycmVudCBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjQ4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDE6MDguOTk2MTQ0MzA4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTE5MjMwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIExFRF9UUklHR0VSX1BIWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0yNz1jb25maWcgUEhZX1BBQ0tBR0VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTI5LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjMwOmNvbmZpZyBMRURfVFJJR0dFUl9QSFlcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zMS1cXHRib29sIFxcXCJTdXBwb3J0IExFRCB0cmlnZ2VycyBmb3IgdHJhY2tpbmcgbGluayBzdGF0ZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDE6MDkuMTg4MDczNzQ4WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1MDIwMTEzMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDaGVja2xpc3QqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgcGh5X2xlZF90cmlnZ2Vycy5jYCBmaWxlIGFuZCBuZWVkIHRvIHVwZGF0ZSB0aGUgY29uZmlndXJhdGlvbi4gRmlyc3QgdGhpbmdzIGZpcnN0LCBgTEVEX1RSSUdHRVJfUEhZYCBpcyB0aGUga2V5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQncyBpbmNsdWRlZC5cblxuUmlnaHQsIGxldCdzIGp1c3QgZG8gYSBxdWljayByZXZpZXcgb2YgdGhlIGNvbmZpZ3MgcmVsYXRlZCB0byB0aGlzIGFyZWE6IGBQSFlMSUJgLCBgU0ZQYCwgYFVTQl9ORVRfRFJJVkVSU2AsIGBVU0JfTkVUX1NNU0M5NVhYYCwgYFVTQl9MQU43OFhYYCwgYW5kIG9mIGNvdXJzZSBgTEVEX1RSSUdHRVJfUEhZYC5cblxuSGFuZyBvbiBhIHNlYy4uLiBJIHJlbWVtYmVyIHNlZWluZyBgUEhZTElCX0xFRFNgIG1lbnRpb25lZCBpbiB0aGUgcGF0Y2gsIHNwZWNpZmljYWxseSBpbiBhbiBgaWZgIHN0YXRlbWVudCBsaWtlIHRoaXMgYGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXHUwMDI2XHUwMDI2ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKSB7YC4gSSBzaG91bGQgcHJvYmFibHkgaW5jbHVkZSB0aGF0IG9uZSBhcyB3ZWxsIHRvIGJlIHNhZmUuIEJldHRlciB0byBiZSB0aG9yb3VnaC5cblxuTm93LCBsZXQgbWUganVzdCBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBtYWluIGZ1bmN0aW9ucyBpbnZvbHZlZCBoZXJlLiBJJ20gdGhpbmtpbmcgYWJvdXQgYHBoeV9wcm9iZWAsIGBwaHlfcmVtb3ZlYCwgYHBoeV9sZWRfdHJpZ2dlcnNfcmVnaXN0ZXJgLCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoZXNlIGFyZSBteSBwcmltYXJ5IGVudHJ5IHBvaW50cywgcmlnaHQ/XG5cbkhtbSwgdGhlcmUncyB0aGF0IGBwaHlfc2ZwX3Byb2JlYCBmdW5jdGlvbi4gSXQncyBzdGF0aWMsIHNvIGl0ICptaWdodCogYmUgaW5saW5lZC4gRm9yIG5vdywgSSdsbCBzdGljayB0byB0aGUgY29yZSBmdW5jdGlvbnMgdG8ga2VlcCBpdCBmb2N1c2VkLlxuXG5SaWdodCwgd2l0aCBhbGwgdGhhdCBzb3J0ZWQsIEknbSByZWFkeSB0byBtb3ZlIGZvcndhcmQuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1NzYsIk91dHB1dFRva2VucyI6MjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjQxOjE2LjY5MDA4OTIwN1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzOTk4NzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlNGUFwiLFxuICAgIFwiVVNCX05FVF9EUklWRVJTXCIsXG4gICAgXCJVU0JfTkVUX1NNU0M5NVhYXCIsXG4gICAgXCJVU0JfTEFONzhYWFwiLFxuICAgIFwiTEVEX1RSSUdHRVJfUEhZXCIsXG4gICAgXCJQSFlMSUJfTEVEU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV9wcm9iZVwiLFxuICAgIFwicGh5X3JlbW92ZVwiLFxuICAgIFwicGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlclwiLFxuICAgIFwicGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgcmVzb3VyY2UgbGVha3MgYW5kIGVycm9yIGhhbmRsaW5nIHBhdGhzIGluIHRoZSBQSFkgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsIHJvdXRpbmVzIChgcGh5X3Byb2JlYCwgYHBoeV9yZW1vdmVgLCBgcGh5X3NldHVwX3BvcnRzYCwgYHBoeV9zZnBfcHJvYmVgKSBhbmQgZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHBhcnQgb2YgdGhlIGNvcmUgUEhZIGxpYnJhcnkgKGBwaHlsaWJgKSB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBlbXVsYXRlZCBVU0IgbmV0d29yayBhZGFwdGVycyAoZS5nLiwgYHNtc2M5NXh4YCwgYGxhbjc4eHhgKSB0aGF0IHJlZ2lzdGVyIE1ESU8gYnVzZXMgYW5kIFBIWSBkZXZpY2VzLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIHZhbHVhYmxlIHRvIGVuc3VyZSByb2J1c3RuZXNzIG9mIFBIWSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiU0ZQXCIsXG4gICAgXCJVU0JfTkVUX0RSSVZFUlNcIixcbiAgICBcIlVTQl9ORVRfU01TQzk1WFhcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJMRURfVFJJR0dFUl9QSFlcIixcbiAgICBcIlBIWUxJQl9MRURTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X3Byb2JlXCIsXG4gICAgXCJwaHlfcmVtb3ZlXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyByZXNvdXJjZSBsZWFrcyBhbmQgZXJyb3IgaGFuZGxpbmcgcGF0aHMgaW4gdGhlIFBIWSBkZXZpY2UgcHJvYmUgYW5kIHJlbW92YWwgcm91dGluZXMgKGBwaHlfcHJvYmVgLCBgcGh5X3JlbW92ZWAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3NmcF9wcm9iZWApIGFuZCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgY29yZSBQSFkgbGlicmFyeSAoYHBoeWxpYmApIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGVtdWxhdGVkIFVTQiBuZXR3b3JrIGFkYXB0ZXJzIChlLmcuLCBgc21zYzk1eHhgLCBgbGFuNzh4eGApIHRoYXQgcmVnaXN0ZXIgTURJTyBidXNlcyBhbmQgUEhZIGRldmljZXMuIEZ1enppbmcgdGhlc2UgcGF0aHMgaXMgdmFsdWFibGUgdG8gZW5zdXJlIHJvYnVzdG5lc3Mgb2YgUEhZIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA3OjQxOjE2Ljc3NDA5NjQ2OFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMDcxNzg3NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MToxNi43NzQ2ODkwMzhaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAxMDY1ODExOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZvY3VzZXMgb24gZml4aW5nIGVycm9yIGhhbmRsaW5nIHBhdGhzIGFuZCByZXNvdXJjZSBjbGVhbnVwIGluIHRoZSBQSFkgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsIHJvdXRpbmVzIChlLmcuLCBgcGh5X3Byb2JlYCwgYHBoeV9zZXR1cF9wb3J0c2AsIGBwaHlfc2ZwX3Byb2JlYCkuIEl0IGFkZHJlc3NlcyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSwgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYnkgZW5zdXJpbmcgdGhhdCByZXNvdXJjZXMgbGlrZSBTRlAgYnVzZXMsIFBIWSBwb3J0cywgYW5kIExFRCB0cmlnZ2VycyBhcmUgcHJvcGVybHkgcmVsZWFzZWQgb3IgdW5yZWdpc3RlcmVkIHdoZW4gaW5pdGlhbGl6YXRpb24gZmFpbHMuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMgc3VjaCBhcyBLQVNBTiAoZm9yIHVzZS1hZnRlci1mcmVlIGFuZCBvdXQtb2YtYm91bmRzKSwga21lbWxlYWsgKGZvciBtZW1vcnkgbGVha3MpLCBhbmQgZ2VuZXJhbCBrZXJuZWwgb29wcy9wYW5pY3MgKGZvciBOVUxMIGRlcmVmZXJlbmNlcykuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgY29tcGxleCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTidzIHNwZWNpYWxpemVkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRyYWNraW5nLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQzOWQyOWZhMmMzNzkzM2RiYWE2NGZmZDgxNjkwZTYxODk0ZWJlY2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAwNzozOTo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li44Y2IwZDYwZmNiYmE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTE3MjMsMTIgKzE3MjMsNDEgQEAgc3RhdGljIGludCBwaHlfc2ZwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdFx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuIFx0fVxuIFxuLVx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VzZnBfYnVzKVxuK1x0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VzZnBfYnVzKSB7XG4gXHRcdHJldCA9IHBoeV9zZXR1cF9zZnBfcG9ydChwaHlkZXYpO1xuK1x0XHRpZiAocmV0KSB7XG4rXHRcdFx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuK1x0XHRcdHBoeWRldi1cdTAwM2VzZnBfYnVzID0gTlVMTDtcbitcdFx0fVxuK1x0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rLyoqXG4rICogcGh5X3NmcF9yZWxlYXNlIC0gcmVsZWFzZSByZXNvdXJjZXMgc2V0IHVwIGJ5IHBoeV9zZnBfcHJvYmUoKVxuKyAqIEBwaHlkZXY6IHRoZSBQSFkgZGV2aWNlXG4rICpcbisgKiBSZWxlYXNlIHRoZSBTRlAgcmVzb3VyY2VzIHNldCB1cCBieSBhIHN1Y2Nlc3NmdWwgcGh5X3NmcF9wcm9iZSgpLiBVbnJlZ2lzdGVyXG4rICogdGhlIHVwc3RyZWFtIGJlZm9yZSBkZXN0cm95aW5nIGl0cyBwaHlfcG9ydCwgc28gU0ZQIHVwc3RyZWFtIGNhbGxiYWNrcyBjYW5ub3RcbisgKiByYWNlIHdpdGggcG9ydCBkZXN0cnVjdGlvbi5cbisgKi9cbitzdGF0aWMgdm9pZCBwaHlfc2ZwX3JlbGVhc2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRzdHJ1Y3QgcGh5X3BvcnQgKnBvcnQsICp0bXA7XG4rXG4rXHRzZnBfYnVzX2RlbF91cHN0cmVhbShwaHlkZXYtXHUwMDNlc2ZwX2J1cyk7XG4rXHRwaHlkZXYtXHUwMDNlc2ZwX2J1cyA9IE5VTEw7XG4rXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9ydCwgdG1wLCBcdTAwMjZwaHlkZXYtXHUwMDNlcG9ydHMsIGhlYWQpIHtcbitcdFx0aWYgKCFwb3J0LVx1MDAzZWlzX3NmcClcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0cGh5X2RlbF9wb3J0KHBoeWRldiwgcG9ydCk7XG4rXHRcdHBoeV9wb3J0X2Rlc3Ryb3kocG9ydCk7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXG4ge1xuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG5AQCAtMzQ1NCw2ICszNDgzLDcgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdHN0cnVjdCBwaHlfcG9ydCAqcG9ydCA9IHBoeV9wb3J0X2FsbG9jKCk7XG4gXHR1bnNpZ25lZCBsb25nIG1vZGU7XG4rXHRpbnQgcmV0O1xuIFxuIFx0aWYgKCFwb3J0KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbkBAIC0zNDgwLDkgKzM1MTAsMTEgQEAgc3RhdGljIGludCBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHRwb3J0LVx1MDAzZXBhaXJzID0gbWF4X3QoaW50LCBwb3J0LVx1MDAzZXBhaXJzLFxuIFx0XHRcdFx0ICAgIGV0aHRvb2xfbGlua21vZGVfbl9wYWlycyhtb2RlKSk7XG4gXG4tXHRwaHlfYWRkX3BvcnQocGh5ZGV2LCBwb3J0KTtcbitcdHJldCA9IHBoeV9hZGRfcG9ydChwaHlkZXYsIHBvcnQpO1xuK1x0aWYgKHJldClcbitcdFx0cGh5X3BvcnRfZGVzdHJveShwb3J0KTtcbiBcbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGludCBvZl9waHlfcG9ydHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbkBAIC0zNTQ3LDEzICszNTc5LDEzIEBAIHN0YXRpYyBpbnQgcGh5X3NldHVwX3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XG4gXHRcdHJldCA9IHBoeV9zZnBfcHJvYmUocGh5ZGV2KTtcbiBcdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIG91dDtcbitcdFx0XHRnb3RvIGVycl9wb3J0cztcbiBcdH1cbiBcbiBcdGlmIChwaHlkZXYtXHUwMDNlbl9wb3J0cyBcdTAwM2MgcGh5ZGV2LVx1MDAzZW1heF9uX3BvcnRzKSB7XG4gXHRcdHJldCA9IHBoeV9kZWZhdWx0X3NldHVwX3NpbmdsZV9wb3J0KHBoeWRldik7XG4gXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0Z290byBlcnJfc2ZwO1xuIFx0fVxuIFxuIFx0bGlua21vZGVfemVybyhwb3J0c19zdXBwb3J0ZWQpO1xuQEAgLTM1ODAsNyArMzYxMiw5IEBAIHN0YXRpYyBpbnQgcGh5X3NldHVwX3BvcnRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1vdXQ6XG4rZXJyX3NmcDpcbitcdHBoeV9zZnBfcmVsZWFzZShwaHlkZXYpO1xuK2Vycl9wb3J0czpcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbkBAIC0zNzA2LDcgKzM3NDAsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWRydi1cdTAwM2Vwcm9iZSkge1xuIFx0XHRlcnIgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXByb2JlKHBoeWRldik7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0Z290byBvdXRfcmVzZXQ7XG4gXHR9XG4gXG4gXHRwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7XG5AQCAtMzcyNyw3ICszNzYxLDcgQEAgc3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRlcnIgPSBnZW5waHlfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcbiBcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuK1x0XHRnb3RvIG91dF9yZW1vdmU7XG4gXG4gXHRpZiAoIWxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULFxuIFx0XHRcdCAgICAgICBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKSlcbkBAIC0zNzQ0LDcgKzM3NzgsNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXG4gXHRlcnIgPSBwaHlfc2V0dXBfcG9ydHMocGh5ZGV2KTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuK1x0XHRnb3RvIG91dF9yZW1vdmU7XG4gXG4gXHRwaHlfYWR2ZXJ0aXNlX3N1cHBvcnRlZChwaHlkZXYpO1xuIFxuQEAgLTM3NTMsNyArMzc4Nyw3IEBAIHN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdCAqL1xuIFx0ZXJyID0gZ2VucGh5X2M0NV9yZWFkX2VlZV9hZHYocGh5ZGV2LCBwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuK1x0XHRnb3RvIG91dF9zZnBfcmVsZWFzZTtcbiBcbiBcdC8qIEdldCB0aGUgRUVFIG1vZGVzIHdlIHdhbnQgdG8gcHJvaGliaXQuICovXG4gXHRvZl9zZXRfcGh5X2VlZV9icm9rZW4ocGh5ZGV2KTtcbkBAIC0zNzkzLDkgKzM4MjcsNiBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdFx0XHQgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCk7XG4gXHR9XG4gXG4tXHQvKiBTZXQgdGhlIHN0YXRlIHRvIFJFQURZIGJ5IGRlZmF1bHQgKi9cbi1cdHBoeWRldi1cdTAwM2VzdGF0ZSA9IFBIWV9SRUFEWTtcbi1cbiBcdC8qIFJlZ2lzdGVyIHRoZSBQSFkgTEVEIHRyaWdnZXJzICovXG4gXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuIFx0XHRwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyKHBoeWRldik7XG5AQCAtMzgwNiwyMCArMzgzNywyNyBAQCBzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZTElCX0xFRFMpIFx1MDAyNlx1MDAyNiAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkge1xuIFx0XHRlcnIgPSBvZl9waHlfbGVkcyhwaHlkZXYpO1xuIFx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdGdvdG8gb3V0X3VucmVnX2xlZF90cmlnZ2VycztcbiBcdH1cbiBcbitcdC8qIFNldCB0aGUgc3RhdGUgdG8gUkVBRFkgYnkgZGVmYXVsdCAqL1xuK1x0cGh5ZGV2LVx1MDAzZXN0YXRlID0gUEhZX1JFQURZO1xuK1xuIFx0cmV0dXJuIDA7XG4gXG4tb3V0OlxuLVx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuLVx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuK291dF91bnJlZ19sZWRfdHJpZ2dlcnM6XG4rXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuK1x0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbiBcbitvdXRfc2ZwX3JlbGVhc2U6XG4rXHRwaHlfc2ZwX3JlbGVhc2UocGh5ZGV2KTtcbiBcdHBoeV9jbGVhbnVwX3BvcnRzKHBoeWRldik7XG4gXG4tXHRpZiAoIXBoeWRldi1cdTAwM2Vpc19vbl9zZnBfbW9kdWxlKVxuLVx0XHRwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIocGh5ZGV2KTtcbitvdXRfcmVtb3ZlOlxuK1x0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKVxuK1x0XHRwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXJlbW92ZShwaHlkZXYpO1xuIFxuK291dF9yZXNldDpcbiBcdC8qIFJlLWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9uIGVycm9yICovXG4gXHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMSk7XG4gXG5AQCAtMzg0MCw5ICszODc4LDcgQEAgc3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcbiBcdHBoeWRldi1cdTAwM2VzdGF0ZSA9IFBIWV9ET1dOO1xuIFxuLVx0c2ZwX2J1c19kZWxfdXBzdHJlYW0ocGh5ZGV2LVx1MDAzZXNmcF9idXMpO1xuLVx0cGh5ZGV2LVx1MDAzZXNmcF9idXMgPSBOVUxMO1xuLVxuK1x0cGh5X3NmcF9yZWxlYXNlKHBoeWRldik7XG4gXHRwaHlfY2xlYW51cF9wb3J0cyhwaHlkZXYpO1xuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VkcnYgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcmVtb3ZlKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfbGVkX3RyaWdnZXJzLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2xlZF90cmlnZ2Vycy5jXG5pbmRleCA0ZWI3NzE2YmI5ZDZjLi5mZjZlNTE4Mzk1YmUwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9sZWRfdHJpZ2dlcnMuY1xuQEAgLTEyNiw2ICsxMjYsNyBAQCBpbnQgcGh5X2xlZF90cmlnZ2Vyc19yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuIFx0d2hpbGUgKGktLSlcbiBcdFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoXHUwMDI2cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xuIFx0a2ZyZWUocGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpO1xuK1x0cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMgPSBOVUxMO1xuIG91dF91bnJlZ19saW5rOlxuIFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIocGh5LVx1MDAzZWxlZF9saW5rX3RyaWdnZXIpO1xuIG91dF9mcmVlX2xpbms6XG5AQCAtMTQxLDEwICsxNDIsMTIgQEAgdm9pZCBwaHlfbGVkX3RyaWdnZXJzX3VucmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbiB7XG4gXHRpbnQgaTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBoeS1cdTAwM2VwaHlfbnVtX2xlZF90cmlnZ2VyczsgaSsrKVxuLVx0XHRwaHlfbGVkX3RyaWdnZXJfdW5yZWdpc3RlcihcdTAwMjZwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vyc1tpXSk7XG4tXHRrZnJlZShwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vycyk7XG4tXHRwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2VycyA9IE5VTEw7XG4rXHRpZiAocGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnMpIHtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGh5LVx1MDAzZXBoeV9udW1fbGVkX3RyaWdnZXJzOyBpKyspXG4rXHRcdFx0cGh5X2xlZF90cmlnZ2VyX3VucmVnaXN0ZXIoXHUwMDI2cGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNbaV0pO1xuK1x0XHRrZnJlZShwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vycyk7XG4rXHRcdHBoeS1cdTAwM2VwaHlfbGVkX3RyaWdnZXJzID0gTlVMTDtcbitcdH1cbiBcbiBcdGlmIChwaHktXHUwMDNlbGVkX2xpbmtfdHJpZ2dlcikge1xuIFx0XHRwaHlfbGVkX3RyaWdnZXJfdW5yZWdpc3RlcihwaHktXHUwMDNlbGVkX2xpbmtfdHJpZ2dlcik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwNzo0MToxNi43NzQ2ODk3NThaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAxMDY1NTcxNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGFmdGVyIHJldmlld2luZyB0aGlzIHBhdGNoLCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCdzIGZvY3VzaW5nIG9uICpyb2J1c3RuZXNzKiBhbmQgKmNsZWFubGluZXNzKiB3aXRoaW4gdGhlIFBIWSBkcml2ZXIgY29kZS4gSXQncyB0b3VjaGluZyBgcGh5X2RldmljZS5jYCBhbmQgYHBoeV9sZWRfdHJpZ2dlcnMuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIHBvdGVudGlhbCBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMsIHNvIHRoYXQncyB3aGVyZSBJJ20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uLlxuXG5UaGUgY29yZSBjaGFuZ2VzIGFyZSBjb25jZW50cmF0ZWQgYXJvdW5kIGZpeGluZyBlcnJvciBoYW5kbGluZyByb3V0aW5lcy4gU3BlY2lmaWNhbGx5LCBgcGh5X3NmcF9wcm9iZWAsIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3Byb2JlYCwgYW5kIGBwaHlfcmVtb3ZlYCBoYXZlIGFsbCBiZWVuIHRvdWNoZWQgdXAuIFRoZSBnb2FsIGhlcmUgaXMgdG8gcGx1ZyBwb3RlbnRpYWwgcmVzb3VyY2UgbGVha3MsIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zLCBhbmQgYXZvaWQgdGhvc2UgZHJlYWRlZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIHRoYXQgY2FuIGNhdXNlIGluc3RhYmlsaXR5LiBBIGtleSBhZGRpdGlvbiBpcyBgcGh5X3NmcF9yZWxlYXNlYCwgd2hpY2ggcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBjbGVhbi11cCBvZiBTRlAgcmVzb3VyY2VzLiBUaGUgYHBoeV9sZWRfdHJpZ2dlcnNfdW5yZWdpc3RlcmAgY2hhbmdlIGxvb2tzIGxpa2UgYSBzYWZldHkgbmV0OiB2ZXJpZnlpbmcgdGhlIGV4aXN0ZW5jZSBvZiBgcGh5LVx1MDAzZXBoeV9sZWRfdHJpZ2dlcnNgIGJlZm9yZSBmcmVlaW5nIGl0IGF2b2lkcyBhIHBvdGVudGlhbCBkb3VibGUtZnJlZSBpc3N1ZS5cblxuSSBzZWUgbm8gZXZpZGVuY2UgdGhhdCB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIG5ldyBzdHJ1Y3R1cmVzIGV4cG9zZWQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IHJpc2tzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvciBhbnkgaW5mb3JtYXRpb24gbGVha3MuIFRoZXNlIGFyZSBzb2xpZCBjb2RpbmcgcHJhY3RpY2VzLlxuXG5MZXQncyBicmVhayBkb3duIHRoZSBpbmRpdmlkdWFsIGNoYW5nZXM6XG5cbiogICBgcGh5X3NmcF9wcm9iZWA6IEVuc3VyZXMgYHBoeWRldi1cdTAwM2VzZnBfYnVzYCBpcyBjbGVhbmVkIHVwIGlmIGBwaHlfc2V0dXBfc2ZwX3BvcnRgIGZhaWxzLlxuKiAgIGBwaHlfc2ZwX3JlbGVhc2VgOiBBIG5lY2Vzc2FyeSBhZGRpdGlvbiBmb3IgcHJvcGVyIFNGUCByZXNvdXJjZSByZWxlYXNlLlxuKiAgIGBwaHlfZGVmYXVsdF9zZXR1cF9zaW5nbGVfcG9ydGA6IE5vdyBkZXN0cm95cyB0aGUgcG9ydCBpZiBgcGh5X2FkZF9wb3J0YCBmYWlscy5cbiogICBgcGh5X3NldHVwX3BvcnRzYDogSW1wcm92ZWQgZXJyb3IgbGFiZWxzIGFuZCBjbGVhbnVwIHByb2NlZHVyZXMuXG4qICAgYHBoeV9wcm9iZWA6IEVuaGFuY2VkIGVycm9yIGxhYmVscyBhbmQgY2xlYW51cCBwcm9jZWR1cmVzLCBsaWtlIGBvdXRfdW5yZWdfbGVkX3RyaWdnZXJzYCwgYG91dF9zZnBfcmVsZWFzZWAsIGBvdXRfcmVtb3ZlYCwgYW5kIGBvdXRfcmVzZXRgLlxuKiAgIGBwaHlfbGVkX3RyaWdnZXJzX3JlZ2lzdGVyYDogQ2xlYXJzIGBwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vyc2AgYWZ0ZXIgZnJlZWluZyBpdC5cbiogICBgcGh5X2xlZF90cmlnZ2Vyc191bnJlZ2lzdGVyYDogQ2hlY2tzIGlmIGBwaHktXHUwMDNlcGh5X2xlZF90cmlnZ2Vyc2AgaXMgbm9uLU5VTEwgYmVmb3JlIGZyZWVpbmcsIHdoaWNoIGlzIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMsIHNwZWNpZmljYWxseSB0aGUgbGFjayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBhbnkgaW5mb3JtYXRpb24gbGVha3MsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuIFN0YW5kYXJkIGRlYnVnZ2luZyB0b29scywgcGFydGljdWxhcmx5IEtBU0FOIGFuZCBrbWVtbGVhaywgYXJlIHBlcmZlY3RseSBzdWZmaWNpZW50IGZvciBpZGVudGlmeWluZyBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlIGVycm9ycywgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgd2l0aGluIHRoaXMgcGF0Y2guIEtNU0FOIGlzIG5vdCBuZWNlc3NhcnkgaGVyZS4gVGhpcyBpcyBhIGdvb2QgZXhhbXBsZSBvZiBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgYW5kIGltcHJvdmVkIGVycm9yIGhhbmRsaW5nLCB3aGljaCBzaG91bGQgZW5oYW5jZSB0aGUgZHJpdmVyJ3MgcmVsaWFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzUsIk91dHB1dFRva2VucyI6MjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDU0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDc6NDE6MjYuODgxMjUxNzc1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmb2N1c2VzIG9uIGZpeGluZyBlcnJvciBoYW5kbGluZyBwYXRocyBhbmQgcmVzb3VyY2UgY2xlYW51cCBpbiB0aGUgUEhZIGRldmljZSBwcm9iZSBhbmQgcmVtb3ZhbCByb3V0aW5lcyAoZS5nLiwgYHBoeV9wcm9iZWAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3NmcF9wcm9iZWApLiBJdCBhZGRyZXNzZXMgcG90ZW50aWFsIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGJ5IGVuc3VyaW5nIHRoYXQgcmVzb3VyY2VzIGxpa2UgU0ZQIGJ1c2VzLCBQSFkgcG9ydHMsIGFuZCBMRUQgdHJpZ2dlcnMgYXJlIHByb3Blcmx5IHJlbGVhc2VkIG9yIHVucmVnaXN0ZXJlZCB3aGVuIGluaXRpYWxpemF0aW9uIGZhaWxzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzIHN1Y2ggYXMgS0FTQU4gKGZvciB1c2UtYWZ0ZXItZnJlZSBhbmQgb3V0LW9mLWJvdW5kcyksIGttZW1sZWFrIChmb3IgbWVtb3J5IGxlYWtzKSwgYW5kIGdlbmVyYWwga2VybmVsIG9vcHMvcGFuaWNzIChmb3IgTlVMTCBkZXJlZmVyZW5jZXMpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBpbnZvbHZlIGNvbXBsZXggdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4ncyBzcGVjaWFsaXplZCB1bmluaXRpYWxpemVkIG1lbW9yeSB0cmFja2luZy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmb2N1c2VzIG9uIGZpeGluZyBlcnJvciBoYW5kbGluZyBwYXRocyBhbmQgcmVzb3VyY2UgY2xlYW51cCBpbiB0aGUgUEhZIGRldmljZSBwcm9iZSBhbmQgcmVtb3ZhbCByb3V0aW5lcyAoZS5nLiwgYHBoeV9wcm9iZWAsIGBwaHlfc2V0dXBfcG9ydHNgLCBgcGh5X3NmcF9wcm9iZWApLiBJdCBhZGRyZXNzZXMgcG90ZW50aWFsIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGJ5IGVuc3VyaW5nIHRoYXQgcmVzb3VyY2VzIGxpa2UgU0ZQIGJ1c2VzLCBQSFkgcG9ydHMsIGFuZCBMRUQgdHJpZ2dlcnMgYXJlIHByb3Blcmx5IHJlbGVhc2VkIG9yIHVucmVnaXN0ZXJlZCB3aGVuIGluaXRpYWxpemF0aW9uIGZhaWxzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzIHN1Y2ggYXMgS0FTQU4gKGZvciB1c2UtYWZ0ZXItZnJlZSBhbmQgb3V0LW9mLWJvdW5kcyksIGttZW1sZWFrIChmb3IgbWVtb3J5IGxlYWtzKSwgYW5kIGdlbmVyYWwga2VybmVsIG9vcHMvcGFuaWNzIChmb3IgTlVMTCBkZXJlZmVyZW5jZXMpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBpbnZvbHZlIGNvbXBsZXggdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4ncyBzcGVjaWFsaXplZCB1bmluaXRpYWxpemVkIG1lbW9yeSB0cmFja2luZy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowd8rxd[1] Phase: Succeeded StartedAt: 2026-08-21 07:41:38 +0000 UTC FinishedAt: 2026-08-21 07:41:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-21 07:41:38 +0000 UTC FinishedAt: 2026-08-21 07:41:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2] Phase: Succeeded StartedAt: 2026-08-21 07:41:38 +0000 UTC FinishedAt: 2026-08-21 09:19:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-21 07:41:38 +0000 UTC FinishedAt: 2026-08-21 09:19:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-21 07:41:38 +0000 UTC FinishedAt: 2026-08-21 07:41:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-21 07:41:38 +0000 UTC FinishedAt: 2026-08-21 07:41:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8rxd/series-workflowd8rxd-convert-artifact-3461034465/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-21 07:41:48 +0000 UTC FinishedAt: 2026-08-21 07:58:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-21 07:41:48 +0000 UTC FinishedAt: 2026-08-21 07:58:14 +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:*ad5ea45e-3a6f-44ca-9c90-fbc9a08d710f,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-workflowd8rxd/series-workflowd8rxd-convert-artifact-3461034465/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": "a1f81c6a-8df3-446a-8ddb-acddfc7ddbe1", "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-workflowd8rxd/series-workflowd8rxd-build-action-252378895/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-21 07:41:48 +0000 UTC FinishedAt: 2026-08-21 07:58:04 +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:*ad5ea45e-3a6f-44ca-9c90-fbc9a08d710f,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-workflowd8rxd/series-workflowd8rxd-convert-artifact-3461034465/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": "a1f81c6a-8df3-446a-8ddb-acddfc7ddbe1", "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-workflowd8rxd/series-workflowd8rxd-build-action-252378895/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-21 07:58:14 +0000 UTC FinishedAt: 2026-08-21 07:58:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-21 07:58:14 +0000 UTC FinishedAt: 2026-08-21 07:58:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-21 07:58:14 +0000 UTC FinishedAt: 2026-08-21 07:58:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-21 07:58:14 +0000 UTC FinishedAt: 2026-08-21 07:58:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8rxd/series-workflowd8rxd-convert-artifact-3767092276/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-21 07:58:24 +0000 UTC FinishedAt: 2026-08-21 08:00:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-21 07:58:24 +0000 UTC FinishedAt: 2026-08-21 08:00:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a1f81c6a-8df3-446a-8ddb-acddfc7ddbe1,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-workflowd8rxd/series-workflowd8rxd-build-action-252378895/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-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-21 08:00:46 +0000 UTC FinishedAt: 2026-08-21 08:00:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-21 08:00:46 +0000 UTC FinishedAt: 2026-08-21 08:00:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-21 08:00:46 +0000 UTC FinishedAt: 2026-08-21 08:16:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-21 08:00:46 +0000 UTC FinishedAt: 2026-08-21 08:16:54 +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:*ad5ea45e-3a6f-44ca-9c90-fbc9a08d710f,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-workflowd8rxd/series-workflowd8rxd-convert-artifact-3767092276/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": "180d25d9-12c6-4bff-9552-a5a53b305be0", "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-workflowd8rxd/series-workflowd8rxd-build-action-1356047872/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-21 08:00:46 +0000 UTC FinishedAt: 2026-08-21 08:16:44 +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:*ad5ea45e-3a6f-44ca-9c90-fbc9a08d710f,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-workflowd8rxd/series-workflowd8rxd-convert-artifact-3767092276/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": "180d25d9-12c6-4bff-9552-a5a53b305be0", "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-workflowd8rxd/series-workflowd8rxd-build-action-1356047872/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-21 08:16:54 +0000 UTC FinishedAt: 2026-08-21 08:16:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-21 08:16:54 +0000 UTC FinishedAt: 2026-08-21 08:16:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-21 08:16:54 +0000 UTC FinishedAt: 2026-08-21 08:18:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-21 08:16:54 +0000 UTC FinishedAt: 2026-08-21 08:18:48 +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:*180d25d9-12c6-4bff-9552-a5a53b305be0,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-workflowd8rxd/series-workflowd8rxd-build-action-1356047872/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-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-21 08:18:58 +0000 UTC FinishedAt: 2026-08-21 09:19:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-21 08:18:58 +0000 UTC FinishedAt: 2026-08-21 09:19:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"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:*a1f81c6a-8df3-446a-8ddb-acddfc7ddbe1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*180d25d9-12c6-4bff-9552-a5a53b305be0,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-workflowd8rxd/series-workflowd8rxd-build-action-252378895/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-workflowd8rxd/series-workflowd8rxd-build-action-1356047872/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-21 08:18:58 +0000 UTC FinishedAt: 2026-08-21 08:19:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-21 08:18:58 +0000 UTC FinishedAt: 2026-08-21 08:19:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"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-workflowd8rxd/series-workflowd8rxd-convert-artifact-1113508957/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-21 08:18:58 +0000 UTC FinishedAt: 2026-08-21 08:18:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-21 08:18:58 +0000 UTC FinishedAt: 2026-08-21 08:18:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-21 08:18:58 +0000 UTC FinishedAt: 2026-08-21 08:18:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-21 08:19:08 +0000 UTC FinishedAt: 2026-08-21 09:19:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8rxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_probe","phy_remove","phy_led_triggers_register","phy_led_triggers_unregister"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e264c048709469096f3927fcd35a2c45f9e38eb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","SFP","USB_NET_DRIVERS","USB_NET_SMSC95XX","USB_LAN78XX","LED_TRIGGER_PHY","PHYLIB_LEDS"],"series_id":"37aa0a65-4ec9-4b1c-b1d5-cb339e083323","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-21 08:19:08 +0000 UTC FinishedAt: 2026-08-21 09:18:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a1f81c6a-8df3-446a-8ddb-acddfc7ddbe1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*180d25d9-12c6-4bff-9552-a5a53b305be0,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-workflowd8rxd/series-workflowd8rxd-build-action-252378895/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-workflowd8rxd/series-workflowd8rxd-build-action-1356047872/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-workflowd8rxd/series-workflowd8rxd-convert-artifact-1113508957/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,}