Name: series-workflowrs2f5 Phase: Succeeded StartedAt: 2026-08-15 03:01:05 +0000 UTC FinishedAt: 2026-08-15 06:42:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[0] Phase: Succeeded StartedAt: 2026-08-15 03:01:05 +0000 UTC FinishedAt: 2026-08-15 03:04:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[0].run-triage Phase: Succeeded StartedAt: 2026-08-15 03:01:05 +0000 UTC FinishedAt: 2026-08-15 03:04:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a59f57e2aa127c5354168d2ec4bac920df1be4f4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a59f57e2aa127c5354168d2ec4bac920df1be4f4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "abe1b4fa-3803-4bf9-bc71-a84f298be3cc" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "nsim_queue_start", "nsim_queue_stop" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25zaW1fcXVldWVfc3RhcnQmIzM0OywKICAgICYjMzQ7bnNpbV9xdWV1ZV9zdG9wJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgTkFQSSBpbnN0YW5jZXMgd2l0aCBuZXR3b3JrIGRldmljZSBxdWV1ZXMuIFRoaXMgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGFyaXNpbmcgZnJvbSB0aGVzZSBjaGFuZ2VzLCBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgKGEgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2UgdXNlZCBmb3IgdGVzdGluZykgdG8gY2FsbCBuZXRpZl9xdWV1ZV9zZXRfbmFwaSgpIGluIGl0cyBxdWV1ZSBzdGFydCBhbmQgc3RvcCBjYWxsYmFja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MjAyZDA3NjA3M2YxMjFjN2I4YmFiZjU0NmNlMWQ3Y2I2NjIyNTc2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDM6MDI6NTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG5pbmRleCA0ZTlkN2UxMGI1MjdlLi4yOTFkMzQ3MThiMmVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbkBAIC04MDgsNiAmIzQzOzgwOCw4IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG4gXG4gXHRpZiAobnMtXHUwMDNlcnFfcmVzZXRfbW9kZSA9PSAxKSB7XG4gXHRcdG5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlcGFnZV9wb29sID0gcW1lbS1cdTAwM2VwcDtcbiYjNDM7XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbiYjNDM7XHRcdFx0XHQgICAgIFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXHRcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbkBAIC04MjYsNiAmIzQzOzgyOCw4IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG4gXHR9XG4gXG4gXHRucy1cdTAwM2VycVtpZHhdID0gcW1lbS1cdTAwM2VycTtcbiYjNDM7XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG4mIzQzO1x0XHRcdCAgICAgXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtODM4LDYgJiM0Mzs4NDIsNyBAQCBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxuIFxuIFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcbiBcbiYjNDM7XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuIFx0bmFwaV9kaXNhYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFxuIFx0aWYgKG5zLVx1MDAzZXJxX3Jlc2V0X21vZGUgPT0gMSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuc2ltX3F1ZXVlX3N0YXJ0JiMzNDssCiAgICAmIzM0O25zaW1fcXVldWVfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZGV2c2ltIGRyaXZlciAoYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nKSB0byBjYWxsIG5ldGlmX3F1ZXVlX3NldF9uYXBpKCkgaW4gaXRzIHF1ZXVlIHN0YXJ0IGFuZCBzdG9wIGNhbGxiYWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGRyaXZlciwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcyMDJkMDc2MDczZjEyMWM3YjhiYWJmNTQ2Y2UxZDdjYjY2MjI1NzYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxNSAwMzowMjo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYwppbmRleCA0ZTlkN2UxMGI1MjdlLi4yOTFkMzQ3MThiMmVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jCkBAIC04MDgsNiAmIzQzOzgwOCw4IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsCiAKIAlpZiAobnMtJmd0O3JxX3Jlc2V0X21vZGUgPT0gMSkgewogCQlucy0mZ3Q7cnFbaWR4XS0mZ3Q7cGFnZV9wb29sID0gcW1lbS0mZ3Q7cHA7CiYjNDM7CQluZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsCiYjNDM7CQkJCSAgICAgJmFtcDtucy0mZ3Q7cnFbaWR4XS0mZ3Q7bmFwaSk7CiAJCW5hcGlfZW5hYmxlX2xvY2tlZCgmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAkJcmV0dXJuIDA7CiAJfQpAQCAtODI2LDYgJiM0Mzs4MjgsOCBAQCBuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLAogCX0KIAogCW5zLSZndDtycVtpZHhdID0gcW1lbS0mZ3Q7cnE7CiYjNDM7CW5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwKJiM0MzsJCQkgICAgICZhbXA7bnMtJmd0O3JxW2lkeF0tJmd0O25hcGkpOwogCW5hcGlfZW5hYmxlX2xvY2tlZCgmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAogCXJldHVybiAwOwpAQCAtODM4LDYgJiM0Mzs4NDIsNyBAQCBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KQogCiAJbmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTsKIAomIzQzOwluZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpOwogCW5hcGlfZGlzYWJsZV9sb2NrZWQoJmFtcDtucy0mZ3Q7cnFbaWR4XS0mZ3Q7bmFwaSk7CiAKIAlpZiAobnMtJmd0O3JxX3Jlc2V0X21vZGUgPT0gMSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjgwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTmV0ZGV2c2ltIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBwb2tpbmcgYXJvdW5kIGluIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNgLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgd2l0aGluIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuIEhtbSwgaW50ZXJlc3RpbmcuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgaW4gdGhlIGBuZXRkZXZzaW1gIGRyaXZlciBpbW1lZGlhdGVseSBnZXRzIG15IGF0dGVudGlvbi4gTmV0ZGV2c2ltLCBvZiBjb3Vyc2UsIGlzIHRoYXQgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2Ug4oCTIHBlcmZlY3QgZm9yIHRlc3RpbmcsIGFuZCBkZWZpbml0ZWx5IHdpdGhpbiB0aGUgYXR0YWNrIHN1cmZhY2UgZm9yIGZ1enppbmcuIEdpdmVuIHRoYXQgaXQgdG91Y2hlcyB0aG9zZSBgbnNpbV9xdWV1ZWAgZnVuY3Rpb25zLCBpdOKAmXMgaGlnaGx5IHByb2JhYmxlIHRoaXMgaXMgYSByZWFjaGFibGUgY29kZSBwYXRoLiBUaGVyZWZvcmUsIGl0IGRlZmluaXRlbHkgd2FycmFudHMgc29tZSBzZXJpb3VzIGZ1enppbmcgZWZmb3J0cy4KCk15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIHRoZW1zZWx2ZXMsIHVuZGVyc3RhbmQgdGhlaXIgcHVycG9zZSB3aXRoaW4gdGhlIGBuZXRkZXZzaW1gIGRyaXZlciwgYW5kIGRldGVybWluZSB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aGVzZSBuZXcgY2FsbHMuIFRvIHRoYXQgZW5kLCBJIHNob3VsZCBsb2NhdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYG5ldGRldnNpbWAuIFRoYXQmIzM5O2xsIGdpdmUgbWUgdGhlIHZpc2liaWxpdHkgSSBuZWVkIHRvIHByb2NlZWQgd2l0aCBteSBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRERVZTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyMwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqSHVudGluZyBEb3duIHRoZSBOZXR3b3JrIERldmljZSBTaW11bGF0b3IgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgbmV0d29yayBkZXZpY2Ugc2ltdWxhdG9yIGlzIGNvbmZpZ3VyZWQuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgYGRyaXZlcnMvbmV0YCBkaXJlY3RvcnkgaXMgYSBsaWtlbHkgY2FuZGlkYXRlLCBhbmQgd2l0aGluIHRoYXQsIHRoZSBgbmV0ZGV2c2ltYCBzdWJkaXJlY3RvcnkgZmVlbHMgbGlrZSB0aGUgbW9zdCBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdgIGZpcnN0LiBUaGF0JiMzOTtzIHRoZSB0eXBpY2FsIHBsYWNlIGZvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIGEgZHJpdmVyLiBJZiB0aGF0IGNvbWVzIHVwIGVtcHR5LCB0aGVuIEkmIzM5O2xsIGJyb2FkZW4gdGhlIHNlYXJjaCBzbGlnaHRseSBhbmQgbG9vayBhdCBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgaXRzZWxmOyBtYXliZSBpdCYjMzk7cyBjb25maWd1cmVkIGFzIGEgbW9yZSBnZW5lcmFsIG5ldHdvcmsgZGV2aWNlLiBGaW5hbGx5LCBpZiB0aG9zZSBmYWlsLCBhIHF1aWNrIGFuZCBkaXJ0eSBgZ3JlcCBORVRERVZTSU1gIGFjcm9zcyB0aGUgZW50aXJlIGtlcm5lbCBzb3VyY2UgdHJlZSB3aWxsIG5haWwgZG93biB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucy4gTm8gbmVlZCB0byBvdmVydGhpbmsgaXQgaW5pdGlhbGx5OyBsZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgbW9zdCBsb2dpY2FsIGxvY2F0aW9ucyBiZWZvcmUgcmVzb3J0aW5nIHRvIGJydXRlIGZvcmNlLiBJIHByZWZlciBhbiBlbGVnYW50IHNvbHV0aW9uIHdoZXJlIHBvc3NpYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRERVZTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz02MDI9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMy1cbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA4OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIERlcGVuZGVuY2llcyBpbiBORVRERVZTSU0qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQgYXJlIHRoZSBjb3JlIGRlcGVuZGVuY2llcyBmb3IgYE5FVERFVlNJTWA/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGZvdW5kYXRpb24uIEtub3dpbmcgdGhlIHVuZGVybHlpbmcgbGlicmFyaWVzIGFuZCBmcmFtZXdvcmtzIGl0IHJlbGllcyBvbiBpcyBhYnNvbHV0ZWx5IGNyaXRpY2FsIGZvciBkZWJ1Z2dpbmcsIG1vZGlmeWluZywgb3IgZXZlbiBqdXN0IHByb3Blcmx5IGV2YWx1YXRpbmcgaXRzIHBlcmZvcm1hbmNlIGFuZCBwb3RlbnRpYWwgbGltaXRhdGlvbnMuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhpbmdzIGxpa2U6IGlzIGl0IFB5dGhvbi1iYXNlZD8gSWYgc28sIHdoYXQgUHl0aG9uIHZlcnNpb24gYW5kIHdoYXQga2V5IHBhY2thZ2VzIGFyZSBpbiBwbGF5PyBXaGF0IG5ldHdvcmsgc2ltdWxhdGlvbiBsaWJyYXJpZXMgaXMgaXQgbGV2ZXJhZ2luZyDigJMgYFNpbVB5YCwgcGVyaGFwcywgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQ/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSBtb2RlbHMgb3IgbmV0d29yayBwcm90b2NvbHM/IEFyZSB0aGVyZSBleHRlcm5hbCBkYXRhIHNvdXJjZXMgb3IgdG9vbHMgaXQgdXNlcyBmb3IgaW5wdXQgb3Igb3V0cHV0PyBUaGlzIGluaXRpYWwgYXNzZXNzbWVudCBpcyBmdW5kYW1lbnRhbDsgaXQgc2hhcGVzIGhvdyBJIGFwcHJvYWNoIGV2ZXJ5dGhpbmcgZWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MDQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYwNDpcdGNvbmZpZyBORVRERVZTSU1cbiA2MDU6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuIDYwNjpcdFx0ZGVwZW5kcyBvbiBERUJVR19GU1xuIDYwNzpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gNjA4Olx0XHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXG4gNjA5Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX01PQ0sgfHwgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uXG4gNjEwOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiA2MTE6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiA2MTI6XHRcdHNlbGVjdCBORVRfU0hBUEVSXG4gNjEzOlx0XHRoZWxwXG4gNjE0Olx0XHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCBhbmQgc29mdHdhcmUgbW9kZWwgdGhhdCBjYW5cbiA2MTU6XHRcdCAgYmUgdXNlZCB0byB0ZXN0IHZhcmlvdXMgY29udHJvbCBwYXRoIG5ldHdvcmtpbmcgQVBJcywgZXNwZWNpYWxseVxuIDYxNjpcdFx0ICBIVy1vZmZsb2FkIHJlbGF0ZWQuXG4gNjE3Olx0XG4gNjE4Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiA2MTk6XHRcdCAgd2lsbCBiZSBjYWxsZWQgbmV0ZGV2c2ltLlxuIDYyMDpcdFxuIDYyMTpcdGNvbmZpZyBORVRfRkFJTE9WRVJcbiA2MjI6XHRcdHRyaXN0YXRlIFwmIzM0O0ZhaWxvdmVyIGRyaXZlclwmIzM0O1xuIDYyMzpcdFx0c2VsZWN0IEZBSUxPVkVSXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYxNQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBuZXR3b3JraW5nIGV4cGVydDoKCioqRGVwZW5kZW5jaWVzIGFuZCBDb250cm9sIFBvaW50cyoqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gYE5FVERFVlNJTWAsIGFuZCBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIGNvcmUgZGVwZW5kZW5jaWVzLiBJIGtub3cgaXQgbGVhbnMgb24gYERFQlVHX0ZTYCBhbmQgYElORVRgLCB3aGljaCBhcmUgZmFpcmx5IHN0YW5kYXJkIGJ1aWxkaW5nIGJsb2NrcyBmb3IgdGhpcyB0eXBlIG9mIHNpbXVsYXRpb24uIE5vdywgSSB3YW50IHRvIHplcm8gaW4gb24gdGhlIHNpbXVsYXRpb24mIzM5O3MgcXVldWUgbWFuYWdlbWVudCwgdG8gc2VlIGhvdyBpdCYjMzk7cyBjb250cm9sbGVkLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBvdXQgdGhlIHN0YXJ0IGFuZCBzdG9wIGZ1bmN0aW9ucyBmb3IgdGhlIG5ldHdvcmsgc2ltdWxhdG9yJiMzOTtzIHF1ZXVlLCBzbyBJJiMzOTtsbCBiZSBsb29raW5nIGF0IGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAgbmV4dC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBhbmQgd2hlcmUgSSYjMzk7bSBsaWtlbHkgdG8gZmluZCB0aGUgbW9zdCB1c2VmdWwgaG9va3MgZm9yIGFuYWx5c2lzIGFuZCwgcGVyaGFwcywgbW9kaWZpY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX3F1ZXVlX3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MDA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjgwMTpuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTgwMi1cdFx0IHZvaWQgKnBlcl9xdWV1ZV9tZW0sIGludCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTg1OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBuc2ltX3F1ZXVlX21nbXRfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjEtXHQubmRvX3F1ZXVlX21lbV9mcmVlXHQ9IG5zaW1fcXVldWVfbWVtX2ZyZWUsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODYyOlx0Lm5kb19xdWV1ZV9zdGFydFx0PSBuc2ltX3F1ZXVlX3N0YXJ0LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg2My1cdC5uZG9fcXVldWVfc3RvcFx0XHQ9IG5zaW1fcXVldWVfc3RvcCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEyNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDM0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBcHByb2FjaCB0byBBbmFseXppbmcgdGhlIFF1ZXVlIE1hbmFnZW1lbnQgQ2FsbGJhY2tzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBgbmRvX3F1ZXVlX3N0YXJ0YCBhbmQgYG5kb19xdWV1ZV9zdG9wYCBjYWxsYmFja3MuIE15IGd1dCB0ZWxscyBtZSB0aGVzZSBhcmUgZGVmaW5pdGVseSB0cmlnZ2VyZWQgdGhyb3VnaCBuZXRsaW5rLCBzeXNmcywgb3Igd2hhdGV2ZXIgaW50ZXJmYWNlIGhhbmRsZXMgcXVldWUgbWFuYWdlbWVudC4gVGhlIGtleSBoZXJlIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBUaGV5IGFyZSBzdGF0aWMsIHdoaWNoIGlzIGEgYml0IG9mIGEgd3JpbmtsZSBiZWNhdXNlIGl0IHN1Z2dlc3RzIHRoZXkgbWlnaHQgYmUgaW5saW5lZC4gQnV0LCBzaW5jZSB0aGV5JiMzOTtyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycywgdGhhdCBtZWFucyB0aGV5ICp3b24mIzM5O3QqIGJlIGlubGluZWQuIFRoYXQmIzM5O3MgZ29vZC4KClRoZSBwcm9tcHQgc2F5cyB0byBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU28sIEkgbmVlZCB0byBmaW5kIHRoZSByaWdodCBlbnRyeSBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBsb29rIGF0IGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAsIG9yIGp1c3QgcGljayBvbmUuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgdGhleSYjMzk7cmUgc3RhdGljIG1lYW5zIHRoZXkmIzM5O3JlIHByb2JhYmx5IG5vdCB0aGUgYmVzdCBjaG9pY2UuIExldCBtZSBjbGFyaWZ5LCBiZWNhdXNlIEkgY291bGQgYWxzbyBsb29rIGF0IGBuZXRkZXZfcXVldWVfc3RhcnRgLCBidXQgdGhhdCYjMzk7cyBnb2luZyB0byBiZSB0b28gZ2VuZXJpYy4KCkkmIzM5O20gY2hlY2tpbmcgaWYgdGhlcmUmIzM5O3MgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24gSSBjYW4gZm9jdXMgb24uIE1heWJlIGBuc2ltX2NyZWF0ZWA/IEkmIzM5O2xsIGxvb2sgYXQgdGhlIGBuc2ltX3F1ZXVlX3N0YXJ0YCBpbiBgbmV0ZGV2c2ltL25ldGRldi5jYCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IG90aGVyIHdheSBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnNpbV9xdWV1ZV9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODAwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4MDE6bnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MDItXHRcdCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04NTg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgbnNpbV9xdWV1ZV9tZ210X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODYxLVx0Lm5kb19xdWV1ZV9tZW1fZnJlZVx0PSBuc2ltX3F1ZXVlX21lbV9mcmVlLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg2MjpcdC5uZG9fcXVldWVfc3RhcnRcdD0gbnNpbV9xdWV1ZV9zdGFydCxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjMtXHQubmRvX3F1ZXVlX3N0b3BcdFx0PSBuc2ltX3F1ZXVlX3N0b3AsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNDgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYG5kb19xdWV1ZV9zdGFydGAgQ2FsbCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGNhbGxpbmcgYG5kb19xdWV1ZV9zdGFydGAuIFRoaXMgaXMgbGlrZWx5IGEgY3JpdGljYWwgcG9pbnQgaW4gbmV0d29yayBpbnRlcmZhY2UgZHJpdmVyIGJlaGF2aW9yLCBzbyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrLiBGaXJzdCwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgY29tbW9uIHBhdGhzIOKAkyBwcm9iYWJseSBpbnRlcnJ1cHQgaGFuZGxlcnMsIHRyYW5zbWl0IG9yIHJlY2VpdmUgY29tcGxldGlvbnMsIG9yIGV2ZW4gdGltZXIgY2FsbGJhY2tzLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIHJlbGV2YW50IGRyaXZlciBjb2RlIGZvciB0aGUgc3BlY2lmaWMgTklDIGluIHF1ZXN0aW9uLCBsaWtlbHkgZm9jdXNpbmcgb24gdGhlIG1ham9yIG5ldHdvcmsgaW50ZXJmYWNlIGZ1bmN0aW9ucyBsaWtlIGBuZXRpZl9yeGAsIGBuZXRpZl90eF9zdGFydGAsIG9yIGFueSBpbnRlcnJ1cHQgaGFuZGxpbmcgcm91dGluZXMuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0byBzdGFydCB0aGVyZSwgYXQgbGVhc3QuCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBkaXJlY3QgY2FsbHMgdG8gYG5kb19xdWV1ZV9zdGFydGAgd2l0aGluIHRob3NlIGZ1bmN0aW9ucywgYnV0IEkgYWxzbyBuZWVkIHRvIGJlIHdhcnkgb2YgaW5kaXJlY3QgY2FsbHMsIHBvc3NpYmx5IHRocm91Z2ggYSBsYXllciBvZiBhYnN0cmFjdGlvbiBvciBoZWxwZXIgZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIGFueSBvdGhlciBmdW5jdGlvbnMgY291bGQgYmUgcGFzc2VkIGluIGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBhY3R1YWwgZnVuY3Rpb24sIG9yIGFueSBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGluZyBgbmRvX3F1ZXVlX3N0YXJ0YC4gVGhlIGRhdGEgc3RydWN0dXJlcyByZWxhdGVkIHRvIHRoZSBuZXR3b3JrIGRldmljZSBhcmUgZ29pbmcgdG8gYmUga2V5LCBlc3BlY2lhbGx5IHRoZSBgbmV0X2RldmljZWAgc3RydWN0dXJlIGFuZCBhbnl0aGluZyB0aGF0IGRlYWxzIHdpdGggcXVldWVzIG9yIHRoZSBkZXZpY2UmIzM5O3Mgc3RhdGUuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGljaCBmaWVsZHMgaW4gdGhlc2Ugc3RydWN0dXJlcyBhcmUgYmVpbmcgbW9kaWZpZWQuCgpJJiMzOTttIG1lbnRhbGx5IHByZXBhcmluZyBmb3IgcG90ZW50aWFsIHNjZW5hcmlvczogSXMgaXQgY2FsbGVkIHVuY29uZGl0aW9uYWxseSwgb3IgYmFzZWQgb24gc29tZSBzcGVjaWZpYyBjb25kaXRpb24gKGUuZy4sIGJ1ZmZlciBhdmFpbGFiaWxpdHksIGxpbmsgc3RhdHVzKT8gSXMgaXQgYmVpbmcgY2FsbGVkIHRvIHN0YXJ0IHRoZSBxdWV1ZSBmb3IgdHJhbnNtaXQgb3IgcmVjZWl2ZT8gQXJlIHRoZXJlIGxpa2VseSBsb2NraW5nIGNvbnNpZGVyYXRpb25zIGFyb3VuZCB0aGlzIGNhbGwsIGVzcGVjaWFsbHkgaWYgaXQmIzM5O3MgaW4gYSBtdWx0aS10aHJlYWRlZCBjb250ZXh0PyBEZWJ1Z2dpbmcgdGhpcyBjb3VsZCBiZSB0cmlja3ksIEkmIzM5O2xsIHByb2JhYmx5IG5lZWQgdG8gY29uc2lkZXIgYnJlYWtwb2ludHMgb3IgdHJhY2Vwb2ludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25kb19xdWV1ZV9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTg9c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMDgtXHRpZiAoIXFvcHMgfHwgIXFvcHMtXHUwMDNlbmRvX3F1ZXVlX3N0b3AgfHwgIXFvcHMtXHUwMDNlbmRvX3F1ZXVlX21lbV9mcmVlIHx8XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxMDk6XHQgICAgIXFvcHMtXHUwMDNlbmRvX3F1ZXVlX21lbV9hbGxvYyB8fCAhcW9wcy1cdTAwM2VuZG9fcXVldWVfc3RhcnQpXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMTAtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMzYtXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxMzc6XHRcdGVyciA9IHFvcHMtXHUwMDNlbmRvX3F1ZXVlX3N0YXJ0KGRldiwgcWNmZ19uZXcsIG5ld19tZW0sIHJ4cV9pZHgpO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTM4LVx0XHRpZiAoZXJyKVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE1OC1cdCAqL1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTU5Olx0aWYgKHFvcHMtXHUwMDNlbmRvX3F1ZXVlX3N0YXJ0KGRldiwgcWNmZ19vbGQsIG9sZF9tZW0sIHJ4cV9pZHgpKSB7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNjAtXHRcdFdBUk4oMSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc5OQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkRpc3NlY3RpbmcgdGhlIE5ldHdvcmsgSW50ZXJmYWNlIFJlY29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgdHJhY2UgaW5kaWNhdGVzIGEgY2FsbCB0byBgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIHRoZSBjcml0aWNhbCBmdW5jdGlvbiB3ZSYjMzk7cmUgbG9va2luZyBhdC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIHBhaXIgdGhhdCB3aXRoIGEgcmV2aWV3IG9mIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAgYXMgd2VsbC4gVGhleSYjMzk7cmUgcmVsYXRlZC4gV2hpbGUgcmVjb25maWcgbGlrZWx5IGhhbmRsZXMgdGhlICppbml0aWFsKiBzZXR1cCBvciBjaGFuZ2VzIHRvIHRoZSByZWNlaXZlIHF1ZXVlLCByZXN0YXJ0IG1pZ2h0IGJlIGludm9rZWQgdG8gaGFuZGxlIHRlbXBvcmFyeSBwYXVzZXMgb3IgcmVzdW1wdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9uIGFuZCBzZXF1ZW5jZSBvZiBldmVudHMgYmV0d2VlbiB0aGVzZSB0d28gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGVudGlyZSByZWNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBob3cgdGhleSYjMzk7cmUgdXNlZCBhbmQgaG93IHRoZXkgcmVsYXRlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRkZXZfcnhfcXVldWVfcmVzdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTk4PXN0YXRpYyBpbnQgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc3LVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTc4OmludCBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeClcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE3OS17XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg0LX1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE4NTpFWFBPUlRfU1lNQk9MX05TX0dQTChuZXRkZXZfcnhfcXVldWVfcmVzdGFydCwgXCYjMzQ7TkVUREVWX0lOVEVSTkFMXCYjMzQ7KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI0MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAgRXhwb3J0KioKCkFscmlnaHQsIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAgaXMgc2hvd2luZyB1cCBhcyBleHBvcnRlZC4gSG1tLCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aG8gbWlnaHQgYmUgcmVseWluZyBvbiB0aGlzIGZ1bmN0aW9uLiBUaW1lIHRvIGRpZyBpbnRvIGl0cyBjYWxsIHNpdGVzLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGNoZWNrIG9uIHRoZSBjYWxsZXJzIG9mIGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBpbml0aWFsIHNlbnNlIG9mIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNyaXRpY2FsIHBhdGhzIHJlbGF0ZWQgdG8gdGhpcyByZXN0YXJ0IGZ1bmN0aW9uLiBUaGlzIGlzIGtleSB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgYW55IGNoYW5nZXMgb3IgcG90ZW50aWFsIHJlZmFjdG9yaW5nIGRvd24gdGhlIGxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz05MT1ib29sIG5ldGlmX3J4cV9oYXNfbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtOTctXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzo5ODpzdGF0aWMgaW50IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtOTktXHRcdFx0XHQgICAgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9MTc4PWludCBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeClcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODItXHRuZXRkZXZfcXVldWVfY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZyk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODM6XHRyZXR1cm4gbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZywgXHUwMDI2cWNmZyk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODQtfVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4Nz1zdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjMzLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjM0Olx0cmV0ID0gbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZ1swXSwgXHUwMDI2cWNmZ1sxXSk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yMzUtXHRpZiAocmV0KVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI3OD1zdGF0aWMgdm9pZCBfX25ldGlmX21wX2Nsb3NlX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0zMDEtXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzozMDI6XHRlcnIgPSBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoZGV2LCByeHFfaWR4LCBcdTAwMjZxY2ZnWzBdLCBcdTAwMjZxY2ZnWzFdKTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTMwMy1cdFdBUk5fT04oZXJyIFx1MDAyNlx1MDAyNiBlcnIgIT0gLUVORVRET1dOKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAxOQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYE5FVERFVlNJTWAgTW9kdWxlJiMzOTtzIENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9uIENhbGxzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBgTkVUREVWU0lNYCBtb2R1bGUgaXMgY29uZmlndXJlZCBhbmQgaG93IGl0JiMzOTtzIGZ1bmN0aW9uaW5nIGludGVybmFsbHkuIE15IGluaXRpYWwgdGhvdWdodHMgYXJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgY2FsbHMgdG8gYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCwgYF9fbmV0aWZfbXBfb3Blbl9yeHFgLCBhbmQgYF9fbmV0aWZfbXBfY2xvc2VfcnhxYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBsaWtlbHkgdHJpZ2dlcmVkIGJ5IGVpdGhlciBgZXRodG9vbGAgb3IgdmlhIGBuZXRsaW5rYCBjYWxscywgd2hpY2ggaXMgdHlwaWNhbCBmb3IgbWFuYWdpbmcgbmV0d29yayBkZXZpY2UgaW50ZXJmYWNlcy4KCkkgd2FudCB0byBzZWUgaWYgSSBjYW4gbmFycm93IG15IGZvY3VzIGFuZCBqdXN0IHplcm8gaW4gb24gYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYC4gVGhleSBhcmUgZGVjbGFyZWQgYHN0YXRpY2Agd2hpY2ggaW5pdGlhbGx5IG1ha2VzIG1lIHRoaW5rIHRoZXkgbWlnaHQgYmUgaW5saW5lZC4gQnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IHNpbmNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgYmVpbmcgdGFrZW4gKG1lYW5pbmcgdGhleSBhcmUgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycyksIHRoZXkgKmNhbiYjMzk7dCogYmUgaW5saW5lZC4gVGh1cywgdGhleSAqc2hvdWxkKiBhcHBlYXIgaW4gdGhlIHN5bWJvbCB0YWJsZS4gSG93ZXZlciwgc2luY2UgdGhlIHN5bWJvbHMgYXJlIHN0YXRpYywgdGhleSBtYXkgbm90LgoKQnV0LCBiYWNrIHRvIG15IG9yaWdpbmFsIHBsYW4uIFNob3VsZCBJIHJlYWxseSBiZSBmb2N1c2luZyBvbiBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgPyBJJiMzOTtsbCBzdGljayB3aXRoIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAgZm9yIG5vdy4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgdXNpbmcgYE5FVERFVlNJTWAsIG9mIGNvdXJzZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGBORVRERVZTSU1gIGRvZXNuJiMzOTt0IGRlcGVuZCBvbiBvdGhlciBjb25maWd1cmF0aW9ucyB0byBiZSBlbmFibGVkLiBJIHNlZSB0aGF0IGl0IHJlcXVpcmVzIGBERUJVR19GU2AgYW5kIGBJTkVUYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIGBQU0FNUExFYCBhbmQgYFBUUF8xNTg4X0NMT0NLX01PQ0tgIGFyZSBvcHRpb25hbCwgYnV0IGlmIHRoZXkgYXJlIHNlbGVjdGVkLCB0aGVuIGBQU0FNUExFYCBtdXN0IGJlIGRlZmluZWQuIFRoZXJlZm9yZSwganVzdCBgTkVUREVWU0lNYCBpcyBlbm91Z2guIE5vdywgSSBoYXZlIHRvIGNoZWNrIHRoZSBjb2RlIGFuZCBjb25maXJtIHRoYXQgYE5FVERFVlNJTWAgaXMgc3VmZmljaWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVERFVlNJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz02MDI9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMy1cbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MzYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSwgY29uZmlybWVkLCAqKk5FVERFVlNJTSoqIGl0IGlzIGZvciB0aGUgY29uZmlndXJhdGlvbi4gTm93LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBhcmUgYWxzbyBiZWluZyBtb2RpZmllZCwganVzdCB0byBiZSB0aG9yb3VnaC4gQWxyaWdodCwgbG9va3MgbGlrZSB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSB0YXJnZXRzIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNgLiBBaCwgYW5kIHRoZSBmdW5jdGlvbnMgYWZmZWN0ZWQgYXJlIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAg4oCTIGdvb2QgdG8ga25vdy4gTm93LCBsZXQgbWUgcXVpY2tseSBzY2FuIHRoYXQgZmlsZSBhbmQgdGhlIHBhdGNoIGFnYWluLCBqdXN0IHRvIHZlcmlmeSBpZiB0aGVyZSB3ZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdG91Y2hlZCB3aXRoaW4gdGhlIGNvZGUuIEFsd2F5cyBnb29kIHRvIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX3F1ZXVlX3N0b3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgwMT1uc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MzctXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODM4OnN0YXRpYyBpbnQgbnNpbV9xdWV1ZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnBlcl9xdWV1ZV9tZW0sIGludCBpZHgpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODM5LXtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5zaW1fcXVldWVfbWdtdF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg2Mi1cdC5uZG9fcXVldWVfc3RhcnRcdD0gbnNpbV9xdWV1ZV9zdGFydCxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4NjM6XHQubmRvX3F1ZXVlX3N0b3BcdFx0PSBuc2ltX3F1ZXVlX3N0b3AsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODY0LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzNTUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gdGhlIGNoYW5nZXM6IGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAgYXJlIHRoZSBvbmx5IGZ1bmN0aW9ucyB0aGF0IGdvdCBtb2RpZmllZC4gQXJlIHRoZXkgYWN0dWFsbHkgYWNjZXNzaWJsZT8gWWVhaCwgdGhleSYjMzk7cmUgY2FsbGVkIHRocm91Z2ggYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCBhbmQgcXVldWUgbWFuYWdlbWVudCBvcGVyYXRpb25zLiBUaGF0IG1lYW5zIHdlIGhhdmUgYSB2aWFibGUgZW50cnlwb2ludC4KCklzIGl0IHdvcnRoIGZ1enppbmcgdGhlbT8gQWJzb2x1dGVseS4gSXQmIzM5O3MgYSBzaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2UsIHdoaWNoIG1lYW5zIHdlIGNhbiBiZSBwcmV0dHkgYWdncmVzc2l2ZSB3aXRoIG91ciB0ZXN0aW5nLCBhbmQgdGhpcyBwYXRjaCAqZG9lcyogaW50cm9kdWNlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgLSB0aGUgTkFQSSBxdWV1ZSBzZXR0aW5nLiBUaGF0JiMzOTtzIGEgdGFyZ2V0LXJpY2ggZW52aXJvbm1lbnQgZm9yIGZ1enppbmcuIFdlJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSBgTkVUREVWU0lNYCBpcyBlbmFibGVkIGluIG91ciBjb25maWd1cmF0aW9uLgoKVGhlIG9idmlvdXMgZm9jdXMgc3ltYm9scyBhcmUgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYC4gVGhleSBhcmUgYXNzaWduZWQgdG8gYG5kb19xdWV1ZV9zdGFydGAgYW5kIGBuZG9fcXVldWVfc3RvcGAsIHNvIHRoZXkgYXJlICpub3QqIGlubGluZWQgYW5kIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gUGVyZmVjdC4KCk5vdywgd2FpdCBhIG1pbnV0ZS4uLiB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YW50cyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMuIEFyZSB0aGVzZSBpdD8gWWVzLCB0aGV5IGZpdCB0aGUgYmlsbCwgYnV0IGp1c3QgdG8gYmUgc3VwZXIgc2FmZSwgSSBzaG91bGQgbG9vayBmb3IgYW4gYWx0ZXJuYXRpdmUgZW50cnlwb2ludCBhcyB3ZWxsLiBXaGF0IGFib3V0IGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGA/IEkga25vdyB0aGF0IGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgIGlzIGBzdGF0aWNgLCBzbyB0aGF0JiMzOTtzIG91dC4gTGV0JiMzOTtzIGRpZyBpbnRvIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAgYW5kIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTg9c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNzctXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxNzg6aW50IG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4KVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc5LXtcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODQtfVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTg1OkVYUE9SVF9TWU1CT0xfTlNfR1BMKG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0LCBcJiMzNDtORVRERVZfSU5URVJOQUxcJiMzNDspO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjE5CgkJCQkJCQlvdXRwdXQ6IDExMQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipUaGlua2luZyBUaHJvdWdoIFNpbXVsYXRpb24gUXVldWluZyoqCgpSaWdodCwgc28gSSBuZWVkIHRvIGludGVncmF0ZSB0aGVzZSBuZXcgcXVldWluZyBjb21tYW5kcywgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCwgaW50byB0aGUgc3lzdGVtLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGFkZGluZyB0aGVtIGFzIGVudHJ5IHBvaW50cyBmb3IgdGhlIHNpbXVsYXRpb24gbWFuYWdlbWVudC4gTm93LCByZWdhcmRpbmcgdGhlIGRhdGEgaGFuZGxpbmcgcG9zdC1zaW11bGF0aW9uLCBJIHNob3VsZCBjYWxsIHRoYXQgYHNldC1yZXN1bHRzYCBmdW5jdGlvbiB0byBjYXB0dXJlIGFsbCB0aGUgcmVsZXZhbnQgZGF0YSBhbmQgZ2V0IGV2ZXJ5dGhpbmcgcHJvcGVybHkgc3RvcmVkIGFuZCBhbmFseXplZC4gU2VlbXMgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaW4gdGhlIHByb2Nlc3MsIGVuc3VyaW5nIGRhdGEgaW50ZWdyaXR5IGF0IHRoZSBjb21wbGV0aW9uIG9mIGEgc2ltdWxhdGlvbiBydW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuc2ltX3F1ZXVlX3N0YXJ0JiMzNDssCiAgICAmIzM0O25zaW1fcXVldWVfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZGV2c2ltIGRyaXZlciAoYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nKSB0byBjYWxsIG5ldGlmX3F1ZXVlX3NldF9uYXBpKCkgaW4gaXRzIHF1ZXVlIHN0YXJ0IGFuZCBzdG9wIGNhbGxiYWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGRyaXZlciwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUREVWU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnNpbV9xdWV1ZV9zdGFydCYjMzQ7LAogICAgJiMzNDtuc2ltX3F1ZXVlX3N0b3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgKGEgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2UgdXNlZCBmb3IgdGVzdGluZykgdG8gY2FsbCBuZXRpZl9xdWV1ZV9zZXRfbmFwaSgpIGluIGl0cyBxdWV1ZSBzdGFydCBhbmQgc3RvcCBjYWxsYmFja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgTkFQSSBpbnN0YW5jZXMgd2l0aCBuZXR3b3JrIGRldmljZSBxdWV1ZXMuIFRoaXMgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGFyaXNpbmcgZnJvbSB0aGVzZSBjaGFuZ2VzLCBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzIwMmQwNzYwNzNmMTIxYzdiOGJhYmY1NDZjZTFkN2NiNjYyMjU3NgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDE1IDAzOjAyOjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jCmluZGV4IDRlOWQ3ZTEwYjUyN2UuLjI5MWQzNDcxOGIyZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMKQEAgLTgwOCw2ICYjNDM7ODA4LDggQEAgbnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZywKIAogCWlmIChucy0mZ3Q7cnFfcmVzZXRfbW9kZSA9PSAxKSB7CiAJCW5zLSZndDtycVtpZHhdLSZndDtwYWdlX3Bvb2wgPSBxbWVtLSZndDtwcDsKJiM0MzsJCW5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwKJiM0MzsJCQkJICAgICAmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAkJbmFwaV9lbmFibGVfbG9ja2VkKCZhbXA7bnMtJmd0O3JxW2lkeF0tJmd0O25hcGkpOwogCQlyZXR1cm4gMDsKIAl9CkBAIC04MjYsNiAmIzQzOzgyOCw4IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsCiAJfQogCiAJbnMtJmd0O3JxW2lkeF0gPSBxbWVtLSZndDtycTsKJiM0MzsJbmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLAomIzQzOwkJCSAgICAgJmFtcDtucy0mZ3Q7cnFbaWR4XS0mZ3Q7bmFwaSk7CiAJbmFwaV9lbmFibGVfbG9ja2VkKCZhbXA7bnMtJmd0O3JxW2lkeF0tJmd0O25hcGkpOwogCiAJcmV0dXJuIDA7CkBAIC04MzgsNiAmIzQzOzg0Miw3IEBAIHN0YXRpYyBpbnQgbnNpbV9xdWV1ZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnBlcl9xdWV1ZV9tZW0sIGludCBpZHgpCiAKIAluZXRkZXZfYXNzZXJ0X2xvY2tlZChkZXYpOwogCiYjNDM7CW5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7CiAJbmFwaV9kaXNhYmxlX2xvY2tlZCgmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAogCWlmIChucy0mZ3Q7cnFfcmVzZXRfbW9kZSA9PSAxKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjc3CgkJCQkJCQlvdXRwdXQ6IDEyMgoJCQkJCQkJdGhvdWdodHM6IDc1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY2AuICBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBhY3R1YWxseS4gIFRoZXkmIzM5O3ZlIGFkZGVkIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgd2l0aGluIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuICBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGxpbmtpbmcgKG9yIHVubGlua2luZykgTkFQSSBpbnN0YW5jZXMgdG8gbmV0ZGV2IHF1ZXVlcy4gVGhhdCYjMzk7cyBhbGwuCgpMZXQgbWUgYnJlYWsgaXQgZG93bjogIEluIGBuc2ltX3F1ZXVlX3N0YXJ0YCwgd2UmIzM5O3JlIGFzc29jaWF0aW5nIHRoZSBOQVBJIHN0cnVjdCB3aXRoIHRoZSBxdWV1ZSB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiAgV2UmIzM5O3JlIGRvaW5nIGl0IGluIGJvdGggcmVzZXQgYW5kIG5vbi1yZXNldCBtb2Rlcy4gVGhlbiBpbiBgbnNpbV9xdWV1ZV9zdG9wYCwgd2UmIzM5O3JlIGNhbGxpbmcgaXQgd2l0aCBhIGBOVUxMYCBwb2ludGVyIHRvIGRpc2Fzc29jaWF0ZSB0aGVtLiAgSXTigJlzIGp1c3Qgc2V0dGluZyBvciBjbGVhcmluZyBhIHBvaW50ZXIgd2l0aGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuIE5vIGZhbmN5IGJ1c2luZXNzLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgcHVyZWx5IGFib3V0IHF1ZXVlIG1hbmFnZW1lbnQgYW5kIE5BUEkgaW50ZWdyYXRpb24uIFRoZXJlJiMzOTtzIG5vdGhpbmcgaGVyZSB0aGF0JiMzOTtzIGltbWVkaWF0ZWx5IHNjcmVhbWluZyAmIzM0O3VuaW5pdGlhbGl6ZWQgbWVtb3J5LCYjMzQ7ICYjMzQ7aW5mb3JtYXRpb24gbGVhaywmIzM0OyBvciBhbnl0aGluZyByZXF1aXJpbmcgS01TQU4mIzM5O3MgZGVlcGVyIG1lbW9yeSBpbnNwZWN0aW9uLiAgV2UmIzM5O3JlIG5vdCBpbnRyb2R1Y2luZyBuZXcgc3RydWN0dXJlcyBwYXNzZWQgdG8gdXNlciBzcGFjZSwgbm9yIGFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgYnJhbmNoZXMgY29udGluZ2VudCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gV2UmIzM5O3JlIHNpbXBseSBzZXR0aW5nIGEgcG9pbnRlciwgYW5kIGNsZWFyaW5nIGl0IGxhdGVyLgoKR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgdGhpbmdzIHdvcmssIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIHNob3VsZCBiZSBwZXJmZWN0bHkgYWRlcXVhdGUgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBpc3N1ZXMg4oCTIGxpa2UgYSB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb24gaWYgd2Ugc2NyZXcgdXAgdGhlIGBzZXRfbmFwaWAgY2FsbHMgb3IgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgbGF0ZXIuIFN0YW5kYXJkIHRvb2xzIHdpbGwgd29yayBmaW5lLiBLTVNBTiBpcyBvdmVya2lsbCBpbiB0aGlzIGNhc2UuIFdlIGRvbiYjMzk7dCBuZWVkIHRoZSBtb3JlIGhlYXZ5d2VpZ2h0IG1lbW9yeSBlcnJvciBkZXRlY3Rpb24uCgpTbywgdGhlIHZlcmRpY3QgaXM6IE5vLCB3ZSBkb24mIzM5O3QgbmVlZCBLTVNBTiBmb3IgdGhpcy4gV2UmIzM5O3JlIGdvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBjYWxscyB0byBgbmV0aWZfcXVldWVfc2V0X25hcGlgIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggbmV0d29yayBkZXZpY2UgcXVldWVzLiBUaGlzIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlc2UgY2hhbmdlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIG5ldHdvcmsgZGV2aWNlIHF1ZXVlcy4gVGhpcyBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoZXNlIGNoYW5nZXMsIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMjo1Ni44NDQ4MTE5MzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDczNjI3NTQwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuc2ltX3F1ZXVlX3N0YXJ0XCIsXG4gICAgXCJuc2ltX3F1ZXVlX3N0b3BcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBjYWxscyB0byBgbmV0aWZfcXVldWVfc2V0X25hcGlgIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggbmV0d29yayBkZXZpY2UgcXVldWVzLiBUaGlzIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlc2UgY2hhbmdlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgKGEgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2UgdXNlZCBmb3IgdGVzdGluZykgdG8gY2FsbCBuZXRpZl9xdWV1ZV9zZXRfbmFwaSgpIGluIGl0cyBxdWV1ZSBzdGFydCBhbmQgc3RvcCBjYWxsYmFja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAyOjU2Ljg0NDgxOTE5NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA1ODQ5MjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzIwMmQwNzYwNzNmMTIxYzdiOGJhYmY1NDZjZTFkN2NiNjYyMjU3NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxNSAwMzowMjo1NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcXG5pbmRleCA0ZTlkN2UxMGI1MjdlLi4yOTFkMzQ3MThiMmVmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xcbkBAIC04MDgsNiArODA4LDggQEAgbnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcXG4gXFxuIFxcdGlmIChucy1cXHUwMDNlcnFfcmVzZXRfbW9kZSA9PSAxKSB7XFxuIFxcdFxcdG5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VwYWdlX3Bvb2wgPSBxbWVtLVxcdTAwM2VwcDtcXG4rXFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbitcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZucy1cXHUwMDNlcnFbaWR4XS1cXHUwMDNlbmFwaSk7XFxuIFxcdFxcdG5hcGlfZW5hYmxlX2xvY2tlZChcXHUwMDI2bnMtXFx1MDAzZXJxW2lkeF0tXFx1MDAzZW5hcGkpO1xcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0fVxcbkBAIC04MjYsNiArODI4LDggQEAgbnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcXG4gXFx0fVxcbiBcXG4gXFx0bnMtXFx1MDAzZXJxW2lkeF0gPSBxbWVtLVxcdTAwM2VycTtcXG4rXFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbitcXHRcXHRcXHQgICAgIFxcdTAwMjZucy1cXHUwMDNlcnFbaWR4XS1cXHUwMDNlbmFwaSk7XFxuIFxcdG5hcGlfZW5hYmxlX2xvY2tlZChcXHUwMDI2bnMtXFx1MDAzZXJxW2lkeF0tXFx1MDAzZW5hcGkpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTgzOCw2ICs4NDIsNyBAQCBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxcbiBcXG4gXFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcXG4gXFxuK1xcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuIFxcdG5hcGlfZGlzYWJsZV9sb2NrZWQoXFx1MDAyNm5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VuYXBpKTtcXG4gXFxuIFxcdGlmIChucy1cXHUwMDNlcnFfcmVzZXRfbW9kZSA9PSAxKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAyOjU3LjI1MTI1OTUwM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ1NzI0ODg3MzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5zaW1fcXVldWVfc3RhcnRcIixcbiAgICBcIm5zaW1fcXVldWVfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIChhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlIHVzZWQgZm9yIHRlc3RpbmcpIHRvIGNhbGwgbmV0aWZfcXVldWVfc2V0X25hcGkoKSBpbiBpdHMgcXVldWUgc3RhcnQgYW5kIHN0b3AgY2FsbGJhY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgZHJpdmVyLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MjAyZDA3NjA3M2YxMjFjN2I4YmFiZjU0NmNlMWQ3Y2I2NjIyNTc2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDM6MDI6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbmluZGV4IDRlOWQ3ZTEwYjUyN2UuLjI5MWQzNDcxOGIyZWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xuQEAgLTgwOCw2ICs4MDgsOCBAQCBuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxuIFxuIFx0aWYgKG5zLVx1MDAzZXJxX3Jlc2V0X21vZGUgPT0gMSkge1xuIFx0XHRucy1cdTAwM2VycVtpZHhdLVx1MDAzZXBhZ2VfcG9vbCA9IHFtZW0tXHUwMDNlcHA7XG4rXHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbitcdFx0XHRcdCAgICAgXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcdFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXHRcdHJldHVybiAwO1xuIFx0fVxuQEAgLTgyNiw2ICs4MjgsOCBAQCBuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxuIFx0fVxuIFxuIFx0bnMtXHUwMDNlcnFbaWR4XSA9IHFtZW0tXHUwMDNlcnE7XG4rXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG4rXHRcdFx0ICAgICBcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXG4gXHRyZXR1cm4gMDtcbkBAIC04MzgsNiArODQyLDcgQEAgc3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcbiBcbiBcdG5ldGRldl9hc3NlcnRfbG9ja2VkKGRldik7XG4gXG4rXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuIFx0bmFwaV9kaXNhYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFxuIFx0aWYgKG5zLVx1MDAzZXJxX3Jlc2V0X21vZGUgPT0gMSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDM6MDI6NTcuMjUxMjYwOTU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxNDgzMDY0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE5ldGRldnNpbSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jYC4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgd2l0aGluIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuIEhtbSwgaW50ZXJlc3RpbmcuIFRoZSBmYWN0IHRoYXQgaXQncyBpbiB0aGUgYG5ldGRldnNpbWAgZHJpdmVyIGltbWVkaWF0ZWx5IGdldHMgbXkgYXR0ZW50aW9uLiBOZXRkZXZzaW0sIG9mIGNvdXJzZSwgaXMgdGhhdCBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSDigJMgcGVyZmVjdCBmb3IgdGVzdGluZywgYW5kIGRlZmluaXRlbHkgd2l0aGluIHRoZSBhdHRhY2sgc3VyZmFjZSBmb3IgZnV6emluZy4gR2l2ZW4gdGhhdCBpdCB0b3VjaGVzIHRob3NlIGBuc2ltX3F1ZXVlYCBmdW5jdGlvbnMsIGl04oCZcyBoaWdobHkgcHJvYmFibGUgdGhpcyBpcyBhIHJlYWNoYWJsZSBjb2RlIHBhdGguIFRoZXJlZm9yZSwgaXQgZGVmaW5pdGVseSB3YXJyYW50cyBzb21lIHNlcmlvdXMgZnV6emluZyBlZmZvcnRzLlxuXG5NeSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCB0aGVtc2VsdmVzLCB1bmRlcnN0YW5kIHRoZWlyIHB1cnBvc2Ugd2l0aGluIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIsIGFuZCBkZXRlcm1pbmUgdGhlIGNvbnRleHQgc3Vycm91bmRpbmcgdGhlc2UgbmV3IGNhbGxzLiBUbyB0aGF0IGVuZCwgSSBzaG91bGQgbG9jYXRlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBuZXRkZXZzaW1gLiBUaGF0J2xsIGdpdmUgbWUgdGhlIHZpc2liaWxpdHkgSSBuZWVkIHRvIHByb2NlZWQgd2l0aCBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjAwLjk2NjA5NTM1NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTY4MjU5NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVERFVlNJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDM6MDM6MDEuMDE3NzkxNDgxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkwNzQ5NjU4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipIdW50aW5nIERvd24gdGhlIE5ldHdvcmsgRGV2aWNlIFNpbXVsYXRvciBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIG5ldHdvcmsgZGV2aWNlIHNpbXVsYXRvciBpcyBjb25maWd1cmVkLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIExldCdzIHNlZS4uLiB0aGUgYGRyaXZlcnMvbmV0YCBkaXJlY3RvcnkgaXMgYSBsaWtlbHkgY2FuZGlkYXRlLCBhbmQgd2l0aGluIHRoYXQsIHRoZSBgbmV0ZGV2c2ltYCBzdWJkaXJlY3RvcnkgZmVlbHMgbGlrZSB0aGUgbW9zdCBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdgIGZpcnN0LiBUaGF0J3MgdGhlIHR5cGljYWwgcGxhY2UgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoaW4gYSBkcml2ZXIuIElmIHRoYXQgY29tZXMgdXAgZW1wdHksIHRoZW4gSSdsbCBicm9hZGVuIHRoZSBzZWFyY2ggc2xpZ2h0bHkgYW5kIGxvb2sgYXQgYGRyaXZlcnMvbmV0L0tjb25maWdgIGl0c2VsZjsgbWF5YmUgaXQncyBjb25maWd1cmVkIGFzIGEgbW9yZSBnZW5lcmFsIG5ldHdvcmsgZGV2aWNlLiBGaW5hbGx5LCBpZiB0aG9zZSBmYWlsLCBhIHF1aWNrIGFuZCBkaXJ0eSBgZ3JlcCBORVRERVZTSU1gIGFjcm9zcyB0aGUgZW50aXJlIGtlcm5lbCBzb3VyY2UgdHJlZSB3aWxsIG5haWwgZG93biB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucy4gTm8gbmVlZCB0byBvdmVydGhpbmsgaXQgaW5pdGlhbGx5OyBsZXQncyBzdGFydCB3aXRoIHRoZSBtb3N0IGxvZ2ljYWwgbG9jYXRpb25zIGJlZm9yZSByZXNvcnRpbmcgdG8gYnJ1dGUgZm9yY2UuIEkgcHJlZmVyIGFuIGVsZWdhbnQgc29sdXRpb24gd2hlcmUgcG9zc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MjMsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzowMy45MjUyOTA3MzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5ODE5NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjA0LjA1NTExNjIyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NjU4NTY0NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIERlcGVuZGVuY2llcyBpbiBORVRERVZTSU0qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0IGFyZSB0aGUgY29yZSBkZXBlbmRlbmNpZXMgZm9yIGBORVRERVZTSU1gP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmb3VuZGF0aW9uLiBLbm93aW5nIHRoZSB1bmRlcmx5aW5nIGxpYnJhcmllcyBhbmQgZnJhbWV3b3JrcyBpdCByZWxpZXMgb24gaXMgYWJzb2x1dGVseSBjcml0aWNhbCBmb3IgZGVidWdnaW5nLCBtb2RpZnlpbmcsIG9yIGV2ZW4ganVzdCBwcm9wZXJseSBldmFsdWF0aW5nIGl0cyBwZXJmb3JtYW5jZSBhbmQgcG90ZW50aWFsIGxpbWl0YXRpb25zLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhpbmdzIGxpa2U6IGlzIGl0IFB5dGhvbi1iYXNlZD8gSWYgc28sIHdoYXQgUHl0aG9uIHZlcnNpb24gYW5kIHdoYXQga2V5IHBhY2thZ2VzIGFyZSBpbiBwbGF5PyBXaGF0IG5ldHdvcmsgc2ltdWxhdGlvbiBsaWJyYXJpZXMgaXMgaXQgbGV2ZXJhZ2luZyDigJMgYFNpbVB5YCwgcGVyaGFwcywgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQ/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSBtb2RlbHMgb3IgbmV0d29yayBwcm90b2NvbHM/IEFyZSB0aGVyZSBleHRlcm5hbCBkYXRhIHNvdXJjZXMgb3IgdG9vbHMgaXQgdXNlcyBmb3IgaW5wdXQgb3Igb3V0cHV0PyBUaGlzIGluaXRpYWwgYXNzZXNzbWVudCBpcyBmdW5kYW1lbnRhbDsgaXQgc2hhcGVzIGhvdyBJIGFwcHJvYWNoIGV2ZXJ5dGhpbmcgZWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA4OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjA3LjAyMDk3NDkxOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwNCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYwNDpcXHRjb25maWcgTkVUREVWU0lNXFxuIDYwNTpcXHRcXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcbiA2MDY6XFx0XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbiA2MDc6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDYwODpcXHRcXHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXFxuIDYwOTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX01PQ0sgfHwgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uXFxuIDYxMDpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gNjExOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gNjEyOlxcdFxcdHNlbGVjdCBORVRfU0hBUEVSXFxuIDYxMzpcXHRcXHRoZWxwXFxuIDYxNDpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCBhbmQgc29mdHdhcmUgbW9kZWwgdGhhdCBjYW5cXG4gNjE1OlxcdFxcdCAgYmUgdXNlZCB0byB0ZXN0IHZhcmlvdXMgY29udHJvbCBwYXRoIG5ldHdvcmtpbmcgQVBJcywgZXNwZWNpYWxseVxcbiA2MTY6XFx0XFx0ICBIVy1vZmZsb2FkIHJlbGF0ZWQuXFxuIDYxNzpcXHRcXG4gNjE4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiA2MTk6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBuZXRkZXZzaW0uXFxuIDYyMDpcXHRcXG4gNjIxOlxcdGNvbmZpZyBORVRfRkFJTE9WRVJcXG4gNjIyOlxcdFxcdHRyaXN0YXRlIFxcXCJGYWlsb3ZlciBkcml2ZXJcXFwiXFxuIDYyMzpcXHRcXHRzZWxlY3QgRkFJTE9WRVJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDM6MDM6MDcuMDIxMTE5NzM4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc1NTU3NTQ1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBuZXR3b3JraW5nIGV4cGVydDpcblxuKipEZXBlbmRlbmNpZXMgYW5kIENvbnRyb2wgUG9pbnRzKipcblxuUmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gYE5FVERFVlNJTWAsIGFuZCBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIGNvcmUgZGVwZW5kZW5jaWVzLiBJIGtub3cgaXQgbGVhbnMgb24gYERFQlVHX0ZTYCBhbmQgYElORVRgLCB3aGljaCBhcmUgZmFpcmx5IHN0YW5kYXJkIGJ1aWxkaW5nIGJsb2NrcyBmb3IgdGhpcyB0eXBlIG9mIHNpbXVsYXRpb24uIE5vdywgSSB3YW50IHRvIHplcm8gaW4gb24gdGhlIHNpbXVsYXRpb24ncyBxdWV1ZSBtYW5hZ2VtZW50LCB0byBzZWUgaG93IGl0J3MgY29udHJvbGxlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgb3V0IHRoZSBzdGFydCBhbmQgc3RvcCBmdW5jdGlvbnMgZm9yIHRoZSBuZXR3b3JrIHNpbXVsYXRvcidzIHF1ZXVlLCBzbyBJJ2xsIGJlIGxvb2tpbmcgYXQgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCBuZXh0LiBUaGF0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgYW5kIHdoZXJlIEknbSBsaWtlbHkgdG8gZmluZCB0aGUgbW9zdCB1c2VmdWwgaG9va3MgZm9yIGFuYWx5c2lzIGFuZCwgcGVyaGFwcywgbW9kaWZpY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjE1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzowOS43NzY2OTc3NjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMjIyNjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fcXVldWVfc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MDA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4MDE6bnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODAyLVxcdFxcdCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTg1OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBuc2ltX3F1ZXVlX21nbXRfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg2MS1cXHQubmRvX3F1ZXVlX21lbV9mcmVlXFx0PSBuc2ltX3F1ZXVlX21lbV9mcmVlLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4NjI6XFx0Lm5kb19xdWV1ZV9zdGFydFxcdD0gbnNpbV9xdWV1ZV9zdGFydCxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODYzLVxcdC5uZG9fcXVldWVfc3RvcFxcdFxcdD0gbnNpbV9xdWV1ZV9zdG9wLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzowOS44Mjc5MjQyMDZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU1NTM3Mjg3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBcHByb2FjaCB0byBBbmFseXppbmcgdGhlIFF1ZXVlIE1hbmFnZW1lbnQgQ2FsbGJhY2tzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgYG5kb19xdWV1ZV9zdGFydGAgYW5kIGBuZG9fcXVldWVfc3RvcGAgY2FsbGJhY2tzLiBNeSBndXQgdGVsbHMgbWUgdGhlc2UgYXJlIGRlZmluaXRlbHkgdHJpZ2dlcmVkIHRocm91Z2ggbmV0bGluaywgc3lzZnMsIG9yIHdoYXRldmVyIGludGVyZmFjZSBoYW5kbGVzIHF1ZXVlIG1hbmFnZW1lbnQuIFRoZSBrZXkgaGVyZSBpcyB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBmdW5jdGlvbiB0byBmb2N1cyBvbi4gVGhleSBhcmUgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIHdyaW5rbGUgYmVjYXVzZSBpdCBzdWdnZXN0cyB0aGV5IG1pZ2h0IGJlIGlubGluZWQuIEJ1dCwgc2luY2UgdGhleSdyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycywgdGhhdCBtZWFucyB0aGV5ICp3b24ndCogYmUgaW5saW5lZC4gVGhhdCdzIGdvb2QuXG5cblRoZSBwcm9tcHQgc2F5cyB0byBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU28sIEkgbmVlZCB0byBmaW5kIHRoZSByaWdodCBlbnRyeSBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBsb29rIGF0IGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAsIG9yIGp1c3QgcGljayBvbmUuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgdGhleSdyZSBzdGF0aWMgbWVhbnMgdGhleSdyZSBwcm9iYWJseSBub3QgdGhlIGJlc3QgY2hvaWNlLiBMZXQgbWUgY2xhcmlmeSwgYmVjYXVzZSBJIGNvdWxkIGFsc28gbG9vayBhdCBgbmV0ZGV2X3F1ZXVlX3N0YXJ0YCwgYnV0IHRoYXQncyBnb2luZyB0byBiZSB0b28gZ2VuZXJpYy5cblxuSSdtIGNoZWNraW5nIGlmIHRoZXJlJ3MgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24gSSBjYW4gZm9jdXMgb24uIE1heWJlIGBuc2ltX2NyZWF0ZWA/IEknbGwgbG9vayBhdCB0aGUgYG5zaW1fcXVldWVfc3RhcnRgIGluIGBuZXRkZXZzaW0vbmV0ZGV2LmNgIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgd2F5IGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTI0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjE1LjM4MzI5OTM4NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4ODYyMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnNpbV9xdWV1ZV9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgwMD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjgwMTpuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MDItXFx0XFx0IHZvaWQgKnBlcl9xdWV1ZV9tZW0sIGludCBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5zaW1fcXVldWVfbWdtdF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODYxLVxcdC5uZG9fcXVldWVfbWVtX2ZyZWVcXHQ9IG5zaW1fcXVldWVfbWVtX2ZyZWUsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg2MjpcXHQubmRvX3F1ZXVlX3N0YXJ0XFx0PSBuc2ltX3F1ZXVlX3N0YXJ0LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjMtXFx0Lm5kb19xdWV1ZV9zdG9wXFx0XFx0PSBuc2ltX3F1ZXVlX3N0b3AsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjE1LjQzMjE5MjIwMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDgyODI3NzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYG5kb19xdWV1ZV9zdGFydGAgQ2FsbCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBjYWxsaW5nIGBuZG9fcXVldWVfc3RhcnRgLiBUaGlzIGlzIGxpa2VseSBhIGNyaXRpY2FsIHBvaW50IGluIG5ldHdvcmsgaW50ZXJmYWNlIGRyaXZlciBiZWhhdmlvciwgc28gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjay4gRmlyc3QsIEknbSB0aGlua2luZyBhYm91dCB0aGUgY29tbW9uIHBhdGhzIOKAkyBwcm9iYWJseSBpbnRlcnJ1cHQgaGFuZGxlcnMsIHRyYW5zbWl0IG9yIHJlY2VpdmUgY29tcGxldGlvbnMsIG9yIGV2ZW4gdGltZXIgY2FsbGJhY2tzLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgcmVsZXZhbnQgZHJpdmVyIGNvZGUgZm9yIHRoZSBzcGVjaWZpYyBOSUMgaW4gcXVlc3Rpb24sIGxpa2VseSBmb2N1c2luZyBvbiB0aGUgbWFqb3IgbmV0d29yayBpbnRlcmZhY2UgZnVuY3Rpb25zIGxpa2UgYG5ldGlmX3J4YCwgYG5ldGlmX3R4X3N0YXJ0YCwgb3IgYW55IGludGVycnVwdCBoYW5kbGluZyByb3V0aW5lcy4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRvIHN0YXJ0IHRoZXJlLCBhdCBsZWFzdC5cblxuSSdsbCBiZSBsb29raW5nIGZvciBkaXJlY3QgY2FsbHMgdG8gYG5kb19xdWV1ZV9zdGFydGAgd2l0aGluIHRob3NlIGZ1bmN0aW9ucywgYnV0IEkgYWxzbyBuZWVkIHRvIGJlIHdhcnkgb2YgaW5kaXJlY3QgY2FsbHMsIHBvc3NpYmx5IHRocm91Z2ggYSBsYXllciBvZiBhYnN0cmFjdGlvbiBvciBoZWxwZXIgZnVuY3Rpb25zLiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBjb3VsZCBiZSBwYXNzZWQgaW4gYXMgYSBwYXJhbWV0ZXIgdG8gdGhlIGFjdHVhbCBmdW5jdGlvbiwgb3IgYW55IGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsaW5nIGBuZG9fcXVldWVfc3RhcnRgLiBUaGUgZGF0YSBzdHJ1Y3R1cmVzIHJlbGF0ZWQgdG8gdGhlIG5ldHdvcmsgZGV2aWNlIGFyZSBnb2luZyB0byBiZSBrZXksIGVzcGVjaWFsbHkgdGhlIGBuZXRfZGV2aWNlYCBzdHJ1Y3R1cmUgYW5kIGFueXRoaW5nIHRoYXQgZGVhbHMgd2l0aCBxdWV1ZXMgb3IgdGhlIGRldmljZSdzIHN0YXRlLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBmaWVsZHMgaW4gdGhlc2Ugc3RydWN0dXJlcyBhcmUgYmVpbmcgbW9kaWZpZWQuXG5cbkknbSBtZW50YWxseSBwcmVwYXJpbmcgZm9yIHBvdGVudGlhbCBzY2VuYXJpb3M6IElzIGl0IGNhbGxlZCB1bmNvbmRpdGlvbmFsbHksIG9yIGJhc2VkIG9uIHNvbWUgc3BlY2lmaWMgY29uZGl0aW9uIChlLmcuLCBidWZmZXIgYXZhaWxhYmlsaXR5LCBsaW5rIHN0YXR1cyk/IElzIGl0IGJlaW5nIGNhbGxlZCB0byBzdGFydCB0aGUgcXVldWUgZm9yIHRyYW5zbWl0IG9yIHJlY2VpdmU/IEFyZSB0aGVyZSBsaWtlbHkgbG9ja2luZyBjb25zaWRlcmF0aW9ucyBhcm91bmQgdGhpcyBjYWxsLCBlc3BlY2lhbGx5IGlmIGl0J3MgaW4gYSBtdWx0aS10aHJlYWRlZCBjb250ZXh0PyBEZWJ1Z2dpbmcgdGhpcyBjb3VsZCBiZSB0cmlja3ksIEknbGwgcHJvYmFibHkgbmVlZCB0byBjb25zaWRlciBicmVha3BvaW50cyBvciB0cmFjZXBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA0OCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjE5LjUxNTAyMzU2NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEyODYxODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5kb19xdWV1ZV9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTk4PXN0YXRpYyBpbnQgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMDgtXFx0aWYgKCFxb3BzIHx8ICFxb3BzLVxcdTAwM2VuZG9fcXVldWVfc3RvcCB8fCAhcW9wcy1cXHUwMDNlbmRvX3F1ZXVlX21lbV9mcmVlIHx8XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTA5OlxcdCAgICAhcW9wcy1cXHUwMDNlbmRvX3F1ZXVlX21lbV9hbGxvYyB8fCAhcW9wcy1cXHUwMDNlbmRvX3F1ZXVlX3N0YXJ0KVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTExMC1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMzYtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTM3OlxcdFxcdGVyciA9IHFvcHMtXFx1MDAzZW5kb19xdWV1ZV9zdGFydChkZXYsIHFjZmdfbmV3LCBuZXdfbWVtLCByeHFfaWR4KTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMzgtXFx0XFx0aWYgKGVycilcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE1OC1cXHQgKi9cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxNTk6XFx0aWYgKHFvcHMtXFx1MDAzZW5kb19xdWV1ZV9zdGFydChkZXYsIHFjZmdfb2xkLCBvbGRfbWVtLCByeHFfaWR4KSkge1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE2MC1cXHRcXHRXQVJOKDEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjE5LjgyNzg5MTA3MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODQ3MTkzMzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipEaXNzZWN0aW5nIHRoZSBOZXR3b3JrIEludGVyZmFjZSBSZWNvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgdHJhY2UgaW5kaWNhdGVzIGEgY2FsbCB0byBgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnYC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIHdlJ3JlIGxvb2tpbmcgYXQuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBwYWlyIHRoYXQgd2l0aCBhIHJldmlldyBvZiBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgIGFzIHdlbGwuIFRoZXkncmUgcmVsYXRlZC4gV2hpbGUgcmVjb25maWcgbGlrZWx5IGhhbmRsZXMgdGhlICppbml0aWFsKiBzZXR1cCBvciBjaGFuZ2VzIHRvIHRoZSByZWNlaXZlIHF1ZXVlLCByZXN0YXJ0IG1pZ2h0IGJlIGludm9rZWQgdG8gaGFuZGxlIHRlbXBvcmFyeSBwYXVzZXMgb3IgcmVzdW1wdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9uIGFuZCBzZXF1ZW5jZSBvZiBldmVudHMgYmV0d2VlbiB0aGVzZSB0d28gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGVudGlyZSByZWNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBob3cgdGhleSdyZSB1c2VkIGFuZCBob3cgdGhleSByZWxhdGUhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3OTksIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzoyMi42NzUwODcxMjVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTk4MTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTk4PXN0YXRpYyBpbnQgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNzctXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTc4OmludCBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeClcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNzkte1xcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg0LX1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODU6RVhQT1JUX1NZTUJPTF9OU19HUEwobmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQsIFxcXCJORVRERVZfSU5URVJOQUxcXFwiKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjIyLjcyMTI4ODA5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MDYyOTc5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCBFeHBvcnQqKlxuXG5BbHJpZ2h0LCBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgIGlzIHNob3dpbmcgdXAgYXMgZXhwb3J0ZWQuIEhtbSwgdGhhdCdzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aG8gbWlnaHQgYmUgcmVseWluZyBvbiB0aGlzIGZ1bmN0aW9uLiBUaW1lIHRvIGRpZyBpbnRvIGl0cyBjYWxsIHNpdGVzLiBMZXQncyBzdGFydCB3aXRoIGEgY2hlY2sgb24gdGhlIGNhbGxlcnMgb2YgYG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZ2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGluaXRpYWwgc2Vuc2Ugb2YgdGhlIGRlcGVuZGVuY2llcyBhbmQgY3JpdGljYWwgcGF0aHMgcmVsYXRlZCB0byB0aGlzIHJlc3RhcnQgZnVuY3Rpb24uIFRoaXMgaXMga2V5IHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiBhbnkgY2hhbmdlcyBvciBwb3RlbnRpYWwgcmVmYWN0b3JpbmcgZG93biB0aGUgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI0MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjI1LjMyNzU4OTE2OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0MjIwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz05MT1ib29sIG5ldGlmX3J4cV9oYXNfbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy05Ny1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzo5ODpzdGF0aWMgaW50IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTk5LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE3OD1pbnQgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODItXFx0bmV0ZGV2X3F1ZXVlX2NvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODM6XFx0cmV0dXJuIG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnLCBcXHUwMDI2cWNmZyk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg0LX1cXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4Nz1zdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yMzMtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjM0OlxcdHJldCA9IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnWzBdLCBcXHUwMDI2cWNmZ1sxXSk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjM1LVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz0yNzg9c3RhdGljIHZvaWQgX19uZXRpZl9tcF9jbG9zZV9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0zMDEtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MzAyOlxcdGVyciA9IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnWzBdLCBcXHUwMDI2cWNmZ1sxXSk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMzAzLVxcdFdBUk5fT04oZXJyIFxcdTAwMjZcXHUwMDI2IGVyciAhPSAtRU5FVERPV04pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzoyNS4zNzQwMTcwNDRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQzNTA5MDEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYE5FVERFVlNJTWAgTW9kdWxlJ3MgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb24gQ2FsbHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhpcyBgTkVUREVWU0lNYCBtb2R1bGUgaXMgY29uZmlndXJlZCBhbmQgaG93IGl0J3MgZnVuY3Rpb25pbmcgaW50ZXJuYWxseS4gTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgY2VudGVyZWQgYXJvdW5kIHRoZSBjYWxscyB0byBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgLCBgX19uZXRpZl9tcF9vcGVuX3J4cWAsIGFuZCBgX19uZXRpZl9tcF9jbG9zZV9yeHFgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGxpa2VseSB0cmlnZ2VyZWQgYnkgZWl0aGVyIGBldGh0b29sYCBvciB2aWEgYG5ldGxpbmtgIGNhbGxzLCB3aGljaCBpcyB0eXBpY2FsIGZvciBtYW5hZ2luZyBuZXR3b3JrIGRldmljZSBpbnRlcmZhY2VzLlxuXG5JIHdhbnQgdG8gc2VlIGlmIEkgY2FuIG5hcnJvdyBteSBmb2N1cyBhbmQganVzdCB6ZXJvIGluIG9uIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuIFRoZXkgYXJlIGRlY2xhcmVkIGBzdGF0aWNgIHdoaWNoIGluaXRpYWxseSBtYWtlcyBtZSB0aGluayB0aGV5IG1pZ2h0IGJlIGlubGluZWQuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBzaW5jZSB0aGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuIChtZWFuaW5nIHRoZXkgYXJlIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMpLCB0aGV5ICpjYW4ndCogYmUgaW5saW5lZC4gVGh1cywgdGhleSAqc2hvdWxkKiBhcHBlYXIgaW4gdGhlIHN5bWJvbCB0YWJsZS4gSG93ZXZlciwgc2luY2UgdGhlIHN5bWJvbHMgYXJlIHN0YXRpYywgdGhleSBtYXkgbm90LlxuXG5CdXQsIGJhY2sgdG8gbXkgb3JpZ2luYWwgcGxhbi4gU2hvdWxkIEkgcmVhbGx5IGJlIGZvY3VzaW5nIG9uIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGA/IEknbGwgc3RpY2sgd2l0aCBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIGZvciBub3cuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uLiBJdCdzIHVzaW5nIGBORVRERVZTSU1gLCBvZiBjb3Vyc2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgTkVUREVWU0lNYCBkb2Vzbid0IGRlcGVuZCBvbiBvdGhlciBjb25maWd1cmF0aW9ucyB0byBiZSBlbmFibGVkLiBJIHNlZSB0aGF0IGl0IHJlcXVpcmVzIGBERUJVR19GU2AgYW5kIGBJTkVUYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIGBQU0FNUExFYCBhbmQgYFBUUF8xNTg4X0NMT0NLX01PQ0tgIGFyZSBvcHRpb25hbCwgYnV0IGlmIHRoZXkgYXJlIHNlbGVjdGVkLCB0aGVuIGBQU0FNUExFYCBtdXN0IGJlIGRlZmluZWQuIFRoZXJlZm9yZSwganVzdCBgTkVUREVWU0lNYCBpcyBlbm91Z2guIE5vdywgSSBoYXZlIHRvIGNoZWNrIHRoZSBjb2RlIGFuZCBjb25maXJtIHRoYXQgYE5FVERFVlNJTWAgaXMgc3VmZmljaWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAxOSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzozMC44MDkxMTAxODdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDMxNzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTYwMj1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctNjAzLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzozMC44NTUxNTU3MzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3NjM5NjQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCBjb25maXJtZWQsICoqTkVUREVWU0lNKiogaXQgaXMgZm9yIHRoZSBjb25maWd1cmF0aW9uLiBOb3csIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIGZpbGVzIHRoYXQgYXJlIGFsc28gYmVpbmcgbW9kaWZpZWQsIGp1c3QgdG8gYmUgdGhvcm91Z2guIEFscmlnaHQsIGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jYC4gQWgsIGFuZCB0aGUgZnVuY3Rpb25zIGFmZmVjdGVkIGFyZSBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIOKAkyBnb29kIHRvIGtub3cuIE5vdywgbGV0IG1lIHF1aWNrbHkgc2NhbiB0aGF0IGZpbGUgYW5kIHRoZSBwYXRjaCBhZ2FpbiwganVzdCB0byB2ZXJpZnkgaWYgdGhlcmUgd2VyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRvdWNoZWQgd2l0aGluIHRoZSBjb2RlLiBBbHdheXMgZ29vZCB0byBoYXZlIGEgY29tcGxldGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgzNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjMzLjkzMTU1NTA1M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk0NjE4ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnNpbV9xdWV1ZV9zdG9wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODAxPW5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODM3LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4Mzg6c3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04NTg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgbnNpbV9xdWV1ZV9tZ210X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjItXFx0Lm5kb19xdWV1ZV9zdGFydFxcdD0gbnNpbV9xdWV1ZV9zdGFydCxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODYzOlxcdC5uZG9fcXVldWVfc3RvcFxcdFxcdD0gbnNpbV9xdWV1ZV9zdG9wLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjQtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDM6MDM6MzMuOTgxMDIyNzk4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNjA3MzU3MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCoqXG5cbk9rYXksIHNvIEkndmUgemVyb2VkIGluIG9uIHRoZSBjaGFuZ2VzOiBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIGFyZSB0aGUgb25seSBmdW5jdGlvbnMgdGhhdCBnb3QgbW9kaWZpZWQuIEFyZSB0aGV5IGFjdHVhbGx5IGFjY2Vzc2libGU/IFllYWgsIHRoZXkncmUgY2FsbGVkIHRocm91Z2ggYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCBhbmQgcXVldWUgbWFuYWdlbWVudCBvcGVyYXRpb25zLiBUaGF0IG1lYW5zIHdlIGhhdmUgYSB2aWFibGUgZW50cnlwb2ludC5cblxuSXMgaXQgd29ydGggZnV6emluZyB0aGVtPyBBYnNvbHV0ZWx5LiBJdCdzIGEgc2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlLCB3aGljaCBtZWFucyB3ZSBjYW4gYmUgcHJldHR5IGFnZ3Jlc3NpdmUgd2l0aCBvdXIgdGVzdGluZywgYW5kIHRoaXMgcGF0Y2ggKmRvZXMqIGludHJvZHVjZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIC0gdGhlIE5BUEkgcXVldWUgc2V0dGluZy4gVGhhdCdzIGEgdGFyZ2V0LXJpY2ggZW52aXJvbm1lbnQgZm9yIGZ1enppbmcuIFdlJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIGBORVRERVZTSU1gIGlzIGVuYWJsZWQgaW4gb3VyIGNvbmZpZ3VyYXRpb24uXG5cblRoZSBvYnZpb3VzIGZvY3VzIHN5bWJvbHMgYXJlIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuIFRoZXkgYXJlIGFzc2lnbmVkIHRvIGBuZG9fcXVldWVfc3RhcnRgIGFuZCBgbmRvX3F1ZXVlX3N0b3BgLCBzbyB0aGV5IGFyZSAqbm90KiBpbmxpbmVkIGFuZCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIFBlcmZlY3QuXG5cbk5vdywgd2FpdCBhIG1pbnV0ZS4uLiB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YW50cyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMuIEFyZSB0aGVzZSBpdD8gWWVzLCB0aGV5IGZpdCB0aGUgYmlsbCwgYnV0IGp1c3QgdG8gYmUgc3VwZXIgc2FmZSwgSSBzaG91bGQgbG9vayBmb3IgYW4gYWx0ZXJuYXRpdmUgZW50cnlwb2ludCBhcyB3ZWxsLiBXaGF0IGFib3V0IGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGA/IEkga25vdyB0aGF0IGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgIGlzIGBzdGF0aWNgLCBzbyB0aGF0J3Mgb3V0LiBMZXQncyBkaWcgaW50byBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgIGFuZCBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzU1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjM5LjE0MTc2MTA0NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2NDQ3NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTg9c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE3Ny1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxNzg6aW50IG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4KVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE3OS17XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODQtfVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE4NTpFWFBPUlRfU1lNQk9MX05TX0dQTChuZXRkZXZfcnhfcXVldWVfcmVzdGFydCwgXFxcIk5FVERFVl9JTlRFUk5BTFxcXCIpO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDM6MDM6MzkuMTg4NDFaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMzU4NDM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqVGhpbmtpbmcgVGhyb3VnaCBTaW11bGF0aW9uIFF1ZXVpbmcqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGludGVncmF0ZSB0aGVzZSBuZXcgcXVldWluZyBjb21tYW5kcywgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCwgaW50byB0aGUgc3lzdGVtLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGFkZGluZyB0aGVtIGFzIGVudHJ5IHBvaW50cyBmb3IgdGhlIHNpbXVsYXRpb24gbWFuYWdlbWVudC4gTm93LCByZWdhcmRpbmcgdGhlIGRhdGEgaGFuZGxpbmcgcG9zdC1zaW11bGF0aW9uLCBJIHNob3VsZCBjYWxsIHRoYXQgYHNldC1yZXN1bHRzYCBmdW5jdGlvbiB0byBjYXB0dXJlIGFsbCB0aGUgcmVsZXZhbnQgZGF0YSBhbmQgZ2V0IGV2ZXJ5dGhpbmcgcHJvcGVybHkgc3RvcmVkIGFuZCBhbmFseXplZC4gU2VlbXMgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaW4gdGhlIHByb2Nlc3MsIGVuc3VyaW5nIGRhdGEgaW50ZWdyaXR5IGF0IHRoZSBjb21wbGV0aW9uIG9mIGEgc2ltdWxhdGlvbiBydW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMTksIk91dHB1dFRva2VucyI6MTExLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDM6MDM6NDIuOTAxOTk4MDM0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQxNDYxNTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5zaW1fcXVldWVfc3RhcnRcIixcbiAgICBcIm5zaW1fcXVldWVfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIChhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlIHVzZWQgZm9yIHRlc3RpbmcpIHRvIGNhbGwgbmV0aWZfcXVldWVfc2V0X25hcGkoKSBpbiBpdHMgcXVldWUgc3RhcnQgYW5kIHN0b3AgY2FsbGJhY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgZHJpdmVyLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5zaW1fcXVldWVfc3RhcnRcIixcbiAgICBcIm5zaW1fcXVldWVfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIChhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlIHVzZWQgZm9yIHRlc3RpbmcpIHRvIGNhbGwgbmV0aWZfcXVldWVfc2V0X25hcGkoKSBpbiBpdHMgcXVldWUgc3RhcnQgYW5kIHN0b3AgY2FsbGJhY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgZHJpdmVyLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzo0Mi45NzYxNTA2MDZaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MDQ5MjQzMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzo0Mi45NzY1Njk4MTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODYwNDQ5OTQ3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgTkFQSSBpbnN0YW5jZXMgd2l0aCBuZXR3b3JrIGRldmljZSBxdWV1ZXMuIFRoaXMgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGFyaXNpbmcgZnJvbSB0aGVzZSBjaGFuZ2VzLCBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MjAyZDA3NjA3M2YxMjFjN2I4YmFiZjU0NmNlMWQ3Y2I2NjIyNTc2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDM6MDI6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbmluZGV4IDRlOWQ3ZTEwYjUyN2UuLjI5MWQzNDcxOGIyZWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xuQEAgLTgwOCw2ICs4MDgsOCBAQCBuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxuIFxuIFx0aWYgKG5zLVx1MDAzZXJxX3Jlc2V0X21vZGUgPT0gMSkge1xuIFx0XHRucy1cdTAwM2VycVtpZHhdLVx1MDAzZXBhZ2VfcG9vbCA9IHFtZW0tXHUwMDNlcHA7XG4rXHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbitcdFx0XHRcdCAgICAgXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcdFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXHRcdHJldHVybiAwO1xuIFx0fVxuQEAgLTgyNiw2ICs4MjgsOCBAQCBuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxuIFx0fVxuIFxuIFx0bnMtXHUwMDNlcnFbaWR4XSA9IHFtZW0tXHUwMDNlcnE7XG4rXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG4rXHRcdFx0ICAgICBcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXG4gXHRyZXR1cm4gMDtcbkBAIC04MzgsNiArODQyLDcgQEAgc3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcbiBcbiBcdG5ldGRldl9hc3NlcnRfbG9ja2VkKGRldik7XG4gXG4rXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuIFx0bmFwaV9kaXNhYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFxuIFx0aWYgKG5zLVx1MDAzZXJxX3Jlc2V0X21vZGUgPT0gMSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDM6MDM6NDIuOTc2NTcyMDc2WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2MDQ0Nzc2ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jYC4gIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYWN0dWFsbHkuICBUaGV5J3ZlIGFkZGVkIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgd2l0aGluIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuICBTcGVjaWZpY2FsbHksIGl0J3MgbGlua2luZyAob3IgdW5saW5raW5nKSBOQVBJIGluc3RhbmNlcyB0byBuZXRkZXYgcXVldWVzLiBUaGF0J3MgYWxsLlxuXG5MZXQgbWUgYnJlYWsgaXQgZG93bjogIEluIGBuc2ltX3F1ZXVlX3N0YXJ0YCwgd2UncmUgYXNzb2NpYXRpbmcgdGhlIE5BUEkgc3RydWN0IHdpdGggdGhlIHF1ZXVlIHVzaW5nIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAuICBXZSdyZSBkb2luZyBpdCBpbiBib3RoIHJlc2V0IGFuZCBub24tcmVzZXQgbW9kZXMuIFRoZW4gaW4gYG5zaW1fcXVldWVfc3RvcGAsIHdlJ3JlIGNhbGxpbmcgaXQgd2l0aCBhIGBOVUxMYCBwb2ludGVyIHRvIGRpc2Fzc29jaWF0ZSB0aGVtLiAgSXTigJlzIGp1c3Qgc2V0dGluZyBvciBjbGVhcmluZyBhIHBvaW50ZXIgd2l0aGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuIE5vIGZhbmN5IGJ1c2luZXNzLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBwdXJlbHkgYWJvdXQgcXVldWUgbWFuYWdlbWVudCBhbmQgTkFQSSBpbnRlZ3JhdGlvbi4gVGhlcmUncyBub3RoaW5nIGhlcmUgdGhhdCdzIGltbWVkaWF0ZWx5IHNjcmVhbWluZyBcInVuaW5pdGlhbGl6ZWQgbWVtb3J5LFwiIFwiaW5mb3JtYXRpb24gbGVhayxcIiBvciBhbnl0aGluZyByZXF1aXJpbmcgS01TQU4ncyBkZWVwZXIgbWVtb3J5IGluc3BlY3Rpb24uICBXZSdyZSBub3QgaW50cm9kdWNpbmcgbmV3IHN0cnVjdHVyZXMgcGFzc2VkIHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGJyYW5jaGVzIGNvbnRpbmdlbnQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFdlJ3JlIHNpbXBseSBzZXR0aW5nIGEgcG9pbnRlciwgYW5kIGNsZWFyaW5nIGl0IGxhdGVyLlxuXG5HaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSB0aGluZ3Mgd29yaywgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgc2hvdWxkIGJlIHBlcmZlY3RseSBhZGVxdWF0ZSB0byBjYXRjaCBhbnkgcG90ZW50aWFsIGlzc3VlcyDigJMgbGlrZSBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiBpZiB3ZSBzY3JldyB1cCB0aGUgYHNldF9uYXBpYCBjYWxscyBvciBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBsYXRlci4gU3RhbmRhcmQgdG9vbHMgd2lsbCB3b3JrIGZpbmUuIEtNU0FOIGlzIG92ZXJraWxsIGluIHRoaXMgY2FzZS4gV2UgZG9uJ3QgbmVlZCB0aGUgbW9yZSBoZWF2eXdlaWdodCBtZW1vcnkgZXJyb3IgZGV0ZWN0aW9uLlxuXG5TbywgdGhlIHZlcmRpY3QgaXM6IE5vLCB3ZSBkb24ndCBuZWVkIEtNU0FOIGZvciB0aGlzLiBXZSdyZSBnb29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjc3LCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjUxLjU4MTA1MjI3WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIG5ldHdvcmsgZGV2aWNlIHF1ZXVlcy4gVGhpcyBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoZXNlIGNoYW5nZXMsIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBjYWxscyB0byBgbmV0aWZfcXVldWVfc2V0X25hcGlgIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggbmV0d29yayBkZXZpY2UgcXVldWVzLiBUaGlzIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlc2UgY2hhbmdlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs2f5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-15 03:01:05 +0000 UTC FinishedAt: 2026-08-15 03:03:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a59f57e2aa127c5354168d2ec4bac920df1be4f4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a59f57e2aa127c5354168d2ec4bac920df1be4f4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "abe1b4fa-3803-4bf9-bc71-a84f298be3cc" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "nsim_queue_start", "nsim_queue_stop" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25zaW1fcXVldWVfc3RhcnQmIzM0OywKICAgICYjMzQ7bnNpbV9xdWV1ZV9zdG9wJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgTkFQSSBpbnN0YW5jZXMgd2l0aCBuZXR3b3JrIGRldmljZSBxdWV1ZXMuIFRoaXMgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGFyaXNpbmcgZnJvbSB0aGVzZSBjaGFuZ2VzLCBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgKGEgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2UgdXNlZCBmb3IgdGVzdGluZykgdG8gY2FsbCBuZXRpZl9xdWV1ZV9zZXRfbmFwaSgpIGluIGl0cyBxdWV1ZSBzdGFydCBhbmQgc3RvcCBjYWxsYmFja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MjAyZDA3NjA3M2YxMjFjN2I4YmFiZjU0NmNlMWQ3Y2I2NjIyNTc2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDM6MDI6NTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG5pbmRleCA0ZTlkN2UxMGI1MjdlLi4yOTFkMzQ3MThiMmVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbkBAIC04MDgsNiAmIzQzOzgwOCw4IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG4gXG4gXHRpZiAobnMtXHUwMDNlcnFfcmVzZXRfbW9kZSA9PSAxKSB7XG4gXHRcdG5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlcGFnZV9wb29sID0gcW1lbS1cdTAwM2VwcDtcbiYjNDM7XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbiYjNDM7XHRcdFx0XHQgICAgIFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXHRcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbkBAIC04MjYsNiAmIzQzOzgyOCw4IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG4gXHR9XG4gXG4gXHRucy1cdTAwM2VycVtpZHhdID0gcW1lbS1cdTAwM2VycTtcbiYjNDM7XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG4mIzQzO1x0XHRcdCAgICAgXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtODM4LDYgJiM0Mzs4NDIsNyBAQCBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxuIFxuIFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcbiBcbiYjNDM7XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuIFx0bmFwaV9kaXNhYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFxuIFx0aWYgKG5zLVx1MDAzZXJxX3Jlc2V0X21vZGUgPT0gMSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuc2ltX3F1ZXVlX3N0YXJ0JiMzNDssCiAgICAmIzM0O25zaW1fcXVldWVfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZGV2c2ltIGRyaXZlciAoYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nKSB0byBjYWxsIG5ldGlmX3F1ZXVlX3NldF9uYXBpKCkgaW4gaXRzIHF1ZXVlIHN0YXJ0IGFuZCBzdG9wIGNhbGxiYWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGRyaXZlciwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcyMDJkMDc2MDczZjEyMWM3YjhiYWJmNTQ2Y2UxZDdjYjY2MjI1NzYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxNSAwMzowMjo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYwppbmRleCA0ZTlkN2UxMGI1MjdlLi4yOTFkMzQ3MThiMmVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jCkBAIC04MDgsNiAmIzQzOzgwOCw4IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsCiAKIAlpZiAobnMtJmd0O3JxX3Jlc2V0X21vZGUgPT0gMSkgewogCQlucy0mZ3Q7cnFbaWR4XS0mZ3Q7cGFnZV9wb29sID0gcW1lbS0mZ3Q7cHA7CiYjNDM7CQluZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsCiYjNDM7CQkJCSAgICAgJmFtcDtucy0mZ3Q7cnFbaWR4XS0mZ3Q7bmFwaSk7CiAJCW5hcGlfZW5hYmxlX2xvY2tlZCgmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAkJcmV0dXJuIDA7CiAJfQpAQCAtODI2LDYgJiM0Mzs4MjgsOCBAQCBuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLAogCX0KIAogCW5zLSZndDtycVtpZHhdID0gcW1lbS0mZ3Q7cnE7CiYjNDM7CW5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwKJiM0MzsJCQkgICAgICZhbXA7bnMtJmd0O3JxW2lkeF0tJmd0O25hcGkpOwogCW5hcGlfZW5hYmxlX2xvY2tlZCgmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAogCXJldHVybiAwOwpAQCAtODM4LDYgJiM0Mzs4NDIsNyBAQCBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KQogCiAJbmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTsKIAomIzQzOwluZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpOwogCW5hcGlfZGlzYWJsZV9sb2NrZWQoJmFtcDtucy0mZ3Q7cnFbaWR4XS0mZ3Q7bmFwaSk7CiAKIAlpZiAobnMtJmd0O3JxX3Jlc2V0X21vZGUgPT0gMSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjgwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTmV0ZGV2c2ltIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBwb2tpbmcgYXJvdW5kIGluIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNgLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgd2l0aGluIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuIEhtbSwgaW50ZXJlc3RpbmcuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgaW4gdGhlIGBuZXRkZXZzaW1gIGRyaXZlciBpbW1lZGlhdGVseSBnZXRzIG15IGF0dGVudGlvbi4gTmV0ZGV2c2ltLCBvZiBjb3Vyc2UsIGlzIHRoYXQgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2Ug4oCTIHBlcmZlY3QgZm9yIHRlc3RpbmcsIGFuZCBkZWZpbml0ZWx5IHdpdGhpbiB0aGUgYXR0YWNrIHN1cmZhY2UgZm9yIGZ1enppbmcuIEdpdmVuIHRoYXQgaXQgdG91Y2hlcyB0aG9zZSBgbnNpbV9xdWV1ZWAgZnVuY3Rpb25zLCBpdOKAmXMgaGlnaGx5IHByb2JhYmxlIHRoaXMgaXMgYSByZWFjaGFibGUgY29kZSBwYXRoLiBUaGVyZWZvcmUsIGl0IGRlZmluaXRlbHkgd2FycmFudHMgc29tZSBzZXJpb3VzIGZ1enppbmcgZWZmb3J0cy4KCk15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIHRoZW1zZWx2ZXMsIHVuZGVyc3RhbmQgdGhlaXIgcHVycG9zZSB3aXRoaW4gdGhlIGBuZXRkZXZzaW1gIGRyaXZlciwgYW5kIGRldGVybWluZSB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aGVzZSBuZXcgY2FsbHMuIFRvIHRoYXQgZW5kLCBJIHNob3VsZCBsb2NhdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYG5ldGRldnNpbWAuIFRoYXQmIzM5O2xsIGdpdmUgbWUgdGhlIHZpc2liaWxpdHkgSSBuZWVkIHRvIHByb2NlZWQgd2l0aCBteSBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRERVZTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyMwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqSHVudGluZyBEb3duIHRoZSBOZXR3b3JrIERldmljZSBTaW11bGF0b3IgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgbmV0d29yayBkZXZpY2Ugc2ltdWxhdG9yIGlzIGNvbmZpZ3VyZWQuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgYGRyaXZlcnMvbmV0YCBkaXJlY3RvcnkgaXMgYSBsaWtlbHkgY2FuZGlkYXRlLCBhbmQgd2l0aGluIHRoYXQsIHRoZSBgbmV0ZGV2c2ltYCBzdWJkaXJlY3RvcnkgZmVlbHMgbGlrZSB0aGUgbW9zdCBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdgIGZpcnN0LiBUaGF0JiMzOTtzIHRoZSB0eXBpY2FsIHBsYWNlIGZvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIGEgZHJpdmVyLiBJZiB0aGF0IGNvbWVzIHVwIGVtcHR5LCB0aGVuIEkmIzM5O2xsIGJyb2FkZW4gdGhlIHNlYXJjaCBzbGlnaHRseSBhbmQgbG9vayBhdCBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgaXRzZWxmOyBtYXliZSBpdCYjMzk7cyBjb25maWd1cmVkIGFzIGEgbW9yZSBnZW5lcmFsIG5ldHdvcmsgZGV2aWNlLiBGaW5hbGx5LCBpZiB0aG9zZSBmYWlsLCBhIHF1aWNrIGFuZCBkaXJ0eSBgZ3JlcCBORVRERVZTSU1gIGFjcm9zcyB0aGUgZW50aXJlIGtlcm5lbCBzb3VyY2UgdHJlZSB3aWxsIG5haWwgZG93biB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucy4gTm8gbmVlZCB0byBvdmVydGhpbmsgaXQgaW5pdGlhbGx5OyBsZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgbW9zdCBsb2dpY2FsIGxvY2F0aW9ucyBiZWZvcmUgcmVzb3J0aW5nIHRvIGJydXRlIGZvcmNlLiBJIHByZWZlciBhbiBlbGVnYW50IHNvbHV0aW9uIHdoZXJlIHBvc3NpYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRERVZTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz02MDI9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMy1cbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA4OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIERlcGVuZGVuY2llcyBpbiBORVRERVZTSU0qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQgYXJlIHRoZSBjb3JlIGRlcGVuZGVuY2llcyBmb3IgYE5FVERFVlNJTWA/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGZvdW5kYXRpb24uIEtub3dpbmcgdGhlIHVuZGVybHlpbmcgbGlicmFyaWVzIGFuZCBmcmFtZXdvcmtzIGl0IHJlbGllcyBvbiBpcyBhYnNvbHV0ZWx5IGNyaXRpY2FsIGZvciBkZWJ1Z2dpbmcsIG1vZGlmeWluZywgb3IgZXZlbiBqdXN0IHByb3Blcmx5IGV2YWx1YXRpbmcgaXRzIHBlcmZvcm1hbmNlIGFuZCBwb3RlbnRpYWwgbGltaXRhdGlvbnMuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhpbmdzIGxpa2U6IGlzIGl0IFB5dGhvbi1iYXNlZD8gSWYgc28sIHdoYXQgUHl0aG9uIHZlcnNpb24gYW5kIHdoYXQga2V5IHBhY2thZ2VzIGFyZSBpbiBwbGF5PyBXaGF0IG5ldHdvcmsgc2ltdWxhdGlvbiBsaWJyYXJpZXMgaXMgaXQgbGV2ZXJhZ2luZyDigJMgYFNpbVB5YCwgcGVyaGFwcywgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQ/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSBtb2RlbHMgb3IgbmV0d29yayBwcm90b2NvbHM/IEFyZSB0aGVyZSBleHRlcm5hbCBkYXRhIHNvdXJjZXMgb3IgdG9vbHMgaXQgdXNlcyBmb3IgaW5wdXQgb3Igb3V0cHV0PyBUaGlzIGluaXRpYWwgYXNzZXNzbWVudCBpcyBmdW5kYW1lbnRhbDsgaXQgc2hhcGVzIGhvdyBJIGFwcHJvYWNoIGV2ZXJ5dGhpbmcgZWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MDQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYwNDpcdGNvbmZpZyBORVRERVZTSU1cbiA2MDU6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuIDYwNjpcdFx0ZGVwZW5kcyBvbiBERUJVR19GU1xuIDYwNzpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gNjA4Olx0XHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXG4gNjA5Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX01PQ0sgfHwgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uXG4gNjEwOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiA2MTE6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiA2MTI6XHRcdHNlbGVjdCBORVRfU0hBUEVSXG4gNjEzOlx0XHRoZWxwXG4gNjE0Olx0XHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCBhbmQgc29mdHdhcmUgbW9kZWwgdGhhdCBjYW5cbiA2MTU6XHRcdCAgYmUgdXNlZCB0byB0ZXN0IHZhcmlvdXMgY29udHJvbCBwYXRoIG5ldHdvcmtpbmcgQVBJcywgZXNwZWNpYWxseVxuIDYxNjpcdFx0ICBIVy1vZmZsb2FkIHJlbGF0ZWQuXG4gNjE3Olx0XG4gNjE4Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiA2MTk6XHRcdCAgd2lsbCBiZSBjYWxsZWQgbmV0ZGV2c2ltLlxuIDYyMDpcdFxuIDYyMTpcdGNvbmZpZyBORVRfRkFJTE9WRVJcbiA2MjI6XHRcdHRyaXN0YXRlIFwmIzM0O0ZhaWxvdmVyIGRyaXZlclwmIzM0O1xuIDYyMzpcdFx0c2VsZWN0IEZBSUxPVkVSXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYxNQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBuZXR3b3JraW5nIGV4cGVydDoKCioqRGVwZW5kZW5jaWVzIGFuZCBDb250cm9sIFBvaW50cyoqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gYE5FVERFVlNJTWAsIGFuZCBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIGNvcmUgZGVwZW5kZW5jaWVzLiBJIGtub3cgaXQgbGVhbnMgb24gYERFQlVHX0ZTYCBhbmQgYElORVRgLCB3aGljaCBhcmUgZmFpcmx5IHN0YW5kYXJkIGJ1aWxkaW5nIGJsb2NrcyBmb3IgdGhpcyB0eXBlIG9mIHNpbXVsYXRpb24uIE5vdywgSSB3YW50IHRvIHplcm8gaW4gb24gdGhlIHNpbXVsYXRpb24mIzM5O3MgcXVldWUgbWFuYWdlbWVudCwgdG8gc2VlIGhvdyBpdCYjMzk7cyBjb250cm9sbGVkLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBvdXQgdGhlIHN0YXJ0IGFuZCBzdG9wIGZ1bmN0aW9ucyBmb3IgdGhlIG5ldHdvcmsgc2ltdWxhdG9yJiMzOTtzIHF1ZXVlLCBzbyBJJiMzOTtsbCBiZSBsb29raW5nIGF0IGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAgbmV4dC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBhbmQgd2hlcmUgSSYjMzk7bSBsaWtlbHkgdG8gZmluZCB0aGUgbW9zdCB1c2VmdWwgaG9va3MgZm9yIGFuYWx5c2lzIGFuZCwgcGVyaGFwcywgbW9kaWZpY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX3F1ZXVlX3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MDA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjgwMTpuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTgwMi1cdFx0IHZvaWQgKnBlcl9xdWV1ZV9tZW0sIGludCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTg1OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBuc2ltX3F1ZXVlX21nbXRfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjEtXHQubmRvX3F1ZXVlX21lbV9mcmVlXHQ9IG5zaW1fcXVldWVfbWVtX2ZyZWUsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODYyOlx0Lm5kb19xdWV1ZV9zdGFydFx0PSBuc2ltX3F1ZXVlX3N0YXJ0LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg2My1cdC5uZG9fcXVldWVfc3RvcFx0XHQ9IG5zaW1fcXVldWVfc3RvcCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEyNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDM0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBcHByb2FjaCB0byBBbmFseXppbmcgdGhlIFF1ZXVlIE1hbmFnZW1lbnQgQ2FsbGJhY2tzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBgbmRvX3F1ZXVlX3N0YXJ0YCBhbmQgYG5kb19xdWV1ZV9zdG9wYCBjYWxsYmFja3MuIE15IGd1dCB0ZWxscyBtZSB0aGVzZSBhcmUgZGVmaW5pdGVseSB0cmlnZ2VyZWQgdGhyb3VnaCBuZXRsaW5rLCBzeXNmcywgb3Igd2hhdGV2ZXIgaW50ZXJmYWNlIGhhbmRsZXMgcXVldWUgbWFuYWdlbWVudC4gVGhlIGtleSBoZXJlIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBUaGV5IGFyZSBzdGF0aWMsIHdoaWNoIGlzIGEgYml0IG9mIGEgd3JpbmtsZSBiZWNhdXNlIGl0IHN1Z2dlc3RzIHRoZXkgbWlnaHQgYmUgaW5saW5lZC4gQnV0LCBzaW5jZSB0aGV5JiMzOTtyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycywgdGhhdCBtZWFucyB0aGV5ICp3b24mIzM5O3QqIGJlIGlubGluZWQuIFRoYXQmIzM5O3MgZ29vZC4KClRoZSBwcm9tcHQgc2F5cyB0byBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU28sIEkgbmVlZCB0byBmaW5kIHRoZSByaWdodCBlbnRyeSBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBsb29rIGF0IGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAsIG9yIGp1c3QgcGljayBvbmUuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgdGhleSYjMzk7cmUgc3RhdGljIG1lYW5zIHRoZXkmIzM5O3JlIHByb2JhYmx5IG5vdCB0aGUgYmVzdCBjaG9pY2UuIExldCBtZSBjbGFyaWZ5LCBiZWNhdXNlIEkgY291bGQgYWxzbyBsb29rIGF0IGBuZXRkZXZfcXVldWVfc3RhcnRgLCBidXQgdGhhdCYjMzk7cyBnb2luZyB0byBiZSB0b28gZ2VuZXJpYy4KCkkmIzM5O20gY2hlY2tpbmcgaWYgdGhlcmUmIzM5O3MgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24gSSBjYW4gZm9jdXMgb24uIE1heWJlIGBuc2ltX2NyZWF0ZWA/IEkmIzM5O2xsIGxvb2sgYXQgdGhlIGBuc2ltX3F1ZXVlX3N0YXJ0YCBpbiBgbmV0ZGV2c2ltL25ldGRldi5jYCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IG90aGVyIHdheSBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnNpbV9xdWV1ZV9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODAwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4MDE6bnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MDItXHRcdCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04NTg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgbnNpbV9xdWV1ZV9tZ210X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODYxLVx0Lm5kb19xdWV1ZV9tZW1fZnJlZVx0PSBuc2ltX3F1ZXVlX21lbV9mcmVlLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg2MjpcdC5uZG9fcXVldWVfc3RhcnRcdD0gbnNpbV9xdWV1ZV9zdGFydCxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjMtXHQubmRvX3F1ZXVlX3N0b3BcdFx0PSBuc2ltX3F1ZXVlX3N0b3AsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNDgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYG5kb19xdWV1ZV9zdGFydGAgQ2FsbCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGNhbGxpbmcgYG5kb19xdWV1ZV9zdGFydGAuIFRoaXMgaXMgbGlrZWx5IGEgY3JpdGljYWwgcG9pbnQgaW4gbmV0d29yayBpbnRlcmZhY2UgZHJpdmVyIGJlaGF2aW9yLCBzbyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrLiBGaXJzdCwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgY29tbW9uIHBhdGhzIOKAkyBwcm9iYWJseSBpbnRlcnJ1cHQgaGFuZGxlcnMsIHRyYW5zbWl0IG9yIHJlY2VpdmUgY29tcGxldGlvbnMsIG9yIGV2ZW4gdGltZXIgY2FsbGJhY2tzLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIHJlbGV2YW50IGRyaXZlciBjb2RlIGZvciB0aGUgc3BlY2lmaWMgTklDIGluIHF1ZXN0aW9uLCBsaWtlbHkgZm9jdXNpbmcgb24gdGhlIG1ham9yIG5ldHdvcmsgaW50ZXJmYWNlIGZ1bmN0aW9ucyBsaWtlIGBuZXRpZl9yeGAsIGBuZXRpZl90eF9zdGFydGAsIG9yIGFueSBpbnRlcnJ1cHQgaGFuZGxpbmcgcm91dGluZXMuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0byBzdGFydCB0aGVyZSwgYXQgbGVhc3QuCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBkaXJlY3QgY2FsbHMgdG8gYG5kb19xdWV1ZV9zdGFydGAgd2l0aGluIHRob3NlIGZ1bmN0aW9ucywgYnV0IEkgYWxzbyBuZWVkIHRvIGJlIHdhcnkgb2YgaW5kaXJlY3QgY2FsbHMsIHBvc3NpYmx5IHRocm91Z2ggYSBsYXllciBvZiBhYnN0cmFjdGlvbiBvciBoZWxwZXIgZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIGFueSBvdGhlciBmdW5jdGlvbnMgY291bGQgYmUgcGFzc2VkIGluIGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBhY3R1YWwgZnVuY3Rpb24sIG9yIGFueSBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGluZyBgbmRvX3F1ZXVlX3N0YXJ0YC4gVGhlIGRhdGEgc3RydWN0dXJlcyByZWxhdGVkIHRvIHRoZSBuZXR3b3JrIGRldmljZSBhcmUgZ29pbmcgdG8gYmUga2V5LCBlc3BlY2lhbGx5IHRoZSBgbmV0X2RldmljZWAgc3RydWN0dXJlIGFuZCBhbnl0aGluZyB0aGF0IGRlYWxzIHdpdGggcXVldWVzIG9yIHRoZSBkZXZpY2UmIzM5O3Mgc3RhdGUuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGljaCBmaWVsZHMgaW4gdGhlc2Ugc3RydWN0dXJlcyBhcmUgYmVpbmcgbW9kaWZpZWQuCgpJJiMzOTttIG1lbnRhbGx5IHByZXBhcmluZyBmb3IgcG90ZW50aWFsIHNjZW5hcmlvczogSXMgaXQgY2FsbGVkIHVuY29uZGl0aW9uYWxseSwgb3IgYmFzZWQgb24gc29tZSBzcGVjaWZpYyBjb25kaXRpb24gKGUuZy4sIGJ1ZmZlciBhdmFpbGFiaWxpdHksIGxpbmsgc3RhdHVzKT8gSXMgaXQgYmVpbmcgY2FsbGVkIHRvIHN0YXJ0IHRoZSBxdWV1ZSBmb3IgdHJhbnNtaXQgb3IgcmVjZWl2ZT8gQXJlIHRoZXJlIGxpa2VseSBsb2NraW5nIGNvbnNpZGVyYXRpb25zIGFyb3VuZCB0aGlzIGNhbGwsIGVzcGVjaWFsbHkgaWYgaXQmIzM5O3MgaW4gYSBtdWx0aS10aHJlYWRlZCBjb250ZXh0PyBEZWJ1Z2dpbmcgdGhpcyBjb3VsZCBiZSB0cmlja3ksIEkmIzM5O2xsIHByb2JhYmx5IG5lZWQgdG8gY29uc2lkZXIgYnJlYWtwb2ludHMgb3IgdHJhY2Vwb2ludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25kb19xdWV1ZV9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTg9c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMDgtXHRpZiAoIXFvcHMgfHwgIXFvcHMtXHUwMDNlbmRvX3F1ZXVlX3N0b3AgfHwgIXFvcHMtXHUwMDNlbmRvX3F1ZXVlX21lbV9mcmVlIHx8XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxMDk6XHQgICAgIXFvcHMtXHUwMDNlbmRvX3F1ZXVlX21lbV9hbGxvYyB8fCAhcW9wcy1cdTAwM2VuZG9fcXVldWVfc3RhcnQpXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMTAtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMzYtXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxMzc6XHRcdGVyciA9IHFvcHMtXHUwMDNlbmRvX3F1ZXVlX3N0YXJ0KGRldiwgcWNmZ19uZXcsIG5ld19tZW0sIHJ4cV9pZHgpO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTM4LVx0XHRpZiAoZXJyKVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE1OC1cdCAqL1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTU5Olx0aWYgKHFvcHMtXHUwMDNlbmRvX3F1ZXVlX3N0YXJ0KGRldiwgcWNmZ19vbGQsIG9sZF9tZW0sIHJ4cV9pZHgpKSB7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNjAtXHRcdFdBUk4oMSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc5OQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkRpc3NlY3RpbmcgdGhlIE5ldHdvcmsgSW50ZXJmYWNlIFJlY29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgdHJhY2UgaW5kaWNhdGVzIGEgY2FsbCB0byBgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIHRoZSBjcml0aWNhbCBmdW5jdGlvbiB3ZSYjMzk7cmUgbG9va2luZyBhdC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIHBhaXIgdGhhdCB3aXRoIGEgcmV2aWV3IG9mIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAgYXMgd2VsbC4gVGhleSYjMzk7cmUgcmVsYXRlZC4gV2hpbGUgcmVjb25maWcgbGlrZWx5IGhhbmRsZXMgdGhlICppbml0aWFsKiBzZXR1cCBvciBjaGFuZ2VzIHRvIHRoZSByZWNlaXZlIHF1ZXVlLCByZXN0YXJ0IG1pZ2h0IGJlIGludm9rZWQgdG8gaGFuZGxlIHRlbXBvcmFyeSBwYXVzZXMgb3IgcmVzdW1wdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9uIGFuZCBzZXF1ZW5jZSBvZiBldmVudHMgYmV0d2VlbiB0aGVzZSB0d28gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGVudGlyZSByZWNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBob3cgdGhleSYjMzk7cmUgdXNlZCBhbmQgaG93IHRoZXkgcmVsYXRlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRkZXZfcnhfcXVldWVfcmVzdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTk4PXN0YXRpYyBpbnQgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc3LVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTc4OmludCBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeClcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE3OS17XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg0LX1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE4NTpFWFBPUlRfU1lNQk9MX05TX0dQTChuZXRkZXZfcnhfcXVldWVfcmVzdGFydCwgXCYjMzQ7TkVUREVWX0lOVEVSTkFMXCYjMzQ7KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI0MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAgRXhwb3J0KioKCkFscmlnaHQsIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAgaXMgc2hvd2luZyB1cCBhcyBleHBvcnRlZC4gSG1tLCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aG8gbWlnaHQgYmUgcmVseWluZyBvbiB0aGlzIGZ1bmN0aW9uLiBUaW1lIHRvIGRpZyBpbnRvIGl0cyBjYWxsIHNpdGVzLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGNoZWNrIG9uIHRoZSBjYWxsZXJzIG9mIGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBpbml0aWFsIHNlbnNlIG9mIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNyaXRpY2FsIHBhdGhzIHJlbGF0ZWQgdG8gdGhpcyByZXN0YXJ0IGZ1bmN0aW9uLiBUaGlzIGlzIGtleSB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgYW55IGNoYW5nZXMgb3IgcG90ZW50aWFsIHJlZmFjdG9yaW5nIGRvd24gdGhlIGxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz05MT1ib29sIG5ldGlmX3J4cV9oYXNfbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtOTctXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzo5ODpzdGF0aWMgaW50IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtOTktXHRcdFx0XHQgICAgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9MTc4PWludCBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeClcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODItXHRuZXRkZXZfcXVldWVfY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZyk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODM6XHRyZXR1cm4gbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZywgXHUwMDI2cWNmZyk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODQtfVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4Nz1zdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjMzLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjM0Olx0cmV0ID0gbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZ1swXSwgXHUwMDI2cWNmZ1sxXSk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yMzUtXHRpZiAocmV0KVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI3OD1zdGF0aWMgdm9pZCBfX25ldGlmX21wX2Nsb3NlX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0zMDEtXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzozMDI6XHRlcnIgPSBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoZGV2LCByeHFfaWR4LCBcdTAwMjZxY2ZnWzBdLCBcdTAwMjZxY2ZnWzFdKTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTMwMy1cdFdBUk5fT04oZXJyIFx1MDAyNlx1MDAyNiBlcnIgIT0gLUVORVRET1dOKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAxOQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYE5FVERFVlNJTWAgTW9kdWxlJiMzOTtzIENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9uIENhbGxzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBgTkVUREVWU0lNYCBtb2R1bGUgaXMgY29uZmlndXJlZCBhbmQgaG93IGl0JiMzOTtzIGZ1bmN0aW9uaW5nIGludGVybmFsbHkuIE15IGluaXRpYWwgdGhvdWdodHMgYXJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgY2FsbHMgdG8gYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCwgYF9fbmV0aWZfbXBfb3Blbl9yeHFgLCBhbmQgYF9fbmV0aWZfbXBfY2xvc2VfcnhxYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBsaWtlbHkgdHJpZ2dlcmVkIGJ5IGVpdGhlciBgZXRodG9vbGAgb3IgdmlhIGBuZXRsaW5rYCBjYWxscywgd2hpY2ggaXMgdHlwaWNhbCBmb3IgbWFuYWdpbmcgbmV0d29yayBkZXZpY2UgaW50ZXJmYWNlcy4KCkkgd2FudCB0byBzZWUgaWYgSSBjYW4gbmFycm93IG15IGZvY3VzIGFuZCBqdXN0IHplcm8gaW4gb24gYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYC4gVGhleSBhcmUgZGVjbGFyZWQgYHN0YXRpY2Agd2hpY2ggaW5pdGlhbGx5IG1ha2VzIG1lIHRoaW5rIHRoZXkgbWlnaHQgYmUgaW5saW5lZC4gQnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IHNpbmNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgYmVpbmcgdGFrZW4gKG1lYW5pbmcgdGhleSBhcmUgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycyksIHRoZXkgKmNhbiYjMzk7dCogYmUgaW5saW5lZC4gVGh1cywgdGhleSAqc2hvdWxkKiBhcHBlYXIgaW4gdGhlIHN5bWJvbCB0YWJsZS4gSG93ZXZlciwgc2luY2UgdGhlIHN5bWJvbHMgYXJlIHN0YXRpYywgdGhleSBtYXkgbm90LgoKQnV0LCBiYWNrIHRvIG15IG9yaWdpbmFsIHBsYW4uIFNob3VsZCBJIHJlYWxseSBiZSBmb2N1c2luZyBvbiBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgPyBJJiMzOTtsbCBzdGljayB3aXRoIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAgZm9yIG5vdy4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgdXNpbmcgYE5FVERFVlNJTWAsIG9mIGNvdXJzZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGBORVRERVZTSU1gIGRvZXNuJiMzOTt0IGRlcGVuZCBvbiBvdGhlciBjb25maWd1cmF0aW9ucyB0byBiZSBlbmFibGVkLiBJIHNlZSB0aGF0IGl0IHJlcXVpcmVzIGBERUJVR19GU2AgYW5kIGBJTkVUYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIGBQU0FNUExFYCBhbmQgYFBUUF8xNTg4X0NMT0NLX01PQ0tgIGFyZSBvcHRpb25hbCwgYnV0IGlmIHRoZXkgYXJlIHNlbGVjdGVkLCB0aGVuIGBQU0FNUExFYCBtdXN0IGJlIGRlZmluZWQuIFRoZXJlZm9yZSwganVzdCBgTkVUREVWU0lNYCBpcyBlbm91Z2guIE5vdywgSSBoYXZlIHRvIGNoZWNrIHRoZSBjb2RlIGFuZCBjb25maXJtIHRoYXQgYE5FVERFVlNJTWAgaXMgc3VmZmljaWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVERFVlNJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz02MDI9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMy1cbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MzYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSwgY29uZmlybWVkLCAqKk5FVERFVlNJTSoqIGl0IGlzIGZvciB0aGUgY29uZmlndXJhdGlvbi4gTm93LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBhcmUgYWxzbyBiZWluZyBtb2RpZmllZCwganVzdCB0byBiZSB0aG9yb3VnaC4gQWxyaWdodCwgbG9va3MgbGlrZSB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSB0YXJnZXRzIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNgLiBBaCwgYW5kIHRoZSBmdW5jdGlvbnMgYWZmZWN0ZWQgYXJlIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAg4oCTIGdvb2QgdG8ga25vdy4gTm93LCBsZXQgbWUgcXVpY2tseSBzY2FuIHRoYXQgZmlsZSBhbmQgdGhlIHBhdGNoIGFnYWluLCBqdXN0IHRvIHZlcmlmeSBpZiB0aGVyZSB3ZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdG91Y2hlZCB3aXRoaW4gdGhlIGNvZGUuIEFsd2F5cyBnb29kIHRvIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX3F1ZXVlX3N0b3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgwMT1uc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MzctXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODM4OnN0YXRpYyBpbnQgbnNpbV9xdWV1ZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnBlcl9xdWV1ZV9tZW0sIGludCBpZHgpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODM5LXtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5zaW1fcXVldWVfbWdtdF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg2Mi1cdC5uZG9fcXVldWVfc3RhcnRcdD0gbnNpbV9xdWV1ZV9zdGFydCxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4NjM6XHQubmRvX3F1ZXVlX3N0b3BcdFx0PSBuc2ltX3F1ZXVlX3N0b3AsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODY0LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzNTUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gdGhlIGNoYW5nZXM6IGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAgYXJlIHRoZSBvbmx5IGZ1bmN0aW9ucyB0aGF0IGdvdCBtb2RpZmllZC4gQXJlIHRoZXkgYWN0dWFsbHkgYWNjZXNzaWJsZT8gWWVhaCwgdGhleSYjMzk7cmUgY2FsbGVkIHRocm91Z2ggYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCBhbmQgcXVldWUgbWFuYWdlbWVudCBvcGVyYXRpb25zLiBUaGF0IG1lYW5zIHdlIGhhdmUgYSB2aWFibGUgZW50cnlwb2ludC4KCklzIGl0IHdvcnRoIGZ1enppbmcgdGhlbT8gQWJzb2x1dGVseS4gSXQmIzM5O3MgYSBzaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2UsIHdoaWNoIG1lYW5zIHdlIGNhbiBiZSBwcmV0dHkgYWdncmVzc2l2ZSB3aXRoIG91ciB0ZXN0aW5nLCBhbmQgdGhpcyBwYXRjaCAqZG9lcyogaW50cm9kdWNlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgLSB0aGUgTkFQSSBxdWV1ZSBzZXR0aW5nLiBUaGF0JiMzOTtzIGEgdGFyZ2V0LXJpY2ggZW52aXJvbm1lbnQgZm9yIGZ1enppbmcuIFdlJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSBgTkVUREVWU0lNYCBpcyBlbmFibGVkIGluIG91ciBjb25maWd1cmF0aW9uLgoKVGhlIG9idmlvdXMgZm9jdXMgc3ltYm9scyBhcmUgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYC4gVGhleSBhcmUgYXNzaWduZWQgdG8gYG5kb19xdWV1ZV9zdGFydGAgYW5kIGBuZG9fcXVldWVfc3RvcGAsIHNvIHRoZXkgYXJlICpub3QqIGlubGluZWQgYW5kIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gUGVyZmVjdC4KCk5vdywgd2FpdCBhIG1pbnV0ZS4uLiB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YW50cyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMuIEFyZSB0aGVzZSBpdD8gWWVzLCB0aGV5IGZpdCB0aGUgYmlsbCwgYnV0IGp1c3QgdG8gYmUgc3VwZXIgc2FmZSwgSSBzaG91bGQgbG9vayBmb3IgYW4gYWx0ZXJuYXRpdmUgZW50cnlwb2ludCBhcyB3ZWxsLiBXaGF0IGFib3V0IGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGA/IEkga25vdyB0aGF0IGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgIGlzIGBzdGF0aWNgLCBzbyB0aGF0JiMzOTtzIG91dC4gTGV0JiMzOTtzIGRpZyBpbnRvIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAgYW5kIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTg9c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNzctXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxNzg6aW50IG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4KVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc5LXtcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODQtfVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTg1OkVYUE9SVF9TWU1CT0xfTlNfR1BMKG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0LCBcJiMzNDtORVRERVZfSU5URVJOQUxcJiMzNDspO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjE5CgkJCQkJCQlvdXRwdXQ6IDExMQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipUaGlua2luZyBUaHJvdWdoIFNpbXVsYXRpb24gUXVldWluZyoqCgpSaWdodCwgc28gSSBuZWVkIHRvIGludGVncmF0ZSB0aGVzZSBuZXcgcXVldWluZyBjb21tYW5kcywgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCwgaW50byB0aGUgc3lzdGVtLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGFkZGluZyB0aGVtIGFzIGVudHJ5IHBvaW50cyBmb3IgdGhlIHNpbXVsYXRpb24gbWFuYWdlbWVudC4gTm93LCByZWdhcmRpbmcgdGhlIGRhdGEgaGFuZGxpbmcgcG9zdC1zaW11bGF0aW9uLCBJIHNob3VsZCBjYWxsIHRoYXQgYHNldC1yZXN1bHRzYCBmdW5jdGlvbiB0byBjYXB0dXJlIGFsbCB0aGUgcmVsZXZhbnQgZGF0YSBhbmQgZ2V0IGV2ZXJ5dGhpbmcgcHJvcGVybHkgc3RvcmVkIGFuZCBhbmFseXplZC4gU2VlbXMgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaW4gdGhlIHByb2Nlc3MsIGVuc3VyaW5nIGRhdGEgaW50ZWdyaXR5IGF0IHRoZSBjb21wbGV0aW9uIG9mIGEgc2ltdWxhdGlvbiBydW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuc2ltX3F1ZXVlX3N0YXJ0JiMzNDssCiAgICAmIzM0O25zaW1fcXVldWVfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZGV2c2ltIGRyaXZlciAoYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nKSB0byBjYWxsIG5ldGlmX3F1ZXVlX3NldF9uYXBpKCkgaW4gaXRzIHF1ZXVlIHN0YXJ0IGFuZCBzdG9wIGNhbGxiYWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGRyaXZlciwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUREVWU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnNpbV9xdWV1ZV9zdGFydCYjMzQ7LAogICAgJiMzNDtuc2ltX3F1ZXVlX3N0b3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgKGEgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2UgdXNlZCBmb3IgdGVzdGluZykgdG8gY2FsbCBuZXRpZl9xdWV1ZV9zZXRfbmFwaSgpIGluIGl0cyBxdWV1ZSBzdGFydCBhbmQgc3RvcCBjYWxsYmFja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDM6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgTkFQSSBpbnN0YW5jZXMgd2l0aCBuZXR3b3JrIGRldmljZSBxdWV1ZXMuIFRoaXMgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGFyaXNpbmcgZnJvbSB0aGVzZSBjaGFuZ2VzLCBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzIwMmQwNzYwNzNmMTIxYzdiOGJhYmY1NDZjZTFkN2NiNjYyMjU3NgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDE1IDAzOjAyOjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jCmluZGV4IDRlOWQ3ZTEwYjUyN2UuLjI5MWQzNDcxOGIyZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMKQEAgLTgwOCw2ICYjNDM7ODA4LDggQEAgbnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZywKIAogCWlmIChucy0mZ3Q7cnFfcmVzZXRfbW9kZSA9PSAxKSB7CiAJCW5zLSZndDtycVtpZHhdLSZndDtwYWdlX3Bvb2wgPSBxbWVtLSZndDtwcDsKJiM0MzsJCW5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwKJiM0MzsJCQkJICAgICAmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAkJbmFwaV9lbmFibGVfbG9ja2VkKCZhbXA7bnMtJmd0O3JxW2lkeF0tJmd0O25hcGkpOwogCQlyZXR1cm4gMDsKIAl9CkBAIC04MjYsNiAmIzQzOzgyOCw4IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsCiAJfQogCiAJbnMtJmd0O3JxW2lkeF0gPSBxbWVtLSZndDtycTsKJiM0MzsJbmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLAomIzQzOwkJCSAgICAgJmFtcDtucy0mZ3Q7cnFbaWR4XS0mZ3Q7bmFwaSk7CiAJbmFwaV9lbmFibGVfbG9ja2VkKCZhbXA7bnMtJmd0O3JxW2lkeF0tJmd0O25hcGkpOwogCiAJcmV0dXJuIDA7CkBAIC04MzgsNiAmIzQzOzg0Miw3IEBAIHN0YXRpYyBpbnQgbnNpbV9xdWV1ZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnBlcl9xdWV1ZV9tZW0sIGludCBpZHgpCiAKIAluZXRkZXZfYXNzZXJ0X2xvY2tlZChkZXYpOwogCiYjNDM7CW5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7CiAJbmFwaV9kaXNhYmxlX2xvY2tlZCgmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAogCWlmIChucy0mZ3Q7cnFfcmVzZXRfbW9kZSA9PSAxKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjc3CgkJCQkJCQlvdXRwdXQ6IDEyMgoJCQkJCQkJdGhvdWdodHM6IDc1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY2AuICBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBhY3R1YWxseS4gIFRoZXkmIzM5O3ZlIGFkZGVkIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgd2l0aGluIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuICBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGxpbmtpbmcgKG9yIHVubGlua2luZykgTkFQSSBpbnN0YW5jZXMgdG8gbmV0ZGV2IHF1ZXVlcy4gVGhhdCYjMzk7cyBhbGwuCgpMZXQgbWUgYnJlYWsgaXQgZG93bjogIEluIGBuc2ltX3F1ZXVlX3N0YXJ0YCwgd2UmIzM5O3JlIGFzc29jaWF0aW5nIHRoZSBOQVBJIHN0cnVjdCB3aXRoIHRoZSBxdWV1ZSB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiAgV2UmIzM5O3JlIGRvaW5nIGl0IGluIGJvdGggcmVzZXQgYW5kIG5vbi1yZXNldCBtb2Rlcy4gVGhlbiBpbiBgbnNpbV9xdWV1ZV9zdG9wYCwgd2UmIzM5O3JlIGNhbGxpbmcgaXQgd2l0aCBhIGBOVUxMYCBwb2ludGVyIHRvIGRpc2Fzc29jaWF0ZSB0aGVtLiAgSXTigJlzIGp1c3Qgc2V0dGluZyBvciBjbGVhcmluZyBhIHBvaW50ZXIgd2l0aGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuIE5vIGZhbmN5IGJ1c2luZXNzLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgcHVyZWx5IGFib3V0IHF1ZXVlIG1hbmFnZW1lbnQgYW5kIE5BUEkgaW50ZWdyYXRpb24uIFRoZXJlJiMzOTtzIG5vdGhpbmcgaGVyZSB0aGF0JiMzOTtzIGltbWVkaWF0ZWx5IHNjcmVhbWluZyAmIzM0O3VuaW5pdGlhbGl6ZWQgbWVtb3J5LCYjMzQ7ICYjMzQ7aW5mb3JtYXRpb24gbGVhaywmIzM0OyBvciBhbnl0aGluZyByZXF1aXJpbmcgS01TQU4mIzM5O3MgZGVlcGVyIG1lbW9yeSBpbnNwZWN0aW9uLiAgV2UmIzM5O3JlIG5vdCBpbnRyb2R1Y2luZyBuZXcgc3RydWN0dXJlcyBwYXNzZWQgdG8gdXNlciBzcGFjZSwgbm9yIGFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgYnJhbmNoZXMgY29udGluZ2VudCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gV2UmIzM5O3JlIHNpbXBseSBzZXR0aW5nIGEgcG9pbnRlciwgYW5kIGNsZWFyaW5nIGl0IGxhdGVyLgoKR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgdGhpbmdzIHdvcmssIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIHNob3VsZCBiZSBwZXJmZWN0bHkgYWRlcXVhdGUgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBpc3N1ZXMg4oCTIGxpa2UgYSB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb24gaWYgd2Ugc2NyZXcgdXAgdGhlIGBzZXRfbmFwaWAgY2FsbHMgb3IgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgbGF0ZXIuIFN0YW5kYXJkIHRvb2xzIHdpbGwgd29yayBmaW5lLiBLTVNBTiBpcyBvdmVya2lsbCBpbiB0aGlzIGNhc2UuIFdlIGRvbiYjMzk7dCBuZWVkIHRoZSBtb3JlIGhlYXZ5d2VpZ2h0IG1lbW9yeSBlcnJvciBkZXRlY3Rpb24uCgpTbywgdGhlIHZlcmRpY3QgaXM6IE5vLCB3ZSBkb24mIzM5O3QgbmVlZCBLTVNBTiBmb3IgdGhpcy4gV2UmIzM5O3JlIGdvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBjYWxscyB0byBgbmV0aWZfcXVldWVfc2V0X25hcGlgIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggbmV0d29yayBkZXZpY2UgcXVldWVzLiBUaGlzIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlc2UgY2hhbmdlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIG5ldHdvcmsgZGV2aWNlIHF1ZXVlcy4gVGhpcyBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoZXNlIGNoYW5nZXMsIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMjo1Ni44NDQ4MTE5MzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDczNjI3NTQwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuc2ltX3F1ZXVlX3N0YXJ0XCIsXG4gICAgXCJuc2ltX3F1ZXVlX3N0b3BcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBjYWxscyB0byBgbmV0aWZfcXVldWVfc2V0X25hcGlgIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggbmV0d29yayBkZXZpY2UgcXVldWVzLiBUaGlzIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlc2UgY2hhbmdlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgKGEgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2UgdXNlZCBmb3IgdGVzdGluZykgdG8gY2FsbCBuZXRpZl9xdWV1ZV9zZXRfbmFwaSgpIGluIGl0cyBxdWV1ZSBzdGFydCBhbmQgc3RvcCBjYWxsYmFja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAyOjU2Ljg0NDgxOTE5NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA1ODQ5MjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzIwMmQwNzYwNzNmMTIxYzdiOGJhYmY1NDZjZTFkN2NiNjYyMjU3NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxNSAwMzowMjo1NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcXG5pbmRleCA0ZTlkN2UxMGI1MjdlLi4yOTFkMzQ3MThiMmVmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xcbkBAIC04MDgsNiArODA4LDggQEAgbnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcXG4gXFxuIFxcdGlmIChucy1cXHUwMDNlcnFfcmVzZXRfbW9kZSA9PSAxKSB7XFxuIFxcdFxcdG5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VwYWdlX3Bvb2wgPSBxbWVtLVxcdTAwM2VwcDtcXG4rXFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbitcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZucy1cXHUwMDNlcnFbaWR4XS1cXHUwMDNlbmFwaSk7XFxuIFxcdFxcdG5hcGlfZW5hYmxlX2xvY2tlZChcXHUwMDI2bnMtXFx1MDAzZXJxW2lkeF0tXFx1MDAzZW5hcGkpO1xcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0fVxcbkBAIC04MjYsNiArODI4LDggQEAgbnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcXG4gXFx0fVxcbiBcXG4gXFx0bnMtXFx1MDAzZXJxW2lkeF0gPSBxbWVtLVxcdTAwM2VycTtcXG4rXFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbitcXHRcXHRcXHQgICAgIFxcdTAwMjZucy1cXHUwMDNlcnFbaWR4XS1cXHUwMDNlbmFwaSk7XFxuIFxcdG5hcGlfZW5hYmxlX2xvY2tlZChcXHUwMDI2bnMtXFx1MDAzZXJxW2lkeF0tXFx1MDAzZW5hcGkpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTgzOCw2ICs4NDIsNyBAQCBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxcbiBcXG4gXFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcXG4gXFxuK1xcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuIFxcdG5hcGlfZGlzYWJsZV9sb2NrZWQoXFx1MDAyNm5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VuYXBpKTtcXG4gXFxuIFxcdGlmIChucy1cXHUwMDNlcnFfcmVzZXRfbW9kZSA9PSAxKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAyOjU3LjI1MTI1OTUwM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ1NzI0ODg3MzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5zaW1fcXVldWVfc3RhcnRcIixcbiAgICBcIm5zaW1fcXVldWVfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIChhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlIHVzZWQgZm9yIHRlc3RpbmcpIHRvIGNhbGwgbmV0aWZfcXVldWVfc2V0X25hcGkoKSBpbiBpdHMgcXVldWUgc3RhcnQgYW5kIHN0b3AgY2FsbGJhY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgZHJpdmVyLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MjAyZDA3NjA3M2YxMjFjN2I4YmFiZjU0NmNlMWQ3Y2I2NjIyNTc2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDM6MDI6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbmluZGV4IDRlOWQ3ZTEwYjUyN2UuLjI5MWQzNDcxOGIyZWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xuQEAgLTgwOCw2ICs4MDgsOCBAQCBuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxuIFxuIFx0aWYgKG5zLVx1MDAzZXJxX3Jlc2V0X21vZGUgPT0gMSkge1xuIFx0XHRucy1cdTAwM2VycVtpZHhdLVx1MDAzZXBhZ2VfcG9vbCA9IHFtZW0tXHUwMDNlcHA7XG4rXHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbitcdFx0XHRcdCAgICAgXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcdFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXHRcdHJldHVybiAwO1xuIFx0fVxuQEAgLTgyNiw2ICs4MjgsOCBAQCBuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxuIFx0fVxuIFxuIFx0bnMtXHUwMDNlcnFbaWR4XSA9IHFtZW0tXHUwMDNlcnE7XG4rXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG4rXHRcdFx0ICAgICBcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXG4gXHRyZXR1cm4gMDtcbkBAIC04MzgsNiArODQyLDcgQEAgc3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcbiBcbiBcdG5ldGRldl9hc3NlcnRfbG9ja2VkKGRldik7XG4gXG4rXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuIFx0bmFwaV9kaXNhYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFxuIFx0aWYgKG5zLVx1MDAzZXJxX3Jlc2V0X21vZGUgPT0gMSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDM6MDI6NTcuMjUxMjYwOTU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxNDgzMDY0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE5ldGRldnNpbSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jYC4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgd2l0aGluIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuIEhtbSwgaW50ZXJlc3RpbmcuIFRoZSBmYWN0IHRoYXQgaXQncyBpbiB0aGUgYG5ldGRldnNpbWAgZHJpdmVyIGltbWVkaWF0ZWx5IGdldHMgbXkgYXR0ZW50aW9uLiBOZXRkZXZzaW0sIG9mIGNvdXJzZSwgaXMgdGhhdCBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSDigJMgcGVyZmVjdCBmb3IgdGVzdGluZywgYW5kIGRlZmluaXRlbHkgd2l0aGluIHRoZSBhdHRhY2sgc3VyZmFjZSBmb3IgZnV6emluZy4gR2l2ZW4gdGhhdCBpdCB0b3VjaGVzIHRob3NlIGBuc2ltX3F1ZXVlYCBmdW5jdGlvbnMsIGl04oCZcyBoaWdobHkgcHJvYmFibGUgdGhpcyBpcyBhIHJlYWNoYWJsZSBjb2RlIHBhdGguIFRoZXJlZm9yZSwgaXQgZGVmaW5pdGVseSB3YXJyYW50cyBzb21lIHNlcmlvdXMgZnV6emluZyBlZmZvcnRzLlxuXG5NeSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCB0aGVtc2VsdmVzLCB1bmRlcnN0YW5kIHRoZWlyIHB1cnBvc2Ugd2l0aGluIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIsIGFuZCBkZXRlcm1pbmUgdGhlIGNvbnRleHQgc3Vycm91bmRpbmcgdGhlc2UgbmV3IGNhbGxzLiBUbyB0aGF0IGVuZCwgSSBzaG91bGQgbG9jYXRlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBuZXRkZXZzaW1gLiBUaGF0J2xsIGdpdmUgbWUgdGhlIHZpc2liaWxpdHkgSSBuZWVkIHRvIHByb2NlZWQgd2l0aCBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjAwLjk2NjA5NTM1NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTY4MjU5NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVERFVlNJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDM6MDM6MDEuMDE3NzkxNDgxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkwNzQ5NjU4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipIdW50aW5nIERvd24gdGhlIE5ldHdvcmsgRGV2aWNlIFNpbXVsYXRvciBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIG5ldHdvcmsgZGV2aWNlIHNpbXVsYXRvciBpcyBjb25maWd1cmVkLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIExldCdzIHNlZS4uLiB0aGUgYGRyaXZlcnMvbmV0YCBkaXJlY3RvcnkgaXMgYSBsaWtlbHkgY2FuZGlkYXRlLCBhbmQgd2l0aGluIHRoYXQsIHRoZSBgbmV0ZGV2c2ltYCBzdWJkaXJlY3RvcnkgZmVlbHMgbGlrZSB0aGUgbW9zdCBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdgIGZpcnN0LiBUaGF0J3MgdGhlIHR5cGljYWwgcGxhY2UgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoaW4gYSBkcml2ZXIuIElmIHRoYXQgY29tZXMgdXAgZW1wdHksIHRoZW4gSSdsbCBicm9hZGVuIHRoZSBzZWFyY2ggc2xpZ2h0bHkgYW5kIGxvb2sgYXQgYGRyaXZlcnMvbmV0L0tjb25maWdgIGl0c2VsZjsgbWF5YmUgaXQncyBjb25maWd1cmVkIGFzIGEgbW9yZSBnZW5lcmFsIG5ldHdvcmsgZGV2aWNlLiBGaW5hbGx5LCBpZiB0aG9zZSBmYWlsLCBhIHF1aWNrIGFuZCBkaXJ0eSBgZ3JlcCBORVRERVZTSU1gIGFjcm9zcyB0aGUgZW50aXJlIGtlcm5lbCBzb3VyY2UgdHJlZSB3aWxsIG5haWwgZG93biB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucy4gTm8gbmVlZCB0byBvdmVydGhpbmsgaXQgaW5pdGlhbGx5OyBsZXQncyBzdGFydCB3aXRoIHRoZSBtb3N0IGxvZ2ljYWwgbG9jYXRpb25zIGJlZm9yZSByZXNvcnRpbmcgdG8gYnJ1dGUgZm9yY2UuIEkgcHJlZmVyIGFuIGVsZWdhbnQgc29sdXRpb24gd2hlcmUgcG9zc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MjMsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzowMy45MjUyOTA3MzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5ODE5NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjA0LjA1NTExNjIyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NjU4NTY0NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIERlcGVuZGVuY2llcyBpbiBORVRERVZTSU0qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0IGFyZSB0aGUgY29yZSBkZXBlbmRlbmNpZXMgZm9yIGBORVRERVZTSU1gP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmb3VuZGF0aW9uLiBLbm93aW5nIHRoZSB1bmRlcmx5aW5nIGxpYnJhcmllcyBhbmQgZnJhbWV3b3JrcyBpdCByZWxpZXMgb24gaXMgYWJzb2x1dGVseSBjcml0aWNhbCBmb3IgZGVidWdnaW5nLCBtb2RpZnlpbmcsIG9yIGV2ZW4ganVzdCBwcm9wZXJseSBldmFsdWF0aW5nIGl0cyBwZXJmb3JtYW5jZSBhbmQgcG90ZW50aWFsIGxpbWl0YXRpb25zLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhpbmdzIGxpa2U6IGlzIGl0IFB5dGhvbi1iYXNlZD8gSWYgc28sIHdoYXQgUHl0aG9uIHZlcnNpb24gYW5kIHdoYXQga2V5IHBhY2thZ2VzIGFyZSBpbiBwbGF5PyBXaGF0IG5ldHdvcmsgc2ltdWxhdGlvbiBsaWJyYXJpZXMgaXMgaXQgbGV2ZXJhZ2luZyDigJMgYFNpbVB5YCwgcGVyaGFwcywgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQ/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSBtb2RlbHMgb3IgbmV0d29yayBwcm90b2NvbHM/IEFyZSB0aGVyZSBleHRlcm5hbCBkYXRhIHNvdXJjZXMgb3IgdG9vbHMgaXQgdXNlcyBmb3IgaW5wdXQgb3Igb3V0cHV0PyBUaGlzIGluaXRpYWwgYXNzZXNzbWVudCBpcyBmdW5kYW1lbnRhbDsgaXQgc2hhcGVzIGhvdyBJIGFwcHJvYWNoIGV2ZXJ5dGhpbmcgZWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA4OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjA3LjAyMDk3NDkxOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwNCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYwNDpcXHRjb25maWcgTkVUREVWU0lNXFxuIDYwNTpcXHRcXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcbiA2MDY6XFx0XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbiA2MDc6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDYwODpcXHRcXHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXFxuIDYwOTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX01PQ0sgfHwgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uXFxuIDYxMDpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gNjExOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gNjEyOlxcdFxcdHNlbGVjdCBORVRfU0hBUEVSXFxuIDYxMzpcXHRcXHRoZWxwXFxuIDYxNDpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCBhbmQgc29mdHdhcmUgbW9kZWwgdGhhdCBjYW5cXG4gNjE1OlxcdFxcdCAgYmUgdXNlZCB0byB0ZXN0IHZhcmlvdXMgY29udHJvbCBwYXRoIG5ldHdvcmtpbmcgQVBJcywgZXNwZWNpYWxseVxcbiA2MTY6XFx0XFx0ICBIVy1vZmZsb2FkIHJlbGF0ZWQuXFxuIDYxNzpcXHRcXG4gNjE4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiA2MTk6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBuZXRkZXZzaW0uXFxuIDYyMDpcXHRcXG4gNjIxOlxcdGNvbmZpZyBORVRfRkFJTE9WRVJcXG4gNjIyOlxcdFxcdHRyaXN0YXRlIFxcXCJGYWlsb3ZlciBkcml2ZXJcXFwiXFxuIDYyMzpcXHRcXHRzZWxlY3QgRkFJTE9WRVJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDM6MDM6MDcuMDIxMTE5NzM4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc1NTU3NTQ1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBuZXR3b3JraW5nIGV4cGVydDpcblxuKipEZXBlbmRlbmNpZXMgYW5kIENvbnRyb2wgUG9pbnRzKipcblxuUmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gYE5FVERFVlNJTWAsIGFuZCBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIGNvcmUgZGVwZW5kZW5jaWVzLiBJIGtub3cgaXQgbGVhbnMgb24gYERFQlVHX0ZTYCBhbmQgYElORVRgLCB3aGljaCBhcmUgZmFpcmx5IHN0YW5kYXJkIGJ1aWxkaW5nIGJsb2NrcyBmb3IgdGhpcyB0eXBlIG9mIHNpbXVsYXRpb24uIE5vdywgSSB3YW50IHRvIHplcm8gaW4gb24gdGhlIHNpbXVsYXRpb24ncyBxdWV1ZSBtYW5hZ2VtZW50LCB0byBzZWUgaG93IGl0J3MgY29udHJvbGxlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgb3V0IHRoZSBzdGFydCBhbmQgc3RvcCBmdW5jdGlvbnMgZm9yIHRoZSBuZXR3b3JrIHNpbXVsYXRvcidzIHF1ZXVlLCBzbyBJJ2xsIGJlIGxvb2tpbmcgYXQgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCBuZXh0LiBUaGF0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgYW5kIHdoZXJlIEknbSBsaWtlbHkgdG8gZmluZCB0aGUgbW9zdCB1c2VmdWwgaG9va3MgZm9yIGFuYWx5c2lzIGFuZCwgcGVyaGFwcywgbW9kaWZpY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjE1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzowOS43NzY2OTc3NjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMjIyNjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fcXVldWVfc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MDA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4MDE6bnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODAyLVxcdFxcdCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTg1OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBuc2ltX3F1ZXVlX21nbXRfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg2MS1cXHQubmRvX3F1ZXVlX21lbV9mcmVlXFx0PSBuc2ltX3F1ZXVlX21lbV9mcmVlLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4NjI6XFx0Lm5kb19xdWV1ZV9zdGFydFxcdD0gbnNpbV9xdWV1ZV9zdGFydCxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODYzLVxcdC5uZG9fcXVldWVfc3RvcFxcdFxcdD0gbnNpbV9xdWV1ZV9zdG9wLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzowOS44Mjc5MjQyMDZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU1NTM3Mjg3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBcHByb2FjaCB0byBBbmFseXppbmcgdGhlIFF1ZXVlIE1hbmFnZW1lbnQgQ2FsbGJhY2tzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgYG5kb19xdWV1ZV9zdGFydGAgYW5kIGBuZG9fcXVldWVfc3RvcGAgY2FsbGJhY2tzLiBNeSBndXQgdGVsbHMgbWUgdGhlc2UgYXJlIGRlZmluaXRlbHkgdHJpZ2dlcmVkIHRocm91Z2ggbmV0bGluaywgc3lzZnMsIG9yIHdoYXRldmVyIGludGVyZmFjZSBoYW5kbGVzIHF1ZXVlIG1hbmFnZW1lbnQuIFRoZSBrZXkgaGVyZSBpcyB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBmdW5jdGlvbiB0byBmb2N1cyBvbi4gVGhleSBhcmUgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIHdyaW5rbGUgYmVjYXVzZSBpdCBzdWdnZXN0cyB0aGV5IG1pZ2h0IGJlIGlubGluZWQuIEJ1dCwgc2luY2UgdGhleSdyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycywgdGhhdCBtZWFucyB0aGV5ICp3b24ndCogYmUgaW5saW5lZC4gVGhhdCdzIGdvb2QuXG5cblRoZSBwcm9tcHQgc2F5cyB0byBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU28sIEkgbmVlZCB0byBmaW5kIHRoZSByaWdodCBlbnRyeSBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBsb29rIGF0IGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAsIG9yIGp1c3QgcGljayBvbmUuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgdGhleSdyZSBzdGF0aWMgbWVhbnMgdGhleSdyZSBwcm9iYWJseSBub3QgdGhlIGJlc3QgY2hvaWNlLiBMZXQgbWUgY2xhcmlmeSwgYmVjYXVzZSBJIGNvdWxkIGFsc28gbG9vayBhdCBgbmV0ZGV2X3F1ZXVlX3N0YXJ0YCwgYnV0IHRoYXQncyBnb2luZyB0byBiZSB0b28gZ2VuZXJpYy5cblxuSSdtIGNoZWNraW5nIGlmIHRoZXJlJ3MgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24gSSBjYW4gZm9jdXMgb24uIE1heWJlIGBuc2ltX2NyZWF0ZWA/IEknbGwgbG9vayBhdCB0aGUgYG5zaW1fcXVldWVfc3RhcnRgIGluIGBuZXRkZXZzaW0vbmV0ZGV2LmNgIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgd2F5IGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTI0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjE1LjM4MzI5OTM4NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4ODYyMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnNpbV9xdWV1ZV9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgwMD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjgwMTpuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MDItXFx0XFx0IHZvaWQgKnBlcl9xdWV1ZV9tZW0sIGludCBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5zaW1fcXVldWVfbWdtdF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODYxLVxcdC5uZG9fcXVldWVfbWVtX2ZyZWVcXHQ9IG5zaW1fcXVldWVfbWVtX2ZyZWUsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg2MjpcXHQubmRvX3F1ZXVlX3N0YXJ0XFx0PSBuc2ltX3F1ZXVlX3N0YXJ0LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjMtXFx0Lm5kb19xdWV1ZV9zdG9wXFx0XFx0PSBuc2ltX3F1ZXVlX3N0b3AsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjE1LjQzMjE5MjIwMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDgyODI3NzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYG5kb19xdWV1ZV9zdGFydGAgQ2FsbCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBjYWxsaW5nIGBuZG9fcXVldWVfc3RhcnRgLiBUaGlzIGlzIGxpa2VseSBhIGNyaXRpY2FsIHBvaW50IGluIG5ldHdvcmsgaW50ZXJmYWNlIGRyaXZlciBiZWhhdmlvciwgc28gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjay4gRmlyc3QsIEknbSB0aGlua2luZyBhYm91dCB0aGUgY29tbW9uIHBhdGhzIOKAkyBwcm9iYWJseSBpbnRlcnJ1cHQgaGFuZGxlcnMsIHRyYW5zbWl0IG9yIHJlY2VpdmUgY29tcGxldGlvbnMsIG9yIGV2ZW4gdGltZXIgY2FsbGJhY2tzLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgcmVsZXZhbnQgZHJpdmVyIGNvZGUgZm9yIHRoZSBzcGVjaWZpYyBOSUMgaW4gcXVlc3Rpb24sIGxpa2VseSBmb2N1c2luZyBvbiB0aGUgbWFqb3IgbmV0d29yayBpbnRlcmZhY2UgZnVuY3Rpb25zIGxpa2UgYG5ldGlmX3J4YCwgYG5ldGlmX3R4X3N0YXJ0YCwgb3IgYW55IGludGVycnVwdCBoYW5kbGluZyByb3V0aW5lcy4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRvIHN0YXJ0IHRoZXJlLCBhdCBsZWFzdC5cblxuSSdsbCBiZSBsb29raW5nIGZvciBkaXJlY3QgY2FsbHMgdG8gYG5kb19xdWV1ZV9zdGFydGAgd2l0aGluIHRob3NlIGZ1bmN0aW9ucywgYnV0IEkgYWxzbyBuZWVkIHRvIGJlIHdhcnkgb2YgaW5kaXJlY3QgY2FsbHMsIHBvc3NpYmx5IHRocm91Z2ggYSBsYXllciBvZiBhYnN0cmFjdGlvbiBvciBoZWxwZXIgZnVuY3Rpb25zLiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBjb3VsZCBiZSBwYXNzZWQgaW4gYXMgYSBwYXJhbWV0ZXIgdG8gdGhlIGFjdHVhbCBmdW5jdGlvbiwgb3IgYW55IGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsaW5nIGBuZG9fcXVldWVfc3RhcnRgLiBUaGUgZGF0YSBzdHJ1Y3R1cmVzIHJlbGF0ZWQgdG8gdGhlIG5ldHdvcmsgZGV2aWNlIGFyZSBnb2luZyB0byBiZSBrZXksIGVzcGVjaWFsbHkgdGhlIGBuZXRfZGV2aWNlYCBzdHJ1Y3R1cmUgYW5kIGFueXRoaW5nIHRoYXQgZGVhbHMgd2l0aCBxdWV1ZXMgb3IgdGhlIGRldmljZSdzIHN0YXRlLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBmaWVsZHMgaW4gdGhlc2Ugc3RydWN0dXJlcyBhcmUgYmVpbmcgbW9kaWZpZWQuXG5cbkknbSBtZW50YWxseSBwcmVwYXJpbmcgZm9yIHBvdGVudGlhbCBzY2VuYXJpb3M6IElzIGl0IGNhbGxlZCB1bmNvbmRpdGlvbmFsbHksIG9yIGJhc2VkIG9uIHNvbWUgc3BlY2lmaWMgY29uZGl0aW9uIChlLmcuLCBidWZmZXIgYXZhaWxhYmlsaXR5LCBsaW5rIHN0YXR1cyk/IElzIGl0IGJlaW5nIGNhbGxlZCB0byBzdGFydCB0aGUgcXVldWUgZm9yIHRyYW5zbWl0IG9yIHJlY2VpdmU/IEFyZSB0aGVyZSBsaWtlbHkgbG9ja2luZyBjb25zaWRlcmF0aW9ucyBhcm91bmQgdGhpcyBjYWxsLCBlc3BlY2lhbGx5IGlmIGl0J3MgaW4gYSBtdWx0aS10aHJlYWRlZCBjb250ZXh0PyBEZWJ1Z2dpbmcgdGhpcyBjb3VsZCBiZSB0cmlja3ksIEknbGwgcHJvYmFibHkgbmVlZCB0byBjb25zaWRlciBicmVha3BvaW50cyBvciB0cmFjZXBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA0OCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjE5LjUxNTAyMzU2NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEyODYxODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5kb19xdWV1ZV9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTk4PXN0YXRpYyBpbnQgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMDgtXFx0aWYgKCFxb3BzIHx8ICFxb3BzLVxcdTAwM2VuZG9fcXVldWVfc3RvcCB8fCAhcW9wcy1cXHUwMDNlbmRvX3F1ZXVlX21lbV9mcmVlIHx8XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTA5OlxcdCAgICAhcW9wcy1cXHUwMDNlbmRvX3F1ZXVlX21lbV9hbGxvYyB8fCAhcW9wcy1cXHUwMDNlbmRvX3F1ZXVlX3N0YXJ0KVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTExMC1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMzYtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTM3OlxcdFxcdGVyciA9IHFvcHMtXFx1MDAzZW5kb19xdWV1ZV9zdGFydChkZXYsIHFjZmdfbmV3LCBuZXdfbWVtLCByeHFfaWR4KTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMzgtXFx0XFx0aWYgKGVycilcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE1OC1cXHQgKi9cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxNTk6XFx0aWYgKHFvcHMtXFx1MDAzZW5kb19xdWV1ZV9zdGFydChkZXYsIHFjZmdfb2xkLCBvbGRfbWVtLCByeHFfaWR4KSkge1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE2MC1cXHRcXHRXQVJOKDEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjE5LjgyNzg5MTA3MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODQ3MTkzMzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipEaXNzZWN0aW5nIHRoZSBOZXR3b3JrIEludGVyZmFjZSBSZWNvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgdHJhY2UgaW5kaWNhdGVzIGEgY2FsbCB0byBgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnYC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIHdlJ3JlIGxvb2tpbmcgYXQuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBwYWlyIHRoYXQgd2l0aCBhIHJldmlldyBvZiBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgIGFzIHdlbGwuIFRoZXkncmUgcmVsYXRlZC4gV2hpbGUgcmVjb25maWcgbGlrZWx5IGhhbmRsZXMgdGhlICppbml0aWFsKiBzZXR1cCBvciBjaGFuZ2VzIHRvIHRoZSByZWNlaXZlIHF1ZXVlLCByZXN0YXJ0IG1pZ2h0IGJlIGludm9rZWQgdG8gaGFuZGxlIHRlbXBvcmFyeSBwYXVzZXMgb3IgcmVzdW1wdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9uIGFuZCBzZXF1ZW5jZSBvZiBldmVudHMgYmV0d2VlbiB0aGVzZSB0d28gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGVudGlyZSByZWNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBob3cgdGhleSdyZSB1c2VkIGFuZCBob3cgdGhleSByZWxhdGUhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3OTksIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzoyMi42NzUwODcxMjVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTk4MTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTk4PXN0YXRpYyBpbnQgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNzctXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTc4OmludCBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeClcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNzkte1xcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg0LX1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODU6RVhQT1JUX1NZTUJPTF9OU19HUEwobmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQsIFxcXCJORVRERVZfSU5URVJOQUxcXFwiKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjIyLjcyMTI4ODA5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MDYyOTc5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCBFeHBvcnQqKlxuXG5BbHJpZ2h0LCBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgIGlzIHNob3dpbmcgdXAgYXMgZXhwb3J0ZWQuIEhtbSwgdGhhdCdzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aG8gbWlnaHQgYmUgcmVseWluZyBvbiB0aGlzIGZ1bmN0aW9uLiBUaW1lIHRvIGRpZyBpbnRvIGl0cyBjYWxsIHNpdGVzLiBMZXQncyBzdGFydCB3aXRoIGEgY2hlY2sgb24gdGhlIGNhbGxlcnMgb2YgYG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZ2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGluaXRpYWwgc2Vuc2Ugb2YgdGhlIGRlcGVuZGVuY2llcyBhbmQgY3JpdGljYWwgcGF0aHMgcmVsYXRlZCB0byB0aGlzIHJlc3RhcnQgZnVuY3Rpb24uIFRoaXMgaXMga2V5IHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiBhbnkgY2hhbmdlcyBvciBwb3RlbnRpYWwgcmVmYWN0b3JpbmcgZG93biB0aGUgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI0MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjI1LjMyNzU4OTE2OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0MjIwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz05MT1ib29sIG5ldGlmX3J4cV9oYXNfbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy05Ny1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzo5ODpzdGF0aWMgaW50IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTk5LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE3OD1pbnQgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODItXFx0bmV0ZGV2X3F1ZXVlX2NvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODM6XFx0cmV0dXJuIG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnLCBcXHUwMDI2cWNmZyk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg0LX1cXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4Nz1zdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yMzMtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjM0OlxcdHJldCA9IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnWzBdLCBcXHUwMDI2cWNmZ1sxXSk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjM1LVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz0yNzg9c3RhdGljIHZvaWQgX19uZXRpZl9tcF9jbG9zZV9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0zMDEtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MzAyOlxcdGVyciA9IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnWzBdLCBcXHUwMDI2cWNmZ1sxXSk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMzAzLVxcdFdBUk5fT04oZXJyIFxcdTAwMjZcXHUwMDI2IGVyciAhPSAtRU5FVERPV04pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzoyNS4zNzQwMTcwNDRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQzNTA5MDEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYE5FVERFVlNJTWAgTW9kdWxlJ3MgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb24gQ2FsbHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhpcyBgTkVUREVWU0lNYCBtb2R1bGUgaXMgY29uZmlndXJlZCBhbmQgaG93IGl0J3MgZnVuY3Rpb25pbmcgaW50ZXJuYWxseS4gTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgY2VudGVyZWQgYXJvdW5kIHRoZSBjYWxscyB0byBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgLCBgX19uZXRpZl9tcF9vcGVuX3J4cWAsIGFuZCBgX19uZXRpZl9tcF9jbG9zZV9yeHFgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGxpa2VseSB0cmlnZ2VyZWQgYnkgZWl0aGVyIGBldGh0b29sYCBvciB2aWEgYG5ldGxpbmtgIGNhbGxzLCB3aGljaCBpcyB0eXBpY2FsIGZvciBtYW5hZ2luZyBuZXR3b3JrIGRldmljZSBpbnRlcmZhY2VzLlxuXG5JIHdhbnQgdG8gc2VlIGlmIEkgY2FuIG5hcnJvdyBteSBmb2N1cyBhbmQganVzdCB6ZXJvIGluIG9uIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuIFRoZXkgYXJlIGRlY2xhcmVkIGBzdGF0aWNgIHdoaWNoIGluaXRpYWxseSBtYWtlcyBtZSB0aGluayB0aGV5IG1pZ2h0IGJlIGlubGluZWQuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBzaW5jZSB0aGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuIChtZWFuaW5nIHRoZXkgYXJlIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMpLCB0aGV5ICpjYW4ndCogYmUgaW5saW5lZC4gVGh1cywgdGhleSAqc2hvdWxkKiBhcHBlYXIgaW4gdGhlIHN5bWJvbCB0YWJsZS4gSG93ZXZlciwgc2luY2UgdGhlIHN5bWJvbHMgYXJlIHN0YXRpYywgdGhleSBtYXkgbm90LlxuXG5CdXQsIGJhY2sgdG8gbXkgb3JpZ2luYWwgcGxhbi4gU2hvdWxkIEkgcmVhbGx5IGJlIGZvY3VzaW5nIG9uIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGA/IEknbGwgc3RpY2sgd2l0aCBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIGZvciBub3cuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uLiBJdCdzIHVzaW5nIGBORVRERVZTSU1gLCBvZiBjb3Vyc2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgTkVUREVWU0lNYCBkb2Vzbid0IGRlcGVuZCBvbiBvdGhlciBjb25maWd1cmF0aW9ucyB0byBiZSBlbmFibGVkLiBJIHNlZSB0aGF0IGl0IHJlcXVpcmVzIGBERUJVR19GU2AgYW5kIGBJTkVUYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIGBQU0FNUExFYCBhbmQgYFBUUF8xNTg4X0NMT0NLX01PQ0tgIGFyZSBvcHRpb25hbCwgYnV0IGlmIHRoZXkgYXJlIHNlbGVjdGVkLCB0aGVuIGBQU0FNUExFYCBtdXN0IGJlIGRlZmluZWQuIFRoZXJlZm9yZSwganVzdCBgTkVUREVWU0lNYCBpcyBlbm91Z2guIE5vdywgSSBoYXZlIHRvIGNoZWNrIHRoZSBjb2RlIGFuZCBjb25maXJtIHRoYXQgYE5FVERFVlNJTWAgaXMgc3VmZmljaWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAxOSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzozMC44MDkxMTAxODdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDMxNzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTYwMj1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctNjAzLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzozMC44NTUxNTU3MzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3NjM5NjQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCBjb25maXJtZWQsICoqTkVUREVWU0lNKiogaXQgaXMgZm9yIHRoZSBjb25maWd1cmF0aW9uLiBOb3csIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIGZpbGVzIHRoYXQgYXJlIGFsc28gYmVpbmcgbW9kaWZpZWQsIGp1c3QgdG8gYmUgdGhvcm91Z2guIEFscmlnaHQsIGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jYC4gQWgsIGFuZCB0aGUgZnVuY3Rpb25zIGFmZmVjdGVkIGFyZSBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIOKAkyBnb29kIHRvIGtub3cuIE5vdywgbGV0IG1lIHF1aWNrbHkgc2NhbiB0aGF0IGZpbGUgYW5kIHRoZSBwYXRjaCBhZ2FpbiwganVzdCB0byB2ZXJpZnkgaWYgdGhlcmUgd2VyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRvdWNoZWQgd2l0aGluIHRoZSBjb2RlLiBBbHdheXMgZ29vZCB0byBoYXZlIGEgY29tcGxldGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgzNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjMzLjkzMTU1NTA1M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk0NjE4ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnNpbV9xdWV1ZV9zdG9wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODAxPW5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODM3LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4Mzg6c3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04NTg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgbnNpbV9xdWV1ZV9tZ210X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjItXFx0Lm5kb19xdWV1ZV9zdGFydFxcdD0gbnNpbV9xdWV1ZV9zdGFydCxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODYzOlxcdC5uZG9fcXVldWVfc3RvcFxcdFxcdD0gbnNpbV9xdWV1ZV9zdG9wLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjQtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDM6MDM6MzMuOTgxMDIyNzk4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNjA3MzU3MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCoqXG5cbk9rYXksIHNvIEkndmUgemVyb2VkIGluIG9uIHRoZSBjaGFuZ2VzOiBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIGFyZSB0aGUgb25seSBmdW5jdGlvbnMgdGhhdCBnb3QgbW9kaWZpZWQuIEFyZSB0aGV5IGFjdHVhbGx5IGFjY2Vzc2libGU/IFllYWgsIHRoZXkncmUgY2FsbGVkIHRocm91Z2ggYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCBhbmQgcXVldWUgbWFuYWdlbWVudCBvcGVyYXRpb25zLiBUaGF0IG1lYW5zIHdlIGhhdmUgYSB2aWFibGUgZW50cnlwb2ludC5cblxuSXMgaXQgd29ydGggZnV6emluZyB0aGVtPyBBYnNvbHV0ZWx5LiBJdCdzIGEgc2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlLCB3aGljaCBtZWFucyB3ZSBjYW4gYmUgcHJldHR5IGFnZ3Jlc3NpdmUgd2l0aCBvdXIgdGVzdGluZywgYW5kIHRoaXMgcGF0Y2ggKmRvZXMqIGludHJvZHVjZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIC0gdGhlIE5BUEkgcXVldWUgc2V0dGluZy4gVGhhdCdzIGEgdGFyZ2V0LXJpY2ggZW52aXJvbm1lbnQgZm9yIGZ1enppbmcuIFdlJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIGBORVRERVZTSU1gIGlzIGVuYWJsZWQgaW4gb3VyIGNvbmZpZ3VyYXRpb24uXG5cblRoZSBvYnZpb3VzIGZvY3VzIHN5bWJvbHMgYXJlIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuIFRoZXkgYXJlIGFzc2lnbmVkIHRvIGBuZG9fcXVldWVfc3RhcnRgIGFuZCBgbmRvX3F1ZXVlX3N0b3BgLCBzbyB0aGV5IGFyZSAqbm90KiBpbmxpbmVkIGFuZCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIFBlcmZlY3QuXG5cbk5vdywgd2FpdCBhIG1pbnV0ZS4uLiB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YW50cyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMuIEFyZSB0aGVzZSBpdD8gWWVzLCB0aGV5IGZpdCB0aGUgYmlsbCwgYnV0IGp1c3QgdG8gYmUgc3VwZXIgc2FmZSwgSSBzaG91bGQgbG9vayBmb3IgYW4gYWx0ZXJuYXRpdmUgZW50cnlwb2ludCBhcyB3ZWxsLiBXaGF0IGFib3V0IGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGA/IEkga25vdyB0aGF0IGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgIGlzIGBzdGF0aWNgLCBzbyB0aGF0J3Mgb3V0LiBMZXQncyBkaWcgaW50byBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgIGFuZCBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzU1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjM5LjE0MTc2MTA0NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2NDQ3NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTg9c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE3Ny1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxNzg6aW50IG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4KVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE3OS17XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODQtfVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE4NTpFWFBPUlRfU1lNQk9MX05TX0dQTChuZXRkZXZfcnhfcXVldWVfcmVzdGFydCwgXFxcIk5FVERFVl9JTlRFUk5BTFxcXCIpO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDM6MDM6MzkuMTg4NDFaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMzU4NDM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqVGhpbmtpbmcgVGhyb3VnaCBTaW11bGF0aW9uIFF1ZXVpbmcqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGludGVncmF0ZSB0aGVzZSBuZXcgcXVldWluZyBjb21tYW5kcywgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCwgaW50byB0aGUgc3lzdGVtLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGFkZGluZyB0aGVtIGFzIGVudHJ5IHBvaW50cyBmb3IgdGhlIHNpbXVsYXRpb24gbWFuYWdlbWVudC4gTm93LCByZWdhcmRpbmcgdGhlIGRhdGEgaGFuZGxpbmcgcG9zdC1zaW11bGF0aW9uLCBJIHNob3VsZCBjYWxsIHRoYXQgYHNldC1yZXN1bHRzYCBmdW5jdGlvbiB0byBjYXB0dXJlIGFsbCB0aGUgcmVsZXZhbnQgZGF0YSBhbmQgZ2V0IGV2ZXJ5dGhpbmcgcHJvcGVybHkgc3RvcmVkIGFuZCBhbmFseXplZC4gU2VlbXMgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaW4gdGhlIHByb2Nlc3MsIGVuc3VyaW5nIGRhdGEgaW50ZWdyaXR5IGF0IHRoZSBjb21wbGV0aW9uIG9mIGEgc2ltdWxhdGlvbiBydW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMTksIk91dHB1dFRva2VucyI6MTExLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDM6MDM6NDIuOTAxOTk4MDM0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQxNDYxNTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5zaW1fcXVldWVfc3RhcnRcIixcbiAgICBcIm5zaW1fcXVldWVfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIChhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlIHVzZWQgZm9yIHRlc3RpbmcpIHRvIGNhbGwgbmV0aWZfcXVldWVfc2V0X25hcGkoKSBpbiBpdHMgcXVldWUgc3RhcnQgYW5kIHN0b3AgY2FsbGJhY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgZHJpdmVyLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5zaW1fcXVldWVfc3RhcnRcIixcbiAgICBcIm5zaW1fcXVldWVfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIChhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlIHVzZWQgZm9yIHRlc3RpbmcpIHRvIGNhbGwgbmV0aWZfcXVldWVfc2V0X25hcGkoKSBpbiBpdHMgcXVldWUgc3RhcnQgYW5kIHN0b3AgY2FsbGJhY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgZHJpdmVyLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzo0Mi45NzYxNTA2MDZaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MDQ5MjQzMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMzowMzo0Mi45NzY1Njk4MTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODYwNDQ5OTQ3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgTkFQSSBpbnN0YW5jZXMgd2l0aCBuZXR3b3JrIGRldmljZSBxdWV1ZXMuIFRoaXMgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGFyaXNpbmcgZnJvbSB0aGVzZSBjaGFuZ2VzLCBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MjAyZDA3NjA3M2YxMjFjN2I4YmFiZjU0NmNlMWQ3Y2I2NjIyNTc2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDM6MDI6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbmluZGV4IDRlOWQ3ZTEwYjUyN2UuLjI5MWQzNDcxOGIyZWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xuQEAgLTgwOCw2ICs4MDgsOCBAQCBuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxuIFxuIFx0aWYgKG5zLVx1MDAzZXJxX3Jlc2V0X21vZGUgPT0gMSkge1xuIFx0XHRucy1cdTAwM2VycVtpZHhdLVx1MDAzZXBhZ2VfcG9vbCA9IHFtZW0tXHUwMDNlcHA7XG4rXHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbitcdFx0XHRcdCAgICAgXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcdFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXHRcdHJldHVybiAwO1xuIFx0fVxuQEAgLTgyNiw2ICs4MjgsOCBAQCBuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxuIFx0fVxuIFxuIFx0bnMtXHUwMDNlcnFbaWR4XSA9IHFtZW0tXHUwMDNlcnE7XG4rXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG4rXHRcdFx0ICAgICBcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXG4gXHRyZXR1cm4gMDtcbkBAIC04MzgsNiArODQyLDcgQEAgc3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcbiBcbiBcdG5ldGRldl9hc3NlcnRfbG9ja2VkKGRldik7XG4gXG4rXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuIFx0bmFwaV9kaXNhYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFxuIFx0aWYgKG5zLVx1MDAzZXJxX3Jlc2V0X21vZGUgPT0gMSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDM6MDM6NDIuOTc2NTcyMDc2WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2MDQ0Nzc2ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jYC4gIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYWN0dWFsbHkuICBUaGV5J3ZlIGFkZGVkIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgd2l0aGluIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuICBTcGVjaWZpY2FsbHksIGl0J3MgbGlua2luZyAob3IgdW5saW5raW5nKSBOQVBJIGluc3RhbmNlcyB0byBuZXRkZXYgcXVldWVzLiBUaGF0J3MgYWxsLlxuXG5MZXQgbWUgYnJlYWsgaXQgZG93bjogIEluIGBuc2ltX3F1ZXVlX3N0YXJ0YCwgd2UncmUgYXNzb2NpYXRpbmcgdGhlIE5BUEkgc3RydWN0IHdpdGggdGhlIHF1ZXVlIHVzaW5nIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAuICBXZSdyZSBkb2luZyBpdCBpbiBib3RoIHJlc2V0IGFuZCBub24tcmVzZXQgbW9kZXMuIFRoZW4gaW4gYG5zaW1fcXVldWVfc3RvcGAsIHdlJ3JlIGNhbGxpbmcgaXQgd2l0aCBhIGBOVUxMYCBwb2ludGVyIHRvIGRpc2Fzc29jaWF0ZSB0aGVtLiAgSXTigJlzIGp1c3Qgc2V0dGluZyBvciBjbGVhcmluZyBhIHBvaW50ZXIgd2l0aGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuIE5vIGZhbmN5IGJ1c2luZXNzLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBwdXJlbHkgYWJvdXQgcXVldWUgbWFuYWdlbWVudCBhbmQgTkFQSSBpbnRlZ3JhdGlvbi4gVGhlcmUncyBub3RoaW5nIGhlcmUgdGhhdCdzIGltbWVkaWF0ZWx5IHNjcmVhbWluZyBcInVuaW5pdGlhbGl6ZWQgbWVtb3J5LFwiIFwiaW5mb3JtYXRpb24gbGVhayxcIiBvciBhbnl0aGluZyByZXF1aXJpbmcgS01TQU4ncyBkZWVwZXIgbWVtb3J5IGluc3BlY3Rpb24uICBXZSdyZSBub3QgaW50cm9kdWNpbmcgbmV3IHN0cnVjdHVyZXMgcGFzc2VkIHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGJyYW5jaGVzIGNvbnRpbmdlbnQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFdlJ3JlIHNpbXBseSBzZXR0aW5nIGEgcG9pbnRlciwgYW5kIGNsZWFyaW5nIGl0IGxhdGVyLlxuXG5HaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSB0aGluZ3Mgd29yaywgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgc2hvdWxkIGJlIHBlcmZlY3RseSBhZGVxdWF0ZSB0byBjYXRjaCBhbnkgcG90ZW50aWFsIGlzc3VlcyDigJMgbGlrZSBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiBpZiB3ZSBzY3JldyB1cCB0aGUgYHNldF9uYXBpYCBjYWxscyBvciBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBsYXRlci4gU3RhbmRhcmQgdG9vbHMgd2lsbCB3b3JrIGZpbmUuIEtNU0FOIGlzIG92ZXJraWxsIGluIHRoaXMgY2FzZS4gV2UgZG9uJ3QgbmVlZCB0aGUgbW9yZSBoZWF2eXdlaWdodCBtZW1vcnkgZXJyb3IgZGV0ZWN0aW9uLlxuXG5TbywgdGhlIHZlcmRpY3QgaXM6IE5vLCB3ZSBkb24ndCBuZWVkIEtNU0FOIGZvciB0aGlzLiBXZSdyZSBnb29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjc3LCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAzOjAzOjUxLjU4MTA1MjI3WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIG5ldHdvcmsgZGV2aWNlIHF1ZXVlcy4gVGhpcyBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoZXNlIGNoYW5nZXMsIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBjYWxscyB0byBgbmV0aWZfcXVldWVfc2V0X25hcGlgIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggbmV0d29yayBkZXZpY2UgcXVldWVzLiBUaGlzIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlc2UgY2hhbmdlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs2f5[1] Phase: Succeeded StartedAt: 2026-08-15 03:04:02 +0000 UTC FinishedAt: 2026-08-15 03:04:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-15 03:04:02 +0000 UTC FinishedAt: 2026-08-15 03:04:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2] Phase: Succeeded StartedAt: 2026-08-15 03:04:02 +0000 UTC FinishedAt: 2026-08-15 06:42:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-15 03:04:02 +0000 UTC FinishedAt: 2026-08-15 06:42:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-15 03:04:02 +0000 UTC FinishedAt: 2026-08-15 03:04:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-15 03:04:02 +0000 UTC FinishedAt: 2026-08-15 03:04:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowrs2f5/series-workflowrs2f5-convert-artifact-2145411989/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-15 03:04:12 +0000 UTC FinishedAt: 2026-08-15 03:20:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-15 03:04:12 +0000 UTC FinishedAt: 2026-08-15 03:20:17 +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:*df40a67d-aede-439c-b891-61100beda86d,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-workflowrs2f5/series-workflowrs2f5-convert-artifact-2145411989/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": "4bd0ba54-50d1-4020-bd18-0e43fdbaca75", "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-workflowrs2f5/series-workflowrs2f5-build-action-3097541627/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-15 03:04:12 +0000 UTC FinishedAt: 2026-08-15 03:20:09 +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:*df40a67d-aede-439c-b891-61100beda86d,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-workflowrs2f5/series-workflowrs2f5-convert-artifact-2145411989/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": "4bd0ba54-50d1-4020-bd18-0e43fdbaca75", "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-workflowrs2f5/series-workflowrs2f5-build-action-3097541627/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-15 03:20:17 +0000 UTC FinishedAt: 2026-08-15 03:20:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-15 03:20:17 +0000 UTC FinishedAt: 2026-08-15 03:20:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-15 03:20:17 +0000 UTC FinishedAt: 2026-08-15 03:20:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-15 03:20:17 +0000 UTC FinishedAt: 2026-08-15 03:20:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowrs2f5/series-workflowrs2f5-convert-artifact-98629488/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-15 03:20:27 +0000 UTC FinishedAt: 2026-08-15 03:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-15 03:20:27 +0000 UTC FinishedAt: 2026-08-15 03:22:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4bd0ba54-50d1-4020-bd18-0e43fdbaca75,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-workflowrs2f5/series-workflowrs2f5-build-action-3097541627/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-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-15 03:22:32 +0000 UTC FinishedAt: 2026-08-15 03:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-15 03:22:32 +0000 UTC FinishedAt: 2026-08-15 03:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-15 03:22:32 +0000 UTC FinishedAt: 2026-08-15 03:38:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-15 03:22:32 +0000 UTC FinishedAt: 2026-08-15 03:38:41 +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:*df40a67d-aede-439c-b891-61100beda86d,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-workflowrs2f5/series-workflowrs2f5-convert-artifact-98629488/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": "e125b29e-c673-465a-8abb-2d96060bd68f", "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-workflowrs2f5/series-workflowrs2f5-build-action-2523617388/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-15 03:22:32 +0000 UTC FinishedAt: 2026-08-15 03:38:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*df40a67d-aede-439c-b891-61100beda86d,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-workflowrs2f5/series-workflowrs2f5-convert-artifact-98629488/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": "e125b29e-c673-465a-8abb-2d96060bd68f", "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-workflowrs2f5/series-workflowrs2f5-build-action-2523617388/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-15 03:38:41 +0000 UTC FinishedAt: 2026-08-15 03:38:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-15 03:38:41 +0000 UTC FinishedAt: 2026-08-15 03:38:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-15 03:38:41 +0000 UTC FinishedAt: 2026-08-15 03:40:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-15 03:38:41 +0000 UTC FinishedAt: 2026-08-15 03:40:36 +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:*e125b29e-c673-465a-8abb-2d96060bd68f,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-workflowrs2f5/series-workflowrs2f5-build-action-2523617388/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-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-15 03:40:46 +0000 UTC FinishedAt: 2026-08-15 06:42:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-15 03:40:46 +0000 UTC FinishedAt: 2026-08-15 06:42:44 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"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:*4bd0ba54-50d1-4020-bd18-0e43fdbaca75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e125b29e-c673-465a-8abb-2d96060bd68f,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-workflowrs2f5/series-workflowrs2f5-build-action-3097541627/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-workflowrs2f5/series-workflowrs2f5-build-action-2523617388/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-15 03:40:46 +0000 UTC FinishedAt: 2026-08-15 03:40:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-15 03:40:46 +0000 UTC FinishedAt: 2026-08-15 03:40:51 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"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-workflowrs2f5/series-workflowrs2f5-convert-artifact-4014338281/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-15 03:40:46 +0000 UTC FinishedAt: 2026-08-15 03:40:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-15 03:40:46 +0000 UTC FinishedAt: 2026-08-15 03:40:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-15 03:40:46 +0000 UTC FinishedAt: 2026-08-15 03:40:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-15 03:40:56 +0000 UTC FinishedAt: 2026-08-15 06:42:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs2f5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"abe1b4fa-3803-4bf9-bc71-a84f298be3cc","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-15 03:40:56 +0000 UTC FinishedAt: 2026-08-15 06:42:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4bd0ba54-50d1-4020-bd18-0e43fdbaca75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e125b29e-c673-465a-8abb-2d96060bd68f,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-workflowrs2f5/series-workflowrs2f5-build-action-3097541627/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-workflowrs2f5/series-workflowrs2f5-build-action-2523617388/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-workflowrs2f5/series-workflowrs2f5-convert-artifact-4014338281/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,}